diff --git a/.gitignore b/.gitignore
index cfde0fa64..501874d09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,9 @@
__pycache__/
.vscode/
+#External repos
+addins
+
#vsim work files to ignore
transcript
vsim.wlf
@@ -38,4 +41,5 @@ wally-pipelined/linux-testgen/buildroot-config-src/main.config.old
wally-pipelined/linux-testgen/buildroot-config-src/linux.config.old
wally-pipelined/linux-testgen/buildroot-config-src/busybox.config.old
wally-pipelined/regression/slack-notifier/slack-webhook-url.txt
+wally-pipelined/regression/logs
diff --git a/.gitmodules b/.gitmodules
index e69de29bb..65e1e71c9 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "sky130/sky130_osu_sc_t12"]
+ path = sky130/sky130_osu_sc_t12
+ url = https://foss-eda-tools.googlesource.com/skywater-pdk/libs/sky130_osu_sc_t12/
diff --git a/README.md b/README.md
index 6aaa28dab..559c3e0ee 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,36 @@
# riscv-wally
Configurable RISC-V Processor
+
+Wally is a 5-stage pipelined processor configurable to support all the standard RISC-V options, incluidng RV32/64, A, C, F, D, and M extensions, FENCE.I, and the various privileged modes and CSRs. It is written in SystemVerilog. It passes the RISC-V Arch Tests and Imperas tests. As of October 2021, it boots the first 10 million instructions of Buildroot Linux.
+
+To use Wally on Linux:
+
+```
+git clone https://github.com/davidharrishmc/riscv-wally
+cd riscv-wally
+cd imperas-riscv-tests
+make
+cd ../addins
+git clone https://github.com/riscv-non-isa/riscv-arch-test
+git clone https://github.com/riscv-software-src/riscv-isa-sim
+cd riscv-isa-sim
+mkdir build
+cd build
+set RISCV=/cad/riscv/gcc/bin (or whatever your path is)
+../configure --prefix=$RISCV
+make (this will take a while to build SPIKE)
+sudo make install
+cd ../../riscv-arch-test
+cp ../riscv-isa-sim/arch_test_target/spike/Makefile.include .
+edit Makefile.include
+ change line with TARGETDIR to /home/harris/riscv-wally/addins/riscv-isa-sim/arch_test_target (or whatever your path is)
+ add line export RISCV_PREFIX = riscv64-unknown-elf- # this might not be needed if you have 32-bit versions of the riscv gcc compiler built separately
+make
+make XLEN=32
+exe2memfile.pl work/*/*/*.elf # converts ELF files to a format that can be read by Modelsim
+```
+
+Notes:
+Eventually download imperas-riscv-tests separately
+Move our custom tests to another directory
+Eventually replace exe2memfile.pl with objcopy
diff --git a/riscv-coremark/.gitignore b/tests/riscv-coremark/.gitignore
similarity index 100%
rename from riscv-coremark/.gitignore
rename to tests/riscv-coremark/.gitignore
diff --git a/riscv-coremark/.gitmodules b/tests/riscv-coremark/.gitmodules
similarity index 100%
rename from riscv-coremark/.gitmodules
rename to tests/riscv-coremark/.gitmodules
diff --git a/riscv-coremark/LICENSE b/tests/riscv-coremark/LICENSE
similarity index 100%
rename from riscv-coremark/LICENSE
rename to tests/riscv-coremark/LICENSE
diff --git a/riscv-coremark/README.md b/tests/riscv-coremark/README.md
similarity index 100%
rename from riscv-coremark/README.md
rename to tests/riscv-coremark/README.md
diff --git a/riscv-coremark/build-coremark.sh b/tests/riscv-coremark/build-coremark.sh
similarity index 100%
rename from riscv-coremark/build-coremark.sh
rename to tests/riscv-coremark/build-coremark.sh
diff --git a/riscv-coremark/coremark/LICENSE.md b/tests/riscv-coremark/coremark/LICENSE.md
similarity index 100%
rename from riscv-coremark/coremark/LICENSE.md
rename to tests/riscv-coremark/coremark/LICENSE.md
diff --git a/riscv-coremark/coremark/Makefile b/tests/riscv-coremark/coremark/Makefile
similarity index 100%
rename from riscv-coremark/coremark/Makefile
rename to tests/riscv-coremark/coremark/Makefile
diff --git a/riscv-coremark/coremark/README.md b/tests/riscv-coremark/coremark/README.md
similarity index 100%
rename from riscv-coremark/coremark/README.md
rename to tests/riscv-coremark/coremark/README.md
diff --git a/riscv-coremark/coremark/barebones/core_portme.c b/tests/riscv-coremark/coremark/barebones/core_portme.c
similarity index 100%
rename from riscv-coremark/coremark/barebones/core_portme.c
rename to tests/riscv-coremark/coremark/barebones/core_portme.c
diff --git a/riscv-coremark/coremark/barebones/core_portme.h b/tests/riscv-coremark/coremark/barebones/core_portme.h
similarity index 100%
rename from riscv-coremark/coremark/barebones/core_portme.h
rename to tests/riscv-coremark/coremark/barebones/core_portme.h
diff --git a/riscv-coremark/coremark/barebones/core_portme.mak b/tests/riscv-coremark/coremark/barebones/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/barebones/core_portme.mak
rename to tests/riscv-coremark/coremark/barebones/core_portme.mak
diff --git a/riscv-coremark/coremark/barebones/cvt.c b/tests/riscv-coremark/coremark/barebones/cvt.c
similarity index 100%
rename from riscv-coremark/coremark/barebones/cvt.c
rename to tests/riscv-coremark/coremark/barebones/cvt.c
diff --git a/riscv-coremark/coremark/barebones/ee_printf.c b/tests/riscv-coremark/coremark/barebones/ee_printf.c
similarity index 100%
rename from riscv-coremark/coremark/barebones/ee_printf.c
rename to tests/riscv-coremark/coremark/barebones/ee_printf.c
diff --git a/riscv-coremark/coremark/core_list_join.c b/tests/riscv-coremark/coremark/core_list_join.c
similarity index 100%
rename from riscv-coremark/coremark/core_list_join.c
rename to tests/riscv-coremark/coremark/core_list_join.c
diff --git a/riscv-coremark/coremark/core_main.c b/tests/riscv-coremark/coremark/core_main.c
similarity index 100%
rename from riscv-coremark/coremark/core_main.c
rename to tests/riscv-coremark/coremark/core_main.c
diff --git a/riscv-coremark/coremark/core_matrix.c b/tests/riscv-coremark/coremark/core_matrix.c
similarity index 100%
rename from riscv-coremark/coremark/core_matrix.c
rename to tests/riscv-coremark/coremark/core_matrix.c
diff --git a/riscv-coremark/coremark/core_state.c b/tests/riscv-coremark/coremark/core_state.c
similarity index 100%
rename from riscv-coremark/coremark/core_state.c
rename to tests/riscv-coremark/coremark/core_state.c
diff --git a/riscv-coremark/coremark/core_util.c b/tests/riscv-coremark/coremark/core_util.c
similarity index 100%
rename from riscv-coremark/coremark/core_util.c
rename to tests/riscv-coremark/coremark/core_util.c
diff --git a/riscv-coremark/coremark/coremark.h b/tests/riscv-coremark/coremark/coremark.h
similarity index 100%
rename from riscv-coremark/coremark/coremark.h
rename to tests/riscv-coremark/coremark/coremark.h
diff --git a/riscv-coremark/coremark/coremark.md5 b/tests/riscv-coremark/coremark/coremark.md5
similarity index 100%
rename from riscv-coremark/coremark/coremark.md5
rename to tests/riscv-coremark/coremark/coremark.md5
diff --git a/riscv-coremark/coremark/cygwin/core_portme.c b/tests/riscv-coremark/coremark/cygwin/core_portme.c
similarity index 100%
rename from riscv-coremark/coremark/cygwin/core_portme.c
rename to tests/riscv-coremark/coremark/cygwin/core_portme.c
diff --git a/riscv-coremark/coremark/cygwin/core_portme.h b/tests/riscv-coremark/coremark/cygwin/core_portme.h
similarity index 100%
rename from riscv-coremark/coremark/cygwin/core_portme.h
rename to tests/riscv-coremark/coremark/cygwin/core_portme.h
diff --git a/riscv-coremark/coremark/cygwin/core_portme.mak b/tests/riscv-coremark/coremark/cygwin/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/cygwin/core_portme.mak
rename to tests/riscv-coremark/coremark/cygwin/core_portme.mak
diff --git a/riscv-coremark/coremark/docs/READM.md b/tests/riscv-coremark/coremark/docs/READM.md
similarity index 100%
rename from riscv-coremark/coremark/docs/READM.md
rename to tests/riscv-coremark/coremark/docs/READM.md
diff --git a/riscv-coremark/coremark/docs/balance_O0_joined.png b/tests/riscv-coremark/coremark/docs/balance_O0_joined.png
similarity index 100%
rename from riscv-coremark/coremark/docs/balance_O0_joined.png
rename to tests/riscv-coremark/coremark/docs/balance_O0_joined.png
diff --git a/riscv-coremark/coremark/docs/html/files/PIC32/core_portme-mak.html b/tests/riscv-coremark/coremark/docs/html/files/PIC32/core_portme-mak.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/PIC32/core_portme-mak.html
rename to tests/riscv-coremark/coremark/docs/html/files/PIC32/core_portme-mak.html
diff --git a/riscv-coremark/coremark/docs/html/files/core_list_join-c.html b/tests/riscv-coremark/coremark/docs/html/files/core_list_join-c.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/core_list_join-c.html
rename to tests/riscv-coremark/coremark/docs/html/files/core_list_join-c.html
diff --git a/riscv-coremark/coremark/docs/html/files/core_main-c.html b/tests/riscv-coremark/coremark/docs/html/files/core_main-c.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/core_main-c.html
rename to tests/riscv-coremark/coremark/docs/html/files/core_main-c.html
diff --git a/riscv-coremark/coremark/docs/html/files/core_matrix-c.html b/tests/riscv-coremark/coremark/docs/html/files/core_matrix-c.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/core_matrix-c.html
rename to tests/riscv-coremark/coremark/docs/html/files/core_matrix-c.html
diff --git a/riscv-coremark/coremark/docs/html/files/core_state-c.html b/tests/riscv-coremark/coremark/docs/html/files/core_state-c.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/core_state-c.html
rename to tests/riscv-coremark/coremark/docs/html/files/core_state-c.html
diff --git a/riscv-coremark/coremark/docs/html/files/core_util-c.html b/tests/riscv-coremark/coremark/docs/html/files/core_util-c.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/core_util-c.html
rename to tests/riscv-coremark/coremark/docs/html/files/core_util-c.html
diff --git a/riscv-coremark/coremark/docs/html/files/coremark-h.html b/tests/riscv-coremark/coremark/docs/html/files/coremark-h.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/coremark-h.html
rename to tests/riscv-coremark/coremark/docs/html/files/coremark-h.html
diff --git a/riscv-coremark/coremark/docs/html/files/docs/core_state.png b/tests/riscv-coremark/coremark/docs/html/files/docs/core_state.png
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/docs/core_state.png
rename to tests/riscv-coremark/coremark/docs/html/files/docs/core_state.png
diff --git a/riscv-coremark/coremark/docs/html/files/linux/core_portme-c.html b/tests/riscv-coremark/coremark/docs/html/files/linux/core_portme-c.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/linux/core_portme-c.html
rename to tests/riscv-coremark/coremark/docs/html/files/linux/core_portme-c.html
diff --git a/riscv-coremark/coremark/docs/html/files/linux/core_portme-h.html b/tests/riscv-coremark/coremark/docs/html/files/linux/core_portme-h.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/linux/core_portme-h.html
rename to tests/riscv-coremark/coremark/docs/html/files/linux/core_portme-h.html
diff --git a/riscv-coremark/coremark/docs/html/files/linux/core_portme-mak.html b/tests/riscv-coremark/coremark/docs/html/files/linux/core_portme-mak.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/linux/core_portme-mak.html
rename to tests/riscv-coremark/coremark/docs/html/files/linux/core_portme-mak.html
diff --git a/riscv-coremark/coremark/docs/html/files/readme-txt.html b/tests/riscv-coremark/coremark/docs/html/files/readme-txt.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/readme-txt.html
rename to tests/riscv-coremark/coremark/docs/html/files/readme-txt.html
diff --git a/riscv-coremark/coremark/docs/html/files/release_notes-txt.html b/tests/riscv-coremark/coremark/docs/html/files/release_notes-txt.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/files/release_notes-txt.html
rename to tests/riscv-coremark/coremark/docs/html/files/release_notes-txt.html
diff --git a/riscv-coremark/coremark/docs/html/index.html b/tests/riscv-coremark/coremark/docs/html/index.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index.html
rename to tests/riscv-coremark/coremark/docs/html/index.html
diff --git a/riscv-coremark/coremark/docs/html/index/BuildTargets.html b/tests/riscv-coremark/coremark/docs/html/index/BuildTargets.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/BuildTargets.html
rename to tests/riscv-coremark/coremark/docs/html/index/BuildTargets.html
diff --git a/riscv-coremark/coremark/docs/html/index/Configuration.html b/tests/riscv-coremark/coremark/docs/html/index/Configuration.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/Configuration.html
rename to tests/riscv-coremark/coremark/docs/html/index/Configuration.html
diff --git a/riscv-coremark/coremark/docs/html/index/Configurations.html b/tests/riscv-coremark/coremark/docs/html/index/Configurations.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/Configurations.html
rename to tests/riscv-coremark/coremark/docs/html/index/Configurations.html
diff --git a/riscv-coremark/coremark/docs/html/index/Files.html b/tests/riscv-coremark/coremark/docs/html/index/Files.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/Files.html
rename to tests/riscv-coremark/coremark/docs/html/index/Files.html
diff --git a/riscv-coremark/coremark/docs/html/index/Functions.html b/tests/riscv-coremark/coremark/docs/html/index/Functions.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/Functions.html
rename to tests/riscv-coremark/coremark/docs/html/index/Functions.html
diff --git a/riscv-coremark/coremark/docs/html/index/General.html b/tests/riscv-coremark/coremark/docs/html/index/General.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/General.html
rename to tests/riscv-coremark/coremark/docs/html/index/General.html
diff --git a/riscv-coremark/coremark/docs/html/index/General2.html b/tests/riscv-coremark/coremark/docs/html/index/General2.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/General2.html
rename to tests/riscv-coremark/coremark/docs/html/index/General2.html
diff --git a/riscv-coremark/coremark/docs/html/index/Types.html b/tests/riscv-coremark/coremark/docs/html/index/Types.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/Types.html
rename to tests/riscv-coremark/coremark/docs/html/index/Types.html
diff --git a/riscv-coremark/coremark/docs/html/index/Variables.html b/tests/riscv-coremark/coremark/docs/html/index/Variables.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/index/Variables.html
rename to tests/riscv-coremark/coremark/docs/html/index/Variables.html
diff --git a/riscv-coremark/coremark/docs/html/javascript/main.js b/tests/riscv-coremark/coremark/docs/html/javascript/main.js
similarity index 100%
rename from riscv-coremark/coremark/docs/html/javascript/main.js
rename to tests/riscv-coremark/coremark/docs/html/javascript/main.js
diff --git a/riscv-coremark/coremark/docs/html/javascript/searchdata.js b/tests/riscv-coremark/coremark/docs/html/javascript/searchdata.js
similarity index 100%
rename from riscv-coremark/coremark/docs/html/javascript/searchdata.js
rename to tests/riscv-coremark/coremark/docs/html/javascript/searchdata.js
diff --git a/riscv-coremark/coremark/docs/html/search/BuildTargetsP.html b/tests/riscv-coremark/coremark/docs/html/search/BuildTargetsP.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/BuildTargetsP.html
rename to tests/riscv-coremark/coremark/docs/html/search/BuildTargetsP.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationC.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationC.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationC.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationC.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationH.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationH.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationH.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationH.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationM.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationM.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationM.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationM.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationS.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationS.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationS.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationS.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationT.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationT.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationT.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationT.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationU.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationU.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationU.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationU.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationsH.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationsH.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationsH.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationsH.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationsM.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationsM.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationsM.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationsM.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationsS.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationsS.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationsS.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationsS.html
diff --git a/riscv-coremark/coremark/docs/html/search/ConfigurationsT.html b/tests/riscv-coremark/coremark/docs/html/search/ConfigurationsT.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/ConfigurationsT.html
rename to tests/riscv-coremark/coremark/docs/html/search/ConfigurationsT.html
diff --git a/riscv-coremark/coremark/docs/html/search/FilesC.html b/tests/riscv-coremark/coremark/docs/html/search/FilesC.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FilesC.html
rename to tests/riscv-coremark/coremark/docs/html/search/FilesC.html
diff --git a/riscv-coremark/coremark/docs/html/search/FilesR.html b/tests/riscv-coremark/coremark/docs/html/search/FilesR.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FilesR.html
rename to tests/riscv-coremark/coremark/docs/html/search/FilesR.html
diff --git a/riscv-coremark/coremark/docs/html/search/FunctionsC.html b/tests/riscv-coremark/coremark/docs/html/search/FunctionsC.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FunctionsC.html
rename to tests/riscv-coremark/coremark/docs/html/search/FunctionsC.html
diff --git a/riscv-coremark/coremark/docs/html/search/FunctionsG.html b/tests/riscv-coremark/coremark/docs/html/search/FunctionsG.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FunctionsG.html
rename to tests/riscv-coremark/coremark/docs/html/search/FunctionsG.html
diff --git a/riscv-coremark/coremark/docs/html/search/FunctionsI.html b/tests/riscv-coremark/coremark/docs/html/search/FunctionsI.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FunctionsI.html
rename to tests/riscv-coremark/coremark/docs/html/search/FunctionsI.html
diff --git a/riscv-coremark/coremark/docs/html/search/FunctionsM.html b/tests/riscv-coremark/coremark/docs/html/search/FunctionsM.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FunctionsM.html
rename to tests/riscv-coremark/coremark/docs/html/search/FunctionsM.html
diff --git a/riscv-coremark/coremark/docs/html/search/FunctionsP.html b/tests/riscv-coremark/coremark/docs/html/search/FunctionsP.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FunctionsP.html
rename to tests/riscv-coremark/coremark/docs/html/search/FunctionsP.html
diff --git a/riscv-coremark/coremark/docs/html/search/FunctionsS.html b/tests/riscv-coremark/coremark/docs/html/search/FunctionsS.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FunctionsS.html
rename to tests/riscv-coremark/coremark/docs/html/search/FunctionsS.html
diff --git a/riscv-coremark/coremark/docs/html/search/FunctionsT.html b/tests/riscv-coremark/coremark/docs/html/search/FunctionsT.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/FunctionsT.html
rename to tests/riscv-coremark/coremark/docs/html/search/FunctionsT.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralB.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralB.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralB.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralB.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralC.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralC.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralC.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralC.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralD.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralD.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralD.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralD.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralF.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralF.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralF.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralF.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralG.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralG.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralG.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralG.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralH.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralH.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralH.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralH.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralI.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralI.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralI.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralI.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralL.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralL.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralL.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralL.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralM.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralM.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralM.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralM.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralO.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralO.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralO.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralO.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralP.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralP.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralP.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralP.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralR.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralR.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralR.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralR.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralS.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralS.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralS.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralS.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralT.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralT.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralT.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralT.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralU.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralU.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralU.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralU.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralV.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralV.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralV.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralV.html
diff --git a/riscv-coremark/coremark/docs/html/search/GeneralW.html b/tests/riscv-coremark/coremark/docs/html/search/GeneralW.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/GeneralW.html
rename to tests/riscv-coremark/coremark/docs/html/search/GeneralW.html
diff --git a/riscv-coremark/coremark/docs/html/search/NoResults.html b/tests/riscv-coremark/coremark/docs/html/search/NoResults.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/NoResults.html
rename to tests/riscv-coremark/coremark/docs/html/search/NoResults.html
diff --git a/riscv-coremark/coremark/docs/html/search/TypesS.html b/tests/riscv-coremark/coremark/docs/html/search/TypesS.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/TypesS.html
rename to tests/riscv-coremark/coremark/docs/html/search/TypesS.html
diff --git a/riscv-coremark/coremark/docs/html/search/VariablesC.html b/tests/riscv-coremark/coremark/docs/html/search/VariablesC.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/VariablesC.html
rename to tests/riscv-coremark/coremark/docs/html/search/VariablesC.html
diff --git a/riscv-coremark/coremark/docs/html/search/VariablesD.html b/tests/riscv-coremark/coremark/docs/html/search/VariablesD.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/VariablesD.html
rename to tests/riscv-coremark/coremark/docs/html/search/VariablesD.html
diff --git a/riscv-coremark/coremark/docs/html/search/VariablesL.html b/tests/riscv-coremark/coremark/docs/html/search/VariablesL.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/VariablesL.html
rename to tests/riscv-coremark/coremark/docs/html/search/VariablesL.html
diff --git a/riscv-coremark/coremark/docs/html/search/VariablesO.html b/tests/riscv-coremark/coremark/docs/html/search/VariablesO.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/VariablesO.html
rename to tests/riscv-coremark/coremark/docs/html/search/VariablesO.html
diff --git a/riscv-coremark/coremark/docs/html/search/VariablesP.html b/tests/riscv-coremark/coremark/docs/html/search/VariablesP.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/VariablesP.html
rename to tests/riscv-coremark/coremark/docs/html/search/VariablesP.html
diff --git a/riscv-coremark/coremark/docs/html/search/VariablesR.html b/tests/riscv-coremark/coremark/docs/html/search/VariablesR.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/VariablesR.html
rename to tests/riscv-coremark/coremark/docs/html/search/VariablesR.html
diff --git a/riscv-coremark/coremark/docs/html/search/VariablesS.html b/tests/riscv-coremark/coremark/docs/html/search/VariablesS.html
similarity index 100%
rename from riscv-coremark/coremark/docs/html/search/VariablesS.html
rename to tests/riscv-coremark/coremark/docs/html/search/VariablesS.html
diff --git a/riscv-coremark/coremark/docs/html/styles/1.css b/tests/riscv-coremark/coremark/docs/html/styles/1.css
similarity index 100%
rename from riscv-coremark/coremark/docs/html/styles/1.css
rename to tests/riscv-coremark/coremark/docs/html/styles/1.css
diff --git a/riscv-coremark/coremark/docs/html/styles/2.css b/tests/riscv-coremark/coremark/docs/html/styles/2.css
similarity index 100%
rename from riscv-coremark/coremark/docs/html/styles/2.css
rename to tests/riscv-coremark/coremark/docs/html/styles/2.css
diff --git a/riscv-coremark/coremark/docs/html/styles/main.css b/tests/riscv-coremark/coremark/docs/html/styles/main.css
similarity index 100%
rename from riscv-coremark/coremark/docs/html/styles/main.css
rename to tests/riscv-coremark/coremark/docs/html/styles/main.css
diff --git a/riscv-coremark/coremark/freebsd/core_portme.mak b/tests/riscv-coremark/coremark/freebsd/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/freebsd/core_portme.mak
rename to tests/riscv-coremark/coremark/freebsd/core_portme.mak
diff --git a/riscv-coremark/coremark/linux/core_portme.c b/tests/riscv-coremark/coremark/linux/core_portme.c
similarity index 100%
rename from riscv-coremark/coremark/linux/core_portme.c
rename to tests/riscv-coremark/coremark/linux/core_portme.c
diff --git a/riscv-coremark/coremark/linux/core_portme.h b/tests/riscv-coremark/coremark/linux/core_portme.h
similarity index 100%
rename from riscv-coremark/coremark/linux/core_portme.h
rename to tests/riscv-coremark/coremark/linux/core_portme.h
diff --git a/riscv-coremark/coremark/linux/core_portme.mak b/tests/riscv-coremark/coremark/linux/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/linux/core_portme.mak
rename to tests/riscv-coremark/coremark/linux/core_portme.mak
diff --git a/riscv-coremark/coremark/linux64/core_portme.c b/tests/riscv-coremark/coremark/linux64/core_portme.c
similarity index 100%
rename from riscv-coremark/coremark/linux64/core_portme.c
rename to tests/riscv-coremark/coremark/linux64/core_portme.c
diff --git a/riscv-coremark/coremark/linux64/core_portme.h b/tests/riscv-coremark/coremark/linux64/core_portme.h
similarity index 100%
rename from riscv-coremark/coremark/linux64/core_portme.h
rename to tests/riscv-coremark/coremark/linux64/core_portme.h
diff --git a/riscv-coremark/coremark/linux64/core_portme.mak b/tests/riscv-coremark/coremark/linux64/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/linux64/core_portme.mak
rename to tests/riscv-coremark/coremark/linux64/core_portme.mak
diff --git a/riscv-coremark/coremark/macos/core_portme.mak b/tests/riscv-coremark/coremark/macos/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/macos/core_portme.mak
rename to tests/riscv-coremark/coremark/macos/core_portme.mak
diff --git a/riscv-coremark/coremark/posix/core_portme.c b/tests/riscv-coremark/coremark/posix/core_portme.c
similarity index 100%
rename from riscv-coremark/coremark/posix/core_portme.c
rename to tests/riscv-coremark/coremark/posix/core_portme.c
diff --git a/riscv-coremark/coremark/posix/core_portme.h b/tests/riscv-coremark/coremark/posix/core_portme.h
similarity index 100%
rename from riscv-coremark/coremark/posix/core_portme.h
rename to tests/riscv-coremark/coremark/posix/core_portme.h
diff --git a/riscv-coremark/coremark/posix/core_portme.mak b/tests/riscv-coremark/coremark/posix/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/posix/core_portme.mak
rename to tests/riscv-coremark/coremark/posix/core_portme.mak
diff --git a/riscv-coremark/coremark/posix/core_portme_posix_overrides.h b/tests/riscv-coremark/coremark/posix/core_portme_posix_overrides.h
similarity index 100%
rename from riscv-coremark/coremark/posix/core_portme_posix_overrides.h
rename to tests/riscv-coremark/coremark/posix/core_portme_posix_overrides.h
diff --git a/riscv-coremark/coremark/rtems/core_portme.mak b/tests/riscv-coremark/coremark/rtems/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/rtems/core_portme.mak
rename to tests/riscv-coremark/coremark/rtems/core_portme.mak
diff --git a/riscv-coremark/coremark/rtems/init.c b/tests/riscv-coremark/coremark/rtems/init.c
similarity index 100%
rename from riscv-coremark/coremark/rtems/init.c
rename to tests/riscv-coremark/coremark/rtems/init.c
diff --git a/riscv-coremark/coremark/simple/core_portme.c b/tests/riscv-coremark/coremark/simple/core_portme.c
similarity index 100%
rename from riscv-coremark/coremark/simple/core_portme.c
rename to tests/riscv-coremark/coremark/simple/core_portme.c
diff --git a/riscv-coremark/coremark/simple/core_portme.h b/tests/riscv-coremark/coremark/simple/core_portme.h
similarity index 100%
rename from riscv-coremark/coremark/simple/core_portme.h
rename to tests/riscv-coremark/coremark/simple/core_portme.h
diff --git a/riscv-coremark/coremark/simple/core_portme.mak b/tests/riscv-coremark/coremark/simple/core_portme.mak
similarity index 100%
rename from riscv-coremark/coremark/simple/core_portme.mak
rename to tests/riscv-coremark/coremark/simple/core_portme.mak
diff --git a/riscv-coremark/extraPortmes/README.md b/tests/riscv-coremark/extraPortmes/README.md
similarity index 100%
rename from riscv-coremark/extraPortmes/README.md
rename to tests/riscv-coremark/extraPortmes/README.md
diff --git a/riscv-coremark/extraPortmes/cygwin/core_portme.c b/tests/riscv-coremark/extraPortmes/cygwin/core_portme.c
similarity index 100%
rename from riscv-coremark/extraPortmes/cygwin/core_portme.c
rename to tests/riscv-coremark/extraPortmes/cygwin/core_portme.c
diff --git a/riscv-coremark/extraPortmes/cygwin/core_portme.h b/tests/riscv-coremark/extraPortmes/cygwin/core_portme.h
similarity index 100%
rename from riscv-coremark/extraPortmes/cygwin/core_portme.h
rename to tests/riscv-coremark/extraPortmes/cygwin/core_portme.h
diff --git a/riscv-coremark/extraPortmes/cygwin/core_portme.mak b/tests/riscv-coremark/extraPortmes/cygwin/core_portme.mak
similarity index 100%
rename from riscv-coremark/extraPortmes/cygwin/core_portme.mak
rename to tests/riscv-coremark/extraPortmes/cygwin/core_portme.mak
diff --git a/riscv-coremark/extraPortmes/linux/core_portme.c b/tests/riscv-coremark/extraPortmes/linux/core_portme.c
similarity index 100%
rename from riscv-coremark/extraPortmes/linux/core_portme.c
rename to tests/riscv-coremark/extraPortmes/linux/core_portme.c
diff --git a/riscv-coremark/extraPortmes/linux/core_portme.h b/tests/riscv-coremark/extraPortmes/linux/core_portme.h
similarity index 100%
rename from riscv-coremark/extraPortmes/linux/core_portme.h
rename to tests/riscv-coremark/extraPortmes/linux/core_portme.h
diff --git a/riscv-coremark/extraPortmes/linux/core_portme.mak b/tests/riscv-coremark/extraPortmes/linux/core_portme.mak
similarity index 100%
rename from riscv-coremark/extraPortmes/linux/core_portme.mak
rename to tests/riscv-coremark/extraPortmes/linux/core_portme.mak
diff --git a/riscv-coremark/extraPortmes/linux64/core_portme.c b/tests/riscv-coremark/extraPortmes/linux64/core_portme.c
similarity index 100%
rename from riscv-coremark/extraPortmes/linux64/core_portme.c
rename to tests/riscv-coremark/extraPortmes/linux64/core_portme.c
diff --git a/riscv-coremark/extraPortmes/linux64/core_portme.h b/tests/riscv-coremark/extraPortmes/linux64/core_portme.h
similarity index 100%
rename from riscv-coremark/extraPortmes/linux64/core_portme.h
rename to tests/riscv-coremark/extraPortmes/linux64/core_portme.h
diff --git a/riscv-coremark/extraPortmes/linux64/core_portme.mak b/tests/riscv-coremark/extraPortmes/linux64/core_portme.mak
similarity index 100%
rename from riscv-coremark/extraPortmes/linux64/core_portme.mak
rename to tests/riscv-coremark/extraPortmes/linux64/core_portme.mak
diff --git a/riscv-coremark/riscv64-baremetal/core_portme.c b/tests/riscv-coremark/riscv64-baremetal/core_portme.c
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/core_portme.c
rename to tests/riscv-coremark/riscv64-baremetal/core_portme.c
diff --git a/riscv-coremark/riscv64-baremetal/core_portme.h b/tests/riscv-coremark/riscv64-baremetal/core_portme.h
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/core_portme.h
rename to tests/riscv-coremark/riscv64-baremetal/core_portme.h
diff --git a/riscv-coremark/riscv64-baremetal/core_portme.mak b/tests/riscv-coremark/riscv64-baremetal/core_portme.mak
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/core_portme.mak
rename to tests/riscv-coremark/riscv64-baremetal/core_portme.mak
diff --git a/riscv-coremark/riscv64-baremetal/crt.S b/tests/riscv-coremark/riscv64-baremetal/crt.S
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/crt.S
rename to tests/riscv-coremark/riscv64-baremetal/crt.S
diff --git a/riscv-coremark/riscv64-baremetal/encoding.h b/tests/riscv-coremark/riscv64-baremetal/encoding.h
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/encoding.h
rename to tests/riscv-coremark/riscv64-baremetal/encoding.h
diff --git a/riscv-coremark/riscv64-baremetal/link.ld b/tests/riscv-coremark/riscv64-baremetal/link.ld
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/link.ld
rename to tests/riscv-coremark/riscv64-baremetal/link.ld
diff --git a/riscv-coremark/riscv64-baremetal/syscallbackup.c b/tests/riscv-coremark/riscv64-baremetal/syscallbackup.c
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/syscallbackup.c
rename to tests/riscv-coremark/riscv64-baremetal/syscallbackup.c
diff --git a/riscv-coremark/riscv64-baremetal/syscalls.c b/tests/riscv-coremark/riscv64-baremetal/syscalls.c
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/syscalls.c
rename to tests/riscv-coremark/riscv64-baremetal/syscalls.c
diff --git a/riscv-coremark/riscv64-baremetal/util.h b/tests/riscv-coremark/riscv64-baremetal/util.h
similarity index 100%
rename from riscv-coremark/riscv64-baremetal/util.h
rename to tests/riscv-coremark/riscv64-baremetal/util.h
diff --git a/riscv-coremark/riscv64/core_portme.c b/tests/riscv-coremark/riscv64/core_portme.c
similarity index 100%
rename from riscv-coremark/riscv64/core_portme.c
rename to tests/riscv-coremark/riscv64/core_portme.c
diff --git a/riscv-coremark/riscv64/core_portme.h b/tests/riscv-coremark/riscv64/core_portme.h
similarity index 100%
rename from riscv-coremark/riscv64/core_portme.h
rename to tests/riscv-coremark/riscv64/core_portme.h
diff --git a/riscv-coremark/riscv64/core_portme.mak b/tests/riscv-coremark/riscv64/core_portme.mak
similarity index 100%
rename from riscv-coremark/riscv64/core_portme.mak
rename to tests/riscv-coremark/riscv64/core_portme.mak
diff --git a/riscv-coremark/trace b/tests/riscv-coremark/trace
similarity index 100%
rename from riscv-coremark/trace
rename to tests/riscv-coremark/trace
diff --git a/riscv-coremark/transferobjump.sh b/tests/riscv-coremark/transferobjump.sh
similarity index 100%
rename from riscv-coremark/transferobjump.sh
rename to tests/riscv-coremark/transferobjump.sh
diff --git a/testsBP/crt0/Makefile b/tests/testsBP/crt0/Makefile
similarity index 100%
rename from testsBP/crt0/Makefile
rename to tests/testsBP/crt0/Makefile
diff --git a/testsBP/crt0/isr.s b/tests/testsBP/crt0/isr.s
similarity index 100%
rename from testsBP/crt0/isr.s
rename to tests/testsBP/crt0/isr.s
diff --git a/testsBP/crt0/pcnt_driver.h b/tests/testsBP/crt0/pcnt_driver.h
similarity index 100%
rename from testsBP/crt0/pcnt_driver.h
rename to tests/testsBP/crt0/pcnt_driver.h
diff --git a/testsBP/crt0/pcnt_driver.s b/tests/testsBP/crt0/pcnt_driver.s
similarity index 100%
rename from testsBP/crt0/pcnt_driver.s
rename to tests/testsBP/crt0/pcnt_driver.s
diff --git a/testsBP/crt0/pre_main.c b/tests/testsBP/crt0/pre_main.c
similarity index 100%
rename from testsBP/crt0/pre_main.c
rename to tests/testsBP/crt0/pre_main.c
diff --git a/testsBP/crt0/start.s b/tests/testsBP/crt0/start.s
similarity index 100%
rename from testsBP/crt0/start.s
rename to tests/testsBP/crt0/start.s
diff --git a/testsBP/fpga-blink-led/Makefile b/tests/testsBP/fpga-blink-led/Makefile
similarity index 100%
rename from testsBP/fpga-blink-led/Makefile
rename to tests/testsBP/fpga-blink-led/Makefile
diff --git a/testsBP/fpga-blink-led/blink-led.s b/tests/testsBP/fpga-blink-led/blink-led.s
similarity index 100%
rename from testsBP/fpga-blink-led/blink-led.s
rename to tests/testsBP/fpga-blink-led/blink-led.s
diff --git a/testsBP/james_mm/Makefile b/tests/testsBP/james_mm/Makefile
similarity index 100%
rename from testsBP/james_mm/Makefile
rename to tests/testsBP/james_mm/Makefile
diff --git a/testsBP/james_mm/james_mm.c b/tests/testsBP/james_mm/james_mm.c
similarity index 100%
rename from testsBP/james_mm/james_mm.c
rename to tests/testsBP/james_mm/james_mm.c
diff --git a/testsBP/linker.x b/tests/testsBP/linker.x
similarity index 100%
rename from testsBP/linker.x
rename to tests/testsBP/linker.x
diff --git a/testsBP/linker1000.x b/tests/testsBP/linker1000.x
similarity index 100%
rename from testsBP/linker1000.x
rename to tests/testsBP/linker1000.x
diff --git a/testsBP/makefile.inc b/tests/testsBP/makefile.inc
similarity index 100%
rename from testsBP/makefile.inc
rename to tests/testsBP/makefile.inc
diff --git a/testsBP/mibench_qsort/LICENSE b/tests/testsBP/mibench_qsort/LICENSE
similarity index 100%
rename from testsBP/mibench_qsort/LICENSE
rename to tests/testsBP/mibench_qsort/LICENSE
diff --git a/testsBP/mibench_qsort/Makefile b/tests/testsBP/mibench_qsort/Makefile
similarity index 100%
rename from testsBP/mibench_qsort/Makefile
rename to tests/testsBP/mibench_qsort/Makefile
diff --git a/testsBP/mibench_qsort/qsort_small.c b/tests/testsBP/mibench_qsort/qsort_small.c
similarity index 100%
rename from testsBP/mibench_qsort/qsort_small.c
rename to tests/testsBP/mibench_qsort/qsort_small.c
diff --git a/testsBP/sieve/Makefile b/tests/testsBP/sieve/Makefile
similarity index 100%
rename from testsBP/sieve/Makefile
rename to tests/testsBP/sieve/Makefile
diff --git a/testsBP/sieve/sieve.c b/tests/testsBP/sieve/sieve.c
similarity index 100%
rename from testsBP/sieve/sieve.c
rename to tests/testsBP/sieve/sieve.c
diff --git a/testsBP/simple/Makefile b/tests/testsBP/simple/Makefile
similarity index 100%
rename from testsBP/simple/Makefile
rename to tests/testsBP/simple/Makefile
diff --git a/testsBP/simple/fail.s b/tests/testsBP/simple/fail.s
similarity index 100%
rename from testsBP/simple/fail.s
rename to tests/testsBP/simple/fail.s
diff --git a/testsBP/simple/global_hist_test.s b/tests/testsBP/simple/global_hist_test.s
similarity index 100%
rename from testsBP/simple/global_hist_test.s
rename to tests/testsBP/simple/global_hist_test.s
diff --git a/testsBP/simple/header.h b/tests/testsBP/simple/header.h
similarity index 100%
rename from testsBP/simple/header.h
rename to tests/testsBP/simple/header.h
diff --git a/testsBP/simple/lbu_test.s b/tests/testsBP/simple/lbu_test.s
similarity index 100%
rename from testsBP/simple/lbu_test.s
rename to tests/testsBP/simple/lbu_test.s
diff --git a/testsBP/simple/main.c b/tests/testsBP/simple/main.c
similarity index 100%
rename from testsBP/simple/main.c
rename to tests/testsBP/simple/main.c
diff --git a/testsBP/simple/sample.s b/tests/testsBP/simple/sample.s
similarity index 100%
rename from testsBP/simple/sample.s
rename to tests/testsBP/simple/sample.s
diff --git a/tests/wally-riscv-arch-test/.gitignore b/tests/wally-riscv-arch-test/.gitignore
new file mode 100644
index 000000000..3203a4378
--- /dev/null
+++ b/tests/wally-riscv-arch-test/.gitignore
@@ -0,0 +1,11 @@
+# Ignore editor backup files
+*~
+# Ignore transients generated by the tests
+/.cproject
+/.project
+/work/
+/setup.env
+#ignore Mac file system artifacts
+*.DS_Store
+
+riscv-target/
diff --git a/tests/wally-riscv-arch-test/CHANGELOG.md b/tests/wally-riscv-arch-test/CHANGELOG.md
new file mode 100644
index 000000000..cf6144267
--- /dev/null
+++ b/tests/wally-riscv-arch-test/CHANGELOG.md
@@ -0,0 +1,413 @@
+# CHANGELOG
+
+## [2.5.3] - 2021-10-15
+ - fix the lower case `i` in the `RVTEST_CASE` macros used in the shift operation tests.
+
+## [2.5.2] - 2021-10-14
+ - update format for aes32 and sm4 instructions
+ - update reference signature for sha256 and sm3 instructions in rv64i_m/K_unratified
+ - delete zip and unzip tests in rv64i_m/K_unratified
+ - update tests for aes64ks1i, sm4ed and sm4ks to use byte_count with overlap = "Y" to improve the coverage of S-boxes
+
+## [2.5.1] - 2021-10-07
+ - added styles files to the F coverage report directories.
+
+## [2.5.0] - 2021-10-01
+ - Added rv32f tests, references, coverage files and data propagation reports
+ - fixed broken links in READMEs across the repo.
+ - corrected string "EBREAK" in io string macro to "ECALL" for ecall.S tests. #207
+ - fixed typo `.alive` --> `.align` in `riscv-target/example_target/model_test.h`.
+
+## [2.4.7] - 2021-10-01
+ - Fix for the issue #206
+
+## [2.4.6] - 2021-08-02
+ - Added rv32e tests in riscv-test-suite
+
+## [2.4.5] - 2021-07-29
+ - fix for issue #195
+
+## [2.4.4] - 2021-07-19
+ - Annotating tags during releases
+
+## [2.4.3] - 2021-05-20
+ - added new 64-bit K crypto tests as per the test-plan presented by the scalar crypto task group
+ [here](https://github.com/riscv/riscv-crypto/blob/d89dfee25780f79c162da4eb69cd9076dd701c88/tests/compliance/test-plan-scalar.adoc)
+ - added new 32-bit K crypto tests as per the above mentioned test-plan.
+ - added coverage and data propagation reports for the above tests.
+ - updated README in riscv-test-suite
+ - added missing semi-colon in example target Makefile.include files
+
+## [2.4.2] - 2021-04-20
+ - changed all occurances of SPTBR to the new name SATP
+
+## [2.4.1] - 2021-04-01
+ - updated issue number in TestFormatSpec to be consistent with doc history
+ - adding a contribution guideline
+ - updated comment on usage of RISCV_DEVICE in Makefile.include
+ - updated licenses that are currently used by tests
+ - renamed K tests to K_unratified
+ - updated ci to build and upload pdf for testformatspec
+
+## [2.4.0] - 2021-03-26
+2021-03-26 Duncan Graham
+ - Added new K Crypto (scalar) (0.8.1) tests from Imperas
+
+## [2.3.1] - 2021-03-20
+### Changed
+ - Compliance Task Group changed to Architecture Test SIG in all docs and comments
+ - replacing old riscv-compliance link with new riscv-arch-test links
+ - fixed ci for release
+### Removed
+ - spec/TestFormatSpec.pdf is removed since its old. Keeping only adoc file
+ - removing obsolete and commented out portions from doc/README
+
+## [2.3] - 2021-03-11
+### Added
+ - updated maintainers list in root-level readme
+ - updated the links to riscof, isac and ctg repos and docs in root-level readme
+ - adding CI to update versions automatically
+### Removed
+ - replaced spike target with a REAMDE pointing to riscv-isa-sim/arch_test_target/README.md
+
+## [2.2] - 2021-01-28
+ 2021-01-22 Tobias Wölfel
+ * Add missing base ISA check in riscv-test-suite
+
+ 2021-01-20 Xiretza
+ * Deduplicate makefiles in riscv-test-suite
+ * Makefile: Fix ordering of simulate and verify targets to allow multi-job runs (make -j)
+ * Makefile.include: Document RISCV_TEST
+ * Makefile: use $(TARGETDIR) variable for postverify target instead of hard-coded path
+
+ 2021-01-16 S Pawan Kumar
+ * Fixed NARGS macro defintion to work correctly.
+
+ 2021-01-15 Xiretza
+ * style: Add a missing space to the "OK" message in verify.sh
+
+ 2020-12-17 Neel Gala
+ * remove env folder symlinks from all riscv-test-suite src folders
+ * fixed assertion macros for ovpsim
+ * renamed RVTEST_ASSERT to RVMODEL_ASSERT in the Makefile and ovpsim macros
+ * tests updated with right set of "correctvals"
+
+ 2020-11-24 Neel Gala
+ * added MIGRATION.adoc in doc directory to indicate how old framework targets can work with
+ changes made as part of this PR
+ * updated doc/README.adoc to avoid the word "compliance" and updated the section on porting a new
+ target to the framework.
+ * Added an example_target directory to host dummy files which can be used as a starting point for
+ porting targets. This was provided by MarcKarasek.
+ * migrated/ported existing targets (except codasip and sifive-formal) to the new framework
+ changes.
+ * in riscv-test-env/p/riscv_test.h changed names of RVTEST_[CODE/DATA]_[BEGIN/END] to
+ RVTEST_[CODE/DATA]_[BEGIN/END]_OLD respectively to avoid conflicts with the new framework macros.
+ * in riscv-test-env/p/riscv_test.h re-strutucture RVTEST_DATA_BEGIN_OLD/END to ensure that all
+ target specific data contents are introduced in RVTEST_DATA_END after the signature.
+ * added new file riscv-test-suite/env/arch_test.h which contains the macros used by the new set of
+ tests. A symlink to this in the riscv-test-env directory is also created. The arch_test also
+ includes aliases for the old macros.
+ * encoding.h moved to riscv-test-suite/env and a symlink to this file exists in riscv-test-env.
+ This was done to ensure that the arch_test.h and encoding.h are not to be modified by the
+ targets
+ * Added riscv-test-stats which includes coverage and data propagation reports for the tests
+ available in the riscv-test-suite directory.
+ * upddted the directory structure of the riscv-test-suite as per definition found in the
+ TestFormatSpec document.
+ * new set of tests with better coverage for rv[32/64][I,M,C, Zifencei] added. Almost all tests
+ were generated using the open source riscv_ctg tool. A few tests like fence, fencei, ebreak,
+ ecall, etc were handwritten/modified to follow the new macro conventions.
+ * Updated TestFormatSpec to avoid the word compliance and also updated the definitions of macros
+ and signatures
+ * created a root-level Makefile.include to decouple the Makefile and target specific settings.
+ * Added riscv-target and Makefile.include to the .gitignore file to stop tracking target specific
+ changes.
+ * Added special targets for compile(build), simulate(run) and verify in the Makefiles of each
+ test-suite.
+ * the existing riscv-targets have been either updated for the new framework or migrated to the
+ framework.
+
+ 2020-10-15 Simon Davidmann
+ * riscvOVPsim enhanced and moved to its own respository: github.com/riscv-ovpsim
+
+ 2020-04-24 Allen Baum
+ * fixed the I-SB-01.S and I-SH-01.S tests and associated reference signatures to account
+ of tests with negative offsets (which causes stores outside the signature area)
+
+ 2020-03-19 Neel Gala
+ * restructuring the riscv-test-suite to indicate clearly what is deprecated, wip and usable
+ tests.
+ * based on the above fixed the directory structure for riscv-targets where-ever applicable. Only
+ tested riscvOVPsim and spike.
+ * fixed script bugs for spike as well
+ * renamed rv32i/I-IO.S to rv32i/I-IO-01.S along with necessary changes to the reference files
+ and Makefrag
+ * renamed mbadaddr csr to mtval as raised in issue #31
+ * C.SWSP-01.S test updated to fix issue #37
+
+ 2020-03-18 Neel Gala
+ * fixed doc/README.adoc with correct version to pass the sanity-check in the doc/Makefile
+
+ 2020-02-07 Prashanth Mundkur
+ * Support F extension on RV32 sail-riscv-c.
+
+ 2019-12-01 Allen Baum
+ * modified macro names to conformn to riscof naming convention of model specific vs. pre-defined
+ * add more complete list of macros, their uses, parameters, and whether they are required or optional
+ * minor structural changes (moving sentences, renumbering) and typo fixes
+ * clarified impact of debug macros
+ * clarified how SIGUPD and BASEUPD must be used
+ * remove section about test taxonomy, binary tests, emulated ops
+ * clarify/fix boundary between test target and framework responsibilities
+ (split test target into test target and test shell)
+ * remove To Be discussed items that have been discussed
+ * remove default case condition; if conditions are unchanged, part of same case
+ * minor grammatical changes related to the above
+
+ 2019-10-16 Allen Baum
+ * spec/TestFormatSpec.adoc: changed the format of the signature to fixed physical address size, fixed 32b data size extracted from COMPLIANCE_DATA_BEGIN/END range.
+
+ * more gramatical fixes, clarifications added
+ * added To Be Discussed items regarding emulated instruction and binary tests
+
+ 2019-09-11 Allen Baum
+ * spec/TestFormatSpec.adoc: more grammar and typo corrections and changes
+ clarified and added To Be Discussed issues
+
+ 2019-09-11 Allen Baum
+ * spec/TestFormatSpec.adoc: many grammar and typo corrections and changes
+ removed many "to Be Discussed items and made them official
+ Added wording to clarify spec intent (work in progress/goal rather than final)
+ Added macros to ease test authoring: RVTEST_SIGBASE, RVTEST_SIGUPDATE, RVTEST_CASE
+ Added detail on proposals for connection to framework (how framework selects tests).
+ Expanded definition of signature format
+ Changed the (proposed) directory structure and naming convention to eliminate ambiguities, add consistancy and slightly better match existing structure
+ Added many "future work" items related to the above
+ Added examples and comments to code examples to indicate how proposed macros would be used
+ * .gitignore: added condition to ignore Mac file system artifacts
+
+
+ 2019-11-05 Lee Moore
+ * Restructured RV32I to move Zicsr and Zifencei into their own suites
+
+ 2019-10-14 Lee Moore
+ * Added Ability to run a single test by using the Make Variable RISCV_TEST
+ for example, to only run the test I-ADD-01 from the rv32i suite
+ make RISCV_ISA=rv32i RISCV_TEST=I-ADD-01
+ * Added Top Level Variable to Makefile RISCV_TARGET_FLAGS,
+ in the case of the RISCV_TARGET this can be passed and appended to the invocation
+ commandline configuration, for example to pass a command line flag to the RISCV_TARGET
+ to perform tracing. The value of this flag will be target specific
+ make RISCV_ISA=rv32i RISCV_TEST=I-ADD-01 RISCV_TARGET_FLAGS="--trace"
+ This is has also been added to all other targets to allow target configuration from
+ the commandline
+
+ 2019-10-07 Philipp Wagner
+ * When executing the test suite, Ibex always writes an instruction
+ log. Update the Makefile to write it to a test-specific location
+ (next to all other log files).
+ * On Ibex, provide an additional .objdump-noalias disassembly file
+ with no aliases and numeric register names (instead of ABI names).
+ This file matches the Ibex trace and can be used to debug the test
+ runs.
+
+ 2019-08-29 Robert Balas
+ * Added support for using RI5CY as a target.
+ * Added subdirectory riscv-target/ri5cy
+
+ 2019-08-08 Lee Moore
+ * Added support for lowRISC/ibex RTL as a target using Verilator.
+ In conjunction with Philipp Wagner of lowRISC phw@lowrisc.org
+
+ 2019-07-18 Paul Donahue
+ * Fix typos/grammar and use correct architectural terms.
+
+ 2019-06-21 Ben Selfridge
+ * Added support for using the the GRIFT simulator as a target.
+ * Added subdirectory riscv-target/grift
+ * updated README.md and doc/README.adoc
+
+ 2019-05-23 Prashanth Mundkur
+ * Added support and instructions for using the C and OCaml simulators from the Sail RISC-V formal model as targets.
+ * added subdirectories riscv-target/sail-riscv-c and riscv-target/sail-riscv-ocaml
+ * updated README.md and doc/README.adoc
+
+ 2019-04-05 Allen Baum
+ * spec/TestFormatSpec.adoc: Adding details, minor corrections, ToBeDiscussed
+ items and clarifications to the specification of the future compliance test
+ suite. Also removing restrictions on having absolate addresses in signature
+
+ 2019-02-21 Lee Moore
+ * Fixed bug in RVTEST_IO_ASSERT_GPR_EQ which was not preserving register t0
+ * Corrected commit I-LUI-01.S, register target changed but missed assertion
+
+ 2019-02-21 Deborah Soung
+ * added RiscvFormalSpec as a target with its own unique environment
+
+ 2019-02-15 Radek Hajek
+ * updated rv32i tests to support all registers (x31) with assertions
+ * updated spec/TestFormatSpec.adoc example ISA test with new assertions
+
+ 2019-02-05 Deborah Soung
+ * [Issue #33] fixing rv32si/ma_fetch.S test
+ * [Issue #32] fixing breakpoint test
+
+ 2019-02-01 Lee Moore
+ * updated Infrastructure macros to support non-volatile registers
+ * updated riscvOVPsim
+
+ 2019-01-29 Deborah Soung
+ * Added Rocket Chip generated cores as a target
+ * riscv-target/rocket/compliance_io.h created
+ * riscv-target/rocket/compliance_test.h created
+ * riscv-target/rocket/*/Makefile.include created for existing test suites
+ * README.adoc updated with instructions for using Rocket cores as targets
+
+ 2019-01-22 Premysl Vaclavik
+ * feature: initial version of Compliance Test Format Specification
+ * This new document outlines how we should like the compliance
+ system to work going forward. By contrast the doc/README.adoc file
+ describes the current system as it is.
+ * Approved at Compliance TG meeting of 9 Jan 2019.
+
+ 2019-01-02 Radek Hajek
+ * unified macros in all compliance tests
+
+ 2018-12-20 Lee Moore
+ * fixed riscvOVPsim
+
+ 2018-11-22 Simon Davidmann
+ * added information on test suite status
+
+ 2018-11-21 Olof Kindgren
+ * Added support for using external target directories with $TARGETDIR
+
+ 2018-11-21 Neel Gala
+ * riscv-test-suite/rv_/references/_.reference_output: changed signature
+ format for all tests to include only 4-bytes per line starting with the
+ most significant byte on the left.
+ * riscv-target/spike/device/rv_/Makefile.include: Added a patch for
+ spike-device Makefiles where the old-signature format is post-processed
+ to generate a signature in the new format at the end of each test.
+ * riscv-target/riscvOVPsim/device/rv_/Makefile.include: same patch as above.
+ * Makefile: default target for Makefile is now to run all tests supported by
+ the target mentioned defined by RISCV_TARGET variable.
+
+ 2018-10-11 Simon Davidmann
+ * Ported github riscv/riscv-tests for RV32 processors to this compliance env
+ * rv32ua rv32uc rv32ud rv32uf rv32ud rv32ui
+
+ 2018-09-10 Lee Moore
+ * Added tests to RV32I to improve coverage, usage of Imperas Mutating Fault Simulator to
+ identify untested usage cases
+ * Macro renames to support GPR, (S)FPR, (D)FPR
+ * Added test suite RV32IM to test 32 bit Multiply and Divide instructions
+ * Added test suite RV32IMC to test 32 bit Compressed instructions
+ * Added test suite RV64I to test 64 bit Integer instructions
+ * Added test suite RV64IM to test 64 bit Multiply and Divide instructions
+
+
+ 2018-06-15 Radek Hajek
+
+ Modifications to support Codasip simulator.
+
+ The simulator is renamed as Codasip-simulator (was
+ Codasip-IA-simulator), compliance_test.h has been moved to target
+ directories and a COMPILE_TARGET has been added to Makefile to
+ allow use of LLVM.
+
+ * Makefile: Include Codasip simulator target.
+ * riscv-target/codasip-IA-simulator/compliance_io.h: Renamed as
+ riscv-target/Codasip-simulator/compliance_io.h.
+ * riscv-target/Codasip-simulator/compliance_io.h: Renamed from
+ riscv-target/codasip-IA-simulator/compliance_io.
+ * riscv-target/Codasip-simulator/compliance_test.h: Created.
+ * riscv-target/codasip-IA-simulator/device/rv32i/Makefile.include:
+ Renamed as
+ riscv-target/Codasip-simulator/device/rv32i/Makefile.include
+ * riscv-target/Codasip-simulator/device/rv32i/Makefile.include:
+ Renamed from
+ riscv-target/codasip-IA-simulator/device/rv32i/Makefile.include.
+ * riscv-test-env/compliance_test.h: Renamed as
+ riscv-target/riscvOVPsim/compliance_test.h.
+ * riscv-target/riscvOVPsim/compliance_test.h: Renamed from
+ riscv-test-env/compliance_test.h.
+ * riscv-target/riscvOVPsim/device/rv32i/Makefile.include: Updated
+ for new environment.
+ * riscv-target/spike/compliance_test.h: Created.
+ * riscv-target/spike/device/rv32i/Makefile.include: Updated for
+ new environment.
+ * riscv-test-suite/rv32i/Makefile: Likewise.
+
+ 2018-06-10 Jeremy Bennett
+
+ Put placeholders in empty directories to make sure they show in
+ the GitHub hierarchy.
+
+ * riscv-test-suite/rv32i/.gitignore: Created.
+ * riscv-test-suite/rv32m/.gitignore: Created.
+
+ 2018-06-10 Jeremy Bennett
+
+ * README.md: Make references to files in the repo into links.
+
+ 2018-06-09 Jeremy Bennett
+
+ * .gitignore: Ignore editor backup files.
+
+ 2018-06-09 Jeremy Bennett
+
+ * README.md: Add better link to documentation README.md.
+
+ 2018-06-08 Jeremy Bennett
+
+ * README.md: Move AsciiDoc details into new README.md in the doc
+ directory.
+
+ 2018-06-08 Jeremy Bennett
+
+ * README.md: Fix typo in link to AsciiDoc cheat sheet
+
+ 2018-06-08 Jeremy Bennett
+
+ * COPYING.BSD: Created.
+ * COPYING.CC: Created.
+ * README.md: Add git process, licensing and engineering process.
+
+ 2018-06-08 Jeremy Bennett
+
+ * README.md: Correct details for running the compliance tests and
+ directory for OVPsim.
+
+ 2018-06-08 Jeremy Bennett
+
+ Clean restructuring to just the work of interest.
+
+ * thought-experiments: Directory removed.
+ * .gitignore: Merged with TestStructure/.gitignore
+ * Makefile: Renamed from TestStructure/Makefile.
+ * TestStructure/Makefile: Renamed as Makefile.
+ * README.md: Merged with TestStructure/README.md.
+ * TestStructure/.gitignore: Deleted and contents moved into
+ .gitignore.
+ * TestStructure/README.md: Deleted and contents moved into
+ README.md.
+ * TestStructure/doc: Directory deleted.
+ * TestStructure/riscv-target: Directory moved to riscv-target.
+ * riscv-target: Directory moved from TestStructure/riscv-target
+ * TestStructure/riscv-test-env: Directory moved to riscv-test-env.
+ * riscv-test-env: Directory moved from
+ TestStructure/riscv-test-env.
+ * TestStructure/riscv-test-suite: Directory moved to
+ riscv-test-suite.
+ * riscv-test-suite: Directory moved from
+ TestStructure/riscv-test-suite.
+ * thought-experiments: Directory deleted.
+
+ 2018-05-21 Jeremy Bennett
+
+ Initial commit to populate the repository.
+
+ * ChangeLog: Created.
+ * README.md: Created.
diff --git a/tests/wally-riscv-arch-test/CONTRIBUTION.md b/tests/wally-riscv-arch-test/CONTRIBUTION.md
new file mode 100644
index 000000000..01f4424c7
--- /dev/null
+++ b/tests/wally-riscv-arch-test/CONTRIBUTION.md
@@ -0,0 +1,66 @@
+# Contributing to RISC-V Architecture Tests
+
+Your inputs are welcome and greatly appreciated! We want to make contributing to this project as easy and transparent as possible, whether it's:
+
+- Reporting a bug
+- Discussing the current state of the code
+- Submitting a fix
+- Proposing new features
+- Becoming a maintainer
+
+## We develop with Github
+We use github to host code, to track issues and feature requests, as well as accept pull requests.
+
+## We use a simple git flow where all code changes happen through Pull Requests
+
+Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:
+
+1. Fork the repo and create your branch from `master`.
+2. If you have added new tests, please ensure they adhere to the latest TestFormatSpec and that you have run them on the RVI approved reference
+ models (if support in those models is available).
+3. If you have updated any test-macros make sure to update the documentation as well.
+4. If you have updated the docs, ensure that they render correctly in the respective format.
+5. Make sure to create an entry in the CHANGELOG.md. Please refer to the section on versioning below
+ to choose an appropriate version number.
+6. Ensure the existing tests are not broken and still pass on the the RVI approved reference models.
+7. Please include a comment with the SPDX license identifier in all source files, for example:
+ ```
+ // SPDX-License-Identifier: BSD-3-Clause
+ ```
+8. Issue that pull request!
+
+## Versioning
+
+When issuing pull requests, an entry in the CHANGELOG.md is mandatory. The arch-test-repo adheres to
+the [`Semantic Versioning`](https://semver.org/spec/v2.0.0.html) scheme. Following guidelines must
+be followed while assigning a new version number :
+
+- Patch-updates: all doc updates (like typos, more clarification,etc) and updates to unratified extensions.
+- Minor-updates: Updates to ratified extensions OR migration of extensions to ratified OR changes in docs regarding policies or spec.
+- Major-updates: Changes to the framework flow (backward compatible or incompatible).
+
+Note: You can have either a patch or minor or major update.
+Note: In case of a conflict, the maintainers will decide the final version to be assigned.
+
+## Any contributions you make will be under the permissive open-source License
+In short, when you submit code changes, your submissions are understood to be under a permissive open source license like BSD-3, Apache-2.0 and CC, etc that covers the project. Feel free to contact the maintainers if that's a concern.
+
+## Report bugs using Github's [issues](https://github.com/riscv/riscv-arch-test/issues)
+We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/riscv/riscv-arch-test/issues/new); it's that easy!
+
+## Write bug reports with detail, background, and sample code
+
+**Great Bug Reports** tend to have:
+
+- A quick summary and/or background
+- Steps to reproduce
+ - Be specific!
+ - Give sample code if you can.
+- What you expected would happen
+- What actually happens
+- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
+
+## License
+By contributing, you agree that your contributions will be licensed under its permissive open source
+licenses.
+
diff --git a/tests/wally-riscv-arch-test/COPYING.APACHE b/tests/wally-riscv-arch-test/COPYING.APACHE
new file mode 100644
index 000000000..d64569567
--- /dev/null
+++ b/tests/wally-riscv-arch-test/COPYING.APACHE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/tests/wally-riscv-arch-test/COPYING.BSD b/tests/wally-riscv-arch-test/COPYING.BSD
new file mode 100644
index 000000000..1d9da10ca
--- /dev/null
+++ b/tests/wally-riscv-arch-test/COPYING.BSD
@@ -0,0 +1,9 @@
+Copyright (c) . All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/tests/wally-riscv-arch-test/COPYING.CC b/tests/wally-riscv-arch-test/COPYING.CC
new file mode 100644
index 000000000..0fb847eb0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/COPYING.CC
@@ -0,0 +1,395 @@
+Attribution 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution 4.0 International Public License ("Public License"). To the
+extent this Public License may be interpreted as a contract, You are
+granted the Licensed Rights in consideration of Your acceptance of
+these terms and conditions, and the Licensor grants You such rights in
+consideration of benefits the Licensor receives from making the
+Licensed Material available under these terms and conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ d. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ e. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ f. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ g. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ h. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ i. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ j. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ k. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+ 4. If You Share Adapted Material You produce, the Adapter's
+ License You apply must not prevent recipients of the Adapted
+ Material from complying with this Public License.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material; and
+
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.” The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/tests/wally-riscv-arch-test/Makefile b/tests/wally-riscv-arch-test/Makefile
new file mode 100644
index 000000000..8e817231d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/Makefile
@@ -0,0 +1,123 @@
+#
+# Ensure the compiler and necessary executables are on the search PATH
+#
+
+#
+# Ensure you have set the following Variables
+#
+#
+export ROOTDIR = $(shell pwd)
+export WORK ?= $(ROOTDIR)/work
+
+include Makefile.include
+
+pipe:= |
+empty:=
+comma:= ,
+space:= $(empty) $(empty)
+
+RISCV_ISA_ALL = $(shell ls $(TARGETDIR)/$(RISCV_TARGET)/device/rv$(XLEN)i_m)
+RISCV_ISA_OPT = $(subst $(space),$(pipe),$(RISCV_ISA_ALL))
+
+RISCV_ISA_ALL := $(filter-out Makefile.include,$(RISCV_ISA_ALL))
+
+ifeq ($(RISCV_DEVICE),)
+ RISCV_DEVICE = I
+ DEFAULT_TARGET=all_variant
+else
+ DEFAULT_TARGET=variant
+endif
+export SUITEDIR = $(ROOTDIR)/riscv-test-suite/rv$(XLEN)i_m/$(RISCV_DEVICE)
+
+$(info )
+$(info ============================ VARIABLE INFO ==================================)
+$(info ROOTDIR: ${ROOTDIR} [origin: $(origin ROOTDIR)])
+$(info WORK: ${WORK} [origin: $(origin WORK)])
+$(info TARGETDIR: ${TARGETDIR} [origin: $(origin TARGETDIR)])
+$(info RISCV_TARGET: ${RISCV_TARGET} [origin: $(origin RISCV_TARGET)])
+$(info XLEN: ${XLEN} [origin: $(origin XLEN)])
+$(info RISCV_DEVICE: ${RISCV_DEVICE} [origin: $(origin RISCV_DEVICE)])
+$(info =============================================================================)
+$(info )
+
+RVTEST_DEFINES =
+ifeq ($(RISCV_ASSERT),1)
+ RVTEST_DEFINES += -DRVMODEL_ASSERT
+endif
+export RVTEST_DEFINES
+
+VERBOSE ?= 0
+ifeq ($(VERBOSE),1)
+ export V=
+ export REDIR1 =
+ export REDIR2 =
+else
+ export V=@
+ export REDIR1 = 1>/dev/null
+ export REDIR2 = 2>/dev/null
+endif
+
+default: $(DEFAULT_TARGET)
+
+variant: simulate verify
+
+all_variant:
+ @for isa in $(RISCV_ISA_ALL); do \
+ $(MAKE) $(JOBS) RISCV_TARGET=$(RISCV_TARGET) RISCV_TARGET_FLAGS="$(RISCV_TARGET_FLAGS)" RISCV_DEVICE=$$isa variant; \
+ rc=$$?; \
+ if [ $$rc -ne 0 ]; then \
+ exit $$rc; \
+ fi \
+ done
+
+build: compile
+run: simulate
+clean_all: clean
+
+compile:
+ $(MAKE) $(JOBS) \
+ RISCV_TARGET=$(RISCV_TARGET) \
+ RISCV_DEVICE=$(RISCV_DEVICE) \
+ compile -C $(SUITEDIR)
+
+simulate:
+ $(MAKE) $(JOBS) \
+ RISCV_TARGET=$(RISCV_TARGET) \
+ RISCV_DEVICE=$(RISCV_DEVICE) \
+ run -C $(SUITEDIR)
+
+verify: simulate
+ riscv-test-env/verify.sh
+
+postverify:
+ifeq ($(wildcard $(TARGETDIR)/$(RISCV_TARGET)/postverify.sh),)
+ $(info No post verify script found $(TARGETDIR)/$(RISCV_TARGET)/postverify.sh)
+else
+ $(TARGETDIR)/$(RISCV_TARGET)/postverify.sh
+endif
+
+clean:
+ $(MAKE) $(JOBS) \
+ RISCV_TARGET=$(RISCV_TARGET) \
+ RISCV_DEVICE=$(RISCV_DEVICE) \
+ clean -C $(SUITEDIR)
+
+help:
+ @echo "RISC-V Architectural Tests"
+ @echo ""
+ @echo " Makefile Environment Variables to be set per Target"
+ @echo " -- TARGETDIR=''"
+ @echo " -- XLEN=''"
+ @echo " -- RISCV_TARGET=''"
+ @echo " -- RISCV_TARGET_FLAGS=''"
+ @echo " -- RISCV_DEVICE='$(RISCV_ISA_OPT)' [ leave empty to run all devices ]"
+ @echo " -- RISCV_TEST='
+ * README.adoc: Documentation for rocket chip as target.
+
+2019-02-05 Deborah Soung
+ * README.adoc: Update documentation for rocket chip as target (fixed rv32si/ma_fetch.S).
+ * README.adoc: Update documentation for rocket chip as target (fixed breakpoint.S).
+
+2019-01-29 Deborah Soung
+ * README.adoc: Documentation for rocket chip as target.
+
+2018-11-21 Olof Kindgren
+
+ * README.adoc (Repository structure) Added documentation for the $TARGETDIR environmental variable
+
+2018-11-21 Neel Gala
+ * README.adoc: Added new signature format spec.
+
+2018-06-18 Jeremy Bennett
+
+ * README.adoc (Future work): Reflect changes made to support
+ Codasip simulator.
+ (Repository structure): Diagrammatic representation of the file
+ structure deleted.
+
+2018-06-12 Jeremy Bennett
+
+ * .gitignore: Add custom.dict.
+
+2018-06-12 Jeremy Bennett
+
+ Document issue 1.8 Draft.
+
+ * README.adoc (Introduction): Add Future work section and bump
+ version.
+ * custom.wordlist: Add words needed for Future work section.
+
+2018-06-12 Jeremy Bennett
+
+ * README.adoc: Remove special apostrophe from "licensor's".
+ * custom.wordlist: Updated with more words to be ignored.
+
+2018-06-12 Jeremy Bennett
+
+ * README-old.md: Deleted.
+ * README.adoc: Include details of how to contribute and installing
+ the tools from the old README and reference the licence as an
+ appendix.
+
+2018-06-11 Jeremy Bennett
+
+ This makes the document appear directly as the README of the doc
+ directory, so there is now no longer a need to publish to GitHub
+ pages.
+
+ * .gitignore: Change name of files ignored.
+ * Makefile: Remove publish target.
+ * README.adoc: Symbolic link removed and replaced by design.adoc,
+ to which the CC license text has been added.
+ * design.adoc: Renamed as README.adoc.
+ * publish.sh: Deleted.
+
+2018-06-11 Jeremy Bennett
+
+ * README.md: Previous version moved to README-old.md for the time
+ being.
+ * README.adoc: Created as symbolic link to design.adoc.
+
+2018-06-10 Jeremy Bennett
+
+ * README.md: Note about make publish.
+ * design.adoc (Overall structure): Make list or instruction sets
+ and extensions compact representation.
+
+2018-06-10 Jeremy Bennett
+
+ * publish.sh: Only publish from clean and committed master branch
+ to avoid difficult use of git stash.
+
+2018-06-10 Jeremy Bennett
+
+ * publish.sh: Don't rely on doc directory being available on
+ gh-pages branch.
+
+2018-06-10 Jeremy Bennett
+
+ * publish.sh: Make executable and correctly set top level
+ repository directory.
+
+2018-06-10 Jeremy Bennett
+
+ Add a mechanism to make the latest documentation available via
+ GitHub pages. This means that design.html is no longer part of
+ the master branch, but is published by copying to index.html on
+ the gh-pages branch.
+
+ * .gitignore: Ignore design.html.
+ * Makefile: Add publish target and delete design.html when cleaning.
+ * README.md: Link to GitHub pages for latest documentation.
+ * design.adoc: Deal with AsciiDoc apparent bug with consecutive
+ comment blogs.
+ * design.html: Deleted.
+ * publish.sh: Created.
+
+2018-06-10 Jeremy Bennett
+
+ * README.md: Fix link to generated documentation.
+ * design.html: Regenerated.
+
+2018-06-09 Jeremy Bennett
+
+ * Makefile: Add sanity check for version number and spell target.
+ * design.adoc: Fix trivial typo.
+ * design.html: Regenerated.
+
+2018-06-09 Jeremy Bennett
+
+ * .gitignore: Don't ignore .html or .xml
+ * README.md: Note location of old documentation, give link to HTML
+ and explain how to contribute.
+ * custom.wordlist: Created.
+ * design.adoc: Cleaned up from top to bottom and spell checked.
+ * design.html: Generated.
+
+2018-06-08 Jeremy Bennett
+
+ * Makefile: Clean up and add license header.
+ * README.md: Created.
+ * design.adoc: Add licensing and SPDX license identifier.
+ * legacy.adoc: Deleted.
+
+2018-06-04 Jeremy Bennett
+
+ This is the first version of the document taken from Simon
+ Davidmann's MS Word document. The main document is design.adoc,
+ legacy material, currently just appendices C and D has been moved
+ to legacy.adoc.
+
+ design.adoc is correct AsciiDoc. legacy.adoc is just a raw dump,
+ which needs cleaning up.
+
+ The next step will be restructuring design.adoc as agreed.
+
+ * .gitignore: Created.
+ * ChangeLog: Created.
+ * Makefile: Created.
+ * design.adoc: Created.
+ * legacy.adoc: Created.
diff --git a/tests/wally-riscv-arch-test/doc/MIGRATION.adoc b/tests/wally-riscv-arch-test/doc/MIGRATION.adoc
new file mode 100644
index 000000000..d9801c661
--- /dev/null
+++ b/tests/wally-riscv-arch-test/doc/MIGRATION.adoc
@@ -0,0 +1,88 @@
+= Migration guide
+:toc:
+:icons: font
+:numbered:
+:source-highlighter: rouge
+
+This document serves as a guide to users of the architectural suite to migrate their targets from an
+older version to a newer version with minimal changes. This guide thus provides a patch scheme to get
+the previous versions of the targets up and running with the new versions of the framework.
+
+However, users are strongly encouraged to completely migrate to the newer versions, as and when
+available, and avoid using these patches.
+
+== Migration from v0.1 to v0.2
+
+This section will describe the changes required to transition your targets ported on v0.1 to v0.2
+framework. For examples please see: `riscv-target/riscvOVPsim_0p1` and `riscv-target/spike_0p1`.
+
+=== Change header filename
+
+In version v0.1 the target specific assembly macros were split across two files: `compliance_test.h`
+and `compliance_io.h`. In version v0.2 these macros are to merged into a single file named
+`model_test.h`. The following commands can the achieve the above:
+
+----
+mv compliance_test.h model_test.h
+cat compliance_io.h >> model_test.h
+rm compliance_io.h
+----
+
+=== Change device directory structure
+
+In version v0.1 a target would have one or multiple of the directories defined to indicate supported
+extensions: `rv32i`, `rv32im`, `rv32imc`, `rv32Zicsr` and `rv32Zifencei`. In version v0.2 the
+directories of the extensions have changed in order to provide more consistency and less ambiguity.
+
+For version v0.2, the `device` directory first needs to have either a `rv32i_m` directory to indicate
+that the target is a 32-bit machine. The extension directories, as supported by the target, are
+now to be created in each of these directories using the following mapping scheme:
+
+. device/rv32i -> device/rv32i_m/I
+. device/rv32im -> device/rv32i_m/M
+. device/rv32imc -> device/rv32i_m/C
+. device/rv32Zicsr -> device/rv32i_m/privilege
+. device/rv32Zifencei -> device/rv32i_m/Zifencei
+
+The contents of the extension directories need not change, unless there are dependencies on the path
+of the directory itself. The following commands will achieve the above:
+
+----
+cd device
+mkdir rv32i_m
+mv rv32i rv32i_m/I
+mv rv32im rv32i_m/M
+mv rv32imc rv32i_m/C
+mv rv32Zicsr rv32i_m/privilege
+mv rv32Zifencei rv32i_m/Zifencei
+----
+
+=== Changes in target macro names.
+
+Since some of the macros from the old framework have been re-purposed in the new v0.2 framework,
+there will be name conflicts rendering the old ones useless. In order to retain the old macros, they
+have been renamed with a post-fix `_OLD`. The macros that have been renamed are given below:
+
+. `RVTEST_CODE_BEGIN` -> `RVTEST_CODE_BEGIN_OLD`
+. `RVTEST_CODE_END` -> `RVTEST_CODE_END_OLD`
+. `RVTEST_DATA_BEGIN` -> `RVTEST_DATA_BEGIN_OLD`
+. `RVTEST_DATA_END` -> `RVTEST_DATA_END_OLD`
+
+The user is thus required to make the above changes in the new `model_test.h` that was created
+as part of this migration. The following commands will help achieve the above:
+
+----
+sed -i 's/RVTEST_CODE_BEGIN/RVTEST_CODE_BEGIN_OLD/g' model_test.h
+sed -i 's/RVTEST_CODE_END/RVTEST_CODE_END_OLD/g' model_test.h
+sed -i 's/RVTEST_DATA_BEGIN/RVTEST_DATA_BEGIN_OLD/g' model_test.h
+sed -i 's/RVTEST_DATA_END/RVTEST_DATA_END_OLD/g' model_test.h
+
+----
+
+note:: the RVTEST_DATA_END in v0.1 enforced a 16-byte alignment before the signature end. This
+constraint has been removed.
+
+=== Changes in device Makefile.include files
+
+No changes required.
+
diff --git a/tests/wally-riscv-arch-test/doc/Makefile b/tests/wally-riscv-arch-test/doc/Makefile
new file mode 100644
index 000000000..697d89cdc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/doc/Makefile
@@ -0,0 +1,82 @@
+# Makefile for RISC-V Architectural Test SIG documentation
+
+# This file is part of the RISC-V Foundation Architectural Test SIG
+# tool set and documentation.
+
+# Copyright (C) 2017 CodaSip Limited
+# Copyright (C) 2018 Embecosm Limited .
+# Copyright (C) 2018 Imperas Limited
+
+# All rights reserved.
+
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of mosquitto nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+# SPDX-License-Identifier: BSD-3-Clause
+
+ROOT = README
+SRC = $(ROOT).adoc
+SRC_STRIPPED = $(ROOT)-stripped.adoc
+
+.PHONY: all
+all: pdf html
+
+.PHONY: pdf
+pdf: $(ROOT).pdf
+
+$(ROOT).pdf: sanity-check $(SRC)
+ asciidoctor-pdf -d article $(SRC)
+
+.PHONY: html
+html: $(ROOT).html
+
+$(ROOT).html: sanity-check $(SRC)
+ asciidoctor -d article -b html $(SRC)
+
+# It is all too easy for the document history and title page to have diverging
+# version numbers. This target checks first.
+
+.PHONY: sanity-check
+sanity-check:
+ @s=$$(sed -n < $(SRC) -e '3s/Issue //p') ; \
+ t=$$(sed -n < $(SRC) -e "/== Document history/,/^$$/p" | \
+ grep -c "$${s}") ; \
+ if [ $${t} -ne 1 ] ; \
+ then \
+ echo "Version number of title and document history do not match" ; \
+ exit 1 ; \
+ fi
+
+custom.dict: custom.wordlist
+ aspell --lang=en create master ./$@ < $<
+
+.PHONY: spell
+spell: custom.dict $(SRC)
+ sed < $(SRC) > $(SRC_STRIPPED) -e 's/`[^`]\+`//gp' -e '/^----$$/,/^----$$/d'
+ aspell --master=en_US --mode=none --add-extra-dicts=./custom.dict \
+ -c $(SRC_STRIPPED)
+ $(RM) $(SRC_STRIPPED)
+
+clean:
+ rm -f $(ROOT)-stripped.adoc $(ROOT).pdf $(ROOT).html custom.dict
diff --git a/tests/wally-riscv-arch-test/doc/README.adoc b/tests/wally-riscv-arch-test/doc/README.adoc
new file mode 100644
index 000000000..fa7129b39
--- /dev/null
+++ b/tests/wally-riscv-arch-test/doc/README.adoc
@@ -0,0 +1,460 @@
+= RISC-V Architectural Testing Framework =
+RISC-V Foundation Architecture Test SIG
+Issue 1.16 Draft
+:toc:
+:icons: font
+:numbered:
+:source-highlighter: rouge
+
+////
+SPDX-License-Identifier: CC-BY-4.0
+
+Document conventions:
+- one line per paragraph (don't fill lines - this makes changes clearer)
+- Wikipedia heading conventions (First word only capitalized)
+- US spelling throughout.
+- Run "make spell" before committing changes.
+- Build the HTML and commit it with any changed source.
+- Do not commit the PDF!
+////
+
+== Introduction
+=== About
+
+This document describes the RISC-V Architectural Testing framework which is used to test if a RISC-V device's has understood and implemented the specifications correctly
+
+* It explains the framework around the tests, the running of individual tests, and the suites of tests.
+
+* It explains how to set up targets to run the tests.
+
+This document is made freely available under a <>.
+
+=== Intent of the architectural test suite
+
+The RISC-V Architectural Tests are an evolving set of tests that are created to help ensure that software written for a given RISC-V Profile/Specification will run on all implementations that comply with that profile.
+
+These tests also help ensure that the implementer has both understood and implemented the specification correctly.
+
+The RISC-V Architectural Test suite is a minimal filter. Passing the tests and having the results approved by RISC-V International is a prerequisite to licensing the RISC-V trademarks in connection with the design. Passing the RISC-V Architectural Tests does not mean that the design complies with the RISC-V Architecture. These are only a basic set of tests checking important aspects of the specification without focusing on details.
+
+The RISC-V Architectural Tests are not a substitute for rigorous design verification.
+
+The result that the architecture tests provide to the user is an assurance that the specification has been interpreted correctly and the implementation under test (DUT) can be declared as RISC-V Architecture Test compliant.
+
+=== Intended audience
+
+This document is intended for design and verification engineers who wish to check if their RISC-V implementation (simulation models, HDL models, etc.) is compliant to the RISC-V specification.
+
+For those who wish to develop new architectural tests and/or to write or adapt their own test framework are suggested to read the link:../spec/TestFormatSpec.adoc[`Test Format Spec`].
+
+
+=== Contribute
+
+You are encouraged to contribute to this repository (including changes to this document) by submitting pull requests and by commenting on pull requests submitted by other people as described in the link:../README.md[`README.md`] file in the top level directory.
+
+While submitting a pull request note that some directories use `ChangeLog` files to track changes in the code and documentation. Please honor these, keeping them up to date and including the ChangeLog entry in the _git_ commit message.
+
+Make sure to also include a comment with the SPDX license identifier in all source files, for example:
+```
+// SPDX-License-Identifier: BSD-3-Clause
+```
+
+NOTE: Don't forget to add your own name to the list of contributors in the document.
+
+== Licensing
+
+In general:
+
+* code is licensed under the BSD 3-clause license (SPDX license identifier `BSD-3-Clause`);
+* documentation is licensed under the Creative Commons Attribution 4.0 International license (SPDX license identifier `CC-BY-4.0`).
+
+The files link:../COPYING.BSD[`COPYING.BSD`] and link:../COPYING.CC[`COPYING.CC`] in the top level directory contain the complete text of these licenses.
+
+NOTE: The riscv-ovpsim simulator is licensed under an Imperas license. There is no dependency on this and it is included as a convenience to users.
+
+
+==== AsciiDoc
+
+This is a structured text format used by this document. Simple usage should be fairly self evident.
+
+* Comprehensive information on the format is on the http://www.methods.co.nz/asciidoc/[AsciiDoc website].
+
+* Comprehensive information on the tooling on the https://asciidoctor.org/[AsciiDoctor website].
+
+* You may find this https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/[cheat sheet] helpful.
+
+==== Installing tools
+
+To generate the documentation as HTML you need _asciidoctor_ and to generate as
+PDF you need _asciidoctor-pdf_.
+
+* These are the https://asciidoctor.org/docs/install-toolchain/[installation instructions for asciidoctor].
+
+* These are the https://asciidoctor.org/docs/asciidoctor-pdf/#install-the-published-gem[installation instructions for asciidoctor-pdf].
+
+To spell check you need _aspell_ installed.
+
+==== Building the documentation
+
+To build HTML:
+[source,make]
+----
+make html
+----
+
+To build PDF:
+[source,make]
+----
+make pdf
+----
+
+To build both:
+[source,make]
+----
+make
+----
+
+To check the spelling (excludes any listing or code phrases):
+[source,make]
+----
+make spell
+----
+
+Any custom words for spell checking should be added to link:./custom.wordlist[`custom.wordlist`].
+
+=== Contributors
+
+This document has been created by the following people (in alphabetical order of surname).
+
+* Jeremy Bennett
+* Mary Bennett
+* Simon Davidmann
+* Neel Gala
+* Radek Hajek
+* Lee Moore
+* Milan Nostersky
+* Marcela Zachariasova
+
+=== Document history
+[cols="<1,<2,<3,<4",options="header,pagewidth",]
+|================================================================================
+| _Revision_ | _Date_ | _Author_ | _Modification_
+| 1.16 Draft | 23 September 2020 | Neel Gala| Changed Compliance to Architecture/Architectural. Refined the steps to port a new target. Removed simulator and target specific docs. Added vocabulary from the Test Format Specification
+| 1.15 Draft | 14 March 2019 |
+Prashanth Mundkur |
+
+Added support and instructions for using the C and OCaml simulators from the Sail RISC-V formal model as targets.
+| 1.14 Draft | 21 February 2019 |
+Deborah Soung |
+
+Documented how to use SiFive's RISC-V ISA Formal Specification model as a target.
+| 1.13 Draft | 29 January 2019 |
+Deborah Soung |
+
+Added documentation on how to use Rocket Chip generated cores as targets.
+| 1.12 Draft | 22 November 2018 |
+Simon Davidmann |
+
+Updated notes on Test Suites.
+| 1.11 Draft | 21 November 2018 |
+Neel Gala |
+
+Added new signature format specs .
+| 1.10 Draft | 20 June 2018 |
+
+Simon Davidmann, Lee Moore |
+
+Cleaned up description of updated framework and inclusion of riscvOVPsim.
+
+| 1.9 Draft | 12 June 2018 |
+
+Jeremy Bennett |
+
+Update Future work section to take account of Codasip changes. Remove diagrammatic directory structure.
+
+| 1.8 Draft | 12 June 2018 |
+
+Jeremy Bennett |
+
+Add Future work section.
+
+| 1.7 Draft | 12 June 2018 |
+
+Jeremy Bennett |
+
+Add CC license as an appendix.
+
+| 1.6 Draft | 10 June 2018 |
+
+Jeremy Bennett |
+
+Tidy up areas that are flawed in HTML version.
+
+| 1.5 Draft | 8 June 2018 |
+
+Jeremy Bennett |
+
+General tidy up.
+
+| 1.4 Draft | 8 June 2018 |
+
+Jeremy Bennett |
+
+Added license preamble.
+
+| 1.3 Draft | 5 June 2018 |
+
+Simon Davidmann |
+
+Updated to reflect directory structure and trace macros.
+
+| 1.2 Draft | 3 June 2018 |
+
+Jeremy Bennett |
+
+Converted to AsciiDoc, cleaned up and restructured.
+
+| 1.1 Draft | 1 June 2018 |
+
+Simon Davidmann
+Lee Moore |
+
+Revised format and expand to describe framework, usage of many tests groups,
+and different Targets
+
+|1.0 | 24 December 2017 |
+
+Radek Hajek
+Milan Nostersky
+Marcela Zachariasova |
+
+First version of the document.
+
+|================================================================================
+
+== Repository structure
+
+The top level directory contains :
+
+ - a `README.md` file providing high-level details about the RISC-V Architecture Testing Framework.
+ - top level `Makefile` for running the tests on a RISC-V implementation.
+ - `ChangeLog` for logging changes with respect to code.
+ - complete license files for the Creative Commons and BSD licenses used by the task group.
+
+There are then five top level directories.
+
+`doc`:: All the documentation for the project, written using _AsciiDoc_.
+
+`coverage`:: This directory contains a sub-directory structure similar to the `riscv-test-suite` directory. The coverage reports of each test-suite are available in the corresponding directories. The reports are available in the html and yaml formats. The directory also contains multiple coverpoint YAMLs which capture all the coverpoints of interest which are covered by all the tests in the `riscv-test-suite` directory.
+
+`riscv-target`:: Contains a further subdirectory for each target, within which are placed the `model_test.h` header for that target and a `device` directory for all the devices of that target. If the `$TARGETDIR` environment variable is set to another directory, the scripts will search this directory for targets instead.
+
+`riscv-test-env`:: This contains the `verify.sh` script which checks if the signatures generated the riscv-target device match the statically hosted reference signatures at the end of simulation. The directory also contains symbolic-links to the `arch_test.h` and `encoding.h` files present in the `riscv-test-suite/env` directory.
+
+`riscv-test-suite`:: This contains a further `env` subdirectory which contains the `arch_test.h` and the `encoding.h` file which includes common assembly macros and routines which is used across the tests in the suite. Further directories are present which contain the actual architectural tests. The names and structure of these directories is based on the link:../test-pool structure guideline highlighted above.
+
+`riscv-ovpsim`:: This contains a README pointing to the Imperas OVP riscvOVPsim simulator for use in architectural testing.
+
+== Vocabulary
+=== The architectural test
+
+At the heart of the testing infrastructure is the detailed <> available as `.S` assembly files. The specification and format of the tests is defined in the link:./TestFormatSpec.adoc[`Test Format Specification`].
+
+=== The architectural test pool
+
+The <> are grouped into different functional test suites targeting the different subsets of the RISC-V specification. For more details on the test-pool structure, hierarchy and conventions please refer to the link:./TestFormatSpec.adoc[`Test Format Specification`].
+
+For information on the currently supported different test suites, look here: link:../riscv-test-suite/README.md[../riscv-test-suite/README.md]
+
+=== The test signature
+
+Each test in the <> generates a <>, which represents the data written into specific memory locations during the execution of the test. The signature typically will record values (or sanitised values) of the operations carried out in the test. More details on the format and nature of the signatures is available in the link:./TestFormatSpec.adoc[`Test Format Specification`]
+
+=== The reference signature
+
+In order to claim that a device/implementation has passed the RISC-V Architecture Tests, the <> obtained from the execution of the tests on the implementation need to be compared against a set of _golden_ <>. These reference signatures are currently generated by the link:https://github.com/rems-project/sail-riscv[`RISC-V SAIL`] formal model and statically hosted in the repository for each test.
+
+=== The test target
+The <> can be either a RISC-V Instruction Set Simulator (ISS), a RISC-V emulator, a RISC-V RTL model running on an HDL simulator, a RISC-V FPGA implementation or a physical chip. Each of the target types offers specific features and represents specific interface challenges. It is a role of the <> to handle different targets while using the same <> as a test source.
+
+=== The target shell
+The <> is the software and hardware environment around the <> that enables it to communicate with the framework, including assembling and linking tests, loading tests into memory, executing tests, and extracting the signature. The input to the <> is a .S <> file, and the output is a <>.
+
+
+== Porting a new target
+
+
+In this section, a short tutorial on how to add a user target to the RISC-V Architectural Test Framework is provided.
+
+The following steps demonstrate an example in which a target was replaced by the RISCV-ISA-SIM
+(a.k.a Spike). In a similar way, any RISC-V ISA simulator or any RTL simulation model of the
+RISC-V processor can be ported as a potential target for testing.
+
+=== Setup environment variables
+
+NOTE: `ROOTDIR` will always point to the riscv-arch-test repo.
+
+1. Clone the repository:
+
+ ---
+ git clone https://github.com/riscv/riscv-arch-test.git
+ cd riscv-arch-test
+
+ ---
+
+2. Open the `Makefile.include` available in the root folder of the repository and edit the following
+variables based on your target:
+
+ a. `TARGETDIR` : set `TARGETDIR` to point to the directory which contains a sub-folder in the same name
+ as the target. For example, the arch-test repo includes the targets: sail-riscv-c and spike
+ under the `riscv-target` folder, in which case we set the `TARGETDIR` to riscv-target as shown
+ below. One can set this completely arbitrary paths as suitable by the user.
+
+
+ ---
+ export TARGETDIR ?= $(ROOTDIR)/riscv-target
+
+ ---
+
+ b. `XLEN`: set XLEN to max supported XLEN. Allowed values are 32 and 64.
+
+ ---
+ export XLEN ?= 64
+
+ ---
+
+c. `RISCV_TARGET`: set this variable to the name of the target. A folder of the same name must exist in
+the `TARGETDIR` directory
+
+ ---
+ export RISCV_TARGET ?= spike
+
+ ---
+
+d. `RISCV_DEVICE`: set the `RISCV_DEVICE` environment to the extension you want to compile, simulate and verify. Leave
+this blank if you want to iterate through all the supported extensions of the target. Allowed values
+are the individual names of the extensions supported by your target like: I, M, C or Zifencei, etc. Multiple extensions are not be provided.
+
+ ---
+ export RISCV_DEVICE ?=
+
+ ---
+
+e. `RISCV_TARGET_FLAGS`: set this to a string which needs to be passed to your target's Makefile.include files
+
+ ---
+ export RISCV_TARGET_FLAGS ?=
+
+ ---
+
+f. `RISCV_ASSERT`: set this if you want to enable assertions on the test-suites. **Currently no tests use assertions.**
+
+ ---
+ export RISCV_ASSERT ?= 0
+
+ ---
+
+g. `JOBS`: set the number of parallel jobs (along with any other arguments) you would like to
+execute. Note that the target needs to be coded in such a way to support parallel execution. Some
+targets use common intermediate files, rather than unique files, which makes them unsuitable for
+parallel execution, these targets will need to be re-coded.
+
+ ---
+ JOBS= -j1
+
+ ---
+
+3. Now inside your `TARGETDIR/RISCV_TARGET` directory you will need to create the following files:
+
+a. `model_test.h`: A header file containing the definition of the various target specific
+assembly macros that are required to compile and simulate the tests. The list and definition of the
+required target specific macros is available in the link:../spec/TestFormatSpec.adoc[Test Format
+Specification]
+
+b. `link.ld`: A linker script to compile the tests for your target.
+
+c. Any other files required by the target (configuration scripts, logs, etc.) can also be placed in
+this directory.
+
+4. Inside the `TARGETDIR/RISCV_TARGET` directory create a new folder named: `device`. If your device
+is a 32-bit target then create a directory `device/rv32i_m`. If your device is a 64-bit target then
+create a directory `device/rv64i_m`. If your target is configurable on the `XLEN` parameter then
+both the folders need to be created.
+
+5. Within the `rv32i_m`/`rv64i_m` directories sub-folders in the name of the extensions supported
+by the target need to be created. For eg. A target supporting the ISA RV32IMC_Zifence will have the
+following directory structure:
+
+ ---
+ - rv32i_m/I
+ - rv32i_m/M
+ - rv32i_m/C
+ - rv32i_m/privilege
+ - rv32i_m/Zifencei
+
+ ---
+
+6. Each of the above extension directories will now need to include a file: `Makefile.include` which
+defines the following Makefile variables:
+
+a. `RUN_TARGET`:: This variable needs to include commands and steps to execute an ELF on target device. Note here that this variable should include all the necessary steps and arguments to run that specific test-suite. For example, in case of spike for the `rv32i_m/C` test-suite the corresponding `Makefile.include` has the `--isa=rv32ic` argument as opposed to just `--isa=rv32i` for the base `rv32i_m/I` test-suite. This variable should also include other steps to extract and sanitize the signature file as well for each test. The only argument available to this variable is the compiled `elf` file.
+
+b. `COMPILE_TARGET`:: This variable should include the commands and steps required to compile an assembly test for the target for each extension mentioned above. Note, currently only the GCC compiler is supported. This compiler takes `march` and `mabi` arguments from the corresponding architectural suite framework. `COMPILE_TARGET` will more or less be the same across test-suites. The only argument available to `COMPILE_TARGET` is the assembly file of one architectural test.
+
+The following figure depicts the final directory structure of a target device that should get created at the end of the above steps:
+
+[#img-testStruct]
+.File Structure of the Target directory
+image::./file-struct.jpg[TargetStruct]
+
+
+=== Generating Signature
+
+As previously mentioned the execution of each test on the target must generate a signature file. The name of the signature file should be ``. The signature file should follow the guidelines mentioned in the link:../spec/TestFormatSpec.adoc[`Test Format Specification`].
+
+In case of spike, we have ensured that the signature region is bounded by the labels: `begin_signature` and `end_signature`. This is enforced in the `RVMODEL_DATA_BEGIN` and `RVMODEL_DATA_END` macros defined in the `riscv-target/spike/model_test.h` file. Additionally, if you look closely at the `RUN_TARGET` variable defined in the `Makefile.include` files of the spike target, it includes a few bash commands to sanitize the signature produced from spike. This is done to conform the final signature file to the specification defined in the link:../spec/TestFormatSpec.adoc[`Test Format Specification`].
+
+=== Compile, simulate and verify the tests
+
+Once you have ported your target to the riscv-arch-test framework by following the above steps, you
+are now ready to compile, simulate and verify the tests on your target
+
+If you would like to compile, simulate and verify all the extension tests applicable to your target
+simply run `make` from the `ROOTDIR`.
+
+NOTE: For the above to work the `RISCV_DEVICE` in `ROOTDIR/Makefile.include` must be left empty.
+
+If you would like to only compile the tests for a particular extension you can use the following
+command.
+
+ make RISCV_DEVICE=M compile
+ make RISCV_DEVICE=C compile
+
+The arguments to the `RISCV_DEVICE` variable must be the extensions supported by the target.
+NOTE: If `RISCV_DEVICE` is not defined/empty it will default to the `I` extension which is necessary
+for all targets.
+
+To simulate the compiled tests on your target:
+
+ make RISCV_DEVICE=M simulate
+ make RISCV_DEVICE=Zifencei simulate
+
+NOTE: If `RISCV_DEVICE` is not defined/empty it will default to the `I` extension which is necessary
+for all targets.
+
+To verify if the generated signatures match the corresponding reference signatures.
+
+ make RISCV_DEVICE=M verify
+
+NOTE: If `RISCV_DEVICE` is not defined/empty it will default to the `I` extension which is necessary
+for all targets.
+
+All the above steps create and modify files in the `work` directory created in `ROOTDIR` folder. To
+clean the `workdir` simple run :
+
+ make clean
+
+By default the working directory is set to `ROOTDIR/work`. This can be overwritten by assigning a
+new working directory path via the command line. Note, the path must be absolute and not relative :
+
+ make WORK=/home/me/my_path/mywork clean compile simulate
diff --git a/tests/wally-riscv-arch-test/doc/custom.wordlist b/tests/wally-riscv-arch-test/doc/custom.wordlist
new file mode 100644
index 000000000..2efdc5925
--- /dev/null
+++ b/tests/wally-riscv-arch-test/doc/custom.wordlist
@@ -0,0 +1,73 @@
+AsciiDoc
+asciidoc
+AsciiDoctor
+asciidoctor
+aspell
+autotools
+CGEN
+cmake
+Codasip
+creativecommons
+CY
+Davidmann
+discoverable
+DUT
+EF
+enforceability
+FPGA
+GDB
+Generis
+github
+Hajek
+HDL
+http
+https
+IC
+ies
+immunities
+Imperas
+io
+IM
+ISA
+legalcode
+licensor
+licensors
+licensor's
+LLVM
+makefile
+makefiles
+Marcela
+md
+merchantability
+Nostersky
+nz
+pagewidth
+parameterization
+pdf
+publicdomain
+Radek
+README
+riscv
+riscvOVPsim
+RTL
+rv
+RVTEST
+SiFive
+spdx
+src
+subdirectory
+sublicensable
+synched
+tbd
+testbench
+toc
+toolchain
+TVM
+URI
+Verilator
+Verilog
+waivable
+WIPO
+wordlist
+www
+Zachariasova
diff --git a/tests/wally-riscv-arch-test/doc/file-struct.jpg b/tests/wally-riscv-arch-test/doc/file-struct.jpg
new file mode 100644
index 000000000..7ddee1e84
Binary files /dev/null and b/tests/wally-riscv-arch-test/doc/file-struct.jpg differ
diff --git a/tests/wally-riscv-arch-test/riscv-ovpsim/README.md b/tests/wally-riscv-arch-test/riscv-ovpsim/README.md
new file mode 100644
index 000000000..1ee680815
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-ovpsim/README.md
@@ -0,0 +1,43 @@
+riscvOVPsim
+===
+A Complete, Fully Functional, Configurable RISC-V Simulator
+===
+
+riscvOVPsim has moved to its own GitHub repository.
+
+It can now be found here: [github.com/riscv-ovpsim](https://github.com/riscv-ovpsim/imperas-riscv-tests)
+
+For the enhanced version, please download from [ovpworld.org/riscv-ovpsim-plus](https://www.ovpworld.org/riscvOVPsimPlus).
+
+The simulators implement the full and complete functionality of the RISC-V Foundation's public User and Privilege specifications.
+
+The simulator is command line configurable to enable/disable all current optional and processor specific options.
+
+The simulator is developed, licensed and maintained by [Imperas Software](http://www.imperas.com/riscv) and it is fully compliant to the OVP open standard APIs.
+
+As a member of the RISC-V Foundation community of software and hardware innovators collaboratively driving RISC-V adoption, Imperas has developed the riscvOVPsim simulator to assist RISC-V adopters to become compliant to the RISC-V specifications. The latest RISC-V compliance test suite and framework can be downloaded from https://www.github.com/riscv/riscv-compliance.
+
+riscvOVPsim includes an industrial quality model and simulator of RISC-V processors for use for compliance and test development. It has been developed for personal, academic, or commercial use, and the model is provided as open source under the Apache 2.0 license. The simulator is provided under the Open Virtual Platforms (OVP) Fixed Platform Kits license that enables download and usage. riscvOVPsim and Imperas RISC-V support is actively maintained and enhanced. To ensure you make use of the current version of riscvOVPsim versions do expire. Please download the latest version.
+
+![](riscvOVPsim.jpg)
+
+Extending riscvOVPsim and building your own models and platforms
+---
+riscvOVPsim is a fixed function simulation of one configurable processor model in a fixed platform.
+Full extendable platform simulations of reference designs booting FreeRTOS, Linux, SMP Linux etc.
+are available as open source and are available from [www.IMPERAS.com](http://www.imperas.com),
+[www.OVPworld.org](http://www.OVPworld.org).
+
+About Open Virtual Platforms (OVP) and Imperas Software
+---
+**Open Virtual Platforms** was created in 2008 to provide an open standard set of APIs and methodology to develop virtual platforms and simulation technology.
+[www.OVPworld.org](http://www.OVPworld.org/riscv).
+
+**Imperas Software Ltd.** is the leading independent commercial developer of virtual platforms and high-performance software simulation solutions for embedded processor and systems. Leading semiconductor and embedded software companies use Imperas simulators for their processor based simulation solutions.
+[www.imperas.com](http://www.imperas.com/riscv).
+
+![OVP Image ](http://www.imperas.com/sites/default/files/partner-logos/ovp_0.jpg)
+![Imperas Imperas](https://www.imperas.com/sites/default/files/imperas-web-logo_2.png)
+---
+
+This is the riscvOVPsim/README.md
diff --git a/tests/wally-riscv-arch-test/riscv-ovpsim/riscvOVPsim.jpg b/tests/wally-riscv-arch-test/riscv-ovpsim/riscvOVPsim.jpg
new file mode 100644
index 000000000..cee3f98ff
Binary files /dev/null and b/tests/wally-riscv-arch-test/riscv-ovpsim/riscvOVPsim.jpg differ
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/LICENSE b/tests/wally-riscv-arch-test/riscv-test-env/LICENSE
new file mode 100644
index 000000000..48fe522ac
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/LICENSE
@@ -0,0 +1,24 @@
+Copyright (c) 2012-2015, The Regents of the University of California (Regents).
+All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of the Regents nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
+OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/arch_test.h b/tests/wally-riscv-arch-test/riscv-test-env/arch_test.h
new file mode 120000
index 000000000..c1b8c50bc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/arch_test.h
@@ -0,0 +1 @@
+../riscv-test-suite/env/arch_test.h
\ No newline at end of file
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/encoding.h b/tests/wally-riscv-arch-test/riscv-test-env/encoding.h
new file mode 120000
index 000000000..fd1833f03
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/encoding.h
@@ -0,0 +1 @@
+../riscv-test-suite/env/encoding.h
\ No newline at end of file
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/p/link.ld b/tests/wally-riscv-arch-test/riscv-test-env/p/link.ld
new file mode 100644
index 000000000..392e74f9e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/p/link.ld
@@ -0,0 +1,22 @@
+OUTPUT_ARCH( "riscv" )
+ENTRY(_start)
+
+SECTIONS
+{
+ . = 0x00000000;
+ .text.trap : { *(.text.trap) }
+
+ . = 0x80000000;
+ .text.init : { *(.text.init) }
+
+ . = ALIGN(0x1000);
+ .tohost : { *(.tohost) }
+ . = ALIGN(0x1000);
+ .text : { *(.text) }
+ . = ALIGN(0x1000);
+ .data : { *(.data) }
+ .data.string : { *(.data.string)}
+ .bss : { *(.bss) }
+ _end = .;
+}
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/p/riscv_test.h b/tests/wally-riscv-arch-test/riscv-test-env/p/riscv_test.h
new file mode 100644
index 000000000..e452261c4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/p/riscv_test.h
@@ -0,0 +1,251 @@
+// See LICENSE for license details.
+
+#ifndef _ENV_PHYSICAL_SINGLE_CORE_H
+#define _ENV_PHYSICAL_SINGLE_CORE_H
+
+#include "../encoding.h"
+
+//-----------------------------------------------------------------------
+// Begin Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_RV64U \
+ .macro init; \
+ .endm
+
+#define RVTEST_RV64UF \
+ .macro init; \
+ RVTEST_FP_ENABLE; \
+ .endm
+
+#define RVTEST_RV32U \
+ .macro init; \
+ .endm
+
+#define RVTEST_RV32UF \
+ .macro init; \
+ RVTEST_FP_ENABLE; \
+ .endm
+
+#define RVTEST_RV64M \
+ .macro init; \
+ RVTEST_ENABLE_MACHINE; \
+ .endm
+
+#define RVTEST_RV64S \
+ .macro init; \
+ RVTEST_ENABLE_SUPERVISOR; \
+ .endm
+
+#define RVTEST_RV32M \
+ .macro init; \
+ RVTEST_ENABLE_MACHINE; \
+ .endm
+
+#define RVTEST_RV32S \
+ .macro init; \
+ RVTEST_ENABLE_SUPERVISOR; \
+ .endm
+
+#if __riscv_xlen == 64
+# define CHECK_XLEN li a0, 1; slli a0, a0, 31; bgez a0, 1f; RVTEST_PASS; 1:
+#else
+# define CHECK_XLEN li a0, 1; slli a0, a0, 31; bltz a0, 1f; RVTEST_PASS; 1:
+#endif
+
+#define INIT_PMP \
+ la t0, 1f; \
+ csrw mtvec, t0; \
+ li t0, -1; /* Set up a PMP to permit all accesses */ \
+ csrw pmpaddr0, t0; \
+ li t0, PMP_NAPOT | PMP_R | PMP_W | PMP_X; \
+ csrw pmpcfg0, t0; \
+ .align 2; \
+1:
+
+#define INIT_SATP \
+ la t0, 1f; \
+ csrw mtvec, t0; \
+ csrwi satp, 0; \
+ .align 2; \
+1:
+
+#define DELEGATE_NO_TRAPS \
+ la t0, 1f; \
+ csrw mtvec, t0; \
+ csrwi medeleg, 0; \
+ csrwi mideleg, 0; \
+ csrwi mie, 0; \
+ .align 2; \
+1:
+
+#define RVTEST_ENABLE_SUPERVISOR \
+ li a0, MSTATUS_MPP & (MSTATUS_MPP >> 1); \
+ csrs mstatus, a0; \
+ li a0, SIP_SSIP | SIP_STIP; \
+ csrs mideleg, a0; \
+
+#define RVTEST_ENABLE_MACHINE \
+ li a0, MSTATUS_MPP; \
+ csrs mstatus, a0; \
+
+#define RVTEST_FP_ENABLE \
+ li a0, MSTATUS_FS & (MSTATUS_FS >> 1); \
+ csrs mstatus, a0; \
+ csrwi fcsr, 0
+
+#define RISCV_MULTICORE_DISABLE \
+ csrr a0, mhartid; \
+ 1: bnez a0, 1b
+
+#define EXTRA_TVEC_USER
+#define EXTRA_TVEC_MACHINE
+#define EXTRA_INIT
+#define EXTRA_INIT_TIMER
+
+//
+// undefine some unusable CSR Accesses if no PRIV Mode present
+//
+#if defined(PRIV_MISA_S)
+# if (PRIV_MISA_S==0)
+# undef INIT_SATP
+# define INIT_SATP
+# undef INIT_PMP
+# define INIT_PMP
+# undef DELEGATE_NO_TRAPS
+# define DELEGATE_NO_TRAPS
+# undef RVTEST_ENABLE_SUPERVISOR
+# define RVTEST_ENABLE_SUPERVISOR
+# endif
+#endif
+#if defined(PRIV_MISA_U)
+# if (PRIV_MISA_U==0)
+# endif
+#endif
+#if defined(TRAPHANDLER)
+#include TRAPHANDLER
+#endif
+
+#define INTERRUPT_HANDLER j other_exception /* No interrupts should occur */
+
+#define RVTEST_CODE_BEGIN_OLD \
+ .section .text.init; \
+ .align 6; \
+ .weak stvec_handler; \
+ .weak mtvec_handler; \
+ .globl _start; \
+_start: \
+ /* reset vector */ \
+ j reset_vector; \
+ .align 2; \
+trap_vector: \
+ /* test whether the test came from pass/fail */ \
+ csrr t5, mcause; \
+ li t6, CAUSE_USER_ECALL; \
+ beq t5, t6, write_tohost; \
+ li t6, CAUSE_SUPERVISOR_ECALL; \
+ beq t5, t6, write_tohost; \
+ li t6, CAUSE_MACHINE_ECALL; \
+ beq t5, t6, write_tohost; \
+ /* if an mtvec_handler is defined, jump to it */ \
+ la t5, mtvec_handler; \
+ beqz t5, 1f; \
+ jr t5; \
+ /* was it an interrupt or an exception? */ \
+ 1: csrr t5, mcause; \
+ bgez t5, handle_exception; \
+ INTERRUPT_HANDLER; \
+handle_exception: \
+ /* we don't know how to handle whatever the exception was */ \
+ other_exception: \
+ /* some unhandlable exception occurred */ \
+ 1: ori TESTNUM, TESTNUM, 1337; \
+ write_tohost: \
+ sw TESTNUM, tohost, t5; \
+ j write_tohost; \
+reset_vector: \
+ RISCV_MULTICORE_DISABLE; \
+ INIT_SATP; \
+ INIT_PMP; \
+ DELEGATE_NO_TRAPS; \
+ li TESTNUM, 0; \
+ la t0, trap_vector; \
+ csrw mtvec, t0; \
+ CHECK_XLEN; \
+ /* if an stvec_handler is defined, delegate exceptions to it */ \
+ la t0, stvec_handler; \
+ beqz t0, 1f; \
+ csrw stvec, t0; \
+ li t0, (1 << CAUSE_LOAD_PAGE_FAULT) | \
+ (1 << CAUSE_STORE_PAGE_FAULT) | \
+ (1 << CAUSE_FETCH_PAGE_FAULT) | \
+ (1 << CAUSE_MISALIGNED_FETCH) | \
+ (1 << CAUSE_USER_ECALL) | \
+ (1 << CAUSE_BREAKPOINT); \
+ csrw medeleg, t0; \
+ csrr t1, medeleg; \
+ bne t0, t1, other_exception; \
+1: csrwi mstatus, 0; \
+ init; \
+ EXTRA_INIT; \
+ EXTRA_INIT_TIMER; \
+ la t0, 1f; \
+ csrw mepc, t0; \
+ csrr a0, mhartid; \
+ mret; \
+1: \
+begin_testcode:
+
+
+//-----------------------------------------------------------------------
+// End Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_CODE_END_OLD \
+end_testcode: \
+ ecall;
+
+//-----------------------------------------------------------------------
+// Pass/Fail Macro
+//-----------------------------------------------------------------------
+#define RVTEST_SYNC fence
+//#define RVTEST_SYNC nop
+
+#define RVTEST_PASS \
+ RVTEST_SYNC; \
+ li TESTNUM, 1; \
+ SWSIG (0, TESTNUM); \
+ ecall
+
+#define TESTNUM gp
+#define RVTEST_FAIL \
+ RVTEST_SYNC; \
+1: beqz TESTNUM, 1b; \
+ sll TESTNUM, TESTNUM, 1; \
+ or TESTNUM, TESTNUM, 1; \
+ SWSIG (0, TESTNUM); \
+ la x1, end_testcode; \
+ jr x1;
+
+//-----------------------------------------------------------------------
+// Data Section Macro
+//-----------------------------------------------------------------------
+
+#define EXTRA_DATA
+
+#define RVTEST_DATA_BEGIN_OLD \
+ .align 4; .global begin_signature; begin_signature:
+
+#define RVTEST_DATA_END_OLD \
+ .align 4; .global end_signature; end_signature: \
+ EXTRA_DATA \
+ .pushsection .tohost,"aw",@progbits; \
+ .align 8; .global tohost; tohost: .dword 0; \
+ .align 8; .global fromhost; fromhost: .dword 0; \
+ .popsection; \
+ .align 8; .global begin_regstate; begin_regstate: \
+ .word 128; \
+ .align 8; .global end_regstate; end_regstate: \
+ .word 4;
+
+#endif
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/pm/link.ld b/tests/wally-riscv-arch-test/riscv-test-env/pm/link.ld
new file mode 100644
index 000000000..b3e315e78
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/pm/link.ld
@@ -0,0 +1,17 @@
+OUTPUT_ARCH( "riscv" )
+ENTRY(_start)
+
+SECTIONS
+{
+ . = 0x80000000;
+ .text.init : { *(.text.init) }
+ . = ALIGN(0x1000);
+ .tohost : { *(.tohost) }
+ . = ALIGN(0x1000);
+ .text : { *(.text) }
+ . = ALIGN(0x1000);
+ .data : { *(.data) }
+ .bss : { *(.bss) }
+ _end = .;
+}
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/pm/riscv_test.h b/tests/wally-riscv-arch-test/riscv-test-env/pm/riscv_test.h
new file mode 100644
index 000000000..38a0e86b8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/pm/riscv_test.h
@@ -0,0 +1,11 @@
+// See LICENSE for license details.
+
+#ifndef _ENV_PHYSICAL_MULTI_CORE_H
+#define _ENV_PHYSICAL_MULTI_CORE_H
+
+#include "../p/riscv_test.h"
+
+#undef RISCV_MULTICORE_DISABLE
+#define RISCV_MULTICORE_DISABLE
+
+#endif
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/pt/link.ld b/tests/wally-riscv-arch-test/riscv-test-env/pt/link.ld
new file mode 100644
index 000000000..b3e315e78
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/pt/link.ld
@@ -0,0 +1,17 @@
+OUTPUT_ARCH( "riscv" )
+ENTRY(_start)
+
+SECTIONS
+{
+ . = 0x80000000;
+ .text.init : { *(.text.init) }
+ . = ALIGN(0x1000);
+ .tohost : { *(.tohost) }
+ . = ALIGN(0x1000);
+ .text : { *(.text) }
+ . = ALIGN(0x1000);
+ .data : { *(.data) }
+ .bss : { *(.bss) }
+ _end = .;
+}
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/pt/riscv_test.h b/tests/wally-riscv-arch-test/riscv-test-env/pt/riscv_test.h
new file mode 100644
index 000000000..34c2a331a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/pt/riscv_test.h
@@ -0,0 +1,69 @@
+// See LICENSE for license details.
+
+#ifndef _ENV_PHYSICAL_SINGLE_CORE_TIMER_H
+#define _ENV_PHYSICAL_SINGLE_CORE_TIMER_H
+
+#include "../p/riscv_test.h"
+
+#define TIMER_INTERVAL 2
+
+#undef EXTRA_INIT_TIMER
+#define EXTRA_INIT_TIMER \
+ li a0, MIP_MTIP; \
+ csrs mie, a0; \
+ csrr a0, mtime; \
+ addi a0, a0, TIMER_INTERVAL; \
+ csrw mtimecmp, a0; \
+
+#if SSTATUS_XS != 0x18000
+# error
+#endif
+#define XS_SHIFT 15
+
+#undef INTERRUPT_HANDLER
+#define INTERRUPT_HANDLER \
+ slli t5, t5, 1; \
+ srli t5, t5, 1; \
+ add t5, t5, -IRQ_M_TIMER; \
+ bnez t5, other_exception; /* other interrups shouldn't happen */\
+ csrr t5, mtime; \
+ addi t5, t5, TIMER_INTERVAL; \
+ csrw mtimecmp, t5; \
+ mret; \
+
+//-----------------------------------------------------------------------
+// Data Section Macro
+//-----------------------------------------------------------------------
+
+#undef EXTRA_DATA
+#define EXTRA_DATA \
+ .align 3; \
+regspill: \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+ .dword 0xdeadbeefcafebabe; \
+evac: \
+ .skip 32768; \
+
+#endif
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/v/entry.S b/tests/wally-riscv-arch-test/riscv-test-env/v/entry.S
new file mode 100644
index 000000000..97196620f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/v/entry.S
@@ -0,0 +1,125 @@
+#include "riscv_test.h"
+
+#if __riscv_xlen == 64
+# define STORE sd
+# define LOAD ld
+# define REGBYTES 8
+#else
+# define STORE sw
+# define LOAD lw
+# define REGBYTES 4
+#endif
+
+#define STACK_TOP (_end + 4096)
+
+ .section ".text.init","ax",@progbits
+ .globl _start
+_start:
+ j handle_reset
+
+ /* NMI vector */
+nmi_vector:
+ j wtf
+
+trap_vector:
+ j wtf
+
+handle_reset:
+ la t0, trap_vector
+ csrw mtvec, t0
+ la sp, STACK_TOP - SIZEOF_TRAPFRAME_T
+ csrr t0, mhartid
+ slli t0, t0, 12
+ add sp, sp, t0
+ csrw mscratch, sp
+ la a0, userstart
+ j vm_boot
+
+ .globl pop_tf
+pop_tf:
+ LOAD t0,33*REGBYTES(a0)
+ csrw sepc,t0
+ LOAD x1,1*REGBYTES(a0)
+ LOAD x2,2*REGBYTES(a0)
+ LOAD x3,3*REGBYTES(a0)
+ LOAD x4,4*REGBYTES(a0)
+ LOAD x5,5*REGBYTES(a0)
+ LOAD x6,6*REGBYTES(a0)
+ LOAD x7,7*REGBYTES(a0)
+ LOAD x8,8*REGBYTES(a0)
+ LOAD x9,9*REGBYTES(a0)
+ LOAD x11,11*REGBYTES(a0)
+ LOAD x12,12*REGBYTES(a0)
+ LOAD x13,13*REGBYTES(a0)
+ LOAD x14,14*REGBYTES(a0)
+ LOAD x15,15*REGBYTES(a0)
+ LOAD x16,16*REGBYTES(a0)
+ LOAD x17,17*REGBYTES(a0)
+ LOAD x18,18*REGBYTES(a0)
+ LOAD x19,19*REGBYTES(a0)
+ LOAD x20,20*REGBYTES(a0)
+ LOAD x21,21*REGBYTES(a0)
+ LOAD x22,22*REGBYTES(a0)
+ LOAD x23,23*REGBYTES(a0)
+ LOAD x24,24*REGBYTES(a0)
+ LOAD x25,25*REGBYTES(a0)
+ LOAD x26,26*REGBYTES(a0)
+ LOAD x27,27*REGBYTES(a0)
+ LOAD x28,28*REGBYTES(a0)
+ LOAD x29,29*REGBYTES(a0)
+ LOAD x30,30*REGBYTES(a0)
+ LOAD x31,31*REGBYTES(a0)
+ LOAD a0,10*REGBYTES(a0)
+ sret
+
+ .global trap_entry
+trap_entry:
+ csrrw sp, sscratch, sp
+
+ # save gprs
+ STORE x1,1*REGBYTES(sp)
+ STORE x3,3*REGBYTES(sp)
+ STORE x4,4*REGBYTES(sp)
+ STORE x5,5*REGBYTES(sp)
+ STORE x6,6*REGBYTES(sp)
+ STORE x7,7*REGBYTES(sp)
+ STORE x8,8*REGBYTES(sp)
+ STORE x9,9*REGBYTES(sp)
+ STORE x10,10*REGBYTES(sp)
+ STORE x11,11*REGBYTES(sp)
+ STORE x12,12*REGBYTES(sp)
+ STORE x13,13*REGBYTES(sp)
+ STORE x14,14*REGBYTES(sp)
+ STORE x15,15*REGBYTES(sp)
+ STORE x16,16*REGBYTES(sp)
+ STORE x17,17*REGBYTES(sp)
+ STORE x18,18*REGBYTES(sp)
+ STORE x19,19*REGBYTES(sp)
+ STORE x20,20*REGBYTES(sp)
+ STORE x21,21*REGBYTES(sp)
+ STORE x22,22*REGBYTES(sp)
+ STORE x23,23*REGBYTES(sp)
+ STORE x24,24*REGBYTES(sp)
+ STORE x25,25*REGBYTES(sp)
+ STORE x26,26*REGBYTES(sp)
+ STORE x27,27*REGBYTES(sp)
+ STORE x28,28*REGBYTES(sp)
+ STORE x29,29*REGBYTES(sp)
+ STORE x30,30*REGBYTES(sp)
+ STORE x31,31*REGBYTES(sp)
+
+ csrrw t0,sscratch,sp
+ STORE t0,2*REGBYTES(sp)
+
+ # get sr, epc, badvaddr, cause
+ csrr t0,sstatus
+ STORE t0,32*REGBYTES(sp)
+ csrr t0,sepc
+ STORE t0,33*REGBYTES(sp)
+ csrr t0,sbadaddr
+ STORE t0,34*REGBYTES(sp)
+ csrr t0,scause
+ STORE t0,35*REGBYTES(sp)
+
+ move a0, sp
+ j handle_trap
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/v/link.ld b/tests/wally-riscv-arch-test/riscv-test-env/v/link.ld
new file mode 100644
index 000000000..b3e315e78
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/v/link.ld
@@ -0,0 +1,17 @@
+OUTPUT_ARCH( "riscv" )
+ENTRY(_start)
+
+SECTIONS
+{
+ . = 0x80000000;
+ .text.init : { *(.text.init) }
+ . = ALIGN(0x1000);
+ .tohost : { *(.tohost) }
+ . = ALIGN(0x1000);
+ .text : { *(.text) }
+ . = ALIGN(0x1000);
+ .data : { *(.data) }
+ .bss : { *(.bss) }
+ _end = .;
+}
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/v/riscv_test.h b/tests/wally-riscv-arch-test/riscv-test-env/v/riscv_test.h
new file mode 100644
index 000000000..8ca9ffd76
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/v/riscv_test.h
@@ -0,0 +1,71 @@
+// See LICENSE for license details.
+
+#ifndef _ENV_VIRTUAL_SINGLE_CORE_H
+#define _ENV_VIRTUAL_SINGLE_CORE_H
+
+#include "../p/riscv_test.h"
+
+//-----------------------------------------------------------------------
+// Begin Macro
+//-----------------------------------------------------------------------
+
+#undef RVTEST_FP_ENABLE
+#define RVTEST_FP_ENABLE fssr x0
+
+#undef RVTEST_CODE_BEGIN
+#define RVTEST_CODE_BEGIN \
+ .text; \
+ .global userstart; \
+userstart: \
+ init
+
+//-----------------------------------------------------------------------
+// Pass/Fail Macro
+//-----------------------------------------------------------------------
+
+#undef RVTEST_PASS
+#define RVTEST_PASS li a0, 1; scall
+
+#undef RVTEST_FAIL
+#define RVTEST_FAIL sll a0, TESTNUM, 1; 1:beqz a0, 1b; or a0, a0, 1; scall;
+
+//-----------------------------------------------------------------------
+// Data Section Macro
+//-----------------------------------------------------------------------
+
+#undef RVTEST_DATA_END
+#define RVTEST_DATA_END
+
+//-----------------------------------------------------------------------
+// Supervisor mode definitions and macros
+//-----------------------------------------------------------------------
+
+#define MAX_TEST_PAGES 63 // this must be the period of the LFSR below
+#define LFSR_NEXT(x) (((((x)^((x)>>1)) & 1) << 5) | ((x) >> 1))
+
+#define PGSHIFT 12
+#define PGSIZE (1UL << PGSHIFT)
+
+#define SIZEOF_TRAPFRAME_T ((__riscv_xlen / 8) * 36)
+
+#ifndef __ASSEMBLER__
+
+typedef unsigned long pte_t;
+#define LEVELS (sizeof(pte_t) == sizeof(uint64_t) ? 3 : 2)
+#define PTIDXBITS (PGSHIFT - (sizeof(pte_t) == 8 ? 3 : 2))
+#define VPN_BITS (PTIDXBITS * LEVELS)
+#define VA_BITS (VPN_BITS + PGSHIFT)
+#define PTES_PER_PT (1UL << RISCV_PGLEVEL_BITS)
+#define MEGAPAGE_SIZE (PTES_PER_PT * PGSIZE)
+
+typedef struct
+{
+ long gpr[32];
+ long sr;
+ long epc;
+ long badvaddr;
+ long cause;
+} trapframe_t;
+#endif
+
+#endif
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/v/string.c b/tests/wally-riscv-arch-test/riscv-test-env/v/string.c
new file mode 100644
index 000000000..4ffedc0a4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/v/string.c
@@ -0,0 +1,114 @@
+#include
+#include
+#include
+
+void* memcpy(void* dest, const void* src, size_t len)
+{
+ if ((((uintptr_t)dest | (uintptr_t)src | len) & (sizeof(uintptr_t)-1)) == 0) {
+ const uintptr_t* s = src;
+ uintptr_t *d = dest;
+ while (d < (uintptr_t*)(dest + len))
+ *d++ = *s++;
+ } else {
+ const char* s = src;
+ char *d = dest;
+ while (d < (char*)(dest + len))
+ *d++ = *s++;
+ }
+ return dest;
+}
+
+void* memset(void* dest, int byte, size_t len)
+{
+ if ((((uintptr_t)dest | len) & (sizeof(uintptr_t)-1)) == 0) {
+ uintptr_t word = byte & 0xFF;
+ word |= word << 8;
+ word |= word << 16;
+ word |= word << 16 << 16;
+
+ uintptr_t *d = dest;
+ while (d < (uintptr_t*)(dest + len))
+ *d++ = word;
+ } else {
+ char *d = dest;
+ while (d < (char*)(dest + len))
+ *d++ = byte;
+ }
+ return dest;
+}
+
+size_t strlen(const char *s)
+{
+ const char *p = s;
+ while (*p)
+ p++;
+ return p - s;
+}
+
+int strcmp(const char* s1, const char* s2)
+{
+ unsigned char c1, c2;
+
+ do {
+ c1 = *s1++;
+ c2 = *s2++;
+ } while (c1 != 0 && c1 == c2);
+
+ return c1 - c2;
+}
+
+int memcmp(const void* s1, const void* s2, size_t n)
+{
+ if ((((uintptr_t)s1 | (uintptr_t)s2) & (sizeof(uintptr_t)-1)) == 0) {
+ const uintptr_t* u1 = s1;
+ const uintptr_t* u2 = s2;
+ const uintptr_t* end = u1 + (n / sizeof(uintptr_t));
+ while (u1 < end) {
+ if (*u1 != *u2)
+ break;
+ u1++;
+ u2++;
+ }
+ n -= (const void*)u1 - s1;
+ s1 = u1;
+ s2 = u2;
+ }
+
+ while (n--) {
+ unsigned char c1 = *(const unsigned char*)s1++;
+ unsigned char c2 = *(const unsigned char*)s2++;
+ if (c1 != c2)
+ return c1 - c2;
+ }
+
+ return 0;
+}
+
+char* strcpy(char* dest, const char* src)
+{
+ char* d = dest;
+ while ((*d++ = *src++))
+ ;
+ return dest;
+}
+
+long atol(const char* str)
+{
+ long res = 0;
+ int sign = 0;
+
+ while (*str == ' ')
+ str++;
+
+ if (*str == '-' || *str == '+') {
+ sign = *str == '-';
+ str++;
+ }
+
+ while (*str) {
+ res *= 10;
+ res += *str++ - '0';
+ }
+
+ return sign ? -res : res;
+}
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/v/vm.c b/tests/wally-riscv-arch-test/riscv-test-env/v/vm.c
new file mode 100644
index 000000000..8064b7baf
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/v/vm.c
@@ -0,0 +1,273 @@
+// See LICENSE for license details.
+
+#include
+#include
+#include
+
+#include "riscv_test.h"
+
+void trap_entry();
+void pop_tf(trapframe_t*);
+
+volatile uint64_t tohost;
+volatile uint64_t fromhost;
+
+static void do_tohost(uint64_t tohost_value)
+{
+ while (tohost)
+ fromhost = 0;
+ tohost = tohost_value;
+}
+
+#define pa2kva(pa) ((void*)(pa) - DRAM_BASE - MEGAPAGE_SIZE)
+#define uva2kva(pa) ((void*)(pa) - MEGAPAGE_SIZE)
+
+#define flush_page(addr) asm volatile ("sfence.vma %0" : : "r" (addr) : "memory")
+
+static uint64_t lfsr63(uint64_t x)
+{
+ uint64_t bit = (x ^ (x >> 1)) & 1;
+ return (x >> 1) | (bit << 62);
+}
+
+static void cputchar(int x)
+{
+ do_tohost(0x0101000000000000 | (unsigned char)x);
+}
+
+static void cputstring(const char* s)
+{
+ while (*s)
+ cputchar(*s++);
+}
+
+static void terminate(int code)
+{
+ do_tohost(code);
+ while (1);
+}
+
+void wtf()
+{
+ terminate(841);
+}
+
+#define stringify1(x) #x
+#define stringify(x) stringify1(x)
+#define assert(x) do { \
+ if (x) break; \
+ cputstring("Assertion failed: " stringify(x) "\n"); \
+ terminate(3); \
+} while(0)
+
+#define l1pt pt[0]
+#define user_l2pt pt[1]
+#if __riscv_xlen == 64
+# define NPT 4
+#define kernel_l2pt pt[2]
+# define user_l3pt pt[3]
+#else
+# define NPT 2
+# define user_l3pt user_l2pt
+#endif
+pte_t pt[NPT][PTES_PER_PT] __attribute__((aligned(PGSIZE)));
+
+typedef struct { pte_t addr; void* next; } freelist_t;
+
+freelist_t user_mapping[MAX_TEST_PAGES];
+freelist_t freelist_nodes[MAX_TEST_PAGES];
+freelist_t *freelist_head, *freelist_tail;
+
+void printhex(uint64_t x)
+{
+ char str[17];
+ for (int i = 0; i < 16; i++)
+ {
+ str[15-i] = (x & 0xF) + ((x & 0xF) < 10 ? '0' : 'a'-10);
+ x >>= 4;
+ }
+ str[16] = 0;
+
+ cputstring(str);
+}
+
+static void evict(unsigned long addr)
+{
+ assert(addr >= PGSIZE && addr < MAX_TEST_PAGES * PGSIZE);
+ addr = addr/PGSIZE*PGSIZE;
+
+ freelist_t* node = &user_mapping[addr/PGSIZE];
+ if (node->addr)
+ {
+ // check accessed and dirty bits
+ assert(user_l3pt[addr/PGSIZE] & PTE_A);
+ uintptr_t sstatus = set_csr(sstatus, SSTATUS_SUM);
+ if (memcmp((void*)addr, uva2kva(addr), PGSIZE)) {
+ assert(user_l3pt[addr/PGSIZE] & PTE_D);
+ memcpy((void*)addr, uva2kva(addr), PGSIZE);
+ }
+ write_csr(sstatus, sstatus);
+
+ user_mapping[addr/PGSIZE].addr = 0;
+
+ if (freelist_tail == 0)
+ freelist_head = freelist_tail = node;
+ else
+ {
+ freelist_tail->next = node;
+ freelist_tail = node;
+ }
+ }
+}
+
+void handle_fault(uintptr_t addr, uintptr_t cause)
+{
+ assert(addr >= PGSIZE && addr < MAX_TEST_PAGES * PGSIZE);
+ addr = addr/PGSIZE*PGSIZE;
+
+ if (user_l3pt[addr/PGSIZE]) {
+ if (!(user_l3pt[addr/PGSIZE] & PTE_A)) {
+ user_l3pt[addr/PGSIZE] |= PTE_A;
+ } else {
+ assert(!(user_l3pt[addr/PGSIZE] & PTE_D) && cause == CAUSE_STORE_PAGE_FAULT);
+ user_l3pt[addr/PGSIZE] |= PTE_D;
+ }
+ flush_page(addr);
+ return;
+ }
+
+ freelist_t* node = freelist_head;
+ assert(node);
+ freelist_head = node->next;
+ if (freelist_head == freelist_tail)
+ freelist_tail = 0;
+
+ uintptr_t new_pte = (node->addr >> PGSHIFT << PTE_PPN_SHIFT) | PTE_V | PTE_U | PTE_R | PTE_W | PTE_X;
+ user_l3pt[addr/PGSIZE] = new_pte | PTE_A | PTE_D;
+ flush_page(addr);
+
+ assert(user_mapping[addr/PGSIZE].addr == 0);
+ user_mapping[addr/PGSIZE] = *node;
+
+ uintptr_t sstatus = set_csr(sstatus, SSTATUS_SUM);
+ memcpy((void*)addr, uva2kva(addr), PGSIZE);
+ write_csr(sstatus, sstatus);
+
+ user_l3pt[addr/PGSIZE] = new_pte;
+ flush_page(addr);
+
+ __builtin___clear_cache(0,0);
+}
+
+void handle_trap(trapframe_t* tf)
+{
+ if (tf->cause == CAUSE_USER_ECALL)
+ {
+ int n = tf->gpr[10];
+
+ for (long i = 1; i < MAX_TEST_PAGES; i++)
+ evict(i*PGSIZE);
+
+ terminate(n);
+ }
+ else if (tf->cause == CAUSE_ILLEGAL_INSTRUCTION)
+ {
+ assert(tf->epc % 4 == 0);
+
+ int* fssr;
+ asm ("jal %0, 1f; fssr x0; 1:" : "=r"(fssr));
+
+ if (*(int*)tf->epc == *fssr)
+ terminate(1); // FP test on non-FP hardware. "succeed."
+ else
+ assert(!"illegal instruction");
+ tf->epc += 4;
+ }
+ else if (tf->cause == CAUSE_FETCH_PAGE_FAULT || tf->cause == CAUSE_LOAD_PAGE_FAULT || tf->cause == CAUSE_STORE_PAGE_FAULT)
+ handle_fault(tf->badvaddr, tf->cause);
+ else
+ assert(!"unexpected exception");
+
+ pop_tf(tf);
+}
+
+static void coherence_torture()
+{
+ // cause coherence misses without affecting program semantics
+ unsigned int random = ENTROPY;
+ while (1) {
+ uintptr_t paddr = DRAM_BASE + ((random % (2 * (MAX_TEST_PAGES + 1) * PGSIZE)) & -4);
+#ifdef __riscv_atomic
+ if (random & 1) // perform a no-op write
+ asm volatile ("amoadd.w zero, zero, (%0)" :: "r"(paddr));
+ else // perform a read
+#endif
+ asm volatile ("lw zero, (%0)" :: "r"(paddr));
+ random = lfsr63(random);
+ }
+}
+
+void vm_boot(uintptr_t test_addr)
+{
+ unsigned int random = ENTROPY;
+ if (read_csr(mhartid) > 0)
+ coherence_torture();
+
+ _Static_assert(SIZEOF_TRAPFRAME_T == sizeof(trapframe_t), "???");
+
+#if (MAX_TEST_PAGES > PTES_PER_PT) || (DRAM_BASE % MEGAPAGE_SIZE) != 0
+# error
+#endif
+ // map user to lowermost megapage
+ l1pt[0] = ((pte_t)user_l2pt >> PGSHIFT << PTE_PPN_SHIFT) | PTE_V;
+ // map kernel to uppermost megapage
+#if __riscv_xlen == 64
+ l1pt[PTES_PER_PT-1] = ((pte_t)kernel_l2pt >> PGSHIFT << PTE_PPN_SHIFT) | PTE_V;
+ kernel_l2pt[PTES_PER_PT-1] = (DRAM_BASE/RISCV_PGSIZE << PTE_PPN_SHIFT) | PTE_V | PTE_R | PTE_W | PTE_X | PTE_A | PTE_D;
+ user_l2pt[0] = ((pte_t)user_l3pt >> PGSHIFT << PTE_PPN_SHIFT) | PTE_V;
+ uintptr_t vm_choice = SATP_MODE_SV39;
+#else
+ l1pt[PTES_PER_PT-1] = (DRAM_BASE/RISCV_PGSIZE << PTE_PPN_SHIFT) | PTE_V | PTE_R | PTE_W | PTE_X | PTE_A | PTE_D;
+ uintptr_t vm_choice = SATP_MODE_SV32;
+#endif
+ write_csr(satp, ((uintptr_t)l1pt >> PGSHIFT) |
+ (vm_choice * (SATP_MODE & ~(SATP_MODE<<1))));
+
+ // Set up PMPs if present, ignoring illegal instruction trap if not.
+ uintptr_t pmpc = PMP_NAPOT | PMP_R | PMP_W | PMP_X;
+ asm volatile ("la t0, 1f\n\t"
+ "csrrw t0, mtvec, t0\n\t"
+ "csrw pmpaddr0, %1\n\t"
+ "csrw pmpcfg0, %0\n\t"
+ ".align 2\n\t"
+ "1:"
+ : : "r" (pmpc), "r" (-1UL) : "t0");
+
+ // set up supervisor trap handling
+ write_csr(stvec, pa2kva(trap_entry));
+ write_csr(sscratch, pa2kva(read_csr(mscratch)));
+ write_csr(medeleg,
+ (1 << CAUSE_USER_ECALL) |
+ (1 << CAUSE_FETCH_PAGE_FAULT) |
+ (1 << CAUSE_LOAD_PAGE_FAULT) |
+ (1 << CAUSE_STORE_PAGE_FAULT));
+ // FPU on; accelerator on; allow supervisor access to user memory access
+ write_csr(mstatus, MSTATUS_FS | MSTATUS_XS);
+ write_csr(mie, 0);
+
+ random = 1 + (random % MAX_TEST_PAGES);
+ freelist_head = pa2kva((void*)&freelist_nodes[0]);
+ freelist_tail = pa2kva(&freelist_nodes[MAX_TEST_PAGES-1]);
+ for (long i = 0; i < MAX_TEST_PAGES; i++)
+ {
+ freelist_nodes[i].addr = DRAM_BASE + (MAX_TEST_PAGES + random)*PGSIZE;
+ freelist_nodes[i].next = pa2kva(&freelist_nodes[i+1]);
+ random = LFSR_NEXT(random);
+ }
+ freelist_nodes[MAX_TEST_PAGES-1].next = 0;
+
+ trapframe_t tf;
+ memset(&tf, 0, sizeof(tf));
+ tf.epc = test_addr - DRAM_BASE;
+ pop_tf(&tf);
+}
diff --git a/tests/wally-riscv-arch-test/riscv-test-env/verify.sh b/tests/wally-riscv-arch-test/riscv-test-env/verify.sh
new file mode 100755
index 000000000..f69a4c633
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-env/verify.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+printf "\n\nCompare to reference files ... \n\n";
+FAIL=0
+RUN=0
+
+for ref in ${SUITEDIR}/references/*.reference_output;
+do
+ base=$(basename ${ref})
+ stub=${base//".reference_output"/}
+
+ if [ "${stub}" = "*" ]; then
+ echo "No Reference Files ${SUITEDIR}/references/*.reference_output"
+ break
+ fi
+
+ sig=${WORK}/rv${XLEN}i_m/${RISCV_DEVICE}/${stub}.signature.output
+ dif=${WORK}/rv${XLEN}i_m/${RISCV_DEVICE}/${stub}.diff
+
+ RUN=$((${RUN} + 1))
+
+ #
+ # Ensure both files exist
+ #
+ if [ -f ${ref} ] && [ -f ${sig} ]; then
+ echo -n "Check $(printf %-24s ${stub}) "
+ else
+ echo -e "Check $(printf %-24s ${stub}) \e[33m ... IGNORE \e[39m"
+ continue
+ fi
+ diff --ignore-case --strip-trailing-cr ${ref} ${sig} &> /dev/null
+ if [ $? == 0 ]
+ then
+ echo -e "\e[32m ... OK \e[39m"
+ else
+ echo -e "\e[31m ... FAIL \e[39m"
+ FAIL=$((${FAIL} + 1))
+ sdiff ${ref} ${sig} > ${dif}
+ fi
+done
+
+# warn on missing reverse reference
+for sig in ${WORK}/rv${XLEN}i_m/${RISCV_DEVICE}/*.signature.output;
+do
+ base=$(basename ${sig})
+ stub=${base//".signature.output"/}
+ ref=${SUITEDIR}/references/${stub}.reference_output
+
+ if [ -f $sig ] && [ ! -f ${ref} ]; then
+ echo -e "\e[31m Error: sig ${sig} no corresponding ${ref} \e[39m"
+ FAIL=$((${FAIL} + 1))
+ fi
+done
+
+declare -i status=0
+if [ ${FAIL} == 0 ]
+then
+ echo "--------------------------------"
+ echo -n -e "\e[32m OK: ${RUN}/${RUN} "
+ status=0
+else
+ echo "--------------------------------"
+ echo -n -e "\e[31m FAIL: ${FAIL}/${RUN} "
+ status=1
+fi
+echo -e "RISCV_TARGET=${RISCV_TARGET} RISCV_DEVICE=${RISCV_DEVICE} XLEN=${XLEN} \e[39m"
+echo
+exit ${status}
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/Makefile.include b/tests/wally-riscv-arch-test/riscv-test-suite/Makefile.include
new file mode 100644
index 000000000..080aa1ee7
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/Makefile.include
@@ -0,0 +1,58 @@
+#=======================================================================
+# Makefile for riscv-tests/isa
+#-----------------------------------------------------------------------
+
+act_dir := .
+src_dir := $(act_dir)/src
+work_dir := $(WORK)
+work_dir_isa := $(work_dir)/rv$(XLEN)i_m/$(RISCV_DEVICE)
+
+include $(act_dir)/Makefrag
+ifneq ($(RISCV_TEST),)
+ target_tests = $(RISCV_TEST).elf
+endif
+
+default: all
+
+#--------------------------------------------------------------------
+# Build rules
+#--------------------------------------------------------------------
+
+vpath %.S $(act_dir)
+
+INCLUDE=$(TARGETDIR)/$(RISCV_TARGET)/device/rv$(XLEN)i_m/$(RISCV_DEVICE)/Makefile.include
+ifeq ($(wildcard $(INCLUDE)),)
+ $(error Cannot find '$(INCLUDE)`. Check that RISCV_TARGET and RISCV_DEVICE are set correctly.)
+endif
+-include $(INCLUDE)
+
+#------------------------------------------------------------
+# Build and run assembly tests
+
+%.log: %.elf
+ $(V) echo "Execute $(@)"
+ $(V) $(RUN_TARGET)
+
+
+define compile_template
+
+$(work_dir_isa)/%.elf: $(src_dir)/%.S
+ $(V) echo "Compile $$(@)"
+ @mkdir -p $$(@D)
+ $(V) $(COMPILE_TARGET)
+
+.PRECIOUS: $(work_dir_isa)/%.elf
+
+endef
+
+target_elf = $(foreach e,$(target_tests),$(work_dir_isa)/$(e))
+target_log = $(patsubst %.elf,%.log,$(target_elf))
+
+compile: $(target_elf)
+run: $(target_log)
+
+#------------------------------------------------------------
+# Clean up
+
+clean:
+ rm -rf $(work_dir)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/README.md b/tests/wally-riscv-arch-test/riscv-test-suite/README.md
new file mode 100644
index 000000000..2e585c2f6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/README.md
@@ -0,0 +1,66 @@
+# RISC-V Test Suites
+
+The tests are grouped based on the different extension subsets of the RISC-V unprivileged ISA.
+The tests strictly follow the [Test format](../spec/TestFormatSpec.adoc) specification.
+
+Directory names postfixed with "\_unratified" indicate that tests for extensions that have not yet
+been ratified by RVI.
+
+The coverage report (in html format) of the tests available in this suite is generated through
+[RISCOF](https://github.com/riscv-software-src/riscof) and is available here: [Coverage Report](../riscv-test-stats/coverage/README.md).
+
+These tests have been generated using the open source Compatibility Test Generator from InCore Semiconductors available
+at: [CTG](https://github.com/riscv/riscv-ctg).
+
+The reference signatures are generated using [SAIL](https://github.com/riscv/sail-riscv) or
+[SPIKE](https://github.com/riscv-software-src/riscv-isa-sim).
+
+Test directories with the "\_unratified" post-fix indicate test-suites for extensions which have not been
+ratified (but are stable and near ratification)
+
+Directory structure
+```
+
+├── env # contains the architectural test header files
+└── rv32i_m # top level folder indicate rv32 tests for machine mode
+ ├── C # include tests and references for "C" extension
+ │ ├── references # static references signatures for "C" extension
+ │ └── src # assembly tests for "C" extension
+ ├── F # include tests and references for "rv32F" extension
+ │ ├── references # static references signatures for "rv32F" extension
+ │ └── src # assembly tests for "rv32F" extension
+ ├── I # include tests and references for "I" extension
+ │ ├── references # static references signatures for "I" extension
+ │ └── src # assembly tests for "I" extension
+ ├── M # include tests and references for "M" extension
+ │ ├── references # static references signatures for "M" extension
+ │ └── src # assembly tests for "M" extension
+ ├── K_unratified # include tests and references for "K" extension
+ │ ├── references # static references signatures for "K" extension
+ │ └── src # assembly tests for "K" extension
+ ├── privilege # include tests and references for tests which require Privilege Spec
+ │ ├── references # static references signatures for tests which require Privilege Spec
+ │ └── src # assembly tests for tests which require Privilege Spec
+ └── Zifencei # include tests and references for "Zifencei" extension
+ ├── references # static references signatures for "Zifencei" extension
+ └── src # assembly tests for "Zifencei" extension
+└── rv64i_m # top level folder indicate rv64 tests for machine mode
+ ├── C # include tests and references for "C" extension
+ │ ├── references # static references signatures for "C" extension
+ │ └── src # assembly tests for "C" extension
+ ├── I # include tests and references for "I" extension
+ │ ├── references # static references signatures for "I" extension
+ │ └── src # assembly tests for "I" extension
+ ├── M # include tests and references for "M" extension
+ │ ├── references # static references signatures for "M" extension
+ │ └── src # assembly tests for "M" extension
+ ├── K_unratified # include tests and references for "K" extension
+ │ ├── references # static references signatures for "K" extension
+ │ └── src # assembly tests for "K" extension
+ ├── privilege # include tests and references for tests which require Privilege Spec
+ │ ├── references # static references signatures for tests which require Privilege Spec
+ │ └── src # assembly tests for tests which require Privilege Spec
+ └── Zifencei # include tests and references for "Zifencei" extension
+ ├── references # static references signatures for "Zifencei" extension
+ └── src # assembly tests for "Zifencei" extension
+```
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/env/arch_test.h b/tests/wally-riscv-arch-test/riscv-test-suite/env/arch_test.h
new file mode 100644
index 000000000..286a64744
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/env/arch_test.h
@@ -0,0 +1,1184 @@
+#include "encoding.h"
+// TODO the following should come from the YAML.
+#ifndef NUM_SPECD_INTCAUSES
+ #define NUM_SPECD_INTCAUSES 16
+#endif
+//#define RVTEST_FIXED_LEN
+#ifndef UNROLLSZ
+ #define UNROLLSZ 5
+#endif
+// #ifndef rvtest_gpr_save
+// #define rvtest_gpr_save
+// #endif
+
+#define TEST_CASE_1
+
+//-----------------------------------------------------------------------
+// RV Arch Test Macros
+//-----------------------------------------------------------------------
+#ifndef RVMODEL_SET_MSW_INT
+ #warning "RVMODEL_SET_MSW_INT is not defined by target. Declaring as empty macro"
+ #define RVMODEL_SET_MSW_INT
+#endif
+
+#ifndef RVMODEL_CLEAR_MSW_INT
+ #warning "RVMODEL_CLEAR_MSW_INT is not defined by target. Declaring as empty macro"
+ #define RVMODEL_CLEAR_MSW_INT
+#endif
+
+#ifndef RVMODEL_CLEAR_MTIMER_INT
+ #warning "RVMODEL_CLEAR_MTIMER_INT is not defined by target. Declaring as empty macro"
+ #define RVMODEL_CLEAR_MTIMER_INT
+#endif
+
+#ifndef RVMODEL_CLEAR_MEXT_INT
+ #warning "RVMODEL_CLEAR_MEXT_INT is not defined by target. Declaring as empty macro"
+ #define RVMODEL_CLEAR_MEXT_INT
+#endif
+
+#ifdef RVTEST_FIXED_LEN
+ #define LI(reg, val)\
+ .option push;\
+ .option norvc;\
+ .align UNROLLSZ;\
+ li reg,val;\
+ .align UNROLLSZ;\
+ .option pop;
+
+ #define LA(reg, val)\
+ .option push;\
+ .option norvc;\
+ .align UNROLLSZ;\
+ la reg,val;\
+ .align UNROLLSZ;\
+ .option pop;
+
+#else
+ #define LI(reg,val);\
+ .option push;\
+ .option norvc;\
+ li reg,val;\
+ .option pop;
+
+ #define LA(reg,val);\
+ .option push;\
+ .option norvc;\
+ la reg,val;\
+ .option pop;
+#endif
+#if XLEN==64
+ #define SREG sd
+ #define LREG ld
+ #define REGWIDTH 8
+ #define MASK 0xFFFFFFFFFFFFFFFF
+
+#else
+ #if XLEN==32
+ #define SREG sw
+ #define LREG lw
+ #define REGWIDTH 4
+ #define MASK 0xFFFFFFFF
+
+ #endif
+#endif
+
+#if FLEN==64
+ #define FLREG fld
+ #define FSREG fsd
+ #define FREGWIDTH 8
+
+#else
+ #if FLEN==32
+ #define FLREG flw
+ #define FSREG fsw
+ #define FREGWIDTH 4
+ #endif
+#endif
+
+#if XLEN==64
+ #if FLEN==32
+ #define SREG sw
+ #define LREG lW
+ #define REGWIDTH 4
+ #define MASK 0xFFFFFFFF
+ #endif
+#endif
+
+#define MMODE_SIG 3
+#define RLENG (REGWIDTH<<3)
+
+#define RVTEST_ISA(_STR)
+
+#ifndef DATA_REL_TVAL_MSK
+ #define DATA_REL_TVAL_MSK 0x0F05 << (REGWIDTH*8-16)
+#endif
+
+#ifndef CODE_REL_TVAL_MSK
+ #define CODE_REL_TVAL_MSK 0xD008 << (REGWIDTH*8-16)
+#endif
+
+
+// ----------------------------------- CODE BEGIN w/ TRAP HANDLER START ------------------------ //
+
+.macro RVTEST_CODE_BEGIN
+ .align UNROLLSZ
+ .section .text.init;
+ .globl rvtest_init; \
+ rvtest_init:
+#ifdef rvtest_mtrap_routine
+ LA(x1, rvtest_trap_prolog );
+ jalr ra, x1
+ rvtest_prolog_done:
+#endif
+ LI (x1, (0xFEEDBEADFEEDBEAD & MASK));
+ LI (x2, (0xFF76DF56FF76DF56 & MASK));
+ LI (x3, (0x7FBB6FAB7FBB6FAB & MASK));
+ LI (x4, (0xBFDDB7D5BFDDB7D5 & MASK));
+ LA (x5, rvtest_code_begin);
+ LA (x6, rvtest_data_begin);
+ LI (x7, (0xB7FBB6FAB7FBB6FA & MASK));
+ LI (x8, (0x5BFDDB7D5BFDDB7D & MASK));
+ LI (x9, (0xADFEEDBEADFEEDBE & MASK));
+ LI (x10, (0x56FF76DF56FF76DF & MASK));
+ LI (x11, (0xAB7FBB6FAB7FBB6F & MASK));
+ LI (x12, (0xD5BFDDB7D5BFDDB7 & MASK));
+ LI (x13, (0xEADFEEDBEADFEEDB & MASK));
+ LI (x14, (0xF56FF76DF56FF76D & MASK));
+ LI (x15, (0xFAB7FBB6FAB7FBB6 & MASK));
+ #ifndef RVTEST_E
+ LI (x16, (0x7D5BFDDB7D5BFDDB & MASK));
+ LI (x17, (0xBEADFEEDBEADFEED & MASK));
+ LI (x18, (0xDF56FF76DF56FF76 & MASK));
+ LI (x19, (0x6FAB7FBB6FAB7FBB & MASK));
+ LI (x20, (0xB7D5BFDDB7D5BFDD & MASK));
+ LI (x21, (0xDBEADFEEDBEADFEE & MASK));
+ LI (x22, (0x6DF56FF76DF56FF7 & MASK));
+ LI (x23, (0xB6FAB7FBB6FAB7FB & MASK));
+ LI (x24, (0xDB7D5BFDDB7D5BFD & MASK));
+ LI (x25, (0xEDBEADFEEDBEADFE & MASK));
+ LI (x26, (0x76DF56FF76DF56FF & MASK));
+ LI (x27, (0xBB6FAB7FBB6FAB7F & MASK));
+ LI (x28, (0xDDB7D5BFDDB7D5BF & MASK));
+ LI (x29, (0xEEDBEADFEEDBEADF & MASK));
+ LI (x30, (0xF76DF56FF76DF56F & MASK));
+ LI (x31, (0xFBB6FAB7FBB6FAB7 & MASK));
+ #endif
+ .globl rvtest_code_begin
+ rvtest_code_begin:
+.endm
+
+// --------------------------------- CODE BEGIN w/ TRAP HANDLER END -----------------------------//
+
+.macro RVTEST_CODE_END
+ .align 4;
+ .global rvtest_code_end
+ rvtest_code_end:
+#ifdef rvtest_mtrap_routine
+ .option push
+ .option norvc
+ j exit_cleanup
+
+ rvtest_trap_prolog:
+ /******************************************************************************/
+ /**** Prolog, to be run before any tests ****/
+ /**** #include 1 copy of this per mode in rvmodel_boot code? ****/
+ /**** ------------------------------------------------------------------- ****/
+ /**** if xTVEC isn't completely RW, then we need to change the code at its ****/
+ /**** target. The entire trap trampoline and mtrap handler replaces the ****/
+ /**** area pointed to by mtvec, after saving its original contents first. ****/
+ /**** If it isn't possible to fully write that area, restore and fail. ****/
+ /******************************************************************************/
+
+ //trap_handler_prolog; enter with t1..t6 available
+
+ init_mscratch:
+ la t1, trapreg_sv
+ csrrw t1, CSR_MSCRATCH, t1 // swap old mscratch. mscratch not points to trapreg_sv
+ la t2, mscratch_save
+ SREG t1, 0(t2) // save old mscratch in mscratch_save region
+ csrr t1, CSR_MSCRATCH // read the trapreg_sv address
+ LA( t2, mtrap_sigptr ) // locate the start of the trap signature
+ SREG t2, 0(t1) // save mtrap_sigptr at first location of trapreg_sv
+ init_mtvec:
+ la t1, mtrampoline
+ la t4, mtvec_save
+ csrrw t2, CSR_MTVEC, t1 // swap mtvec and trap_trampoline
+ SREG t2, 0(t4) // save orig mtvec
+ csrr t3, CSR_MTVEC // now read new_mtval back
+ beq t3, t1, rvtest_prolog_done // if mtvec==trap_trampoline, mtvec is writable, continue
+
+ /****************************************************************/
+ /**** fixed mtvec, can't move it so move trampoline instead ****/
+ /**** t1=trampoline, t2=oldmtvec, t3=save area, t4=save end ****/
+ /****************************************************************/
+
+ // t2 = dut's original mtvec setting
+ // t1 = mtrampoline address
+ init_tramp: /**** copy trampoline at mtvec tgt ****/
+
+ csrw CSR_MTVEC, t2 // restore orig mtvec, will now attemp to copy trampoline to it
+ la t3, tramptbl_sv // addr of save area
+ addi t4, t3, NUM_SPECD_INTCAUSES*4 // end of save area
+
+ overwrite_tt: // now build new trampoline table with offsets base from curr mtvec
+ lw t6, 0(t2) // get original mtvec target
+ sw t6, 0(t3) // save it
+ lw t5, 0(t1) // get trampoline src
+ sw t5, 0(t2) // overwrite mtvec target
+ lw t6, 0(t2) // rd it back to make sure it was written
+ bne t6, t5, resto_tramp // table isn't fully writable, restore and give up
+ addi t1, t1, 4 // next src index
+ addi t2, t2, 4 // next tgt index
+ addi t3, t3, 4 // next save index
+ bne t3, t4, overwrite_tt // not done, loop
+ j rvtest_prolog_done
+
+ resto_tramp: // vector table not writeable, restore
+ LREG t1, 16(t4) // load mscratch_SAVE at fixed offset from table end
+ csrw CSR_MSCRATCH, t1 // restore mscratch
+ LREG t4, 8(t4) // load mtvec_SAVE (used as end of loop marker)
+
+
+ resto_loop: // goes backwards, t2= dest vec tbl ptr, t3=src save area ptr, t4=vec tbl begin
+ lw t6, 0(t3) // read saved tgt entry
+ sw t6, 0(t2) // restore original tgt
+ addi t2, t2, -4 // prev tgt index
+ addi t3, t3, -4 // prev save index
+ bne t2, t4, resto_loop // didn't restore to begining yet, loop
+
+ j rvtest_end // failure to replace trampoline
+
+
+ #define mhandler \
+ csrrw sp, CSR_MSCRATCH, sp; \
+ SREG t6, 6*REGWIDTH(sp); \
+ jal t6, common_prolog;
+
+ /**********************************************************************/
+ /**** This is the entry point for all m-modetraps, vectored or not.****/
+ /**** At entry, mscratch will contain a pointer to a scratch area. ****/
+ /**** This is an array of branches at 4B intevals that spreads out ****/
+ /**** to an array of 32B mhandler macros for specd int causes, and ****/
+ /**** to a return for anything above that (which causes a mismatch)****/
+ /**********************************************************************/
+ mtrampoline: // 64 or 32 entry table
+ value = 0
+ .rept NUM_SPECD_INTCAUSES // located at each possible int vectors
+ j mtrap_handler + 12*(value) //offset < +/- 1MB
+ value = value + 1
+ .endr
+ .rept RLENG-NUM_SPECD_INTCAUSES // fill at each impossible entry
+ mret
+ .endr
+
+ mtrap_handler: /* after executing, sp points to temp save area, t4 is PC */
+ .rept NUM_SPECD_INTCAUSES
+ mhandler
+ .endr
+
+ common_prolog:
+ la t5, common_mhandler
+ jr t5
+ /*********************************************************************/
+ /**** common code for all ints & exceptions, will fork to handle ****/
+ /**** each separately. The common handler first stores trap mode+ ****/
+ /**** vector, and mcause signatures. All traps have 4wd sigs, but ****/
+ /**** sw and timer ints only store 3 of the 4. ****/
+ /**** sig offset Exception ExtInt SWInt TimerInt ****/
+ /**** 0: tval IntID -1 -1 ****/
+ /**** 4: mepc mip mip mip ****/
+ /**** 8: <---------------------- mcause -------------> ****/
+ /**** 12: <--------------------- Vect+mode ----------> ****/
+ /*********************************************************************/
+ /* in general, CSRs loaded in t2, addresses into t3 */
+
+ common_mhandler: /* enter with link in t6 */
+ SREG t5, 5*REGWIDTH(sp)
+ SREG t4, 4*REGWIDTH(sp)
+ SREG t3, 3*REGWIDTH(sp)
+ SREG t2, 2*REGWIDTH(sp)
+ SREG t1, 1*REGWIDTH(sp) /* save other temporaries */
+
+ LREG t1, 0(sp) /* load trap sig pointer (runs backwards from DATA_END) */
+
+ LA( t3, mtrampoline)
+ sub t2, t6, t3 /* reloc “link” to 0..63 to show which int vector was taken */
+ addi t2, t2, MMODE_SIG /* insert mode# into 1:0 */
+ SREG t2, 0*REGWIDTH(t1) /* save 1st sig value, (vect, trapmode) */
+ sv_mcause:
+ csrr t2, CSR_MCAUSE
+ SREG t2, 1*REGWIDTH(t1) /* save 2nd sig value, (mcause) */
+
+ bltz t2, common_mint_handler /* this is a interrupt, not a trap */
+
+ /********************************************************************/
+ /**** This is the exceptions specific code, storing relative mepc****/
+ /**** & relative tval signatures. tval is relocated by code or ****/
+ /**** data start, or 0 depending on mcause. mepc signature value ****/
+ /**** is relocated by code start, and restored adjusted depending****/
+ /**** on op alignment so trapped op isn't re-executed. ****/
+ /********************************************************************/
+ common_mexcpt_handler:
+ csrr t2, CSR_MEPC
+ sv_mepc:
+ LA( t3, rvtest_prolog_done) /* offset to compensate for different loader offsets */
+ sub t4, t2, t3 /* convert mepc to rel offset of beginning of test*/
+ SREG t4, 2*REGWIDTH(t1) /* save 3rd sig value, (rel mepc) into trap signature area */
+ adj_mepc: //adj mepc so there is padding after op, and its 8B aligned
+ andi t4, t2, 0x2 /* set to 2 if mepc was misaligned */
+ sub t2, t2, t4 /* adjust mepc to prev 4B alignment */
+ addi t2, t2, 0x8 /* adjust mepc, so it skips past the op, has padding & is 4B aligned */
+ csrw CSR_MEPC, t2 /* restore adjusted value, has 1,2, or 3 bytes of padding */
+
+
+ /* calculate relative mtval if it’s an address (by code_begin or data_begin amt) */
+ /* note that masks that determine this are implementation specific from YAML */
+
+ /* masks are bit reversed, so mcause==0 bit is in MSB (so different for RV32 and RV64) */
+
+ adj_mtval:
+ csrr t2, CSR_MCAUSE /* code begin adjustment amount already in t3 */
+
+ LI(t4, CODE_REL_TVAL_MSK) /* trap#s 12, 3,1,0, -- adjust w/ code_begin */
+ sll t4, t4, t2 /* put bit# in MSB */
+ bltz t4, sv_mtval /* correct adjustment is code_begin in t3 */
+
+ LA( t3, mtrap_sigptr) /* adjustment assuming access is to signature region */
+ LI(t4, DATA_REL_TVAL_MSK) /* trap#s not 14, 11..8, 2 adjust w/ data_begin */
+ sll t4, t4, t2 /* put bit# in MSB */
+ bgez t4, no_adj /* correct adjustment is data_begin in t3 */
+ sigbound_chk:
+ csrr t4, CSR_MTVAL /* do a bounds check on mtval */
+ bge t3, t4, sv_mtval /* if mtval is greater than the rvmodel_data_begin then use that as anchor */
+ LA( t3, rvtest_data_begin) /* else change anchor to rvtest_data_begin */
+ blt t3, t4, sv_mtval /* before the signature, use data_begin adj */
+ mv t4, t3 /* use sig relative adjust */
+ no_adj:
+ LI(t3, 0) /* else zero adjustment amt */
+
+ // For Illegal op handling
+ addi t2, t2, -2 /* check if mcause==2 (illegal op) */
+ bnez t2, sv_mtval /* not illegal op, no special treatment */
+ csrr t2, CSR_MTVAL
+ bnez t2, sv_mtval /* mtval isn’t zero, no special treatment */
+ illop:
+ LI(t5, 0x20000) /* get mprv mask */
+ csrrs t5, CSR_MSTATUS, t5 /* set mprv while saving the old value */
+ csrr t3, CSR_MEPC
+ lhu t2, 0(t3) /* load 1st 16b of opc w/ old priv, endianess*/
+ andi t4, t2, 0x3
+ addi t4, t4, -0x3 /* does opcode[1:0]==0b11? (Meaning >16b op) */
+ bnez t4, sv_mtval /* entire mtval is in tt2, adj amt will be set to zero */
+ lhu t4, 2(t3)
+ sll t4, t4, 16
+ or t3, t2, t4 /* get 2nd hwd, align it & insert it into opcode */
+ csrw CSR_MSTATUS, t5 /* restore mstatus */
+
+/*******FIXME: this will not handle 48 or 64b opcodes in an RV64) ********/
+
+ sv_mtval:
+ csrr t2, CSR_MTVAL
+ sub t2, t2, t3 /* perform mtval adjust by either code or data position or zero*/
+ SREG t2, 3*REGWIDTH(t1) /* save 4th sig value, (rel mtval) into trap signature area */
+
+ resto_rtn: /* restore and return */
+ addi t1, t1,4*REGWIDTH /* adjust trap signature ptr (traps always save 4 words) */
+ SREG t1, 0*REGWIDTH(sp) /* save updated trap sig pointer (pts to trap_sigptr */
+
+ LREG t1, 1*REGWIDTH(sp)
+ LREG t2, 2*REGWIDTH(sp)
+ LREG t3, 3*REGWIDTH(sp)
+ LREG t4, 4*REGWIDTH(sp)
+ LREG t5, 5*REGWIDTH(sp)
+ LREG t6, 6*REGWIDTH(sp) /* restore temporaries */
+
+ csrrw sp, CSR_MSCRATCH, sp /* restore sp from scratch */
+ mret
+
+ common_mint_handler: /* t1 has sig ptr, t2 has mcause */
+
+ LI(t3, 1)
+ sll t3, t3, t2 /* create mask 1<> 11) & 1) << 11))
+
+#define TEST_JALR_OP(tempreg, rd, rs1, imm, swreg, offset,adj) \
+5: ;\
+ LA(rd,5b ) ;\
+ .if adj & 1 == 1 ;\
+ LA(rs1, 3f-imm+adj-1 ) ;\
+ jalr rd, imm+1(rs1) ;\
+ .else ;\
+ LA(rs1, 3f-imm+adj) ;\
+ jalr rd, imm(rs1) ;\
+ .endif ;\
+ nop ;\
+ nop ;\
+ xori rd,rd, 0x2 ;\
+ j 4f ;\
+ ;\
+3: .if adj & 2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ xori rd,rd, 0x3 ;\
+ j 4f ;\
+ .if adj&2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ ;\
+4: LA(tempreg, 5b ) ;\
+ andi tempreg,tempreg,~(3) ;\
+ sub rd,rd,tempreg ;\
+ RVTEST_SIGUPD(swreg,rd,offset)
+//SREG rd, offset(swreg);
+
+#define TEST_JAL_OP(tempreg, rd, imm, label, swreg, offset, adj)\
+5: ;\
+ LA(tempreg, 2f ) ;\
+ jalr x0,0(tempreg) ;\
+6: LA(tempreg, 4f ) ;\
+ jalr x0,0(tempreg) ;\
+1: .if adj & 2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ xori rd,rd, 0x1 ;\
+ beq x0,x0,6b ;\
+ .if adj & 2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ .if (imm/2) - 2 >= 0 ;\
+ .set num,(imm/2)-2 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 3f ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ nop ;\
+ .endr ;\
+ ;\
+2: jal rd, label+(adj) ;\
+ .if adj & 2 == 2 ;\
+ nop ;\
+ nop ;\
+ .endif ;\
+ xori rd,rd, 0x2 ;\
+ j 4f ;\
+ .if (imm/2) - 3 >= 0 ;\
+ .set num,(imm/2)-3 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 1b ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ nop ;\
+ .endr ;\
+3: .if adj & 2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ xori rd,rd, 0x3 ;\
+ LA(tempreg, 4f ) ;\
+ jalr x0,0(tempreg) ;\
+ .if adj&2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+4: LA(tempreg, 5b ) ;\
+ andi tempreg,tempreg,~(3) ;\
+ sub rd,rd,tempreg ;\
+ RVTEST_SIGUPD(swreg,rd,offset)
+//SREG rd, offset(swreg);
+
+#define TEST_BRANCH_OP(inst, tempreg, reg1, reg2, val1, val2, imm, label, swreg, offset,adj) \
+ LI(reg1, MASK_XLEN(val1)) ;\
+ LI(reg2, MASK_XLEN(val2)) ;\
+ addi tempreg,x0,0 ;\
+ j 2f ;\
+ ;\
+1: .if adj & 2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ addi tempreg,tempreg, 0x1 ;\
+ j 4f ;\
+ .if adj & 2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ .if (imm/2) - 2 >= 0 ;\
+ .set num,(imm/2)-2 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 3f ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ nop ;\
+ .endr ;\
+ ;\
+2: inst reg1, reg2, label+adj ;\
+ addi tempreg, tempreg,0x2 ;\
+ j 4f ;\
+ .if (imm/4) - 3 >= 0 ;\
+ .set num,(imm/4)-3 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 1b ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ nop ;\
+ .endr ;\
+ ;\
+3: .if adj & 2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ addi tempreg, tempreg,0x3 ;\
+ j 4f ;\
+ .if adj&2 == 2 ;\
+ .fill 2,1,0x00 ;\
+ .endif ;\
+ ;\
+4: RVTEST_SIGUPD(swreg,tempreg,offset)
+//SREG tempreg, offset(swreg);
+
+#define TEST_STORE(swreg,testreg,index,rs1,rs2,rs2_val,imm_val,offset,inst,adj) ;\
+LI(rs2,rs2_val) ;\
+addi rs1,swreg,offset+adj ;\
+LI(testreg,imm_val) ;\
+sub rs1,rs1,testreg ;\
+inst rs2, imm_val(rs1) ;\
+nop ;\
+nop
+
+#define TEST_LOAD(swreg,testreg,index,rs1,destreg,imm_val,offset,inst,adj) ;\
+LA(rs1,rvtest_data+(index*4)+adj-imm_val) ;\
+inst destreg, imm_val(rs1) ;\
+nop ;\
+nop ;\
+RVTEST_SIGUPD(swreg,destreg,offset)
+//SREG destreg, offset(swreg);
+
+#define TEST_STORE_F(swreg,testreg,index,rs1,rs2,rs2_val,imm_val,offset,inst,adj,flagreg) ;\
+LI(flagreg,rs2_val) ;\
+fmv.w.x rs2, flagreg ;\
+addi rs1,swreg,offset+adj ;\
+LI(testreg,imm_val) ;\
+sub rs1,rs1,testreg ;\
+inst rs2, imm_val(rs1) ;\
+nop ;\
+nop ;\
+csrrs flagreg, fflags, x0 ;\
+RVTEST_SIGUPD(swreg,flagreg,offset)
+
+#define TEST_LOAD_F(swreg,testreg,index,rs1,destreg,imm_val,offset,inst,adj,flagreg) ;\
+LA(rs1,rvtest_data+(index*4)+adj-imm_val) ;\
+inst destreg, imm_val(rs1) ;\
+nop ;\
+nop ;\
+csrrs flagreg, fflags, x0 ;\
+RVTEST_SIGUPD_F(swreg,destreg,flagreg,offset)
+
+#define TEST_CSR_FIELD(ADDRESS,TEMP_REG,MASK_REG,NEG_MASK_REG,VAL,DEST_REG,OFFSET,BASE_REG) \
+ LI(TEMP_REG,VAL);\
+ and TEMP_REG,TEMP_REG,MASK_REG;\
+ csrr DEST_REG,ADDRESS;\
+ and DEST_REG,DEST_REG,NEG_MASK_REG;\
+ or TEMP_REG,TEMP_REG,DEST_REG;\
+ csrw ADDRESS,TEMP_REG;\
+ csrr DEST_REG,ADDRESS;\
+ RVTEST_SIGUPD(BASE_REG,DEST_REG,OFFSET)
+
+
+#define TEST_CASE(testreg, destreg, correctval, swreg, offset, code... ) \
+ code; \
+ RVTEST_SIGUPD(swreg,destreg,offset); \
+ RVMODEL_IO_ASSERT_GPR_EQ(testreg, destreg, correctval)
+
+#define TEST_CASE_F(testreg, destreg, correctval, swreg, flagreg, offset, code... ) \
+ code; \
+ RVTEST_SIGUPD_F(swreg,destreg,flagreg,offset); \
+ RVMODEL_IO_ASSERT_GPR_EQ(testreg, destreg, correctval)
+
+#define TEST_CASE_FID(testreg, destreg, correctval, swreg, flagreg, offset, code... ) \
+ code; \
+ RVTEST_SIGUPD_FID(swreg,destreg,flagreg,offset); \
+ RVMODEL_IO_ASSERT_GPR_EQ(testreg, destreg, correctval)
+
+#define TEST_AUIPC(inst, destreg, correctval, imm, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LA testreg, 1f; \
+ 1: \
+ inst destreg, imm; \
+ sub destreg, destreg, testreg; \
+ )
+
+//Tests for a instructions with register-immediate operand
+#define TEST_IMM_OP( inst, destreg, reg, correctval, val, imm, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LI(reg, MASK_XLEN(val)); \
+ inst destreg, reg, SEXT_IMM(imm); \
+ )
+
+//Tests for floating-point instructions with a single register operand
+#define TEST_FPSR_OP( inst, destreg, freg, rm, correctval, valaddr_reg, val_offset, flagreg, swreg, offset, testreg) \
+ TEST_CASE_F(testreg, destreg, correctval, swreg, flagreg, offset, \
+ FLREG freg, val_offset(valaddr_reg); \
+ csrrwi x0, frm, rm; \
+ inst destreg, freg; \
+ csrrs flagreg, fflags, x0; \
+ )
+
+//Tests for floating-point instructions with a single register operand and integer destination register
+#define TEST_FPID_OP( inst, destreg, freg, rm, correctval, valaddr_reg, val_offset, flagreg, swreg, offset, testreg) \
+ TEST_CASE_FID(testreg, destreg, correctval, swreg, flagreg, offset, \
+ FLREG freg, val_offset(valaddr_reg); \
+ csrrwi x0, frm, rm; \
+ inst destreg, freg; \
+ csrrs flagreg, fflags, x0; \
+ )
+
+//Tests for floating-point instructions with a single register operand and integer operand register
+#define TEST_FPIO_OP( inst, destreg, freg, rm, correctval, valaddr_reg, val_offset, flagreg, swreg, offset, testreg) \
+ TEST_CASE_F(testreg, destreg, correctval, swreg, flagreg, offset, \
+ LREG freg, val_offset(valaddr_reg); \
+ csrrwi x0, frm, rm; \
+ inst destreg, freg; \
+ csrrs flagreg, fflags, x0; \
+ )
+//Tests for a instructions with register-register operand
+#define TEST_RRI_OP(inst, destreg, reg1, reg2, imm, correctval, val1, val2, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LI(reg1, MASK_XLEN(val1)); \
+ LI(reg2, MASK_XLEN(val2)); \
+ inst destreg, reg1, reg2, imm; \
+ )
+
+//Tests for a instructions with register-register operand
+#define TEST_RI_OP(inst, destreg, reg1, reg2, imm, correctval, val1, val2, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LI(reg1, MASK_XLEN(val1)); \
+ LI(reg2, MASK_XLEN(val2)); \
+ inst destreg, reg1, reg2, imm; \
+ )
+
+//Tests for a instructions with register-register operand
+#define TEST_RR_OP(inst, destreg, reg1, reg2, correctval, val1, val2, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LI(reg1, MASK_XLEN(val1)); \
+ LI(reg2, MASK_XLEN(val2)); \
+ inst destreg, reg1, reg2; \
+ )
+//Tests for floating-point instructions with register-register operand
+#define TEST_FPRR_OP(inst, destreg, freg1, freg2, rm, correctval, valaddr_reg, val_offset, flagreg, swreg, offset, testreg) \
+ TEST_CASE_F(testreg, destreg, correctval, swreg, flagreg, offset, \
+ FLREG freg1, val_offset(valaddr_reg); \
+ FLREG freg2, val_offset+FREGWIDTH(valaddr_reg); \
+ csrrwi x0, frm, rm; \
+ inst destreg, freg1, freg2; \
+ csrrs flagreg, fflags, x0; \
+ )
+
+//Tests for floating-point CMP instructions with register-register operand
+#define TEST_FCMP_OP(inst, destreg, freg1, freg2, correctval, valaddr_reg, val_offset, flagreg, swreg, offset, testreg) \
+ TEST_CASE_FID(testreg, destreg, correctval, swreg, flagreg, offset, \
+ FLREG freg1, val_offset(valaddr_reg); \
+ FLREG freg2, val_offset+FREGWIDTH(valaddr_reg); \
+ inst destreg, freg1, freg2; \
+ csrrs flagreg, fflags, x0; \
+ )
+
+//Tests for floating-point R4 type instructions
+#define TEST_FPR4_OP(inst, destreg, freg1, freg2, freg3, rm, correctval, valaddr_reg, val_offset, flagreg, swreg, offset, testreg) \
+ TEST_CASE_F(testreg, destreg, correctval, swreg, flagreg, offset, \
+ FLREG freg1, val_offset(valaddr_reg); \
+ FLREG freg2, val_offset+FREGWIDTH(valaddr_reg); \
+ FLREG freg3, val_offset+2*FREGWIDTH(valaddr_reg); \
+ csrrwi x0, frm, rm; \
+ inst destreg, freg1, freg2, freg3; \
+ csrrs flagreg, fflags, x0; \
+ )
+
+#define TEST_CNOP_OP( inst, testreg, imm_val, swreg, offset) \
+ TEST_CASE(testreg, x0, 0, swreg, offset, \
+ inst imm_val; \
+ )
+
+#define TEST_CMV_OP( inst, destreg, reg, correctval, val2, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LI(reg, MASK_XLEN(val2)); \
+ inst destreg, reg; \
+ )
+
+#define TEST_CR_OP( inst, destreg, reg, correctval, val1, val2, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LI(reg, MASK_XLEN(val2)); \
+ LI(destreg, MASK_XLEN(val1)); \
+ inst destreg, reg; \
+ )
+
+#define TEST_CI_OP( inst, destreg, correctval, val, imm, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LI(destreg, MASK_XLEN(val)); \
+ inst destreg, imm; \
+ )
+
+#define TEST_CADDI4SPN_OP( inst, destreg, correctval, imm, swreg, offset, testreg) \
+ TEST_CASE(testreg, destreg, correctval, swreg, offset, \
+ LI(x2, 0); \
+ inst destreg, x2,imm; \
+ )
+
+#define TEST_CBRANCH_OP(inst, tempreg, reg2, val2, imm, label, swreg, offset) \
+ LI(reg2, MASK_XLEN(val2)) ;\
+ j 2f ;\
+ addi tempreg, x0,0 ;\
+ .option push ;\
+ .option norvc ;\
+1: addi tempreg, tempreg,0x1 ;\
+ j 4f ;\
+ .option pop ;\
+ .if (imm/2) - 4 >= 0 ;\
+ .set num,(imm/2)-4 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 3f ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ c.nop ;\
+ .endr ;\
+2: inst reg2, label ;\
+ .option push ;\
+ .option norvc ;\
+ addi tempreg, tempreg, 0x2 ;\
+ j 4f ;\
+ .option pop ;\
+ .if (imm/2) - 5 >= 0 ;\
+ .set num,(imm/2)-5 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 1b ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ c.nop ;\
+ .endr ;\
+ ;\
+3: addi tempreg, tempreg ,0x3 ;\
+ ;\
+4: RVTEST_SIGUPD(swreg,tempreg,offset)
+//SREG tempreg, offset(swreg);
+
+
+#define TEST_CJ_OP(inst, tempreg, imm, label, swreg, offset) \
+ .option push ;\
+ .option norvc ;\
+ j 2f ;\
+ addi tempreg,x0,0 ;\
+1: addi tempreg, tempreg,0x1 ;\
+ j 4f ;\
+ .option pop ;\
+ .if (imm/2) - 4 >= 0 ;\
+ .set num,(imm/2)-4 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 3f ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ c.nop ;\
+ .endr ;\
+2: inst label ;\
+ .option push ;\
+ .option norvc ;\
+ addi tempreg, tempreg, 0x2 ;\
+ j 4f ;\
+ .option pop ;\
+ .if (imm/2) - 5 >= 0 ;\
+ .set num,(imm/2)-5 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 1b ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ c.nop ;\
+ .endr ;\
+ ;\
+3: addi tempreg, tempreg, 0x3 ;\
+ ;\
+4: RVTEST_SIGUPD(swreg,tempreg,offset)
+//SREG tempreg, offset(swreg);
+
+#define TEST_CJAL_OP(inst, tempreg, imm, label, swreg, offset) \
+5: ;\
+ j 2f ;\
+ ;\
+ .option push ;\
+ .option norvc ;\
+1: xori x1,x1, 0x1 ;\
+ j 4f ;\
+ .option pop ;\
+ .if (imm/2) - 4 >= 0 ;\
+ .set num,(imm/2)-4 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 3f ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ c.nop ;\
+ .endr ;\
+2: inst label ;\
+ .option push ;\
+ .option norvc ;\
+ xori x1,x1, 0x2 ;\
+ j 4f ;\
+ .option pop ;\
+ .if (imm/2) - 5 >= 0 ;\
+ .set num,(imm/2)-5 ;\
+ .else ;\
+ .set num,0 ;\
+ .endif ;\
+ .if label == 1b ;\
+ .set num,0 ;\
+ .endif ;\
+ .rept num ;\
+ c.nop ;\
+ .endr ;\
+ ;\
+3: xori x1,x1, 0x3 ;\
+ ;\
+4: LA(tempreg, 5b) ;\
+ andi tempreg,tempreg,~(3) ;\
+ sub x1,x1,tempreg ;\
+ RVTEST_SIGUPD(swreg,x1,offset)
+//SREG x1, offset(swreg);
+
+#define TEST_CJR_OP(tempreg, rs1, swreg, offset) \
+5: ;\
+ LA(rs1, 3f) ;\
+ ;\
+2: c.jr rs1 ;\
+ xori rs1,rs1, 0x2 ;\
+ j 4f ;\
+ ;\
+3: xori rs1,rs1, 0x3 ;\
+ ;\
+4: LA(tempreg, 5b) ;\
+ andi tempreg,tempreg,~(3) ;\
+ sub rs1,rs1,tempreg ;\
+ RVTEST_SIGUPD(swreg,rs1,offset)
+//SREG rs1, offset(swreg);
+
+#define TEST_CJALR_OP(tempreg, rs1, swreg, offset) \
+5: ;\
+ LA(rs1, 3f ) ;\
+ ;\
+2: c.jalr rs1 ;\
+ xori x1,x1, 0x2 ;\
+ j 4f ;\
+ ;\
+3: xori x1,x1, 0x3 ;\
+ ;\
+4: LA(tempreg, 5b ) ;\
+ andi tempreg,tempreg,~(3) ;\
+ sub x1,x1,tempreg ;\
+ RVTEST_SIGUPD(swreg,x1,offset)
+//SREG x1, offset(swreg);
+
+
+//--------------------------------- Migration aliases ------------------------------------------
+#ifdef RV_COMPLIANCE_RV32M
+ #warning "RV_COMPLIANCE_RV32M macro will be deprecated."
+ #define RVMODEL_BOOT \
+ RVTEST_IO_INIT; \
+ RV_COMPLIANCE_RV32M ; \
+ RV_COMPLIANCE_CODE_BEGIN
+#endif
+
+#define SWSIG(a, b)
+
+#ifdef RV_COMPLIANCE_DATA_BEGIN
+ #warning "RV_COMPLIANCE_DATA_BEGIN macro deprecated in v0.2. Please use RVMODEL_DATA_BEGIN instead"
+ #define RVMODEL_DATA_BEGIN \
+ RV_COMPLIANCE_DATA_BEGIN
+#endif
+
+#ifdef RV_COMPLIANCE_DATA_END
+ #warning "RV_COMPLIANCE_DATA_END macro deprecated in v0.2. Please use RVMODEL_DATA_END instead"
+ #define RVMODEL_DATA_END \
+ RV_COMPLIANCE_DATA_END
+#endif
+
+#ifdef RV_COMPLIANCE_HALT
+ #warning "RV_COMPLIANCE_HALT macro deprecated in v0.2. Please use RVMODEL_HALT instead"
+ #define RVMODEL_HALT \
+ RV_COMPLIANCE_HALT
+#endif
+
+#ifdef RVTEST_IO_ASSERT_GPR_EQ
+ #warning "RVTEST_IO_ASSERT_GPR_EQ macro deprecated in v0.2. Please use RVMODEL_IO_ASSERT_GPR_EQ instead"
+ #define RVMODEL_IO_ASSERT_GPR_EQ(_SP, _R, _I) \
+ RVTEST_IO_ASSERT_GPR_EQ(_SP,_R, _I)
+#endif
+
+#ifdef RVTEST_IO_WRITE_STR
+ #warning "RVTEST_IO_WRITE_STR macro deprecated in v0.2. Please use RVMODEL_IO_WRITE_STR instead"
+ #define RVMODEL_IO_WRITE_STR(_SP, _STR) \
+ RVTEST_IO_WRITE_STR(_SP, _STR)
+#endif
+
+#ifdef RVTEST_IO_INIT
+ #warning "RVTEST_IO_INIT is deprecated in v0.2. Please use RVMODEL_BOOT for initialization"
+#endif
+
+#ifdef RVTEST_IO_CHECK
+ #warning "RVTEST_IO_CHECK is deprecated in v0.2.
+#endif
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/env/encoding.h b/tests/wally-riscv-arch-test/riscv-test-suite/env/encoding.h
new file mode 100644
index 000000000..88b2ac8fb
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/env/encoding.h
@@ -0,0 +1,1495 @@
+/*
+* Copyright (c) 2012-2015, The Regents of the University of California (Regents).
+* All Rights Reserved.
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+* 3. Neither the name of the Regents nor the
+* names of its contributors may be used to endorse or promote products
+* derived from this software without specific prior written permission.
+* IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+* SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
+* OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
+* HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
+* MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+*/
+#ifndef RISCV_CSR_ENCODING_H
+#define RISCV_CSR_ENCODING_H
+
+#define MSTATUS_UIE 0x00000001
+#define MSTATUS_SIE 0x00000002
+#define MSTATUS_HIE 0x00000004
+#define MSTATUS_MIE 0x00000008
+#define MSTATUS_UPIE 0x00000010
+#define MSTATUS_SPIE 0x00000020
+#define MSTATUS_HPIE 0x00000040
+#define MSTATUS_MPIE 0x00000080
+#define MSTATUS_SPP 0x00000100
+#define MSTATUS_HPP 0x00000600
+#define MSTATUS_MPP 0x00001800
+#define MSTATUS_FS 0x00006000
+#define MSTATUS_XS 0x00018000
+#define MSTATUS_MPRV 0x00020000
+#define MSTATUS_SUM 0x00040000
+#define MSTATUS_MXR 0x00080000
+#define MSTATUS_TVM 0x00100000
+#define MSTATUS_TW 0x00200000
+#define MSTATUS_TSR 0x00400000
+#define MSTATUS32_SD 0x80000000
+#define MSTATUS_UXL 0x0000000300000000
+#define MSTATUS_SXL 0x0000000C00000000
+#define MSTATUS64_SD 0x8000000000000000
+
+#define SSTATUS_UIE 0x00000001
+#define SSTATUS_SIE 0x00000002
+#define SSTATUS_UPIE 0x00000010
+#define SSTATUS_SPIE 0x00000020
+#define SSTATUS_SPP 0x00000100
+#define SSTATUS_FS 0x00006000
+#define SSTATUS_XS 0x00018000
+#define SSTATUS_SUM 0x00040000
+#define SSTATUS_MXR 0x00080000
+#define SSTATUS32_SD 0x80000000
+#define SSTATUS_UXL 0x0000000300000000
+#define SSTATUS64_SD 0x8000000000000000
+
+#define DCSR_XDEBUGVER (3U<<30)
+#define DCSR_NDRESET (1<<29)
+#define DCSR_FULLRESET (1<<28)
+#define DCSR_EBREAKM (1<<15)
+#define DCSR_EBREAKH (1<<14)
+#define DCSR_EBREAKS (1<<13)
+#define DCSR_EBREAKU (1<<12)
+#define DCSR_STOPCYCLE (1<<10)
+#define DCSR_STOPTIME (1<<9)
+#define DCSR_CAUSE (7<<6)
+#define DCSR_DEBUGINT (1<<5)
+#define DCSR_HALT (1<<3)
+#define DCSR_STEP (1<<2)
+#define DCSR_PRV (3<<0)
+
+#define DCSR_CAUSE_NONE 0
+#define DCSR_CAUSE_SWBP 1
+#define DCSR_CAUSE_HWBP 2
+#define DCSR_CAUSE_DEBUGINT 3
+#define DCSR_CAUSE_STEP 4
+#define DCSR_CAUSE_HALT 5
+
+#define MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4))
+#define MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5))
+#define MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11))
+
+#define MCONTROL_SELECT (1<<19)
+#define MCONTROL_TIMING (1<<18)
+#define MCONTROL_ACTION (0x3f<<12)
+#define MCONTROL_CHAIN (1<<11)
+#define MCONTROL_MATCH (0xf<<7)
+#define MCONTROL_M (1<<6)
+#define MCONTROL_H (1<<5)
+#define MCONTROL_S (1<<4)
+#define MCONTROL_U (1<<3)
+#define MCONTROL_EXECUTE (1<<2)
+#define MCONTROL_STORE (1<<1)
+#define MCONTROL_LOAD (1<<0)
+
+#define MCONTROL_TYPE_NONE 0
+#define MCONTROL_TYPE_MATCH 2
+
+#define MCONTROL_ACTION_DEBUG_EXCEPTION 0
+#define MCONTROL_ACTION_DEBUG_MODE 1
+#define MCONTROL_ACTION_TRACE_START 2
+#define MCONTROL_ACTION_TRACE_STOP 3
+#define MCONTROL_ACTION_TRACE_EMIT 4
+
+#define MCONTROL_MATCH_EQUAL 0
+#define MCONTROL_MATCH_NAPOT 1
+#define MCONTROL_MATCH_GE 2
+#define MCONTROL_MATCH_LT 3
+#define MCONTROL_MATCH_MASK_LOW 4
+#define MCONTROL_MATCH_MASK_HIGH 5
+
+#define MIP_SSIP (1 << IRQ_S_SOFT)
+#define MIP_HSIP (1 << IRQ_H_SOFT)
+#define MIP_MSIP (1 << IRQ_M_SOFT)
+#define MIP_STIP (1 << IRQ_S_TIMER)
+#define MIP_HTIP (1 << IRQ_H_TIMER)
+#define MIP_MTIP (1 << IRQ_M_TIMER)
+#define MIP_SEIP (1 << IRQ_S_EXT)
+#define MIP_HEIP (1 << IRQ_H_EXT)
+#define MIP_MEIP (1 << IRQ_M_EXT)
+
+#define SIP_SSIP MIP_SSIP
+#define SIP_STIP MIP_STIP
+
+#define PRV_U 0
+#define PRV_S 1
+#define PRV_H 2
+#define PRV_M 3
+
+#define SATP32_MODE 0x80000000
+#define SATP32_ASID 0x7FC00000
+#define SATP32_PPN 0x003FFFFF
+#define SATP64_MODE 0xF000000000000000
+#define SATP64_ASID 0x0FFFF00000000000
+#define SATP64_PPN 0x00000FFFFFFFFFFF
+
+#define SATP_MODE_OFF 0
+#define SATP_MODE_SV32 1
+#define SATP_MODE_SV39 8
+#define SATP_MODE_SV48 9
+#define SATP_MODE_SV57 10
+#define SATP_MODE_SV64 11
+
+#define PMP_R 0x01
+#define PMP_W 0x02
+#define PMP_X 0x04
+#define PMP_A 0x18
+#define PMP_L 0x80
+#define PMP_SHIFT 2
+
+#define PMP_TOR 0x08
+#define PMP_NA4 0x10
+#define PMP_NAPOT 0x18
+
+#define IRQ_S_SOFT 1
+#define IRQ_H_SOFT 2
+#define IRQ_M_SOFT 3
+#define IRQ_S_TIMER 5
+#define IRQ_H_TIMER 6
+#define IRQ_M_TIMER 7
+#define IRQ_S_EXT 9
+#define IRQ_H_EXT 10
+#define IRQ_M_EXT 11
+#define IRQ_COP 12
+#define IRQ_HOST 13
+
+#define DEFAULT_RSTVEC 0x00001000
+#define CLINT_BASE 0x02000000
+#define CLINT_SIZE 0x000c0000
+#define EXT_IO_BASE 0x40000000
+#define DRAM_BASE 0x80000000
+
+// page table entry (PTE) fields
+#define PTE_V 0x001 // Valid
+#define PTE_R 0x002 // Read
+#define PTE_W 0x004 // Write
+#define PTE_X 0x008 // Execute
+#define PTE_U 0x010 // User
+#define PTE_G 0x020 // Global
+#define PTE_A 0x040 // Accessed
+#define PTE_D 0x080 // Dirty
+#define PTE_SOFT 0x300 // Reserved for Software
+
+#define PTE_PPN_SHIFT 10
+
+#define PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V)
+
+#ifdef __riscv
+
+#if __riscv_xlen == 64
+# define MSTATUS_SD MSTATUS64_SD
+# define SSTATUS_SD SSTATUS64_SD
+# define RISCV_PGLEVEL_BITS 9
+# define SATP_MODE SATP64_MODE
+#else
+# define MSTATUS_SD MSTATUS32_SD
+# define SSTATUS_SD SSTATUS32_SD
+# define RISCV_PGLEVEL_BITS 10
+# define SATP_MODE SATP32_MODE
+#endif
+#define RISCV_PGSHIFT 12
+#define RISCV_PGSIZE (1 << RISCV_PGSHIFT)
+
+#ifndef __ASSEMBLER__
+
+#ifdef __GNUC__
+
+#define read_csr(reg) ({ unsigned long __tmp; \
+ asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \
+ __tmp; })
+
+#define write_csr(reg, val) ({ \
+ asm volatile ("csrw " #reg ", %0" :: "rK"(val)); })
+
+#define swap_csr(reg, val) ({ unsigned long __tmp; \
+ asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "rK"(val)); \
+ __tmp; })
+
+#define set_csr(reg, bit) ({ unsigned long __tmp; \
+ asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \
+ __tmp; })
+
+#define clear_csr(reg, bit) ({ unsigned long __tmp; \
+ asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \
+ __tmp; })
+
+#define rdtime() read_csr(time)
+#define rdcycle() read_csr(cycle)
+#define rdinstret() read_csr(instret)
+
+#endif
+
+#endif
+
+#endif
+
+#endif
+/* Automatically generated by parse-opcodes. */
+#ifndef RISCV_ENCODING_H
+#define RISCV_ENCODING_H
+#define MATCH_BEQ 0x63
+#define MASK_BEQ 0x707f
+#define MATCH_BNE 0x1063
+#define MASK_BNE 0x707f
+#define MATCH_BLT 0x4063
+#define MASK_BLT 0x707f
+#define MATCH_BGE 0x5063
+#define MASK_BGE 0x707f
+#define MATCH_BLTU 0x6063
+#define MASK_BLTU 0x707f
+#define MATCH_BGEU 0x7063
+#define MASK_BGEU 0x707f
+#define MATCH_JALR 0x67
+#define MASK_JALR 0x707f
+#define MATCH_JAL 0x6f
+#define MASK_JAL 0x7f
+#define MATCH_LUI 0x37
+#define MASK_LUI 0x7f
+#define MATCH_AUIPC 0x17
+#define MASK_AUIPC 0x7f
+#define MATCH_ADDI 0x13
+#define MASK_ADDI 0x707f
+#define MATCH_SLLI 0x1013
+#define MASK_SLLI 0xfc00707f
+#define MATCH_SLTI 0x2013
+#define MASK_SLTI 0x707f
+#define MATCH_SLTIU 0x3013
+#define MASK_SLTIU 0x707f
+#define MATCH_XORI 0x4013
+#define MASK_XORI 0x707f
+#define MATCH_SRLI 0x5013
+#define MASK_SRLI 0xfc00707f
+#define MATCH_SRAI 0x40005013
+#define MASK_SRAI 0xfc00707f
+#define MATCH_ORI 0x6013
+#define MASK_ORI 0x707f
+#define MATCH_ANDI 0x7013
+#define MASK_ANDI 0x707f
+#define MATCH_ADD 0x33
+#define MASK_ADD 0xfe00707f
+#define MATCH_SUB 0x40000033
+#define MASK_SUB 0xfe00707f
+#define MATCH_SLL 0x1033
+#define MASK_SLL 0xfe00707f
+#define MATCH_SLT 0x2033
+#define MASK_SLT 0xfe00707f
+#define MATCH_SLTU 0x3033
+#define MASK_SLTU 0xfe00707f
+#define MATCH_XOR 0x4033
+#define MASK_XOR 0xfe00707f
+#define MATCH_SRL 0x5033
+#define MASK_SRL 0xfe00707f
+#define MATCH_SRA 0x40005033
+#define MASK_SRA 0xfe00707f
+#define MATCH_OR 0x6033
+#define MASK_OR 0xfe00707f
+#define MATCH_AND 0x7033
+#define MASK_AND 0xfe00707f
+#define MATCH_ADDIW 0x1b
+#define MASK_ADDIW 0x707f
+#define MATCH_SLLIW 0x101b
+#define MASK_SLLIW 0xfe00707f
+#define MATCH_SRLIW 0x501b
+#define MASK_SRLIW 0xfe00707f
+#define MATCH_SRAIW 0x4000501b
+#define MASK_SRAIW 0xfe00707f
+#define MATCH_ADDW 0x3b
+#define MASK_ADDW 0xfe00707f
+#define MATCH_SUBW 0x4000003b
+#define MASK_SUBW 0xfe00707f
+#define MATCH_SLLW 0x103b
+#define MASK_SLLW 0xfe00707f
+#define MATCH_SRLW 0x503b
+#define MASK_SRLW 0xfe00707f
+#define MATCH_SRAW 0x4000503b
+#define MASK_SRAW 0xfe00707f
+#define MATCH_LB 0x3
+#define MASK_LB 0x707f
+#define MATCH_LH 0x1003
+#define MASK_LH 0x707f
+#define MATCH_LW 0x2003
+#define MASK_LW 0x707f
+#define MATCH_LD 0x3003
+#define MASK_LD 0x707f
+#define MATCH_LBU 0x4003
+#define MASK_LBU 0x707f
+#define MATCH_LHU 0x5003
+#define MASK_LHU 0x707f
+#define MATCH_LWU 0x6003
+#define MASK_LWU 0x707f
+#define MATCH_SB 0x23
+#define MASK_SB 0x707f
+#define MATCH_SH 0x1023
+#define MASK_SH 0x707f
+#define MATCH_SW 0x2023
+#define MASK_SW 0x707f
+#define MATCH_SD 0x3023
+#define MASK_SD 0x707f
+#define MATCH_FENCE 0xf
+#define MASK_FENCE 0x707f
+#define MATCH_FENCE_I 0x100f
+#define MASK_FENCE_I 0x707f
+#define MATCH_MUL 0x2000033
+#define MASK_MUL 0xfe00707f
+#define MATCH_MULH 0x2001033
+#define MASK_MULH 0xfe00707f
+#define MATCH_MULHSU 0x2002033
+#define MASK_MULHSU 0xfe00707f
+#define MATCH_MULHU 0x2003033
+#define MASK_MULHU 0xfe00707f
+#define MATCH_DIV 0x2004033
+#define MASK_DIV 0xfe00707f
+#define MATCH_DIVU 0x2005033
+#define MASK_DIVU 0xfe00707f
+#define MATCH_REM 0x2006033
+#define MASK_REM 0xfe00707f
+#define MATCH_REMU 0x2007033
+#define MASK_REMU 0xfe00707f
+#define MATCH_MULW 0x200003b
+#define MASK_MULW 0xfe00707f
+#define MATCH_DIVW 0x200403b
+#define MASK_DIVW 0xfe00707f
+#define MATCH_DIVUW 0x200503b
+#define MASK_DIVUW 0xfe00707f
+#define MATCH_REMW 0x200603b
+#define MASK_REMW 0xfe00707f
+#define MATCH_REMUW 0x200703b
+#define MASK_REMUW 0xfe00707f
+#define MATCH_AMOADD_W 0x202f
+#define MASK_AMOADD_W 0xf800707f
+#define MATCH_AMOXOR_W 0x2000202f
+#define MASK_AMOXOR_W 0xf800707f
+#define MATCH_AMOOR_W 0x4000202f
+#define MASK_AMOOR_W 0xf800707f
+#define MATCH_AMOAND_W 0x6000202f
+#define MASK_AMOAND_W 0xf800707f
+#define MATCH_AMOMIN_W 0x8000202f
+#define MASK_AMOMIN_W 0xf800707f
+#define MATCH_AMOMAX_W 0xa000202f
+#define MASK_AMOMAX_W 0xf800707f
+#define MATCH_AMOMINU_W 0xc000202f
+#define MASK_AMOMINU_W 0xf800707f
+#define MATCH_AMOMAXU_W 0xe000202f
+#define MASK_AMOMAXU_W 0xf800707f
+#define MATCH_AMOSWAP_W 0x800202f
+#define MASK_AMOSWAP_W 0xf800707f
+#define MATCH_LR_W 0x1000202f
+#define MASK_LR_W 0xf9f0707f
+#define MATCH_SC_W 0x1800202f
+#define MASK_SC_W 0xf800707f
+#define MATCH_AMOADD_D 0x302f
+#define MASK_AMOADD_D 0xf800707f
+#define MATCH_AMOXOR_D 0x2000302f
+#define MASK_AMOXOR_D 0xf800707f
+#define MATCH_AMOOR_D 0x4000302f
+#define MASK_AMOOR_D 0xf800707f
+#define MATCH_AMOAND_D 0x6000302f
+#define MASK_AMOAND_D 0xf800707f
+#define MATCH_AMOMIN_D 0x8000302f
+#define MASK_AMOMIN_D 0xf800707f
+#define MATCH_AMOMAX_D 0xa000302f
+#define MASK_AMOMAX_D 0xf800707f
+#define MATCH_AMOMINU_D 0xc000302f
+#define MASK_AMOMINU_D 0xf800707f
+#define MATCH_AMOMAXU_D 0xe000302f
+#define MASK_AMOMAXU_D 0xf800707f
+#define MATCH_AMOSWAP_D 0x800302f
+#define MASK_AMOSWAP_D 0xf800707f
+#define MATCH_LR_D 0x1000302f
+#define MASK_LR_D 0xf9f0707f
+#define MATCH_SC_D 0x1800302f
+#define MASK_SC_D 0xf800707f
+#define MATCH_ECALL 0x73
+#define MASK_ECALL 0xffffffff
+#define MATCH_EBREAK 0x100073
+#define MASK_EBREAK 0xffffffff
+#define MATCH_URET 0x200073
+#define MASK_URET 0xffffffff
+#define MATCH_SRET 0x10200073
+#define MASK_SRET 0xffffffff
+#define MATCH_MRET 0x30200073
+#define MASK_MRET 0xffffffff
+#define MATCH_DRET 0x7b200073
+#define MASK_DRET 0xffffffff
+#define MATCH_SFENCE_VMA 0x12000073
+#define MASK_SFENCE_VMA 0xfe007fff
+#define MATCH_WFI 0x10500073
+#define MASK_WFI 0xffffffff
+#define MATCH_CSRRW 0x1073
+#define MASK_CSRRW 0x707f
+#define MATCH_CSRRS 0x2073
+#define MASK_CSRRS 0x707f
+#define MATCH_CSRRC 0x3073
+#define MASK_CSRRC 0x707f
+#define MATCH_CSRRWI 0x5073
+#define MASK_CSRRWI 0x707f
+#define MATCH_CSRRSI 0x6073
+#define MASK_CSRRSI 0x707f
+#define MATCH_CSRRCI 0x7073
+#define MASK_CSRRCI 0x707f
+#define MATCH_FADD_S 0x53
+#define MASK_FADD_S 0xfe00007f
+#define MATCH_FSUB_S 0x8000053
+#define MASK_FSUB_S 0xfe00007f
+#define MATCH_FMUL_S 0x10000053
+#define MASK_FMUL_S 0xfe00007f
+#define MATCH_FDIV_S 0x18000053
+#define MASK_FDIV_S 0xfe00007f
+#define MATCH_FSGNJ_S 0x20000053
+#define MASK_FSGNJ_S 0xfe00707f
+#define MATCH_FSGNJN_S 0x20001053
+#define MASK_FSGNJN_S 0xfe00707f
+#define MATCH_FSGNJX_S 0x20002053
+#define MASK_FSGNJX_S 0xfe00707f
+#define MATCH_FMIN_S 0x28000053
+#define MASK_FMIN_S 0xfe00707f
+#define MATCH_FMAX_S 0x28001053
+#define MASK_FMAX_S 0xfe00707f
+#define MATCH_FSQRT_S 0x58000053
+#define MASK_FSQRT_S 0xfff0007f
+#define MATCH_FADD_D 0x2000053
+#define MASK_FADD_D 0xfe00007f
+#define MATCH_FSUB_D 0xa000053
+#define MASK_FSUB_D 0xfe00007f
+#define MATCH_FMUL_D 0x12000053
+#define MASK_FMUL_D 0xfe00007f
+#define MATCH_FDIV_D 0x1a000053
+#define MASK_FDIV_D 0xfe00007f
+#define MATCH_FSGNJ_D 0x22000053
+#define MASK_FSGNJ_D 0xfe00707f
+#define MATCH_FSGNJN_D 0x22001053
+#define MASK_FSGNJN_D 0xfe00707f
+#define MATCH_FSGNJX_D 0x22002053
+#define MASK_FSGNJX_D 0xfe00707f
+#define MATCH_FMIN_D 0x2a000053
+#define MASK_FMIN_D 0xfe00707f
+#define MATCH_FMAX_D 0x2a001053
+#define MASK_FMAX_D 0xfe00707f
+#define MATCH_FCVT_S_D 0x40100053
+#define MASK_FCVT_S_D 0xfff0007f
+#define MATCH_FCVT_D_S 0x42000053
+#define MASK_FCVT_D_S 0xfff0007f
+#define MATCH_FSQRT_D 0x5a000053
+#define MASK_FSQRT_D 0xfff0007f
+#define MATCH_FADD_Q 0x6000053
+#define MASK_FADD_Q 0xfe00007f
+#define MATCH_FSUB_Q 0xe000053
+#define MASK_FSUB_Q 0xfe00007f
+#define MATCH_FMUL_Q 0x16000053
+#define MASK_FMUL_Q 0xfe00007f
+#define MATCH_FDIV_Q 0x1e000053
+#define MASK_FDIV_Q 0xfe00007f
+#define MATCH_FSGNJ_Q 0x26000053
+#define MASK_FSGNJ_Q 0xfe00707f
+#define MATCH_FSGNJN_Q 0x26001053
+#define MASK_FSGNJN_Q 0xfe00707f
+#define MATCH_FSGNJX_Q 0x26002053
+#define MASK_FSGNJX_Q 0xfe00707f
+#define MATCH_FMIN_Q 0x2e000053
+#define MASK_FMIN_Q 0xfe00707f
+#define MATCH_FMAX_Q 0x2e001053
+#define MASK_FMAX_Q 0xfe00707f
+#define MATCH_FCVT_S_Q 0x40300053
+#define MASK_FCVT_S_Q 0xfff0007f
+#define MATCH_FCVT_Q_S 0x46000053
+#define MASK_FCVT_Q_S 0xfff0007f
+#define MATCH_FCVT_D_Q 0x42300053
+#define MASK_FCVT_D_Q 0xfff0007f
+#define MATCH_FCVT_Q_D 0x46100053
+#define MASK_FCVT_Q_D 0xfff0007f
+#define MATCH_FSQRT_Q 0x5e000053
+#define MASK_FSQRT_Q 0xfff0007f
+#define MATCH_FLE_S 0xa0000053
+#define MASK_FLE_S 0xfe00707f
+#define MATCH_FLT_S 0xa0001053
+#define MASK_FLT_S 0xfe00707f
+#define MATCH_FEQ_S 0xa0002053
+#define MASK_FEQ_S 0xfe00707f
+#define MATCH_FLE_D 0xa2000053
+#define MASK_FLE_D 0xfe00707f
+#define MATCH_FLT_D 0xa2001053
+#define MASK_FLT_D 0xfe00707f
+#define MATCH_FEQ_D 0xa2002053
+#define MASK_FEQ_D 0xfe00707f
+#define MATCH_FLE_Q 0xa6000053
+#define MASK_FLE_Q 0xfe00707f
+#define MATCH_FLT_Q 0xa6001053
+#define MASK_FLT_Q 0xfe00707f
+#define MATCH_FEQ_Q 0xa6002053
+#define MASK_FEQ_Q 0xfe00707f
+#define MATCH_FCVT_W_S 0xc0000053
+#define MASK_FCVT_W_S 0xfff0007f
+#define MATCH_FCVT_WU_S 0xc0100053
+#define MASK_FCVT_WU_S 0xfff0007f
+#define MATCH_FCVT_L_S 0xc0200053
+#define MASK_FCVT_L_S 0xfff0007f
+#define MATCH_FCVT_LU_S 0xc0300053
+#define MASK_FCVT_LU_S 0xfff0007f
+#define MATCH_FMV_X_W 0xe0000053
+#define MASK_FMV_X_W 0xfff0707f
+#define MATCH_FCLASS_S 0xe0001053
+#define MASK_FCLASS_S 0xfff0707f
+#define MATCH_FCVT_W_D 0xc2000053
+#define MASK_FCVT_W_D 0xfff0007f
+#define MATCH_FCVT_WU_D 0xc2100053
+#define MASK_FCVT_WU_D 0xfff0007f
+#define MATCH_FCVT_L_D 0xc2200053
+#define MASK_FCVT_L_D 0xfff0007f
+#define MATCH_FCVT_LU_D 0xc2300053
+#define MASK_FCVT_LU_D 0xfff0007f
+#define MATCH_FMV_X_D 0xe2000053
+#define MASK_FMV_X_D 0xfff0707f
+#define MATCH_FCLASS_D 0xe2001053
+#define MASK_FCLASS_D 0xfff0707f
+#define MATCH_FCVT_W_Q 0xc6000053
+#define MASK_FCVT_W_Q 0xfff0007f
+#define MATCH_FCVT_WU_Q 0xc6100053
+#define MASK_FCVT_WU_Q 0xfff0007f
+#define MATCH_FCVT_L_Q 0xc6200053
+#define MASK_FCVT_L_Q 0xfff0007f
+#define MATCH_FCVT_LU_Q 0xc6300053
+#define MASK_FCVT_LU_Q 0xfff0007f
+#define MATCH_FMV_X_Q 0xe6000053
+#define MASK_FMV_X_Q 0xfff0707f
+#define MATCH_FCLASS_Q 0xe6001053
+#define MASK_FCLASS_Q 0xfff0707f
+#define MATCH_FCVT_S_W 0xd0000053
+#define MASK_FCVT_S_W 0xfff0007f
+#define MATCH_FCVT_S_WU 0xd0100053
+#define MASK_FCVT_S_WU 0xfff0007f
+#define MATCH_FCVT_S_L 0xd0200053
+#define MASK_FCVT_S_L 0xfff0007f
+#define MATCH_FCVT_S_LU 0xd0300053
+#define MASK_FCVT_S_LU 0xfff0007f
+#define MATCH_FMV_W_X 0xf0000053
+#define MASK_FMV_W_X 0xfff0707f
+#define MATCH_FCVT_D_W 0xd2000053
+#define MASK_FCVT_D_W 0xfff0007f
+#define MATCH_FCVT_D_WU 0xd2100053
+#define MASK_FCVT_D_WU 0xfff0007f
+#define MATCH_FCVT_D_L 0xd2200053
+#define MASK_FCVT_D_L 0xfff0007f
+#define MATCH_FCVT_D_LU 0xd2300053
+#define MASK_FCVT_D_LU 0xfff0007f
+#define MATCH_FMV_D_X 0xf2000053
+#define MASK_FMV_D_X 0xfff0707f
+#define MATCH_FCVT_Q_W 0xd6000053
+#define MASK_FCVT_Q_W 0xfff0007f
+#define MATCH_FCVT_Q_WU 0xd6100053
+#define MASK_FCVT_Q_WU 0xfff0007f
+#define MATCH_FCVT_Q_L 0xd6200053
+#define MASK_FCVT_Q_L 0xfff0007f
+#define MATCH_FCVT_Q_LU 0xd6300053
+#define MASK_FCVT_Q_LU 0xfff0007f
+#define MATCH_FMV_Q_X 0xf6000053
+#define MASK_FMV_Q_X 0xfff0707f
+#define MATCH_FLW 0x2007
+#define MASK_FLW 0x707f
+#define MATCH_FLD 0x3007
+#define MASK_FLD 0x707f
+#define MATCH_FLQ 0x4007
+#define MASK_FLQ 0x707f
+#define MATCH_FSW 0x2027
+#define MASK_FSW 0x707f
+#define MATCH_FSD 0x3027
+#define MASK_FSD 0x707f
+#define MATCH_FSQ 0x4027
+#define MASK_FSQ 0x707f
+#define MATCH_FMADD_S 0x43
+#define MASK_FMADD_S 0x600007f
+#define MATCH_FMSUB_S 0x47
+#define MASK_FMSUB_S 0x600007f
+#define MATCH_FNMSUB_S 0x4b
+#define MASK_FNMSUB_S 0x600007f
+#define MATCH_FNMADD_S 0x4f
+#define MASK_FNMADD_S 0x600007f
+#define MATCH_FMADD_D 0x2000043
+#define MASK_FMADD_D 0x600007f
+#define MATCH_FMSUB_D 0x2000047
+#define MASK_FMSUB_D 0x600007f
+#define MATCH_FNMSUB_D 0x200004b
+#define MASK_FNMSUB_D 0x600007f
+#define MATCH_FNMADD_D 0x200004f
+#define MASK_FNMADD_D 0x600007f
+#define MATCH_FMADD_Q 0x6000043
+#define MASK_FMADD_Q 0x600007f
+#define MATCH_FMSUB_Q 0x6000047
+#define MASK_FMSUB_Q 0x600007f
+#define MATCH_FNMSUB_Q 0x600004b
+#define MASK_FNMSUB_Q 0x600007f
+#define MATCH_FNMADD_Q 0x600004f
+#define MASK_FNMADD_Q 0x600007f
+#define MATCH_C_NOP 0x1
+#define MASK_C_NOP 0xffff
+#define MATCH_C_ADDI16SP 0x6101
+#define MASK_C_ADDI16SP 0xef83
+#define MATCH_C_JR 0x8002
+#define MASK_C_JR 0xf07f
+#define MATCH_C_JALR 0x9002
+#define MASK_C_JALR 0xf07f
+#define MATCH_C_EBREAK 0x9002
+#define MASK_C_EBREAK 0xffff
+#define MATCH_C_LD 0x6000
+#define MASK_C_LD 0xe003
+#define MATCH_C_SD 0xe000
+#define MASK_C_SD 0xe003
+#define MATCH_C_ADDIW 0x2001
+#define MASK_C_ADDIW 0xe003
+#define MATCH_C_LDSP 0x6002
+#define MASK_C_LDSP 0xe003
+#define MATCH_C_SDSP 0xe002
+#define MASK_C_SDSP 0xe003
+#define MATCH_C_ADDI4SPN 0x0
+#define MASK_C_ADDI4SPN 0xe003
+#define MATCH_C_FLD 0x2000
+#define MASK_C_FLD 0xe003
+#define MATCH_C_LW 0x4000
+#define MASK_C_LW 0xe003
+#define MATCH_C_FLW 0x6000
+#define MASK_C_FLW 0xe003
+#define MATCH_C_FSD 0xa000
+#define MASK_C_FSD 0xe003
+#define MATCH_C_SW 0xc000
+#define MASK_C_SW 0xe003
+#define MATCH_C_FSW 0xe000
+#define MASK_C_FSW 0xe003
+#define MATCH_C_ADDI 0x1
+#define MASK_C_ADDI 0xe003
+#define MATCH_C_JAL 0x2001
+#define MASK_C_JAL 0xe003
+#define MATCH_C_LI 0x4001
+#define MASK_C_LI 0xe003
+#define MATCH_C_LUI 0x6001
+#define MASK_C_LUI 0xe003
+#define MATCH_C_SRLI 0x8001
+#define MASK_C_SRLI 0xec03
+#define MATCH_C_SRAI 0x8401
+#define MASK_C_SRAI 0xec03
+#define MATCH_C_ANDI 0x8801
+#define MASK_C_ANDI 0xec03
+#define MATCH_C_SUB 0x8c01
+#define MASK_C_SUB 0xfc63
+#define MATCH_C_XOR 0x8c21
+#define MASK_C_XOR 0xfc63
+#define MATCH_C_OR 0x8c41
+#define MASK_C_OR 0xfc63
+#define MATCH_C_AND 0x8c61
+#define MASK_C_AND 0xfc63
+#define MATCH_C_SUBW 0x9c01
+#define MASK_C_SUBW 0xfc63
+#define MATCH_C_ADDW 0x9c21
+#define MASK_C_ADDW 0xfc63
+#define MATCH_C_J 0xa001
+#define MASK_C_J 0xe003
+#define MATCH_C_BEQZ 0xc001
+#define MASK_C_BEQZ 0xe003
+#define MATCH_C_BNEZ 0xe001
+#define MASK_C_BNEZ 0xe003
+#define MATCH_C_SLLI 0x2
+#define MASK_C_SLLI 0xe003
+#define MATCH_C_FLDSP 0x2002
+#define MASK_C_FLDSP 0xe003
+#define MATCH_C_LWSP 0x4002
+#define MASK_C_LWSP 0xe003
+#define MATCH_C_FLWSP 0x6002
+#define MASK_C_FLWSP 0xe003
+#define MATCH_C_MV 0x8002
+#define MASK_C_MV 0xf003
+#define MATCH_C_ADD 0x9002
+#define MASK_C_ADD 0xf003
+#define MATCH_C_FSDSP 0xa002
+#define MASK_C_FSDSP 0xe003
+#define MATCH_C_SWSP 0xc002
+#define MASK_C_SWSP 0xe003
+#define MATCH_C_FSWSP 0xe002
+#define MASK_C_FSWSP 0xe003
+#define MATCH_CUSTOM0 0xb
+#define MASK_CUSTOM0 0x707f
+#define MATCH_CUSTOM0_RS1 0x200b
+#define MASK_CUSTOM0_RS1 0x707f
+#define MATCH_CUSTOM0_RS1_RS2 0x300b
+#define MASK_CUSTOM0_RS1_RS2 0x707f
+#define MATCH_CUSTOM0_RD 0x400b
+#define MASK_CUSTOM0_RD 0x707f
+#define MATCH_CUSTOM0_RD_RS1 0x600b
+#define MASK_CUSTOM0_RD_RS1 0x707f
+#define MATCH_CUSTOM0_RD_RS1_RS2 0x700b
+#define MASK_CUSTOM0_RD_RS1_RS2 0x707f
+#define MATCH_CUSTOM1 0x2b
+#define MASK_CUSTOM1 0x707f
+#define MATCH_CUSTOM1_RS1 0x202b
+#define MASK_CUSTOM1_RS1 0x707f
+#define MATCH_CUSTOM1_RS1_RS2 0x302b
+#define MASK_CUSTOM1_RS1_RS2 0x707f
+#define MATCH_CUSTOM1_RD 0x402b
+#define MASK_CUSTOM1_RD 0x707f
+#define MATCH_CUSTOM1_RD_RS1 0x602b
+#define MASK_CUSTOM1_RD_RS1 0x707f
+#define MATCH_CUSTOM1_RD_RS1_RS2 0x702b
+#define MASK_CUSTOM1_RD_RS1_RS2 0x707f
+#define MATCH_CUSTOM2 0x5b
+#define MASK_CUSTOM2 0x707f
+#define MATCH_CUSTOM2_RS1 0x205b
+#define MASK_CUSTOM2_RS1 0x707f
+#define MATCH_CUSTOM2_RS1_RS2 0x305b
+#define MASK_CUSTOM2_RS1_RS2 0x707f
+#define MATCH_CUSTOM2_RD 0x405b
+#define MASK_CUSTOM2_RD 0x707f
+#define MATCH_CUSTOM2_RD_RS1 0x605b
+#define MASK_CUSTOM2_RD_RS1 0x707f
+#define MATCH_CUSTOM2_RD_RS1_RS2 0x705b
+#define MASK_CUSTOM2_RD_RS1_RS2 0x707f
+#define MATCH_CUSTOM3 0x7b
+#define MASK_CUSTOM3 0x707f
+#define MATCH_CUSTOM3_RS1 0x207b
+#define MASK_CUSTOM3_RS1 0x707f
+#define MATCH_CUSTOM3_RS1_RS2 0x307b
+#define MASK_CUSTOM3_RS1_RS2 0x707f
+#define MATCH_CUSTOM3_RD 0x407b
+#define MASK_CUSTOM3_RD 0x707f
+#define MATCH_CUSTOM3_RD_RS1 0x607b
+#define MASK_CUSTOM3_RD_RS1 0x707f
+#define MATCH_CUSTOM3_RD_RS1_RS2 0x707b
+#define MASK_CUSTOM3_RD_RS1_RS2 0x707f
+#define CSR_FFLAGS 0x1
+#define CSR_FRM 0x2
+#define CSR_FCSR 0x3
+#define CSR_CYCLE 0xc00
+#define CSR_TIME 0xc01
+#define CSR_INSTRET 0xc02
+#define CSR_HPMCOUNTER3 0xc03
+#define CSR_HPMCOUNTER4 0xc04
+#define CSR_HPMCOUNTER5 0xc05
+#define CSR_HPMCOUNTER6 0xc06
+#define CSR_HPMCOUNTER7 0xc07
+#define CSR_HPMCOUNTER8 0xc08
+#define CSR_HPMCOUNTER9 0xc09
+#define CSR_HPMCOUNTER10 0xc0a
+#define CSR_HPMCOUNTER11 0xc0b
+#define CSR_HPMCOUNTER12 0xc0c
+#define CSR_HPMCOUNTER13 0xc0d
+#define CSR_HPMCOUNTER14 0xc0e
+#define CSR_HPMCOUNTER15 0xc0f
+#define CSR_HPMCOUNTER16 0xc10
+#define CSR_HPMCOUNTER17 0xc11
+#define CSR_HPMCOUNTER18 0xc12
+#define CSR_HPMCOUNTER19 0xc13
+#define CSR_HPMCOUNTER20 0xc14
+#define CSR_HPMCOUNTER21 0xc15
+#define CSR_HPMCOUNTER22 0xc16
+#define CSR_HPMCOUNTER23 0xc17
+#define CSR_HPMCOUNTER24 0xc18
+#define CSR_HPMCOUNTER25 0xc19
+#define CSR_HPMCOUNTER26 0xc1a
+#define CSR_HPMCOUNTER27 0xc1b
+#define CSR_HPMCOUNTER28 0xc1c
+#define CSR_HPMCOUNTER29 0xc1d
+#define CSR_HPMCOUNTER30 0xc1e
+#define CSR_HPMCOUNTER31 0xc1f
+#define CSR_SSTATUS 0x100
+#define CSR_SIE 0x104
+#define CSR_STVEC 0x105
+#define CSR_SCOUNTEREN 0x106
+#define CSR_SSCRATCH 0x140
+#define CSR_SEPC 0x141
+#define CSR_SCAUSE 0x142
+#define CSR_STVAL 0x143
+#define CSR_SIP 0x144
+#define CSR_SATP 0x180
+#define CSR_MSTATUS 0x300
+#define CSR_MISA 0x301
+#define CSR_MEDELEG 0x302
+#define CSR_MIDELEG 0x303
+#define CSR_MIE 0x304
+#define CSR_MTVEC 0x305
+#define CSR_MCOUNTEREN 0x306
+#define CSR_MSCRATCH 0x340
+#define CSR_MEPC 0x341
+#define CSR_MCAUSE 0x342
+#define CSR_MTVAL 0x343
+#define CSR_MIP 0x344
+#define CSR_PMPCFG0 0x3a0
+#define CSR_PMPCFG1 0x3a1
+#define CSR_PMPCFG2 0x3a2
+#define CSR_PMPCFG3 0x3a3
+#define CSR_PMPADDR0 0x3b0
+#define CSR_PMPADDR1 0x3b1
+#define CSR_PMPADDR2 0x3b2
+#define CSR_PMPADDR3 0x3b3
+#define CSR_PMPADDR4 0x3b4
+#define CSR_PMPADDR5 0x3b5
+#define CSR_PMPADDR6 0x3b6
+#define CSR_PMPADDR7 0x3b7
+#define CSR_PMPADDR8 0x3b8
+#define CSR_PMPADDR9 0x3b9
+#define CSR_PMPADDR10 0x3ba
+#define CSR_PMPADDR11 0x3bb
+#define CSR_PMPADDR12 0x3bc
+#define CSR_PMPADDR13 0x3bd
+#define CSR_PMPADDR14 0x3be
+#define CSR_PMPADDR15 0x3bf
+#define CSR_TSELECT 0x7a0
+#define CSR_TDATA1 0x7a1
+#define CSR_TDATA2 0x7a2
+#define CSR_TDATA3 0x7a3
+#define CSR_DCSR 0x7b0
+#define CSR_DPC 0x7b1
+#define CSR_DSCRATCH 0x7b2
+#define CSR_MCYCLE 0xb00
+#define CSR_MINSTRET 0xb02
+#define CSR_MHPMCOUNTER3 0xb03
+#define CSR_MHPMCOUNTER4 0xb04
+#define CSR_MHPMCOUNTER5 0xb05
+#define CSR_MHPMCOUNTER6 0xb06
+#define CSR_MHPMCOUNTER7 0xb07
+#define CSR_MHPMCOUNTER8 0xb08
+#define CSR_MHPMCOUNTER9 0xb09
+#define CSR_MHPMCOUNTER10 0xb0a
+#define CSR_MHPMCOUNTER11 0xb0b
+#define CSR_MHPMCOUNTER12 0xb0c
+#define CSR_MHPMCOUNTER13 0xb0d
+#define CSR_MHPMCOUNTER14 0xb0e
+#define CSR_MHPMCOUNTER15 0xb0f
+#define CSR_MHPMCOUNTER16 0xb10
+#define CSR_MHPMCOUNTER17 0xb11
+#define CSR_MHPMCOUNTER18 0xb12
+#define CSR_MHPMCOUNTER19 0xb13
+#define CSR_MHPMCOUNTER20 0xb14
+#define CSR_MHPMCOUNTER21 0xb15
+#define CSR_MHPMCOUNTER22 0xb16
+#define CSR_MHPMCOUNTER23 0xb17
+#define CSR_MHPMCOUNTER24 0xb18
+#define CSR_MHPMCOUNTER25 0xb19
+#define CSR_MHPMCOUNTER26 0xb1a
+#define CSR_MHPMCOUNTER27 0xb1b
+#define CSR_MHPMCOUNTER28 0xb1c
+#define CSR_MHPMCOUNTER29 0xb1d
+#define CSR_MHPMCOUNTER30 0xb1e
+#define CSR_MHPMCOUNTER31 0xb1f
+#define CSR_MHPMEVENT3 0x323
+#define CSR_MHPMEVENT4 0x324
+#define CSR_MHPMEVENT5 0x325
+#define CSR_MHPMEVENT6 0x326
+#define CSR_MHPMEVENT7 0x327
+#define CSR_MHPMEVENT8 0x328
+#define CSR_MHPMEVENT9 0x329
+#define CSR_MHPMEVENT10 0x32a
+#define CSR_MHPMEVENT11 0x32b
+#define CSR_MHPMEVENT12 0x32c
+#define CSR_MHPMEVENT13 0x32d
+#define CSR_MHPMEVENT14 0x32e
+#define CSR_MHPMEVENT15 0x32f
+#define CSR_MHPMEVENT16 0x330
+#define CSR_MHPMEVENT17 0x331
+#define CSR_MHPMEVENT18 0x332
+#define CSR_MHPMEVENT19 0x333
+#define CSR_MHPMEVENT20 0x334
+#define CSR_MHPMEVENT21 0x335
+#define CSR_MHPMEVENT22 0x336
+#define CSR_MHPMEVENT23 0x337
+#define CSR_MHPMEVENT24 0x338
+#define CSR_MHPMEVENT25 0x339
+#define CSR_MHPMEVENT26 0x33a
+#define CSR_MHPMEVENT27 0x33b
+#define CSR_MHPMEVENT28 0x33c
+#define CSR_MHPMEVENT29 0x33d
+#define CSR_MHPMEVENT30 0x33e
+#define CSR_MHPMEVENT31 0x33f
+#define CSR_MVENDORID 0xf11
+#define CSR_MARCHID 0xf12
+#define CSR_MIMPID 0xf13
+#define CSR_MHARTID 0xf14
+#define CSR_CYCLEH 0xc80
+#define CSR_TIMEH 0xc81
+#define CSR_INSTRETH 0xc82
+#define CSR_HPMCOUNTER3H 0xc83
+#define CSR_HPMCOUNTER4H 0xc84
+#define CSR_HPMCOUNTER5H 0xc85
+#define CSR_HPMCOUNTER6H 0xc86
+#define CSR_HPMCOUNTER7H 0xc87
+#define CSR_HPMCOUNTER8H 0xc88
+#define CSR_HPMCOUNTER9H 0xc89
+#define CSR_HPMCOUNTER10H 0xc8a
+#define CSR_HPMCOUNTER11H 0xc8b
+#define CSR_HPMCOUNTER12H 0xc8c
+#define CSR_HPMCOUNTER13H 0xc8d
+#define CSR_HPMCOUNTER14H 0xc8e
+#define CSR_HPMCOUNTER15H 0xc8f
+#define CSR_HPMCOUNTER16H 0xc90
+#define CSR_HPMCOUNTER17H 0xc91
+#define CSR_HPMCOUNTER18H 0xc92
+#define CSR_HPMCOUNTER19H 0xc93
+#define CSR_HPMCOUNTER20H 0xc94
+#define CSR_HPMCOUNTER21H 0xc95
+#define CSR_HPMCOUNTER22H 0xc96
+#define CSR_HPMCOUNTER23H 0xc97
+#define CSR_HPMCOUNTER24H 0xc98
+#define CSR_HPMCOUNTER25H 0xc99
+#define CSR_HPMCOUNTER26H 0xc9a
+#define CSR_HPMCOUNTER27H 0xc9b
+#define CSR_HPMCOUNTER28H 0xc9c
+#define CSR_HPMCOUNTER29H 0xc9d
+#define CSR_HPMCOUNTER30H 0xc9e
+#define CSR_HPMCOUNTER31H 0xc9f
+#define CSR_MCYCLEH 0xb80
+#define CSR_MINSTRETH 0xb82
+#define CSR_MHPMCOUNTER3H 0xb83
+#define CSR_MHPMCOUNTER4H 0xb84
+#define CSR_MHPMCOUNTER5H 0xb85
+#define CSR_MHPMCOUNTER6H 0xb86
+#define CSR_MHPMCOUNTER7H 0xb87
+#define CSR_MHPMCOUNTER8H 0xb88
+#define CSR_MHPMCOUNTER9H 0xb89
+#define CSR_MHPMCOUNTER10H 0xb8a
+#define CSR_MHPMCOUNTER11H 0xb8b
+#define CSR_MHPMCOUNTER12H 0xb8c
+#define CSR_MHPMCOUNTER13H 0xb8d
+#define CSR_MHPMCOUNTER14H 0xb8e
+#define CSR_MHPMCOUNTER15H 0xb8f
+#define CSR_MHPMCOUNTER16H 0xb90
+#define CSR_MHPMCOUNTER17H 0xb91
+#define CSR_MHPMCOUNTER18H 0xb92
+#define CSR_MHPMCOUNTER19H 0xb93
+#define CSR_MHPMCOUNTER20H 0xb94
+#define CSR_MHPMCOUNTER21H 0xb95
+#define CSR_MHPMCOUNTER22H 0xb96
+#define CSR_MHPMCOUNTER23H 0xb97
+#define CSR_MHPMCOUNTER24H 0xb98
+#define CSR_MHPMCOUNTER25H 0xb99
+#define CSR_MHPMCOUNTER26H 0xb9a
+#define CSR_MHPMCOUNTER27H 0xb9b
+#define CSR_MHPMCOUNTER28H 0xb9c
+#define CSR_MHPMCOUNTER29H 0xb9d
+#define CSR_MHPMCOUNTER30H 0xb9e
+#define CSR_MHPMCOUNTER31H 0xb9f
+#define CAUSE_MISALIGNED_FETCH 0x0
+#define CAUSE_FETCH_ACCESS 0x1
+#define CAUSE_ILLEGAL_INSTRUCTION 0x2
+#define CAUSE_BREAKPOINT 0x3
+#define CAUSE_MISALIGNED_LOAD 0x4
+#define CAUSE_LOAD_ACCESS 0x5
+#define CAUSE_MISALIGNED_STORE 0x6
+#define CAUSE_STORE_ACCESS 0x7
+#define CAUSE_USER_ECALL 0x8
+#define CAUSE_SUPERVISOR_ECALL 0x9
+#define CAUSE_HYPERVISOR_ECALL 0xa
+#define CAUSE_MACHINE_ECALL 0xb
+#define CAUSE_FETCH_PAGE_FAULT 0xc
+#define CAUSE_LOAD_PAGE_FAULT 0xd
+#define CAUSE_STORE_PAGE_FAULT 0xf
+#define CSR_MENTROPY 0xF15
+#define CSR_MNOISE 0x7A9
+#endif
+#ifdef DECLARE_INSN
+DECLARE_INSN(beq, MATCH_BEQ, MASK_BEQ)
+DECLARE_INSN(bne, MATCH_BNE, MASK_BNE)
+DECLARE_INSN(blt, MATCH_BLT, MASK_BLT)
+DECLARE_INSN(bge, MATCH_BGE, MASK_BGE)
+DECLARE_INSN(bltu, MATCH_BLTU, MASK_BLTU)
+DECLARE_INSN(bgeu, MATCH_BGEU, MASK_BGEU)
+DECLARE_INSN(jalr, MATCH_JALR, MASK_JALR)
+DECLARE_INSN(jal, MATCH_JAL, MASK_JAL)
+DECLARE_INSN(lui, MATCH_LUI, MASK_LUI)
+DECLARE_INSN(auipc, MATCH_AUIPC, MASK_AUIPC)
+DECLARE_INSN(addi, MATCH_ADDI, MASK_ADDI)
+DECLARE_INSN(slli, MATCH_SLLI, MASK_SLLI)
+DECLARE_INSN(slti, MATCH_SLTI, MASK_SLTI)
+DECLARE_INSN(sltiu, MATCH_SLTIU, MASK_SLTIU)
+DECLARE_INSN(xori, MATCH_XORI, MASK_XORI)
+DECLARE_INSN(srli, MATCH_SRLI, MASK_SRLI)
+DECLARE_INSN(srai, MATCH_SRAI, MASK_SRAI)
+DECLARE_INSN(ori, MATCH_ORI, MASK_ORI)
+DECLARE_INSN(andi, MATCH_ANDI, MASK_ANDI)
+DECLARE_INSN(add, MATCH_ADD, MASK_ADD)
+DECLARE_INSN(sub, MATCH_SUB, MASK_SUB)
+DECLARE_INSN(sll, MATCH_SLL, MASK_SLL)
+DECLARE_INSN(slt, MATCH_SLT, MASK_SLT)
+DECLARE_INSN(sltu, MATCH_SLTU, MASK_SLTU)
+DECLARE_INSN(xor, MATCH_XOR, MASK_XOR)
+DECLARE_INSN(srl, MATCH_SRL, MASK_SRL)
+DECLARE_INSN(sra, MATCH_SRA, MASK_SRA)
+DECLARE_INSN(or, MATCH_OR, MASK_OR)
+DECLARE_INSN(and, MATCH_AND, MASK_AND)
+DECLARE_INSN(addiw, MATCH_ADDIW, MASK_ADDIW)
+DECLARE_INSN(slliw, MATCH_SLLIW, MASK_SLLIW)
+DECLARE_INSN(srliw, MATCH_SRLIW, MASK_SRLIW)
+DECLARE_INSN(sraiw, MATCH_SRAIW, MASK_SRAIW)
+DECLARE_INSN(addw, MATCH_ADDW, MASK_ADDW)
+DECLARE_INSN(subw, MATCH_SUBW, MASK_SUBW)
+DECLARE_INSN(sllw, MATCH_SLLW, MASK_SLLW)
+DECLARE_INSN(srlw, MATCH_SRLW, MASK_SRLW)
+DECLARE_INSN(sraw, MATCH_SRAW, MASK_SRAW)
+DECLARE_INSN(lb, MATCH_LB, MASK_LB)
+DECLARE_INSN(lh, MATCH_LH, MASK_LH)
+DECLARE_INSN(lw, MATCH_LW, MASK_LW)
+DECLARE_INSN(ld, MATCH_LD, MASK_LD)
+DECLARE_INSN(lbu, MATCH_LBU, MASK_LBU)
+DECLARE_INSN(lhu, MATCH_LHU, MASK_LHU)
+DECLARE_INSN(lwu, MATCH_LWU, MASK_LWU)
+DECLARE_INSN(sb, MATCH_SB, MASK_SB)
+DECLARE_INSN(sh, MATCH_SH, MASK_SH)
+DECLARE_INSN(sw, MATCH_SW, MASK_SW)
+DECLARE_INSN(sd, MATCH_SD, MASK_SD)
+DECLARE_INSN(fence, MATCH_FENCE, MASK_FENCE)
+DECLARE_INSN(fence_i, MATCH_FENCE_I, MASK_FENCE_I)
+DECLARE_INSN(mul, MATCH_MUL, MASK_MUL)
+DECLARE_INSN(mulh, MATCH_MULH, MASK_MULH)
+DECLARE_INSN(mulhsu, MATCH_MULHSU, MASK_MULHSU)
+DECLARE_INSN(mulhu, MATCH_MULHU, MASK_MULHU)
+DECLARE_INSN(div, MATCH_DIV, MASK_DIV)
+DECLARE_INSN(divu, MATCH_DIVU, MASK_DIVU)
+DECLARE_INSN(rem, MATCH_REM, MASK_REM)
+DECLARE_INSN(remu, MATCH_REMU, MASK_REMU)
+DECLARE_INSN(mulw, MATCH_MULW, MASK_MULW)
+DECLARE_INSN(divw, MATCH_DIVW, MASK_DIVW)
+DECLARE_INSN(divuw, MATCH_DIVUW, MASK_DIVUW)
+DECLARE_INSN(remw, MATCH_REMW, MASK_REMW)
+DECLARE_INSN(remuw, MATCH_REMUW, MASK_REMUW)
+DECLARE_INSN(amoadd_w, MATCH_AMOADD_W, MASK_AMOADD_W)
+DECLARE_INSN(amoxor_w, MATCH_AMOXOR_W, MASK_AMOXOR_W)
+DECLARE_INSN(amoor_w, MATCH_AMOOR_W, MASK_AMOOR_W)
+DECLARE_INSN(amoand_w, MATCH_AMOAND_W, MASK_AMOAND_W)
+DECLARE_INSN(amomin_w, MATCH_AMOMIN_W, MASK_AMOMIN_W)
+DECLARE_INSN(amomax_w, MATCH_AMOMAX_W, MASK_AMOMAX_W)
+DECLARE_INSN(amominu_w, MATCH_AMOMINU_W, MASK_AMOMINU_W)
+DECLARE_INSN(amomaxu_w, MATCH_AMOMAXU_W, MASK_AMOMAXU_W)
+DECLARE_INSN(amoswap_w, MATCH_AMOSWAP_W, MASK_AMOSWAP_W)
+DECLARE_INSN(lr_w, MATCH_LR_W, MASK_LR_W)
+DECLARE_INSN(sc_w, MATCH_SC_W, MASK_SC_W)
+DECLARE_INSN(amoadd_d, MATCH_AMOADD_D, MASK_AMOADD_D)
+DECLARE_INSN(amoxor_d, MATCH_AMOXOR_D, MASK_AMOXOR_D)
+DECLARE_INSN(amoor_d, MATCH_AMOOR_D, MASK_AMOOR_D)
+DECLARE_INSN(amoand_d, MATCH_AMOAND_D, MASK_AMOAND_D)
+DECLARE_INSN(amomin_d, MATCH_AMOMIN_D, MASK_AMOMIN_D)
+DECLARE_INSN(amomax_d, MATCH_AMOMAX_D, MASK_AMOMAX_D)
+DECLARE_INSN(amominu_d, MATCH_AMOMINU_D, MASK_AMOMINU_D)
+DECLARE_INSN(amomaxu_d, MATCH_AMOMAXU_D, MASK_AMOMAXU_D)
+DECLARE_INSN(amoswap_d, MATCH_AMOSWAP_D, MASK_AMOSWAP_D)
+DECLARE_INSN(lr_d, MATCH_LR_D, MASK_LR_D)
+DECLARE_INSN(sc_d, MATCH_SC_D, MASK_SC_D)
+DECLARE_INSN(ecall, MATCH_ECALL, MASK_ECALL)
+DECLARE_INSN(ebreak, MATCH_EBREAK, MASK_EBREAK)
+DECLARE_INSN(uret, MATCH_URET, MASK_URET)
+DECLARE_INSN(sret, MATCH_SRET, MASK_SRET)
+DECLARE_INSN(mret, MATCH_MRET, MASK_MRET)
+DECLARE_INSN(dret, MATCH_DRET, MASK_DRET)
+DECLARE_INSN(sfence_vma, MATCH_SFENCE_VMA, MASK_SFENCE_VMA)
+DECLARE_INSN(wfi, MATCH_WFI, MASK_WFI)
+DECLARE_INSN(csrrw, MATCH_CSRRW, MASK_CSRRW)
+DECLARE_INSN(csrrs, MATCH_CSRRS, MASK_CSRRS)
+DECLARE_INSN(csrrc, MATCH_CSRRC, MASK_CSRRC)
+DECLARE_INSN(csrrwi, MATCH_CSRRWI, MASK_CSRRWI)
+DECLARE_INSN(csrrsi, MATCH_CSRRSI, MASK_CSRRSI)
+DECLARE_INSN(csrrci, MATCH_CSRRCI, MASK_CSRRCI)
+DECLARE_INSN(fadd_s, MATCH_FADD_S, MASK_FADD_S)
+DECLARE_INSN(fsub_s, MATCH_FSUB_S, MASK_FSUB_S)
+DECLARE_INSN(fmul_s, MATCH_FMUL_S, MASK_FMUL_S)
+DECLARE_INSN(fdiv_s, MATCH_FDIV_S, MASK_FDIV_S)
+DECLARE_INSN(fsgnj_s, MATCH_FSGNJ_S, MASK_FSGNJ_S)
+DECLARE_INSN(fsgnjn_s, MATCH_FSGNJN_S, MASK_FSGNJN_S)
+DECLARE_INSN(fsgnjx_s, MATCH_FSGNJX_S, MASK_FSGNJX_S)
+DECLARE_INSN(fmin_s, MATCH_FMIN_S, MASK_FMIN_S)
+DECLARE_INSN(fmax_s, MATCH_FMAX_S, MASK_FMAX_S)
+DECLARE_INSN(fsqrt_s, MATCH_FSQRT_S, MASK_FSQRT_S)
+DECLARE_INSN(fadd_d, MATCH_FADD_D, MASK_FADD_D)
+DECLARE_INSN(fsub_d, MATCH_FSUB_D, MASK_FSUB_D)
+DECLARE_INSN(fmul_d, MATCH_FMUL_D, MASK_FMUL_D)
+DECLARE_INSN(fdiv_d, MATCH_FDIV_D, MASK_FDIV_D)
+DECLARE_INSN(fsgnj_d, MATCH_FSGNJ_D, MASK_FSGNJ_D)
+DECLARE_INSN(fsgnjn_d, MATCH_FSGNJN_D, MASK_FSGNJN_D)
+DECLARE_INSN(fsgnjx_d, MATCH_FSGNJX_D, MASK_FSGNJX_D)
+DECLARE_INSN(fmin_d, MATCH_FMIN_D, MASK_FMIN_D)
+DECLARE_INSN(fmax_d, MATCH_FMAX_D, MASK_FMAX_D)
+DECLARE_INSN(fcvt_s_d, MATCH_FCVT_S_D, MASK_FCVT_S_D)
+DECLARE_INSN(fcvt_d_s, MATCH_FCVT_D_S, MASK_FCVT_D_S)
+DECLARE_INSN(fsqrt_d, MATCH_FSQRT_D, MASK_FSQRT_D)
+DECLARE_INSN(fadd_q, MATCH_FADD_Q, MASK_FADD_Q)
+DECLARE_INSN(fsub_q, MATCH_FSUB_Q, MASK_FSUB_Q)
+DECLARE_INSN(fmul_q, MATCH_FMUL_Q, MASK_FMUL_Q)
+DECLARE_INSN(fdiv_q, MATCH_FDIV_Q, MASK_FDIV_Q)
+DECLARE_INSN(fsgnj_q, MATCH_FSGNJ_Q, MASK_FSGNJ_Q)
+DECLARE_INSN(fsgnjn_q, MATCH_FSGNJN_Q, MASK_FSGNJN_Q)
+DECLARE_INSN(fsgnjx_q, MATCH_FSGNJX_Q, MASK_FSGNJX_Q)
+DECLARE_INSN(fmin_q, MATCH_FMIN_Q, MASK_FMIN_Q)
+DECLARE_INSN(fmax_q, MATCH_FMAX_Q, MASK_FMAX_Q)
+DECLARE_INSN(fcvt_s_q, MATCH_FCVT_S_Q, MASK_FCVT_S_Q)
+DECLARE_INSN(fcvt_q_s, MATCH_FCVT_Q_S, MASK_FCVT_Q_S)
+DECLARE_INSN(fcvt_d_q, MATCH_FCVT_D_Q, MASK_FCVT_D_Q)
+DECLARE_INSN(fcvt_q_d, MATCH_FCVT_Q_D, MASK_FCVT_Q_D)
+DECLARE_INSN(fsqrt_q, MATCH_FSQRT_Q, MASK_FSQRT_Q)
+DECLARE_INSN(fle_s, MATCH_FLE_S, MASK_FLE_S)
+DECLARE_INSN(flt_s, MATCH_FLT_S, MASK_FLT_S)
+DECLARE_INSN(feq_s, MATCH_FEQ_S, MASK_FEQ_S)
+DECLARE_INSN(fle_d, MATCH_FLE_D, MASK_FLE_D)
+DECLARE_INSN(flt_d, MATCH_FLT_D, MASK_FLT_D)
+DECLARE_INSN(feq_d, MATCH_FEQ_D, MASK_FEQ_D)
+DECLARE_INSN(fle_q, MATCH_FLE_Q, MASK_FLE_Q)
+DECLARE_INSN(flt_q, MATCH_FLT_Q, MASK_FLT_Q)
+DECLARE_INSN(feq_q, MATCH_FEQ_Q, MASK_FEQ_Q)
+DECLARE_INSN(fcvt_w_s, MATCH_FCVT_W_S, MASK_FCVT_W_S)
+DECLARE_INSN(fcvt_wu_s, MATCH_FCVT_WU_S, MASK_FCVT_WU_S)
+DECLARE_INSN(fcvt_l_s, MATCH_FCVT_L_S, MASK_FCVT_L_S)
+DECLARE_INSN(fcvt_lu_s, MATCH_FCVT_LU_S, MASK_FCVT_LU_S)
+DECLARE_INSN(fmv_x_w, MATCH_FMV_X_W, MASK_FMV_X_W)
+DECLARE_INSN(fclass_s, MATCH_FCLASS_S, MASK_FCLASS_S)
+DECLARE_INSN(fcvt_w_d, MATCH_FCVT_W_D, MASK_FCVT_W_D)
+DECLARE_INSN(fcvt_wu_d, MATCH_FCVT_WU_D, MASK_FCVT_WU_D)
+DECLARE_INSN(fcvt_l_d, MATCH_FCVT_L_D, MASK_FCVT_L_D)
+DECLARE_INSN(fcvt_lu_d, MATCH_FCVT_LU_D, MASK_FCVT_LU_D)
+DECLARE_INSN(fmv_x_d, MATCH_FMV_X_D, MASK_FMV_X_D)
+DECLARE_INSN(fclass_d, MATCH_FCLASS_D, MASK_FCLASS_D)
+DECLARE_INSN(fcvt_w_q, MATCH_FCVT_W_Q, MASK_FCVT_W_Q)
+DECLARE_INSN(fcvt_wu_q, MATCH_FCVT_WU_Q, MASK_FCVT_WU_Q)
+DECLARE_INSN(fcvt_l_q, MATCH_FCVT_L_Q, MASK_FCVT_L_Q)
+DECLARE_INSN(fcvt_lu_q, MATCH_FCVT_LU_Q, MASK_FCVT_LU_Q)
+DECLARE_INSN(fmv_x_q, MATCH_FMV_X_Q, MASK_FMV_X_Q)
+DECLARE_INSN(fclass_q, MATCH_FCLASS_Q, MASK_FCLASS_Q)
+DECLARE_INSN(fcvt_s_w, MATCH_FCVT_S_W, MASK_FCVT_S_W)
+DECLARE_INSN(fcvt_s_wu, MATCH_FCVT_S_WU, MASK_FCVT_S_WU)
+DECLARE_INSN(fcvt_s_l, MATCH_FCVT_S_L, MASK_FCVT_S_L)
+DECLARE_INSN(fcvt_s_lu, MATCH_FCVT_S_LU, MASK_FCVT_S_LU)
+DECLARE_INSN(fmv_w_x, MATCH_FMV_W_X, MASK_FMV_W_X)
+DECLARE_INSN(fcvt_d_w, MATCH_FCVT_D_W, MASK_FCVT_D_W)
+DECLARE_INSN(fcvt_d_wu, MATCH_FCVT_D_WU, MASK_FCVT_D_WU)
+DECLARE_INSN(fcvt_d_l, MATCH_FCVT_D_L, MASK_FCVT_D_L)
+DECLARE_INSN(fcvt_d_lu, MATCH_FCVT_D_LU, MASK_FCVT_D_LU)
+DECLARE_INSN(fmv_d_x, MATCH_FMV_D_X, MASK_FMV_D_X)
+DECLARE_INSN(fcvt_q_w, MATCH_FCVT_Q_W, MASK_FCVT_Q_W)
+DECLARE_INSN(fcvt_q_wu, MATCH_FCVT_Q_WU, MASK_FCVT_Q_WU)
+DECLARE_INSN(fcvt_q_l, MATCH_FCVT_Q_L, MASK_FCVT_Q_L)
+DECLARE_INSN(fcvt_q_lu, MATCH_FCVT_Q_LU, MASK_FCVT_Q_LU)
+DECLARE_INSN(fmv_q_x, MATCH_FMV_Q_X, MASK_FMV_Q_X)
+DECLARE_INSN(flw, MATCH_FLW, MASK_FLW)
+DECLARE_INSN(fld, MATCH_FLD, MASK_FLD)
+DECLARE_INSN(flq, MATCH_FLQ, MASK_FLQ)
+DECLARE_INSN(fsw, MATCH_FSW, MASK_FSW)
+DECLARE_INSN(fsd, MATCH_FSD, MASK_FSD)
+DECLARE_INSN(fsq, MATCH_FSQ, MASK_FSQ)
+DECLARE_INSN(fmadd_s, MATCH_FMADD_S, MASK_FMADD_S)
+DECLARE_INSN(fmsub_s, MATCH_FMSUB_S, MASK_FMSUB_S)
+DECLARE_INSN(fnmsub_s, MATCH_FNMSUB_S, MASK_FNMSUB_S)
+DECLARE_INSN(fnmadd_s, MATCH_FNMADD_S, MASK_FNMADD_S)
+DECLARE_INSN(fmadd_d, MATCH_FMADD_D, MASK_FMADD_D)
+DECLARE_INSN(fmsub_d, MATCH_FMSUB_D, MASK_FMSUB_D)
+DECLARE_INSN(fnmsub_d, MATCH_FNMSUB_D, MASK_FNMSUB_D)
+DECLARE_INSN(fnmadd_d, MATCH_FNMADD_D, MASK_FNMADD_D)
+DECLARE_INSN(fmadd_q, MATCH_FMADD_Q, MASK_FMADD_Q)
+DECLARE_INSN(fmsub_q, MATCH_FMSUB_Q, MASK_FMSUB_Q)
+DECLARE_INSN(fnmsub_q, MATCH_FNMSUB_Q, MASK_FNMSUB_Q)
+DECLARE_INSN(fnmadd_q, MATCH_FNMADD_Q, MASK_FNMADD_Q)
+DECLARE_INSN(c_nop, MATCH_C_NOP, MASK_C_NOP)
+DECLARE_INSN(c_addi16sp, MATCH_C_ADDI16SP, MASK_C_ADDI16SP)
+DECLARE_INSN(c_jr, MATCH_C_JR, MASK_C_JR)
+DECLARE_INSN(c_jalr, MATCH_C_JALR, MASK_C_JALR)
+DECLARE_INSN(c_ebreak, MATCH_C_EBREAK, MASK_C_EBREAK)
+DECLARE_INSN(c_ld, MATCH_C_LD, MASK_C_LD)
+DECLARE_INSN(c_sd, MATCH_C_SD, MASK_C_SD)
+DECLARE_INSN(c_addiw, MATCH_C_ADDIW, MASK_C_ADDIW)
+DECLARE_INSN(c_ldsp, MATCH_C_LDSP, MASK_C_LDSP)
+DECLARE_INSN(c_sdsp, MATCH_C_SDSP, MASK_C_SDSP)
+DECLARE_INSN(c_addi4spn, MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN)
+DECLARE_INSN(c_fld, MATCH_C_FLD, MASK_C_FLD)
+DECLARE_INSN(c_lw, MATCH_C_LW, MASK_C_LW)
+DECLARE_INSN(c_flw, MATCH_C_FLW, MASK_C_FLW)
+DECLARE_INSN(c_fsd, MATCH_C_FSD, MASK_C_FSD)
+DECLARE_INSN(c_sw, MATCH_C_SW, MASK_C_SW)
+DECLARE_INSN(c_fsw, MATCH_C_FSW, MASK_C_FSW)
+DECLARE_INSN(c_addi, MATCH_C_ADDI, MASK_C_ADDI)
+DECLARE_INSN(c_jal, MATCH_C_JAL, MASK_C_JAL)
+DECLARE_INSN(c_li, MATCH_C_LI, MASK_C_LI)
+DECLARE_INSN(c_lui, MATCH_C_LUI, MASK_C_LUI)
+DECLARE_INSN(c_srli, MATCH_C_SRLI, MASK_C_SRLI)
+DECLARE_INSN(c_srai, MATCH_C_SRAI, MASK_C_SRAI)
+DECLARE_INSN(c_andi, MATCH_C_ANDI, MASK_C_ANDI)
+DECLARE_INSN(c_sub, MATCH_C_SUB, MASK_C_SUB)
+DECLARE_INSN(c_xor, MATCH_C_XOR, MASK_C_XOR)
+DECLARE_INSN(c_or, MATCH_C_OR, MASK_C_OR)
+DECLARE_INSN(c_and, MATCH_C_AND, MASK_C_AND)
+DECLARE_INSN(c_subw, MATCH_C_SUBW, MASK_C_SUBW)
+DECLARE_INSN(c_addw, MATCH_C_ADDW, MASK_C_ADDW)
+DECLARE_INSN(c_j, MATCH_C_J, MASK_C_J)
+DECLARE_INSN(c_beqz, MATCH_C_BEQZ, MASK_C_BEQZ)
+DECLARE_INSN(c_bnez, MATCH_C_BNEZ, MASK_C_BNEZ)
+DECLARE_INSN(c_slli, MATCH_C_SLLI, MASK_C_SLLI)
+DECLARE_INSN(c_fldsp, MATCH_C_FLDSP, MASK_C_FLDSP)
+DECLARE_INSN(c_lwsp, MATCH_C_LWSP, MASK_C_LWSP)
+DECLARE_INSN(c_flwsp, MATCH_C_FLWSP, MASK_C_FLWSP)
+DECLARE_INSN(c_mv, MATCH_C_MV, MASK_C_MV)
+DECLARE_INSN(c_add, MATCH_C_ADD, MASK_C_ADD)
+DECLARE_INSN(c_fsdsp, MATCH_C_FSDSP, MASK_C_FSDSP)
+DECLARE_INSN(c_swsp, MATCH_C_SWSP, MASK_C_SWSP)
+DECLARE_INSN(c_fswsp, MATCH_C_FSWSP, MASK_C_FSWSP)
+DECLARE_INSN(custom0, MATCH_CUSTOM0, MASK_CUSTOM0)
+DECLARE_INSN(custom0_rs1, MATCH_CUSTOM0_RS1, MASK_CUSTOM0_RS1)
+DECLARE_INSN(custom0_rs1_rs2, MATCH_CUSTOM0_RS1_RS2, MASK_CUSTOM0_RS1_RS2)
+DECLARE_INSN(custom0_rd, MATCH_CUSTOM0_RD, MASK_CUSTOM0_RD)
+DECLARE_INSN(custom0_rd_rs1, MATCH_CUSTOM0_RD_RS1, MASK_CUSTOM0_RD_RS1)
+DECLARE_INSN(custom0_rd_rs1_rs2, MATCH_CUSTOM0_RD_RS1_RS2, MASK_CUSTOM0_RD_RS1_RS2)
+DECLARE_INSN(custom1, MATCH_CUSTOM1, MASK_CUSTOM1)
+DECLARE_INSN(custom1_rs1, MATCH_CUSTOM1_RS1, MASK_CUSTOM1_RS1)
+DECLARE_INSN(custom1_rs1_rs2, MATCH_CUSTOM1_RS1_RS2, MASK_CUSTOM1_RS1_RS2)
+DECLARE_INSN(custom1_rd, MATCH_CUSTOM1_RD, MASK_CUSTOM1_RD)
+DECLARE_INSN(custom1_rd_rs1, MATCH_CUSTOM1_RD_RS1, MASK_CUSTOM1_RD_RS1)
+DECLARE_INSN(custom1_rd_rs1_rs2, MATCH_CUSTOM1_RD_RS1_RS2, MASK_CUSTOM1_RD_RS1_RS2)
+DECLARE_INSN(custom2, MATCH_CUSTOM2, MASK_CUSTOM2)
+DECLARE_INSN(custom2_rs1, MATCH_CUSTOM2_RS1, MASK_CUSTOM2_RS1)
+DECLARE_INSN(custom2_rs1_rs2, MATCH_CUSTOM2_RS1_RS2, MASK_CUSTOM2_RS1_RS2)
+DECLARE_INSN(custom2_rd, MATCH_CUSTOM2_RD, MASK_CUSTOM2_RD)
+DECLARE_INSN(custom2_rd_rs1, MATCH_CUSTOM2_RD_RS1, MASK_CUSTOM2_RD_RS1)
+DECLARE_INSN(custom2_rd_rs1_rs2, MATCH_CUSTOM2_RD_RS1_RS2, MASK_CUSTOM2_RD_RS1_RS2)
+DECLARE_INSN(custom3, MATCH_CUSTOM3, MASK_CUSTOM3)
+DECLARE_INSN(custom3_rs1, MATCH_CUSTOM3_RS1, MASK_CUSTOM3_RS1)
+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)
+#endif
+#ifdef DECLARE_CSR
+DECLARE_CSR(fflags, CSR_FFLAGS)
+DECLARE_CSR(frm, CSR_FRM)
+DECLARE_CSR(fcsr, CSR_FCSR)
+DECLARE_CSR(cycle, CSR_CYCLE)
+DECLARE_CSR(time, CSR_TIME)
+DECLARE_CSR(instret, CSR_INSTRET)
+DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3)
+DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4)
+DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5)
+DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6)
+DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7)
+DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8)
+DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9)
+DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10)
+DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11)
+DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12)
+DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13)
+DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14)
+DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15)
+DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16)
+DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17)
+DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18)
+DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19)
+DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20)
+DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21)
+DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22)
+DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23)
+DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24)
+DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25)
+DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26)
+DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27)
+DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28)
+DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29)
+DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30)
+DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31)
+DECLARE_CSR(sstatus, CSR_SSTATUS)
+DECLARE_CSR(sie, CSR_SIE)
+DECLARE_CSR(stvec, CSR_STVEC)
+DECLARE_CSR(scounteren, CSR_SCOUNTEREN)
+DECLARE_CSR(sscratch, CSR_SSCRATCH)
+DECLARE_CSR(sepc, CSR_SEPC)
+DECLARE_CSR(scause, CSR_SCAUSE)
+DECLARE_CSR(stval, CSR_STVAL)
+DECLARE_CSR(sip, CSR_SIP)
+DECLARE_CSR(satp, CSR_SATP)
+DECLARE_CSR(mstatus, CSR_MSTATUS)
+DECLARE_CSR(misa, CSR_MISA)
+DECLARE_CSR(medeleg, CSR_MEDELEG)
+DECLARE_CSR(mideleg, CSR_MIDELEG)
+DECLARE_CSR(mie, CSR_MIE)
+DECLARE_CSR(mtvec, CSR_MTVEC)
+DECLARE_CSR(mcounteren, CSR_MCOUNTEREN)
+DECLARE_CSR(mscratch, CSR_MSCRATCH)
+DECLARE_CSR(mepc, CSR_MEPC)
+DECLARE_CSR(mcause, CSR_MCAUSE)
+DECLARE_CSR(mtval, CSR_MTVAL)
+DECLARE_CSR(mip, CSR_MIP)
+DECLARE_CSR(pmpcfg0, CSR_PMPCFG0)
+DECLARE_CSR(pmpcfg1, CSR_PMPCFG1)
+DECLARE_CSR(pmpcfg2, CSR_PMPCFG2)
+DECLARE_CSR(pmpcfg3, CSR_PMPCFG3)
+DECLARE_CSR(pmpaddr0, CSR_PMPADDR0)
+DECLARE_CSR(pmpaddr1, CSR_PMPADDR1)
+DECLARE_CSR(pmpaddr2, CSR_PMPADDR2)
+DECLARE_CSR(pmpaddr3, CSR_PMPADDR3)
+DECLARE_CSR(pmpaddr4, CSR_PMPADDR4)
+DECLARE_CSR(pmpaddr5, CSR_PMPADDR5)
+DECLARE_CSR(pmpaddr6, CSR_PMPADDR6)
+DECLARE_CSR(pmpaddr7, CSR_PMPADDR7)
+DECLARE_CSR(pmpaddr8, CSR_PMPADDR8)
+DECLARE_CSR(pmpaddr9, CSR_PMPADDR9)
+DECLARE_CSR(pmpaddr10, CSR_PMPADDR10)
+DECLARE_CSR(pmpaddr11, CSR_PMPADDR11)
+DECLARE_CSR(pmpaddr12, CSR_PMPADDR12)
+DECLARE_CSR(pmpaddr13, CSR_PMPADDR13)
+DECLARE_CSR(pmpaddr14, CSR_PMPADDR14)
+DECLARE_CSR(pmpaddr15, CSR_PMPADDR15)
+DECLARE_CSR(tselect, CSR_TSELECT)
+DECLARE_CSR(tdata1, CSR_TDATA1)
+DECLARE_CSR(tdata2, CSR_TDATA2)
+DECLARE_CSR(tdata3, CSR_TDATA3)
+DECLARE_CSR(dcsr, CSR_DCSR)
+DECLARE_CSR(dpc, CSR_DPC)
+DECLARE_CSR(dscratch, CSR_DSCRATCH)
+DECLARE_CSR(mcycle, CSR_MCYCLE)
+DECLARE_CSR(minstret, CSR_MINSTRET)
+DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3)
+DECLARE_CSR(mhpmcounter4, CSR_MHPMCOUNTER4)
+DECLARE_CSR(mhpmcounter5, CSR_MHPMCOUNTER5)
+DECLARE_CSR(mhpmcounter6, CSR_MHPMCOUNTER6)
+DECLARE_CSR(mhpmcounter7, CSR_MHPMCOUNTER7)
+DECLARE_CSR(mhpmcounter8, CSR_MHPMCOUNTER8)
+DECLARE_CSR(mhpmcounter9, CSR_MHPMCOUNTER9)
+DECLARE_CSR(mhpmcounter10, CSR_MHPMCOUNTER10)
+DECLARE_CSR(mhpmcounter11, CSR_MHPMCOUNTER11)
+DECLARE_CSR(mhpmcounter12, CSR_MHPMCOUNTER12)
+DECLARE_CSR(mhpmcounter13, CSR_MHPMCOUNTER13)
+DECLARE_CSR(mhpmcounter14, CSR_MHPMCOUNTER14)
+DECLARE_CSR(mhpmcounter15, CSR_MHPMCOUNTER15)
+DECLARE_CSR(mhpmcounter16, CSR_MHPMCOUNTER16)
+DECLARE_CSR(mhpmcounter17, CSR_MHPMCOUNTER17)
+DECLARE_CSR(mhpmcounter18, CSR_MHPMCOUNTER18)
+DECLARE_CSR(mhpmcounter19, CSR_MHPMCOUNTER19)
+DECLARE_CSR(mhpmcounter20, CSR_MHPMCOUNTER20)
+DECLARE_CSR(mhpmcounter21, CSR_MHPMCOUNTER21)
+DECLARE_CSR(mhpmcounter22, CSR_MHPMCOUNTER22)
+DECLARE_CSR(mhpmcounter23, CSR_MHPMCOUNTER23)
+DECLARE_CSR(mhpmcounter24, CSR_MHPMCOUNTER24)
+DECLARE_CSR(mhpmcounter25, CSR_MHPMCOUNTER25)
+DECLARE_CSR(mhpmcounter26, CSR_MHPMCOUNTER26)
+DECLARE_CSR(mhpmcounter27, CSR_MHPMCOUNTER27)
+DECLARE_CSR(mhpmcounter28, CSR_MHPMCOUNTER28)
+DECLARE_CSR(mhpmcounter29, CSR_MHPMCOUNTER29)
+DECLARE_CSR(mhpmcounter30, CSR_MHPMCOUNTER30)
+DECLARE_CSR(mhpmcounter31, CSR_MHPMCOUNTER31)
+DECLARE_CSR(mhpmevent3, CSR_MHPMEVENT3)
+DECLARE_CSR(mhpmevent4, CSR_MHPMEVENT4)
+DECLARE_CSR(mhpmevent5, CSR_MHPMEVENT5)
+DECLARE_CSR(mhpmevent6, CSR_MHPMEVENT6)
+DECLARE_CSR(mhpmevent7, CSR_MHPMEVENT7)
+DECLARE_CSR(mhpmevent8, CSR_MHPMEVENT8)
+DECLARE_CSR(mhpmevent9, CSR_MHPMEVENT9)
+DECLARE_CSR(mhpmevent10, CSR_MHPMEVENT10)
+DECLARE_CSR(mhpmevent11, CSR_MHPMEVENT11)
+DECLARE_CSR(mhpmevent12, CSR_MHPMEVENT12)
+DECLARE_CSR(mhpmevent13, CSR_MHPMEVENT13)
+DECLARE_CSR(mhpmevent14, CSR_MHPMEVENT14)
+DECLARE_CSR(mhpmevent15, CSR_MHPMEVENT15)
+DECLARE_CSR(mhpmevent16, CSR_MHPMEVENT16)
+DECLARE_CSR(mhpmevent17, CSR_MHPMEVENT17)
+DECLARE_CSR(mhpmevent18, CSR_MHPMEVENT18)
+DECLARE_CSR(mhpmevent19, CSR_MHPMEVENT19)
+DECLARE_CSR(mhpmevent20, CSR_MHPMEVENT20)
+DECLARE_CSR(mhpmevent21, CSR_MHPMEVENT21)
+DECLARE_CSR(mhpmevent22, CSR_MHPMEVENT22)
+DECLARE_CSR(mhpmevent23, CSR_MHPMEVENT23)
+DECLARE_CSR(mhpmevent24, CSR_MHPMEVENT24)
+DECLARE_CSR(mhpmevent25, CSR_MHPMEVENT25)
+DECLARE_CSR(mhpmevent26, CSR_MHPMEVENT26)
+DECLARE_CSR(mhpmevent27, CSR_MHPMEVENT27)
+DECLARE_CSR(mhpmevent28, CSR_MHPMEVENT28)
+DECLARE_CSR(mhpmevent29, CSR_MHPMEVENT29)
+DECLARE_CSR(mhpmevent30, CSR_MHPMEVENT30)
+DECLARE_CSR(mhpmevent31, CSR_MHPMEVENT31)
+DECLARE_CSR(mvendorid, CSR_MVENDORID)
+DECLARE_CSR(marchid, CSR_MARCHID)
+DECLARE_CSR(mimpid, CSR_MIMPID)
+DECLARE_CSR(mhartid, CSR_MHARTID)
+DECLARE_CSR(cycleh, CSR_CYCLEH)
+DECLARE_CSR(timeh, CSR_TIMEH)
+DECLARE_CSR(instreth, CSR_INSTRETH)
+DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H)
+DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H)
+DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H)
+DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H)
+DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H)
+DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H)
+DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H)
+DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H)
+DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H)
+DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H)
+DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H)
+DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H)
+DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H)
+DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H)
+DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H)
+DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H)
+DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H)
+DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H)
+DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H)
+DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H)
+DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H)
+DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H)
+DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H)
+DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H)
+DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H)
+DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H)
+DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H)
+DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H)
+DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H)
+DECLARE_CSR(mcycleh, CSR_MCYCLEH)
+DECLARE_CSR(minstreth, CSR_MINSTRETH)
+DECLARE_CSR(mhpmcounter3h, CSR_MHPMCOUNTER3H)
+DECLARE_CSR(mhpmcounter4h, CSR_MHPMCOUNTER4H)
+DECLARE_CSR(mhpmcounter5h, CSR_MHPMCOUNTER5H)
+DECLARE_CSR(mhpmcounter6h, CSR_MHPMCOUNTER6H)
+DECLARE_CSR(mhpmcounter7h, CSR_MHPMCOUNTER7H)
+DECLARE_CSR(mhpmcounter8h, CSR_MHPMCOUNTER8H)
+DECLARE_CSR(mhpmcounter9h, CSR_MHPMCOUNTER9H)
+DECLARE_CSR(mhpmcounter10h, CSR_MHPMCOUNTER10H)
+DECLARE_CSR(mhpmcounter11h, CSR_MHPMCOUNTER11H)
+DECLARE_CSR(mhpmcounter12h, CSR_MHPMCOUNTER12H)
+DECLARE_CSR(mhpmcounter13h, CSR_MHPMCOUNTER13H)
+DECLARE_CSR(mhpmcounter14h, CSR_MHPMCOUNTER14H)
+DECLARE_CSR(mhpmcounter15h, CSR_MHPMCOUNTER15H)
+DECLARE_CSR(mhpmcounter16h, CSR_MHPMCOUNTER16H)
+DECLARE_CSR(mhpmcounter17h, CSR_MHPMCOUNTER17H)
+DECLARE_CSR(mhpmcounter18h, CSR_MHPMCOUNTER18H)
+DECLARE_CSR(mhpmcounter19h, CSR_MHPMCOUNTER19H)
+DECLARE_CSR(mhpmcounter20h, CSR_MHPMCOUNTER20H)
+DECLARE_CSR(mhpmcounter21h, CSR_MHPMCOUNTER21H)
+DECLARE_CSR(mhpmcounter22h, CSR_MHPMCOUNTER22H)
+DECLARE_CSR(mhpmcounter23h, CSR_MHPMCOUNTER23H)
+DECLARE_CSR(mhpmcounter24h, CSR_MHPMCOUNTER24H)
+DECLARE_CSR(mhpmcounter25h, CSR_MHPMCOUNTER25H)
+DECLARE_CSR(mhpmcounter26h, CSR_MHPMCOUNTER26H)
+DECLARE_CSR(mhpmcounter27h, CSR_MHPMCOUNTER27H)
+DECLARE_CSR(mhpmcounter28h, CSR_MHPMCOUNTER28H)
+DECLARE_CSR(mhpmcounter29h, CSR_MHPMCOUNTER29H)
+DECLARE_CSR(mhpmcounter30h, CSR_MHPMCOUNTER30H)
+DECLARE_CSR(mhpmcounter31h, CSR_MHPMCOUNTER31H)
+#endif
+#ifdef DECLARE_CAUSE
+DECLARE_CAUSE("misaligned fetch", CAUSE_MISALIGNED_FETCH)
+DECLARE_CAUSE("fetch access", CAUSE_FETCH_ACCESS)
+DECLARE_CAUSE("illegal instruction", CAUSE_ILLEGAL_INSTRUCTION)
+DECLARE_CAUSE("breakpoint", CAUSE_BREAKPOINT)
+DECLARE_CAUSE("misaligned load", CAUSE_MISALIGNED_LOAD)
+DECLARE_CAUSE("load access", CAUSE_LOAD_ACCESS)
+DECLARE_CAUSE("misaligned store", CAUSE_MISALIGNED_STORE)
+DECLARE_CAUSE("store access", CAUSE_STORE_ACCESS)
+DECLARE_CAUSE("user_ecall", CAUSE_USER_ECALL)
+DECLARE_CAUSE("supervisor_ecall", CAUSE_SUPERVISOR_ECALL)
+DECLARE_CAUSE("hypervisor_ecall", CAUSE_HYPERVISOR_ECALL)
+DECLARE_CAUSE("machine_ecall", CAUSE_MACHINE_ECALL)
+DECLARE_CAUSE("fetch page fault", CAUSE_FETCH_PAGE_FAULT)
+DECLARE_CAUSE("load page fault", CAUSE_LOAD_PAGE_FAULT)
+DECLARE_CAUSE("store page fault", CAUSE_STORE_PAGE_FAULT)
+#endif
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/Makefile
new file mode 100644
index 000000000..c7b3e8946
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32ec -mabi=ilp32e -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/Makefrag
new file mode 100644
index 000000000..b04dac3fc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/Makefrag
@@ -0,0 +1,61 @@
+# RISC-V Architecture Test RV32E Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV32E architectural tests
+
+rv32e_sc_tests = \
+ cadd-01 \
+ caddi-01 \
+ caddi16sp-01 \
+ caddi4spn-01 \
+ cand-01 \
+ candi-01 \
+ cbeqz-01 \
+ cbnez-01 \
+ cj-01 \
+ cjal-01 \
+ cjalr-01 \
+ cjr-01 \
+ cli-01 \
+ clui-01 \
+ clw-01 \
+ clwsp-01 \
+ cmv-01 \
+ cnop-01 \
+ cor-01 \
+ cslli-01 \
+ csrai-01 \
+ csrli-01 \
+ csub-01 \
+ csw-01 \
+ cswsp-01 \
+ cxor-01
+
+
+rv32e_tests = $(addsuffix .elf, $(rv32e_sc_tests))
+
+target_tests += $(rv32e_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cadd-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cadd-01.reference_output
new file mode 100644
index 000000000..fbdfa17f9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cadd-01.reference_output
@@ -0,0 +1,580 @@
+bfffffff
+00004000
+bfffdffe
+e000003f
+56666665
+f7fffffa
+fbff4afc
+ffffffff
+00000000
+ef7ffffe
+ffc0ffff
+1fdfffff
+fff00002
+fff74afc
+003bffff
+fffe001f
+ffff0005
+3332b333
+3fffbfff
+fbffdffe
+fffeeffe
+0001f7ff
+66666265
+dffffdfe
+ffffff07
+ffffff3e
+7fffffbe
+66666646
+55555545
+fffffff9
+ffff7ffa
+0ffffffd
+66666665
+dfffffff
+5e666665
+fdff4afc
+ff0fffff
+bf7fffff
+00bfffff
+55355555
+002fffff
+ffffffff
+007bffff
+bffdffff
+003fbfff
+fffff03f
+1ffff7ff
+ffff7bfe
+ffffddfe
+ffffff03
+333332b1
+0000001f
+efffffee
+01fffff7
+55555552
+1ffffffe
+80000004
+3ffffffa
+0ffffff8
+07fffffa
+03fffffb
+55755556
+00040002
+00020020
+0000fdff
+fe007fff
+00002fff
+ffff9fff
+ffff5afc
+fc0007ff
+00001400
+aaaaacaa
+00040100
+fc00007f
+0000000f
+00000110
+0000000a
+00010002
+00000005
+07fffff6
+03dfffff
+00fffffc
+00800000
+66866666
+55655556
+00080200
+aaab2aab
+00004100
+00008800
+01000400
+00040200
+0000b585
+0000b514
+ffffff80
+00016a0a
+00000002
+66671b6c
+3333e839
+0000b50b
+aaab5fb0
+55560a5b
+0000b509
+00016a08
+0000b505
+66671b6a
+3333e837
+55560a59
+0000b507
+00016a09
+00000001
+66671b6b
+3333e838
+0000b50a
+aaab5faf
+55560a5a
+0000b508
+00000002
+fffe95fa
+6665b164
+33327e31
+ffff4b03
+aaa9f5a8
+5554a053
+ffff4b01
+00000000
+ffff4afd
+6665b162
+33327e2f
+5554a051
+ffff4aff
+00000001
+fffe95f9
+6665b163
+33327e30
+ffff4b02
+aaa9f5a7
+5554a052
+ffff4b00
+66671b6c
+6665b164
+ccccccce
+9999999b
+6666666d
+11111112
+bbbbbbbd
+6666666b
+66671b6a
+66666667
+cccccccc
+99999999
+bbbbbbbb
+66666669
+66671b6b
+6665b163
+cccccccd
+9999999a
+6666666c
+11111111
+bbbbbbbc
+6666666a
+3333e839
+33327e31
+9999999b
+66666668
+3333333a
+dddddddf
+8888888a
+33333338
+3333e837
+33333334
+99999999
+66666666
+88888888
+33333336
+3333e838
+33327e30
+9999999a
+66666667
+33333339
+ddddddde
+88888889
+33333337
+0000b50b
+ffff4b03
+6666666d
+3333333a
+0000000c
+aaaaaab1
+5555555c
+0000000a
+0000b509
+00000006
+6666666b
+33333338
+5555555a
+00000008
+0000b50a
+ffff4b02
+6666666c
+33333339
+0000000b
+aaaaaab0
+5555555b
+00000009
+aaab5fb0
+aaa9f5a8
+11111112
+dddddddf
+aaaaaab1
+55555556
+00000001
+aaaaaaaf
+aaab5fae
+aaaaaaab
+11111110
+dddddddd
+ffffffff
+aaaaaaad
+aaab5faf
+aaa9f5a7
+11111111
+ddddddde
+aaaaaab0
+55555555
+00000000
+aaaaaaae
+55560a5b
+5554a053
+bbbbbbbd
+8888888a
+5555555c
+00000001
+aaaaaaac
+5555555a
+55560a59
+55555556
+bbbbbbbb
+88888888
+aaaaaaaa
+55555558
+55560a5a
+5554a052
+bbbbbbbc
+88888889
+5555555b
+00000000
+aaaaaaab
+55555559
+0000b509
+ffff4b01
+6666666b
+33333338
+0000000a
+aaaaaaaf
+5555555a
+00000008
+0000b507
+00000004
+66666669
+33333336
+55555558
+00000006
+0000b508
+ffff4b00
+6666666a
+33333337
+00000009
+aaaaaaae
+55555559
+00000007
+00016a08
+00000000
+66671b6a
+3333e837
+0000b509
+aaab5fae
+55560a59
+0000b507
+00016a06
+0000b503
+66671b68
+3333e835
+55560a57
+0000b505
+00016a07
+ffffffff
+66671b69
+3333e836
+0000b508
+aaab5fad
+55560a58
+0000b506
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaab
+55555556
+00000004
+0000b503
+00000000
+66666665
+33333332
+55555554
+00000002
+0000b504
+ffff4afc
+66666666
+33333333
+00000005
+aaaaaaaa
+55555555
+00000003
+66671b6a
+6665b162
+cccccccc
+99999999
+6666666b
+11111110
+bbbbbbbb
+66666669
+66671b68
+66666665
+33333333
+99999998
+66666665
+88888887
+33333335
+3333e837
+33327e2f
+99999999
+66666666
+33333338
+dddddddd
+88888888
+33333336
+0000b50a
+ffff4b02
+6666666c
+33333339
+0000000b
+aaaaaab0
+5555555b
+00000009
+0000b508
+00000005
+6666666a
+33333337
+55555559
+00000007
+0000b509
+ffff4b01
+6666666b
+33333338
+0000000a
+aaaaaaaf
+5555555a
+00000008
+aaab5faf
+aaa9f5a7
+11111111
+ddddddde
+aaaaaab0
+55555555
+00000000
+aaaaaaae
+aaab5fad
+aaaaaaaa
+1111110f
+dddddddc
+fffffffe
+aaaaaaac
+aaab5fae
+aaa9f5a6
+11111110
+dddddddd
+aaaaaaaf
+55555554
+ffffffff
+aaaaaaad
+55560a5a
+5554a052
+bbbbbbbc
+88888889
+5555555b
+00000000
+aaaaaaab
+55555559
+55560a58
+55555555
+bbbbbbba
+88888887
+aaaaaaa9
+55555557
+55560a59
+5554a051
+bbbbbbbb
+88888888
+5555555a
+ffffffff
+aaaaaaaa
+55555558
+0000b508
+ffff4b00
+6666666a
+33333337
+00000009
+aaaaaaae
+55555559
+00000007
+0000b506
+00000003
+66666668
+33333335
+55555557
+00000005
+0000b507
+ffff4aff
+66666669
+33333336
+00000008
+aaaaaaad
+55555558
+00000006
+ccccccca
+99999997
+bbbbbbb9
+66666667
+66671b69
+6665b161
+cccccccb
+99999998
+6666666a
+1111110f
+bbbbbbba
+66666668
+3333e837
+33327e2f
+99999999
+66666666
+33333338
+dddddddd
+88888888
+33333336
+3333e835
+33333332
+99999997
+66666664
+88888886
+33333334
+3333e836
+33327e2e
+99999998
+66666665
+33333337
+dddddddc
+88888887
+33333335
+55560a59
+5554a051
+bbbbbbbb
+88888888
+5555555a
+ffffffff
+aaaaaaaa
+55555558
+55560a57
+55555554
+bbbbbbb9
+88888886
+aaaaaaa8
+55555556
+55560a58
+5554a050
+bbbbbbba
+88888887
+55555559
+fffffffe
+aaaaaaa9
+55555557
+0000b507
+ffff4aff
+66666669
+33333336
+00000008
+aaaaaaad
+55555558
+00000006
+0000b505
+00000002
+66666667
+33333334
+55555556
+00000004
+0000b506
+ffff4afe
+66666668
+33333335
+00000007
+aaaaaaac
+55555557
+00000005
+00016a09
+00000001
+66671b6b
+3333e838
+0000b50a
+aaab5faf
+55560a5a
+0000b508
+00016a07
+0000b504
+66671b69
+3333e836
+55560a58
+0000b506
+00016a08
+00000000
+66671b6a
+3333e837
+0000b509
+aaab5fae
+55560a59
+0000b507
+00000001
+fffe95f9
+6665b163
+33327e30
+ffff4b02
+aaa9f5a7
+5554a052
+ffff4b00
+ffffffff
+ffff4afc
+6665b161
+33327e2e
+5554a050
+ffff4afe
+00000000
+fffe95f8
+6665b162
+33327e2f
+ffff4b01
+aaa9f5a6
+5554a051
+ffff4aff
+66671b6b
+6665b163
+cccccccd
+9999999a
+6666666c
+11111111
+bbbbbbbc
+6666666a
+66671b69
+66666666
+cccccccb
+99999998
+bbbbbbba
+66666668
+66671b6a
+6665b162
+cccccccc
+99999999
+6666666b
+11111110
+bbbbbbbb
+66666669
+3333e838
+33327e30
+9999999a
+66666667
+33333339
+ddddddde
+88888889
+33333337
+3333e836
+80001fff
+feff7ffe
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi-01.reference_output
new file mode 100644
index 000000000..168266e00
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi-01.reference_output
@@ -0,0 +1,375 @@
+007fffe0
+80000003
+bffffffe
+e0000007
+f0000003
+f8000004
+fc000003
+fdfffffa
+ff00000f
+ff7ffffa
+ffbfffdf
+ffdffffd
+ffeffffd
+fff80004
+fffc0004
+fffe0003
+fffefffa
+ffff7ff7
+ffffc005
+ffffe002
+ffffeffd
+fffff7df
+fffffc03
+fffffdee
+fffffefe
+ffffff82
+ffffffba
+ffffffc9
+ffffffeb
+ffffffe7
+ffffffeb
+00000001
+00000005
+0000001c
+effffff6
+0007fffd
+80000009
+3fffffea
+20000010
+10000000
+08000010
+04000005
+02000006
+01000008
+0040000f
+00200009
+00100009
+0004000f
+0001ffea
+0000fff0
+00008006
+00004005
+00002007
+00000ff9
+000007f6
+000003fe
+000001ef
+00000101
+00000084
+00000046
+00000024
+00000013
+0000000c
+00000004
+00000001
+00000005
+00000001
+0000b50b
+0000b501
+0000b504
+0000b50c
+0000b509
+0000b510
+0000b505
+0000b50a
+0000b507
+0000b50e
+0000b500
+0000b503
+0000b508
+0000b50f
+ffff4b03
+ffff4af9
+ffff4afc
+ffff4b04
+ffff4b01
+ffff4b08
+ffff4afd
+ffff4b02
+ffff4aff
+ffff4b06
+ffff4af8
+ffff4afb
+ffff4b00
+ffff4b07
+6666666d
+66666663
+66666666
+6666666e
+6666666b
+66666672
+66666667
+6666666c
+66666669
+66666670
+66666662
+66666665
+6666666a
+66666671
+3333333a
+33333330
+33333333
+3333333b
+33333338
+3333333f
+33333334
+33333339
+33333336
+3333333d
+3333332f
+33333332
+33333337
+3333333e
+0000000c
+00000002
+00000005
+0000000d
+0000000a
+00000011
+00000006
+0000000b
+00000008
+0000000f
+00000001
+00000004
+00000009
+00000010
+aaaaaab1
+aaaaaaa7
+aaaaaaaa
+aaaaaab2
+aaaaaaaf
+aaaaaab6
+aaaaaaab
+aaaaaab0
+aaaaaaad
+aaaaaab4
+aaaaaaa6
+aaaaaaa9
+aaaaaaae
+aaaaaab5
+5555555c
+55555552
+55555555
+5555555d
+5555555a
+55555561
+55555556
+5555555b
+55555558
+5555555f
+55555551
+55555554
+55555559
+55555560
+0000000a
+00000000
+00000003
+0000000b
+00000008
+0000000f
+00000009
+00000006
+0000000d
+ffffffff
+00000002
+00000007
+0000000e
+0000b509
+0000b4ff
+0000b502
+0000b50a
+0000b507
+0000b50e
+0000b503
+0000b508
+0000b505
+0000b50c
+0000b4fe
+0000b501
+0000b506
+0000b50d
+00000006
+fffffffc
+ffffffff
+00000007
+00000004
+0000000b
+00000000
+00000005
+00000002
+00000009
+fffffffb
+fffffffe
+00000003
+0000000a
+6666666b
+66666661
+66666664
+6666666c
+66666669
+66666670
+66666665
+6666666a
+66666667
+6666666e
+66666660
+66666663
+66666668
+6666666f
+33333338
+3333332e
+33333331
+33333339
+33333336
+3333333d
+33333332
+33333337
+33333334
+3333333b
+3333332d
+33333330
+33333335
+3333333c
+5555555a
+55555550
+55555553
+5555555b
+55555558
+5555555f
+55555554
+55555559
+55555556
+5555555d
+5555554f
+55555552
+55555557
+5555555e
+00000008
+fffffffe
+00000009
+00000006
+0000000d
+00000002
+00000007
+00000004
+0000000b
+fffffffd
+00000000
+00000005
+0000000c
+0000b50a
+0000b500
+0000b503
+0000b50b
+0000b508
+0000b50f
+0000b504
+0000b509
+0000b506
+0000b50d
+0000b4ff
+0000b502
+0000b507
+0000b50e
+ffff4b02
+ffff4af8
+ffff4afb
+ffff4b03
+ffff4b00
+ffff4b07
+ffff4afc
+ffff4b01
+ffff4afe
+ffff4b05
+ffff4af7
+ffff4afa
+ffff4aff
+ffff4b06
+6666666c
+66666662
+66666665
+6666666d
+6666666a
+66666671
+66666666
+6666666b
+66666668
+6666666f
+66666661
+66666664
+66666669
+66666670
+33333339
+3333332f
+33333332
+3333333a
+33333337
+3333333e
+33333333
+33333338
+33333335
+3333333c
+0000000d
+aaaaaaa3
+5555555e
+0000001b
+3333332e
+33333331
+33333336
+3333333d
+0000000b
+00000001
+00000004
+0000000c
+00000009
+00000010
+00000005
+0000000a
+00000007
+0000000e
+00000000
+00000003
+00000008
+0000000f
+aaaaaab0
+aaaaaaa6
+aaaaaaa9
+aaaaaab1
+aaaaaaae
+aaaaaab5
+aaaaaaaa
+aaaaaaaf
+aaaaaaac
+aaaaaab3
+aaaaaaa5
+aaaaaaa8
+aaaaaaad
+aaaaaab4
+5555555b
+55555551
+55555554
+5555555c
+55555559
+55555560
+55555555
+5555555a
+55555557
+55555550
+55555553
+55555558
+5555555f
+00000009
+ffffffff
+00000002
+0000000a
+00000007
+0000000e
+00000003
+00000008
+00000005
+0000000c
+fffffffe
+00000001
+00000006
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi16sp-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi16sp-01.reference_output
new file mode 100644
index 000000000..d77f4904d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi16sp-01.reference_output
@@ -0,0 +1,72 @@
+003ffe00
+8000007f
+c000005f
+dfffff9f
+effffe9f
+f7ffffaf
+fbffff6f
+fe0000ef
+feffff7f
+ff7fff8f
+ffc0003f
+ffdffe9f
+fff0000f
+fff8000f
+fffbfeff
+fffe014f
+fffeffaf
+ffff803f
+ffffc04f
+ffffdfbf
+fffff07f
+fffff87f
+fffffbef
+ffffff4f
+fffffedf
+ffffff5f
+0000004f
+ffffffef
+fffffe8f
+ffffff97
+fffffefb
+ffffff6d
+0000006e
+004001f0
+fffffeeb
+ffbfffcf
+7fffff60
+40000100
+1ffffff0
+10000030
+07ffff60
+000000c0
+00000210
+00000200
+00000078
+fffffef4
+ffffffb2
+00000051
+00000029
+aaaaaada
+555555b5
+ffffff00
+00000080
+03fffe00
+01fffe00
+00ffffc0
+00800010
+00200020
+00100090
+00080050
+0003fea0
+0001ff60
+00010150
+000081f0
+00004040
+00002080
+000011f0
+00000900
+000005f0
+00000350
+000002f0
+000000b0
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi4spn-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi4spn-01.reference_output
new file mode 100644
index 000000000..976ad903c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/caddi4spn-01.reference_output
@@ -0,0 +1,19 @@
+000003fc
+000001fc
+000002fc
+0000037c
+000003bc
+000003dc
+000003ec
+000003f4
+000003f8
+00000200
+00000100
+00000080
+00000004
+000002a8
+00000154
+00000040
+00000020
+00000010
+00000008
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cand-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cand-01.reference_output
new file mode 100644
index 000000000..6481f5fbf
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cand-01.reference_output
@@ -0,0 +1,586 @@
+80000000
+0000b503
+bfff4afc
+00000003
+00000200
+55555555
+00001000
+fdff7fff
+fefffff9
+ff7ffffa
+40000000
+00000006
+00000020
+20000000
+00000020
+fffdffdf
+66666665
+00000000
+ffffbff8
+00000003
+fffff7fd
+00000003
+00200000
+55555456
+ffffff7c
+ffff4abd
+20000000
+55555545
+aaaaaaa3
+80000000
+dffffffd
+33333334
+00000800
+15555555
+2fffffff
+f7feffff
+00000009
+ddffffff
+fefffffa
+c0000000
+00008000
+ffdf7fff
+00200000
+00000100
+00000000
+fffdfffc
+00000006
+00020000
+40000000
+55554554
+ffff42fd
+55555156
+fffffd7f
+fffffefd
+00000004
+00000200
+00000006
+00100000
+aaaaaaaa
+00000002
+80000000
+00000000
+00000000
+08000000
+00000000
+00000000
+00000000
+00000000
+00400000
+00080000
+00040000
+00000000
+00000000
+00002000
+00001000
+00000400
+00000080
+00000040
+00000020
+00000010
+00000008
+00000000
+00000001
+10000000
+00000000
+04000000
+01000000
+00000000
+00100000
+00000000
+00040000
+00020000
+00010000
+00000000
+00000000
+00002000
+00000000
+00000400
+00000100
+00000080
+00000000
+00000004
+00000000
+00000000
+0000b505
+00000005
+00002405
+00003104
+00000004
+0000a001
+00001504
+00000004
+0000b501
+00000000
+00002405
+00003100
+00001504
+00000000
+0000b504
+00000004
+00002404
+00003101
+00000005
+0000a000
+00001505
+00000001
+00000005
+ffff4afd
+66664265
+33330234
+00000004
+aaaa0aa9
+55554054
+00000004
+00000001
+00000000
+66664265
+33330230
+55554054
+00000000
+00000004
+ffff4afc
+66664264
+33330231
+00000005
+aaaa0aa8
+55554055
+00000001
+00002405
+66664265
+66666667
+22222224
+00000006
+22222223
+44444446
+00000004
+00002403
+00000000
+66666665
+22222222
+44444444
+00000002
+00002404
+66664264
+66666666
+22222223
+00000005
+22222222
+44444445
+00000003
+00003104
+33330234
+22222224
+33333334
+00000004
+22222220
+11111114
+00000004
+00003100
+00000000
+22222224
+33333330
+11111114
+00000000
+00003104
+33330234
+22222224
+33333330
+00000004
+22222220
+11111114
+00000000
+00000004
+00000004
+00000006
+00000004
+00000006
+00000002
+00000006
+00000004
+00000002
+00000000
+00000004
+00000002
+00000004
+00000002
+00000004
+00000004
+00000006
+00000002
+00000004
+00000002
+00000004
+00000002
+0000a001
+aaaa0aa9
+22222223
+22222220
+00000002
+aaaaaaab
+00000002
+00000000
+0000a003
+00000000
+22222221
+22222222
+00000000
+00000002
+0000a000
+aaaa0aa8
+22222222
+22222223
+00000001
+aaaaaaaa
+00000001
+00000003
+00001504
+55554054
+44444446
+11111114
+00000006
+00000002
+55555556
+00000004
+00001502
+00000000
+44444444
+11111112
+55555554
+00000002
+00001504
+55554054
+44444446
+11111112
+00000004
+00000002
+55555554
+00000002
+00000004
+00000004
+00000004
+00000004
+00000004
+00000000
+00000004
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000004
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+0000b501
+00000001
+00002403
+00003100
+00000002
+0000a003
+00001502
+00000000
+0000b503
+00000000
+00002401
+00003102
+00001500
+00000002
+0000b500
+00000000
+00002402
+00003103
+00000001
+0000a002
+00001501
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00002405
+66664265
+66666665
+22222224
+00000004
+22222221
+44444444
+00000004
+00002401
+00000000
+22222221
+33333332
+11111110
+00000002
+00003100
+33330230
+22222222
+33333333
+00000001
+22222222
+11111111
+00000003
+00000005
+00000005
+00000005
+00000004
+00000004
+00000001
+00000004
+00000004
+00000001
+00000000
+00000005
+00000000
+00000004
+00000000
+00000004
+00000004
+00000004
+00000001
+00000005
+00000000
+00000005
+00000001
+0000a000
+aaaa0aa8
+22222222
+22222220
+00000002
+aaaaaaaa
+00000002
+00000000
+0000a002
+00000000
+22222220
+22222222
+00000000
+00000002
+0000a000
+aaaa0aa8
+22222222
+22222222
+00000000
+aaaaaaaa
+00000000
+00000002
+00001505
+55554055
+44444445
+11111114
+00000004
+00000001
+55555554
+00000004
+00001501
+00000000
+44444445
+11111110
+55555554
+00000000
+00001504
+55554054
+44444444
+11111111
+00000005
+00000000
+55555555
+00000001
+00000001
+00000001
+00000003
+00000000
+00000002
+00000003
+00000002
+00000000
+00000003
+00000000
+00000001
+00000002
+00000000
+00000002
+00000000
+00000000
+00000002
+00000003
+00000001
+00000002
+00000001
+00000003
+00000000
+66666665
+22222220
+44444444
+00002404
+66664264
+66666664
+22222221
+00000005
+22222220
+44444445
+00000001
+00003100
+33330230
+22222222
+33333330
+00000002
+22222222
+11111112
+00000000
+00003102
+00000000
+22222220
+33333332
+11111110
+00000002
+00003100
+33330230
+22222222
+33333332
+00000000
+22222222
+11111110
+00000002
+00001504
+55554054
+44444444
+11111114
+00000004
+00000000
+55555554
+00000004
+00001500
+00000000
+44444444
+11111110
+55555554
+00000000
+00001504
+55554054
+44444444
+11111110
+00000004
+00000000
+55555554
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000002
+00000002
+00000000
+00000002
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000002
+00000002
+00000000
+00000002
+00000000
+00000002
+0000b504
+00000004
+00002404
+00003104
+00000004
+0000a000
+00001504
+00000004
+0000b500
+00000000
+00002404
+00003100
+00001504
+00000000
+0000b504
+00000004
+00002404
+00003100
+00000004
+0000a000
+00001504
+00000000
+00000004
+ffff4afc
+66664264
+33330234
+00000004
+aaaa0aa8
+55554054
+00000004
+00000000
+00000000
+66664264
+33330230
+55554054
+00000000
+00000004
+ffff4afc
+66664264
+33330230
+00000004
+aaaa0aa8
+55554054
+00000000
+00002404
+66664264
+66666666
+22222224
+00000006
+22222222
+44444446
+00000004
+00002402
+00000000
+66666664
+22222222
+44444444
+00000002
+00002404
+66664264
+66666666
+22222222
+00000004
+22222222
+44444444
+00000002
+00003101
+33330231
+22222223
+33333330
+00000002
+22222223
+11111112
+00000000
+00003103
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/candi-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/candi-01.reference_output
new file mode 100644
index 000000000..a7f6c9c03
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/candi-01.reference_output
@@ -0,0 +1,374 @@
+00000200
+00000004
+00000000
+00000007
+00000003
+00000006
+00000009
+00000004
+00000000
+00000005
+ffbffff8
+ffdffffd
+00000004
+00000002
+fffbfff8
+00000007
+00000006
+00000005
+00000004
+00000003
+ffffeffa
+00000006
+fffffbfb
+fffffdea
+00000006
+ffffff6a
+ffffffbe
+ffffffd0
+00000004
+00000000
+00000002
+00000000
+00000006
+0000001f
+00000800
+00000005
+00000000
+00000000
+00000000
+10000000
+00000000
+00000000
+02000000
+01000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00008000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000080
+00000000
+00000000
+00000000
+00000008
+00000000
+00000000
+00000000
+00000004
+0000b504
+0000b505
+00000005
+00000004
+00000001
+00000000
+00000005
+00000000
+00000001
+0000b501
+0000b504
+00000001
+00000000
+00000004
+ffff4afc
+ffff4afd
+00000005
+00000004
+00000009
+00000000
+00000005
+00000000
+00000009
+ffff4af9
+ffff4afc
+00000001
+00000008
+00000006
+66666664
+66666667
+00000007
+00000004
+00000003
+00000000
+00000005
+00000002
+00000001
+66666663
+66666666
+00000003
+00000002
+00000004
+33333334
+33333334
+00000004
+00000004
+00000000
+00000000
+00000004
+00000000
+00000000
+33333330
+33333334
+00000000
+00000000
+00000006
+00000004
+00000006
+00000006
+00000004
+00000002
+00000000
+00000004
+00000002
+00000000
+00000002
+00000006
+00000002
+00000002
+00000002
+aaaaaaa8
+aaaaaaab
+00000003
+00000000
+0000000b
+00000000
+00000001
+00000002
+00000009
+aaaaaaab
+aaaaaaaa
+00000003
+0000000a
+00000006
+55555554
+55555556
+00000006
+00000004
+00000002
+00000000
+00000004
+00000002
+00000000
+55555552
+55555556
+00000002
+00000002
+00000004
+00000004
+00000004
+00000004
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000002
+0000b500
+0000b503
+00000003
+00000000
+00000003
+00000000
+00000001
+00000002
+00000001
+0000b503
+0000b502
+00000003
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+66666664
+66666665
+00000005
+00000004
+00000001
+00000000
+00000005
+00000000
+00000001
+66666661
+66666664
+00000001
+00000000
+00000002
+33333330
+33333332
+00000002
+00000000
+00000002
+00000000
+00000000
+00000002
+00000000
+33333332
+33333332
+00000002
+00000002
+00000004
+55555554
+55555554
+00000004
+00000004
+00000000
+00000000
+00000004
+00000000
+00000000
+55555550
+55555554
+00000000
+00000000
+00000002
+00000000
+00000002
+00000002
+00000000
+00000002
+00000000
+00000000
+00000002
+00000000
+00000002
+00000002
+00000002
+00000002
+00000004
+0000b504
+0000b504
+00000004
+00000004
+00000000
+00000000
+00000004
+00000000
+00000000
+0000b500
+0000b504
+00000000
+00000000
+00000004
+ffff4afc
+ffff4afc
+00000004
+00000004
+00000008
+00000000
+00000004
+00000000
+00000008
+ffff4af8
+ffff4afc
+00000000
+00000008
+00000006
+66666664
+66666666
+00000006
+00000004
+00000002
+00000000
+00000004
+00000002
+00000000
+66666662
+66666666
+00000002
+00000002
+00000002
+33333330
+33333333
+00000003
+00000000
+00000003
+00000000
+00000001
+00000002
+00000001
+00000002
+00000000
+00000004
+00000000
+33333333
+33333332
+00000003
+00000002
+00000004
+00000004
+00000005
+00000005
+00000004
+00000001
+00000000
+00000005
+00000000
+00000001
+00000001
+00000004
+00000001
+00000000
+00000002
+aaaaaaa8
+aaaaaaaa
+00000002
+00000000
+0000000a
+00000000
+00000002
+00000008
+aaaaaaaa
+aaaaaaaa
+00000002
+0000000a
+00000004
+55555554
+55555555
+00000005
+00000001
+00000000
+00000005
+00000000
+00000001
+55555551
+55555554
+00000001
+00000000
+00000002
+00000000
+00000003
+00000003
+00000000
+00000003
+00000000
+00000001
+00000002
+00000001
+00000003
+00000002
+00000003
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cbeqz-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cbeqz-01.reference_output
new file mode 100644
index 000000000..b57270221
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cbeqz-01.reference_output
@@ -0,0 +1,84 @@
+ff76df58
+ff76df5a
+ff76df5c
+ff76df5e
+ff76df60
+ff76df62
+ff76df64
+ff76df66
+ff76df68
+ff76df6a
+ff76df6c
+ff76df6e
+ff76df70
+ff76df72
+ff76df74
+ff76df76
+ff76df78
+ff76df7a
+ff76df7c
+ff76df7e
+ff76df80
+ff76df82
+ff76df84
+ff76df86
+ff76df88
+ff76df8a
+ff76df8c
+ff76df8e
+ff76df90
+ff76df92
+ff76df94
+ff76df96
+ff76df98
+ff76df9a
+ff76df9c
+ff76df9e
+ff76dfa0
+ff76dfa2
+ff76dfa4
+ff76dfa6
+ff76dfa8
+ff76dfaa
+ff76dfac
+ff76dfae
+ff76dfb0
+ff76dfb2
+ff76dfb4
+ff76dfb6
+ff76dfb8
+ff76dfba
+ff76dfbc
+ff76dfbe
+ff76dfc0
+ff76dfc2
+ff76dfc4
+ff76dfc6
+ff76dfc8
+ff76dfca
+ff76dfcc
+ff76dfce
+ff76dfd0
+ff76dfd2
+ff76dfd4
+ff76dfd6
+ff76dfd8
+ff76dfda
+ff76dfdc
+ff76dfde
+ff76dfe0
+ff76dfe2
+ff76dfe5
+ff76dfe7
+ff76dfe9
+ff76dfeb
+ff76dfed
+ff76dfef
+ff76dff1
+ff76dff3
+ff76dff5
+ff76dff7
+ff76dff9
+ff76dffb
+ff76dffd
+ff76dfff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cbnez-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cbnez-01.reference_output
new file mode 100644
index 000000000..e303deedd
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cbnez-01.reference_output
@@ -0,0 +1,84 @@
+ff76df57
+ff76df5a
+ff76df5d
+ff76df5e
+ff76df61
+ff76df62
+ff76df63
+ff76df66
+ff76df69
+ff76df6c
+ff76df6d
+ff76df70
+ff76df73
+ff76df76
+ff76df79
+ff76df7c
+ff76df7d
+ff76df80
+ff76df81
+ff76df82
+ff76df85
+ff76df88
+ff76df89
+ff76df8a
+ff76df8d
+ff76df90
+ff76df93
+ff76df96
+ff76df97
+ff76df98
+ff76df9b
+ff76df9c
+ff76df9d
+ff76dfa0
+ff76dfa1
+ff76dfa4
+ff76dfa5
+ff76dfa8
+ff76dfa9
+ff76dfac
+ff76dfaf
+ff76dfb2
+ff76dfb3
+ff76dfb4
+ff76dfb5
+ff76dfb6
+ff76dfb7
+ff76dfba
+ff76dfbd
+ff76dfbe
+ff76dfc1
+ff76dfc2
+ff76dfc5
+ff76dfc6
+ff76dfc9
+ff76dfcc
+ff76dfcd
+ff76dfce
+ff76dfcf
+ff76dfd2
+ff76dfd5
+ff76dfd6
+ff76dfd7
+ff76dfda
+ff76dfdb
+ff76dfdc
+ff76dfdf
+ff76dfe2
+ff76dfe3
+ff76dfe6
+ff76dfe8
+ff76dfeb
+ff76dfec
+ff76dfef
+ff76dff0
+ff76dff3
+ff76dff4
+ff76dff7
+ff76dff8
+ff76dff9
+ff76dffa
+ff76dffb
+ff76dffe
+ff76e001
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cj-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cj-01.reference_output
new file mode 100644
index 000000000..beca9cf62
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cj-01.reference_output
@@ -0,0 +1,17 @@
+ff76df57
+ff76df58
+ff76df59
+ff76df5a
+ff76df5b
+ff76df5c
+ff76df5d
+ff76df5e
+ff76df61
+ff76df64
+ff76df67
+ff76df68
+ff76df6b
+ff76df6e
+ff76df71
+ff76df74
+ff76df77
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjal-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjal-01.reference_output
new file mode 100644
index 000000000..52a519fdc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjal-01.reference_output
@@ -0,0 +1,18 @@
+00000015
+00000409
+00000209
+00000109
+00000089
+00000049
+00000029
+00000019
+00000011
+0000000d
+0000000d
+0000000d
+0000055d
+0000000d
+0000000d
+0000000d
+0000000d
+0000000d
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjalr-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjalr-01.reference_output
new file mode 100644
index 000000000..b566ee4ba
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjalr-01.reference_output
@@ -0,0 +1,15 @@
+00000009
+0000000f
+00000009
+0000000f
+00000009
+0000000f
+00000009
+0000000f
+00000009
+0000000f
+00000009
+0000000f
+0000000f
+00000009
+0000000f
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjr-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjr-01.reference_output
new file mode 100644
index 000000000..c65570806
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cjr-01.reference_output
@@ -0,0 +1,15 @@
+00000013
+00000013
+00000013
+00000013
+00000013
+00000013
+00000013
+00000013
+00000013
+00000013
+00000013
+00000013
+00000011
+00000013
+00000011
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cli-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cli-01.reference_output
new file mode 100644
index 000000000..bf520871c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cli-01.reference_output
@@ -0,0 +1,17 @@
+ffffffe0
+0000001f
+ffffffef
+fffffff7
+fffffffb
+fffffffd
+fffffffe
+00000010
+00000000
+00000008
+00000004
+00000000
+00000001
+ffffffea
+00000015
+00000000
+00000002
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clui-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clui-01.reference_output
new file mode 100644
index 000000000..69598767d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clui-01.reference_output
@@ -0,0 +1,15 @@
+00004000
+0001f000
+fffef000
+ffff7000
+ffffb000
+ffffd000
+00000000
+fffe0000
+0000c000
+00010000
+00008000
+00002000
+00001000
+fffea000
+00015000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clw-01.reference_output
new file mode 100644
index 000000000..b1c4788a3
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clw-01.reference_output
@@ -0,0 +1,13 @@
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clwsp-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clwsp-01.reference_output
new file mode 100644
index 000000000..fbe8ffc2c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/clwsp-01.reference_output
@@ -0,0 +1,15 @@
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cmv-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cmv-01.reference_output
new file mode 100644
index 000000000..b9982de7d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cmv-01.reference_output
@@ -0,0 +1,85 @@
+80000000
+7fffffff
+bfffffff
+dfffffff
+efffffff
+f7ffffff
+fbffffff
+fdffffff
+feffffff
+ff7fffff
+ffbfffff
+ffdfffff
+ffefffff
+fff7ffff
+00000000
+fffdffff
+fffeffff
+ffff7fff
+ffffbfff
+ffffdfff
+ffffefff
+fffff7ff
+fffffbff
+fffffdff
+fffffeff
+ffffff7f
+ffffffbf
+ffffffdf
+ffffffef
+fffffff7
+fffffffb
+fffffffd
+fffffffe
+40000000
+20000000
+10000000
+08000000
+04000000
+02000000
+01000000
+00800000
+00400000
+00200000
+00100000
+00080000
+00040000
+00020000
+00010000
+00008000
+00004000
+00002000
+00001000
+00000800
+00000400
+00000200
+00000100
+00000080
+00000040
+00000001
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaab
+55555556
+00000004
+0000b503
+00000000
+66666665
+33333332
+55555554
+00000002
+0000b504
+ffff4afc
+66666666
+33333333
+00000005
+aaaaaaaa
+55555555
+00000020
+00000010
+00000008
+00000003
+fffbffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cnop-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cnop-01.reference_output
new file mode 100644
index 000000000..1b55829c0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cnop-01.reference_output
@@ -0,0 +1,14 @@
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cor-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cor-01.reference_output
new file mode 100644
index 000000000..690b29794
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cor-01.reference_output
@@ -0,0 +1,582 @@
+80000000
+33333334
+bfffffff
+dfffffff
+ffffffff
+f7ffffff
+ffffffff
+fdffffff
+ffffffff
+ffffffff
+ffbfffff
+ffffffff
+ffffffff
+fff7ffff
+fffbffff
+fffdffff
+ffffffff
+ffff7fff
+ffffbfff
+ffffdfff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffeff
+ffffff7f
+ffffffbf
+ffffffff
+ffffffff
+fffffff7
+fffffffb
+fffffffd
+fffffffe
+7fffffff
+dfffffff
+ffffffff
+f7ffffff
+fbffffff
+fdffffff
+feffffff
+ffffffff
+ffefffff
+fffdffff
+fffeffff
+ffff7fff
+ffffbfff
+ffffdfff
+ffffefff
+fffff7ff
+ffffffff
+fffffdff
+ffffffff
+ffffffff
+ffffffbf
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+8000b503
+40000003
+20000000
+55555554
+feffffff
+fffff7ff
+c1000000
+10800000
+fdffffff
+55755554
+bfffffff
+fffffff9
+00042000
+33333332
+00012000
+0000c000
+00002200
+04001000
+fffffffb
+00000200
+fbffffff
+04000010
+ffffffbf
+40000000
+ffff4afc
+02000010
+01000004
+ffffffff
+ffffdfff
+00300000
+00080003
+00040006
+fffeffff
+aaabaaab
+00001001
+00100800
+00020400
+ffffbfff
+00000085
+0000b505
+0000b505
+fffffffd
+6666f767
+3333b735
+0000b507
+aaaabfaf
+5555f557
+0000b505
+0000b507
+0000b505
+6666f765
+3333b737
+5555f555
+0000b507
+0000b505
+fffffffd
+6666f767
+3333b737
+0000b505
+aaaabfaf
+5555f555
+0000b507
+fffffffd
+ffff4afd
+ffff6eff
+ffff7bfd
+ffff4aff
+ffffeaff
+ffff5fff
+ffff4afd
+ffffffff
+ffff4afd
+ffff6efd
+ffff7bff
+ffff5ffd
+ffff4aff
+fffffffd
+ffff4afd
+ffff6eff
+ffff7bff
+ffff4afd
+ffffeaff
+ffff5ffd
+ffff4aff
+6666f767
+ffff6eff
+66666667
+77777777
+66666667
+eeeeeeef
+77777777
+66666667
+6666f767
+66666667
+66666667
+77777777
+77777777
+66666667
+6666f767
+ffff6eff
+66666667
+77777777
+66666667
+eeeeeeef
+77777777
+66666667
+3333b735
+ffff7bfd
+77777777
+33333334
+33333336
+bbbbbbbf
+77777776
+33333334
+3333b737
+33333334
+77777775
+33333336
+77777774
+33333336
+3333b734
+ffff7bfc
+77777776
+33333337
+33333335
+bbbbbbbe
+77777775
+33333337
+0000b507
+ffff4aff
+66666667
+33333336
+00000006
+aaaaaaaf
+55555556
+00000006
+0000b507
+00000006
+66666667
+33333336
+55555556
+00000006
+0000b506
+ffff4afe
+66666666
+33333337
+00000007
+aaaaaaae
+55555557
+00000007
+aaaabfaf
+ffffeaff
+eeeeeeef
+bbbbbbbf
+aaaaaaaf
+aaaaaaab
+ffffffff
+aaaaaaaf
+aaaabfab
+aaaaaaab
+eeeeeeef
+bbbbbbbb
+ffffffff
+aaaaaaab
+aaaabfaf
+ffffeaff
+eeeeeeef
+bbbbbbbb
+aaaaaaaf
+aaaaaaab
+ffffffff
+aaaaaaab
+5555f557
+ffff5fff
+77777777
+77777776
+55555556
+ffffffff
+55555556
+55555556
+5555f557
+55555556
+77777777
+77777776
+55555556
+55555556
+5555f556
+ffff5ffe
+77777776
+77777777
+55555557
+fffffffe
+55555557
+55555557
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaaf
+55555556
+00000004
+0000b507
+00000004
+66666665
+33333336
+55555554
+00000006
+0000b504
+ffff4afc
+66666666
+33333337
+00000005
+aaaaaaae
+55555555
+00000007
+0000b507
+ffffffff
+6666f767
+3333b737
+0000b507
+aaaabfab
+5555f557
+0000b507
+0000b503
+0000b503
+6666f767
+3333b733
+5555f557
+0000b503
+0000b507
+ffffffff
+6666f767
+3333b733
+0000b507
+aaaabfab
+5555f557
+0000b503
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaab
+55555556
+00000004
+0000b503
+00000000
+66666665
+33333332
+55555554
+00000002
+0000b504
+ffff4afc
+66666666
+33333333
+00000005
+aaaaaaaa
+55555555
+00000003
+6666f765
+ffff6efd
+66666667
+77777775
+66666667
+eeeeeeef
+77777777
+66666665
+6666f767
+66666665
+33333333
+77777777
+33333333
+77777777
+33333333
+3333b737
+ffff7bff
+77777777
+33333333
+33333337
+bbbbbbbb
+77777777
+33333333
+0000b505
+ffff4afd
+66666667
+33333335
+00000007
+aaaaaaaf
+55555557
+00000005
+0000b507
+00000005
+66666665
+33333337
+55555555
+00000007
+0000b505
+ffff4afd
+66666667
+33333337
+00000005
+aaaaaaaf
+55555555
+00000007
+aaaabfaf
+ffffeaff
+eeeeeeef
+bbbbbbbe
+aaaaaaae
+aaaaaaab
+fffffffe
+aaaaaaae
+aaaabfab
+aaaaaaaa
+eeeeeeef
+bbbbbbba
+fffffffe
+aaaaaaaa
+aaaabfae
+ffffeafe
+eeeeeeee
+bbbbbbbb
+aaaaaaaf
+aaaaaaaa
+ffffffff
+aaaaaaab
+5555f555
+ffff5ffd
+77777777
+77777775
+55555557
+ffffffff
+55555557
+55555555
+5555f557
+55555555
+77777775
+77777777
+55555555
+55555557
+5555f555
+ffff5ffd
+77777777
+77777777
+55555555
+ffffffff
+55555555
+55555557
+0000b507
+ffff4aff
+66666667
+33333337
+00000007
+aaaaaaab
+55555557
+00000007
+0000b503
+00000003
+66666667
+33333333
+55555557
+00000003
+0000b507
+ffff4aff
+66666667
+33333333
+00000007
+aaaaaaab
+55555557
+00000003
+66666665
+77777777
+77777775
+66666667
+6666f765
+ffff6efd
+66666667
+77777777
+66666665
+eeeeeeef
+77777775
+66666667
+3333b737
+ffff7bff
+77777777
+33333336
+33333336
+bbbbbbbb
+77777776
+33333336
+3333b733
+33333332
+77777777
+33333332
+77777776
+33333332
+3333b736
+ffff7bfe
+77777776
+33333333
+33333337
+bbbbbbba
+77777777
+33333333
+5555f555
+ffff5ffd
+77777777
+77777774
+55555556
+ffffffff
+55555556
+55555554
+5555f557
+55555554
+77777775
+77777776
+55555554
+55555556
+5555f554
+ffff5ffc
+77777776
+77777777
+55555555
+fffffffe
+55555555
+55555557
+0000b507
+ffff4aff
+66666667
+33333336
+00000006
+aaaaaaab
+55555556
+00000006
+0000b503
+00000002
+66666667
+33333332
+55555556
+00000002
+0000b506
+ffff4afe
+66666666
+33333333
+00000007
+aaaaaaaa
+55555557
+00000003
+0000b505
+fffffffd
+6666f767
+3333b734
+0000b506
+aaaabfaf
+5555f556
+0000b504
+0000b507
+0000b504
+6666f765
+3333b736
+5555f554
+0000b506
+0000b504
+fffffffc
+6666f766
+3333b737
+0000b505
+aaaabfae
+5555f555
+0000b507
+fffffffd
+ffff4afd
+ffff6eff
+ffff7bfc
+ffff4afe
+ffffeaff
+ffff5ffe
+ffff4afc
+ffffffff
+ffff4afc
+ffff6efd
+ffff7bfe
+ffff5ffc
+ffff4afe
+fffffffc
+ffff4afc
+ffff6efe
+ffff7bff
+ffff4afd
+ffffeafe
+ffff5ffd
+ffff4aff
+6666f767
+ffff6eff
+66666667
+77777776
+66666666
+eeeeeeef
+77777776
+66666666
+6666f767
+66666666
+66666667
+77777776
+77777776
+66666666
+6666f766
+ffff6efe
+66666666
+77777777
+66666667
+eeeeeeee
+77777777
+66666667
+3333b737
+ffff7bff
+77777777
+33333337
+33333337
+bbbbbbbb
+77777777
+33333337
+3333b733
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cslli-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cslli-01.reference_output
new file mode 100644
index 000000000..88c5dcee9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cslli-01.reference_output
@@ -0,0 +1,86 @@
+e0000000
+fffff800
+fffff000
+ffffff80
+7ffffff8
+80000000
+fff80000
+fffffc00
+dfffffe0
+80000000
+fff80000
+fffe0000
+dffffe00
+ffe00000
+f8000000
+fff7fffc
+80000000
+f7ffe000
+e0000000
+f8000000
+fbff8000
+80000000
+ffffbfe0
+80000000
+c0000000
+fffffdf8
+ef800000
+ffffffde
+e0000000
+fd800000
+e8000000
+80000000
+00000000
+00000000
+00000000
+00000000
+00000000
+10000000
+40000000
+20000000
+20000000
+00000000
+10000000
+00000000
+00000000
+08000000
+00000000
+08000000
+00010000
+00000000
+00004000
+00200000
+10000000
+00000000
+00400000
+04000000
+00002000
+00008000
+00000000
+00100000
+00400000
+00800000
+10000000
+00080000
+40000000
+fff7fff0
+5a828000
+fd2bf400
+c0000000
+33333340
+00000030
+55800000
+55555600
+18000000
+18000000
+55555550
+55555550
+00000000
+cccccca0
+33320000
+aa000000
+002d4100
+fd2bf000
+99980000
+66666666
+00000050
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csrai-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csrai-01.reference_output
new file mode 100644
index 000000000..44f590c55
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csrai-01.reference_output
@@ -0,0 +1,85 @@
+fffeaaaa
+003fffff
+fdffffff
+fdffffff
+ffffff7f
+fffffeff
+ffffbfff
+ffffffff
+fffff7ff
+ffefffff
+ffffefff
+fffffeff
+ffffff7f
+ffffbfff
+ffffbfff
+ffffffff
+ffffffff
+ffffdfff
+ffffff7f
+ffffffff
+ffffffbf
+ffffffff
+ffffff7f
+ffffffff
+fffffffd
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+ffffe000
+00002000
+00000004
+00000080
+00000200
+00000020
+00200000
+00000000
+00000000
+00000200
+00000100
+00000002
+00000400
+00000000
+00002000
+00000100
+00000400
+00000000
+00000100
+00000000
+00000002
+00000000
+00000000
+00000000
+00000010
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+2aaaaaaa
+00000005
+fffffa57
+00000333
+00000066
+00000000
+00000000
+00000000
+feaaaaaa
+00002aaa
+00000002
+03333333
+00333333
+00555555
+00000000
+ffffff4a
+00033333
+00000066
+00000002
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csrli-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csrli-01.reference_output
new file mode 100644
index 000000000..5886c90cf
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csrli-01.reference_output
@@ -0,0 +1,87 @@
+0003ffff
+00ffffff
+00017fff
+001bffff
+000effff
+0f7fffff
+1f7fffff
+00007eff
+03fbffff
+0001feff
+000007fd
+1ffbffff
+3ffbffff
+0000fff7
+03ffefff
+0000fffd
+007fff7f
+007fffbf
+000ffffb
+0003ffff
+07ffff7f
+000007ff
+00000007
+000fffff
+000fffff
+01fffffe
+00000007
+0001ffff
+000fffff
+01ffffff
+00000003
+001fffff
+00000000
+0000001f
+00400000
+00800000
+00800000
+00080000
+00000000
+00000200
+00000010
+00000100
+00000000
+00000400
+00000200
+00000000
+00000000
+00000000
+00000000
+00000100
+00000000
+00000800
+00000000
+00000000
+00000010
+00000000
+00000000
+00000080
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+000007ff
+00333333
+00006666
+00000000
+05555555
+0000aaaa
+00002d40
+00000000
+00000000
+2aaaaaaa
+000aaaaa
+00000000
+00000000
+00019999
+00cccccc
+0aaaaaaa
+00000000
+07fffa57
+0ccccccc
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csub-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csub-01.reference_output
new file mode 100644
index 000000000..2eb459464
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csub-01.reference_output
@@ -0,0 +1,581 @@
+d5555556
+00000000
+c0000000
+1ffffff7
+0fff4afd
+6e666666
+03fffffa
+f2000000
+00fff800
+33b33333
+00380000
+001ffffd
+000fffc0
+0007ff80
+0003fff9
+02020001
+0000fffd
+40008000
+ffff8afe
+fffc2000
+00001005
+ffffc800
+ffe00400
+01000201
+00000201
+0000007f
+00000081
+0000001e
+ffff8010
+ffffffc8
+00000025
+ffffe002
+fffffc01
+bfffffbf
+e0000005
+78000000
+fc000020
+fe000007
+ff000010
+ff7ff7ff
+bfbfffff
+ffefffff
+fffeb503
+ffff0100
+7ffff000
+fbfffdff
+000fffe0
+000007f0
+fffffff2
+00000001
+5fffffff
+dffffffd
+f000b504
+f8004000
+fe000020
+fefffff7
+01800000
+00000000
+ffe00020
+66566666
+fff6ffff
+fffc0009
+fffe0000
+ffff0009
+ffff8200
+aaaa6aaa
+ffffdff7
+ffffefff
+aaaaa6aa
+00000200
+ffffdeff
+fffffb7f
+ffff7fdf
+fffffff0
+5555554d
+ffff4af8
+fefffffd
+0fffffff
+3fffffe0
+1ffffffe
+07fe0000
+04000011
+f8800000
+00200000
+000ffffc
+f0080000
+00040001
+00020201
+e0010000
+00008008
+10002001
+10001001
+000007fb
+00000088
+ffff4b0d
+00000003
+00000000
+9999999b
+00000000
+00016a08
+999a4e9e
+cccd81d1
+0000b4ff
+55560a5a
+aaab5faf
+0000b501
+00000002
+0000b505
+999a4ea0
+cccd81d3
+aaab5fb1
+0000b503
+00000001
+00016a09
+999a4e9f
+cccd81d2
+0000b500
+55560a5b
+aaab5fb0
+0000b502
+fffe95f8
+00000000
+9998e496
+cccc17c9
+ffff4af7
+5554a052
+aaa9f5a7
+ffff4af9
+fffe95fa
+ffff4afd
+9998e498
+cccc17cb
+aaa9f5a9
+ffff4afb
+fffe95f9
+00000001
+9998e497
+cccc17ca
+ffff4af8
+5554a053
+aaa9f5a8
+ffff4afa
+6665b162
+66671b6a
+00000000
+33333333
+66666661
+bbbbbbbc
+11111111
+66666663
+6665b164
+66666667
+00000002
+33333335
+11111113
+66666665
+6665b163
+66671b6b
+00000001
+33333334
+66666662
+bbbbbbbd
+11111112
+66666664
+33327e2f
+3333e837
+cccccccd
+00000000
+3333332e
+88888889
+ddddddde
+33333330
+33327e31
+33333334
+cccccccf
+00000002
+dddddde0
+33333332
+33327e30
+3333e838
+ccccccce
+00000001
+3333332f
+8888888a
+dddddddf
+33333331
+ffff4b01
+0000b509
+9999999f
+ccccccd2
+00000000
+5555555b
+aaaaaab0
+00000002
+ffff4b03
+00000006
+999999a1
+ccccccd4
+aaaaaab2
+00000004
+ffff4b02
+0000b50a
+999999a0
+ccccccd3
+00000001
+5555555c
+aaaaaab1
+00000003
+aaa9f5a6
+aaab5fae
+44444444
+77777777
+aaaaaaa5
+00000000
+55555555
+aaaaaaa7
+aaa9f5a8
+aaaaaaab
+44444446
+77777779
+55555557
+aaaaaaa9
+aaa9f5a7
+aaab5faf
+44444445
+77777778
+aaaaaaa6
+00000001
+55555556
+aaaaaaa8
+5554a051
+55560a59
+eeeeeeef
+22222222
+55555550
+aaaaaaab
+00000000
+55555552
+5554a053
+55555556
+eeeeeef1
+22222224
+00000002
+55555554
+5554a052
+55560a5a
+eeeeeef0
+22222223
+55555551
+aaaaaaac
+00000001
+55555553
+ffff4aff
+0000b507
+9999999d
+ccccccd0
+fffffffe
+55555559
+aaaaaaae
+00000000
+ffff4b01
+00000004
+9999999f
+ccccccd2
+aaaaaab0
+00000002
+ffff4b00
+0000b508
+9999999e
+ccccccd1
+ffffffff
+5555555a
+aaaaaaaf
+00000001
+fffffffe
+00016a06
+999a4e9c
+cccd81cf
+0000b4fd
+55560a58
+aaab5fad
+0000b4ff
+00000000
+0000b503
+999a4e9e
+cccd81d1
+aaab5faf
+0000b501
+ffffffff
+00016a07
+999a4e9d
+cccd81d0
+0000b4fe
+55560a59
+aaab5fae
+0000b500
+ffff4afb
+0000b503
+99999999
+cccccccc
+fffffffa
+55555555
+aaaaaaaa
+fffffffc
+ffff4afd
+00000000
+9999999b
+ccccccce
+aaaaaaac
+fffffffe
+ffff4afc
+0000b504
+9999999a
+cccccccd
+fffffffb
+55555556
+aaaaaaab
+fffffffd
+6665b160
+66671b68
+fffffffe
+33333331
+6666665f
+bbbbbbba
+1111110f
+33333333
+ccccccce
+00000001
+dddddddf
+33333331
+33327e2f
+3333e837
+cccccccd
+00000000
+3333332e
+88888889
+ddddddde
+33333330
+ffff4b00
+0000b508
+9999999e
+ccccccd1
+ffffffff
+5555555a
+aaaaaaaf
+00000001
+ffff4b02
+00000005
+999999a0
+ccccccd3
+aaaaaab1
+00000003
+ffff4b01
+0000b509
+9999999f
+ccccccd2
+00000000
+5555555b
+aaaaaab0
+00000002
+aaa9f5a5
+aaab5fad
+44444443
+77777776
+aaaaaaa4
+ffffffff
+55555554
+aaaaaaa6
+aaa9f5a7
+aaaaaaaa
+44444445
+77777778
+55555556
+aaaaaaa8
+aaa9f5a6
+aaab5fae
+44444444
+77777777
+aaaaaaa5
+00000000
+55555555
+aaaaaaa7
+5554a050
+55560a58
+eeeeeeee
+22222221
+5555554f
+aaaaaaaa
+ffffffff
+55555551
+5554a052
+55555555
+eeeeeef0
+22222223
+00000001
+55555553
+5554a051
+55560a59
+eeeeeeef
+22222222
+55555550
+aaaaaaab
+00000000
+55555552
+ffff4afe
+0000b506
+9999999c
+cccccccf
+fffffffd
+55555558
+aaaaaaad
+ffffffff
+ffff4b00
+00000003
+9999999e
+ccccccd1
+aaaaaaaf
+00000001
+ffff4aff
+0000b507
+9999999d
+ccccccd0
+fffffffe
+55555559
+aaaaaaae
+00000000
+66666661
+6665b162
+66666665
+00000000
+33333333
+11111111
+66666663
+6665b161
+66671b69
+ffffffff
+33333332
+66666660
+bbbbbbbb
+11111110
+66666662
+33327e2d
+3333e835
+cccccccb
+fffffffe
+3333332c
+88888887
+dddddddc
+3333332e
+33327e2f
+33333332
+cccccccd
+00000000
+ddddddde
+33333330
+33327e2e
+3333e836
+cccccccc
+ffffffff
+3333332d
+88888888
+dddddddd
+3333332f
+5554a04f
+55560a57
+eeeeeeed
+22222220
+5555554e
+aaaaaaa9
+fffffffe
+55555550
+5554a051
+55555554
+eeeeeeef
+22222222
+00000000
+55555552
+5554a050
+55560a58
+eeeeeeee
+22222221
+5555554f
+aaaaaaaa
+ffffffff
+55555551
+ffff4afd
+0000b505
+9999999b
+ccccccce
+fffffffc
+55555557
+aaaaaaac
+fffffffe
+ffff4aff
+00000002
+9999999d
+ccccccd0
+aaaaaaae
+ffff4afe
+0000b506
+9999999c
+cccccccf
+fffffffd
+55555558
+aaaaaaad
+ffffffff
+ffffffff
+00016a07
+999a4e9d
+cccd81d0
+0000b4fe
+55560a59
+aaab5fae
+0000b500
+00000001
+0000b504
+999a4e9f
+cccd81d2
+aaab5fb0
+0000b502
+00000000
+00016a08
+999a4e9e
+cccd81d1
+0000b4ff
+55560a5a
+aaab5faf
+0000b501
+fffe95f7
+ffffffff
+9998e495
+cccc17c8
+ffff4af6
+5554a051
+aaa9f5a6
+fffe95f9
+ffff4afc
+9998e497
+cccc17ca
+aaa9f5a8
+ffff4afa
+fffe95f8
+00000000
+9998e496
+cccc17c9
+ffff4af7
+5554a052
+aaa9f5a7
+ffff4af9
+6665b161
+66671b69
+ffffffff
+33333332
+66666660
+bbbbbbbb
+11111110
+66666662
+6665b163
+66666666
+00000001
+33333334
+11111112
+66666664
+6665b162
+66671b6a
+00000000
+33333333
+66666661
+bbbbbbbc
+11111111
+66666663
+33327e2e
+3333e836
+cccccccc
+ffffffff
+3333332d
+88888888
+dddddddd
+3333332f
+33327e30
+7fffff00
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csw-01.reference_output
new file mode 100644
index 000000000..92cbdd427
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/csw-01.reference_output
@@ -0,0 +1,68 @@
+ffffbfff
+7fffffff
+bfffffff
+dfffffff
+efffffff
+f7ffffff
+fbffffff
+fdffffff
+feffffff
+ff7fffff
+ffbfffff
+ffdfffff
+ffefffff
+fff7ffff
+fffbffff
+fffdffff
+fffeffff
+ffff7fff
+ffffdfff
+ffffefff
+fffff7ff
+fffffbff
+fffffdff
+fffffeff
+ffffff7f
+ffffffbf
+ffffffdf
+ffffffef
+fffffff7
+fffffffb
+fffffffd
+fffffffe
+00008000
+80000000
+40000000
+20000000
+10000000
+08000000
+00000020
+00000010
+00000008
+00000004
+00000002
+00000001
+ffefffff
+00080000
+aaaaaaaa
+55555555
+00000000
+04000000
+02000000
+01000000
+00800000
+00400000
+00200000
+00100000
+00040000
+00020000
+00010000
+00004000
+00002000
+00001000
+00000800
+00000400
+00000200
+00000100
+00000080
+00000040
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cswsp-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cswsp-01.reference_output
new file mode 100644
index 000000000..1997f2f7e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cswsp-01.reference_output
@@ -0,0 +1,70 @@
+00000003
+7fffffff
+bfffffff
+dfffffff
+8000220c
+f7ffffff
+fbffffff
+fdffffff
+feffffff
+ff7fffff
+ffbfffff
+ffdfffff
+ffefffff
+fff7ffff
+fffbffff
+fffdffff
+fffeffff
+ffff7fff
+ffffbfff
+ffffdfff
+ffffefff
+fffff7ff
+fffffbff
+fffffdff
+fffffeff
+ffffff7f
+ffffffbf
+ffffffdf
+ffffffef
+fffffff7
+fffffffb
+fffffffd
+fffffffe
+ffff7fff
+80000000
+40000000
+20000000
+10000000
+08000000
+04000000
+00000040
+00000020
+00000010
+00000008
+00000004
+00000002
+00000001
+aaaaaaaa
+55555555
+00000000
+02000000
+01000000
+00800000
+00400000
+00200000
+00100000
+00080000
+00040000
+00020000
+00010000
+00008000
+00004000
+00002000
+00001000
+00000800
+00000400
+00000200
+00000100
+00000080
+efffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cxor-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cxor-01.reference_output
new file mode 100644
index 000000000..9d9ee5f39
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/references/cxor-01.reference_output
@@ -0,0 +1,580 @@
+7fff7fff
+00000000
+ffffffff
+dfffffdf
+1000b503
+08002000
+0c000000
+02000800
+feefffff
+aa2aaaab
+00440000
+ffdffeff
+00100006
+fff7fff9
+f7fbffff
+00020002
+fffefff6
+00005000
+ffffdffa
+efffefff
+10000800
+fffffbff
+ffbffdff
+00000300
+00000089
+ffffffba
+fff7ffdf
+ffff4aec
+04000008
+00000000
+ffdffffd
+fffdfffe
+7fffffff
+bffdffff
+9fffffff
+fdfffff8
+81000000
+00880000
+ffbffffb
+ffd7ffff
+00100800
+40080000
+02020000
+fffefffb
+00008006
+ffff0afa
+ffbffbff
+fffff6ff
+fbffff7f
+80000040
+00000420
+80000010
+99999992
+fffffff7
+d5555556
+20200000
+10000004
+3b333334
+ffffffff
+54555555
+33b33334
+ffdbffff
+ff6fffff
+aaaeaaaa
+ff7effff
+04008000
+04004000
+55557555
+ffefefff
+00010400
+08000200
+00080100
+ffffff7d
+00000140
+aaaaaa8b
+3fffffef
+ffbffff7
+fffffff4
+fffffffc
+a0000000
+57555555
+32333332
+fe7fffff
+40040000
+6666e666
+ffff9fff
+0000a000
+ffff5afc
+fffff3ff
+00000408
+ffeffdff
+0000b584
+dfffffef
+fefffff7
+00000004
+fffdfffe
+00000000
+fffffff8
+6666d362
+33338631
+0000b503
+aaaa1fae
+5555e053
+0000b501
+00000006
+0000b505
+6666d360
+33338637
+5555e051
+0000b507
+00000001
+fffffff9
+6666d363
+33338636
+0000b500
+aaaa1faf
+5555e050
+0000b506
+fffffff8
+00000000
+99992c9a
+cccc79c9
+ffff4afb
+5555e056
+aaaa1fab
+ffff4af9
+fffffffe
+ffff4afd
+99992c98
+cccc79cf
+aaaa1fa9
+ffff4aff
+fffffff9
+00000001
+99992c9b
+cccc79ce
+ffff4af8
+5555e057
+aaaa1fa8
+ffff4afe
+6666d362
+99992c9a
+00000000
+55555553
+66666661
+cccccccc
+33333331
+66666663
+6666d364
+66666667
+00000002
+55555555
+33333333
+66666665
+6666d363
+99992c9b
+00000001
+55555554
+66666662
+cccccccd
+33333332
+66666664
+33338631
+cccc79c9
+55555553
+00000000
+33333332
+9999999f
+66666662
+33333330
+33338637
+33333334
+55555551
+00000006
+66666660
+33333336
+33338630
+cccc79c8
+55555552
+00000007
+33333331
+9999999e
+66666661
+33333337
+0000b503
+ffff4afb
+66666661
+33333332
+00000000
+aaaaaaad
+55555550
+00000002
+0000b505
+00000006
+66666663
+33333334
+55555552
+00000004
+0000b502
+ffff4afa
+66666660
+33333335
+00000003
+aaaaaaac
+55555553
+00000005
+aaaa1fae
+5555e056
+cccccccc
+9999999f
+aaaaaaad
+00000000
+fffffffd
+aaaaaaaf
+aaaa1fa8
+aaaaaaab
+ccccccce
+99999999
+ffffffff
+aaaaaaa9
+aaaa1faf
+5555e057
+cccccccd
+99999998
+aaaaaaae
+00000001
+fffffffe
+aaaaaaa8
+5555e053
+aaaa1fab
+33333331
+66666662
+55555550
+fffffffd
+00000000
+55555552
+5555e055
+55555556
+33333333
+66666664
+00000002
+55555554
+5555e052
+aaaa1faa
+33333330
+66666665
+55555553
+fffffffc
+00000003
+55555555
+0000b501
+ffff4af9
+66666663
+33333330
+00000002
+aaaaaaaf
+55555552
+00000000
+0000b507
+00000004
+66666661
+33333336
+55555550
+00000006
+0000b500
+ffff4af8
+66666662
+33333337
+00000001
+aaaaaaae
+55555551
+00000007
+00000006
+fffffffe
+6666d364
+33338637
+0000b505
+aaaa1fa8
+5555e055
+0000b507
+00000000
+0000b503
+6666d366
+33338631
+5555e057
+0000b501
+00000007
+ffffffff
+6666d365
+33338630
+0000b506
+aaaa1fa9
+5555e056
+0000b500
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaab
+55555556
+00000004
+0000b503
+00000000
+66666665
+33333332
+55555554
+00000002
+0000b504
+ffff4afc
+66666666
+33333333
+00000005
+aaaaaaaa
+55555555
+00000003
+6666d360
+99992c98
+00000002
+55555551
+66666663
+ccccccce
+33333333
+66666661
+33333333
+55555556
+00000001
+66666667
+33333331
+33338637
+cccc79cf
+55555555
+00000000
+33333336
+99999999
+66666666
+33333330
+0000b500
+ffff4af8
+66666662
+33333331
+00000003
+aaaaaaae
+55555553
+00000001
+0000b506
+00000005
+66666660
+33333337
+55555551
+00000007
+0000b501
+ffff4af9
+66666663
+33333336
+00000000
+aaaaaaaf
+55555550
+00000006
+aaaa1faf
+5555e057
+cccccccd
+9999999e
+aaaaaaac
+00000001
+fffffffc
+aaaaaaae
+aaaa1fa9
+aaaaaaaa
+cccccccf
+99999998
+fffffffe
+aaaaaaa8
+aaaa1fae
+5555e056
+cccccccc
+99999999
+aaaaaaaf
+00000000
+ffffffff
+aaaaaaa9
+5555e050
+aaaa1fa8
+33333332
+66666661
+55555553
+fffffffe
+00000003
+55555551
+5555e056
+55555555
+33333330
+66666667
+00000001
+55555557
+5555e051
+aaaa1fa9
+33333333
+66666666
+55555550
+ffffffff
+00000000
+55555556
+0000b506
+ffff4afe
+66666664
+33333337
+00000005
+aaaaaaa8
+55555555
+00000007
+0000b500
+00000003
+66666666
+33333331
+55555557
+00000001
+0000b507
+ffff4aff
+66666665
+33333330
+00000006
+aaaaaaa9
+55555556
+00000000
+6666d366
+66666665
+00000000
+55555557
+33333331
+66666667
+6666d361
+99992c99
+00000003
+55555556
+66666660
+cccccccf
+33333330
+66666666
+33338637
+cccc79cf
+55555555
+00000006
+33333334
+99999999
+66666664
+33333336
+33338631
+33333332
+55555557
+00000000
+66666666
+33333330
+33338636
+cccc79ce
+55555554
+00000001
+33333337
+99999998
+66666667
+33333331
+5555e051
+aaaa1fa9
+33333333
+66666660
+55555552
+ffffffff
+00000002
+55555550
+5555e057
+55555554
+33333331
+66666666
+00000000
+55555556
+5555e050
+aaaa1fa8
+33333332
+66666667
+55555551
+fffffffe
+00000001
+55555557
+0000b507
+ffff4aff
+66666665
+33333336
+aaaaaaa9
+55555554
+00000006
+0000b501
+00000002
+66666667
+33333330
+55555556
+00000000
+0000b506
+ffff4afe
+66666664
+33333331
+00000007
+aaaaaaa8
+55555557
+00000001
+00000001
+fffffff9
+6666d363
+33338630
+0000b502
+aaaa1faf
+5555e052
+0000b500
+00000007
+0000b504
+6666d361
+33338636
+5555e050
+0000b506
+00000000
+fffffff8
+6666d362
+33338637
+0000b501
+aaaa1fae
+5555e051
+0000b507
+fffffff9
+00000001
+99992c9b
+cccc79c8
+ffff4afa
+5555e057
+aaaa1faa
+ffff4af8
+ffffffff
+ffff4afc
+99992c99
+cccc79ce
+aaaa1fa8
+ffff4afe
+fffffff8
+00000000
+99992c9a
+cccc79cf
+ffff4af9
+5555e056
+aaaa1fa9
+ffff4aff
+6666d363
+99992c9b
+00000001
+55555552
+66666660
+cccccccd
+33333330
+66666662
+6666d365
+66666666
+00000003
+55555554
+33333332
+66666664
+6666d362
+99992c9a
+00000000
+55555555
+66666663
+cccccccc
+33333333
+66666665
+33338636
+cccc79ce
+55555554
+00000007
+33333335
+99999998
+66666665
+33333337
+33338630
+7fffffbf
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cadd-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cadd-01.S
new file mode 100644
index 000000000..2e79673e2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cadd-01.S
@@ -0,0 +1,2980 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.add instruction of the RISC-V C extension for the cadd covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cadd)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rs2, rs1==x3, rs2==x7, rs1_val == (-2**(xlen-1)), rs1_val == -2147483648, rs2_val > 0
+// opcode: c.add; op1:x3; op2:x7; op1val:-0x80000000; op2val:0x3fffffff
+TEST_CR_OP( c.add, x3, x7, 0xbfffffff, -0x80000000, 0x3fffffff, x1, 0, x2)
+
+inst_1:
+// rs1 == rs2, rs1==x4, rs2==x4, rs2_val == 2147483647, rs1_val == 8192, rs2_val == (2**(xlen-1)-1)
+// opcode: c.add; op1:x4; op2:x4; op1val:0x2000; op2val:0x2000
+TEST_CR_OP( c.add, x4, x4, 0x4000, 0x2000, 0x2000, x1, 4, x2)
+
+inst_2:
+// rs1==x9, rs2==x12, rs2_val == -1073741825, rs2_val < 0, rs1_val == -8193
+// opcode: c.add; op1:x9; op2:x12; op1val:-0x2001; op2val:-0x40000001
+TEST_CR_OP( c.add, x9, x12, 0xbfffdffe, -0x2001, -0x40000001, x1, 8, x2)
+
+inst_3:
+// rs1==x10, rs2==x13, rs2_val == -536870913, rs1_val == 64
+// opcode: c.add; op1:x10; op2:x13; op1val:0x40; op2val:-0x20000001
+TEST_CR_OP( c.add, x10, x13, 0xe000003f, 0x40, -0x20000001, x1, 12, x2)
+
+inst_4:
+// rs1==x11, rs2==x15, rs2_val == -268435457,
+// opcode: c.add; op1:x11; op2:x15; op1val:0x66666666; op2val:-0x10000001
+TEST_CR_OP( c.add, x11, x15, 0x56666665, 0x66666666, -0x10000001, x1, 16, x2)
+
+inst_5:
+// rs1==x15, rs2==x8, rs2_val == -134217729, rs1_val == -5
+// opcode: c.add; op1:x15; op2:x8; op1val:-0x5; op2val:-0x8000001
+TEST_CR_OP( c.add, x15, x8, 0xf7fffffa, -0x5, -0x8000001, x1, 20, x2)
+
+inst_6:
+// rs1==x6, rs2==x3, rs2_val == -67108865,
+// opcode: c.add; op1:x6; op2:x3; op1val:-0xb503; op2val:-0x4000001
+TEST_CR_OP( c.add, x6, x3, 0xfbff4afc, -0xb503, -0x4000001, x1, 24, x2)
+
+inst_7:
+// rs1==x8, rs2==x10, rs2_val == -33554433, rs1_val == 33554432
+// opcode: c.add; op1:x8; op2:x10; op1val:0x2000000; op2val:-0x2000001
+TEST_CR_OP( c.add, x8, x10, 0xffffffff, 0x2000000, -0x2000001, x1, 28, x4)
+
+inst_8:
+// rs1==x0, rs2==x9, rs2_val == -16777217, rs1_val == -32769
+// opcode: c.add; op1:x0; op2:x9; op1val:0x0; op2val:-0x1000001
+TEST_CR_OP( c.add, x0, x9, 0, 0x0, -0x1000001, x1, 32, x4)
+
+inst_9:
+// rs1==x14, rs2==x11, rs2_val == -8388609, rs1_val == -268435457
+// opcode: c.add; op1:x14; op2:x11; op1val:-0x10000001; op2val:-0x800001
+TEST_CR_OP( c.add, x14, x11, 0xef7ffffe, -0x10000001, -0x800001, x1, 36, x4)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_10:
+// rs1==x7, rs2==x5, rs2_val == -4194305, rs1_val == 65536
+// opcode: c.add; op1:x7; op2:x5; op1val:0x10000; op2val:-0x400001
+TEST_CR_OP( c.add, x7, x5, 0xffc0ffff, 0x10000, -0x400001, x3, 0, x4)
+
+inst_11:
+// rs1==x13, rs2==x2, rs2_val == -2097153, rs1_val == 536870912
+// opcode: c.add; op1:x13; op2:x2; op1val:0x20000000; op2val:-0x200001
+TEST_CR_OP( c.add, x13, x2, 0x1fdfffff, 0x20000000, -0x200001, x3, 4, x4)
+
+inst_12:
+// rs1==x5, rs2==x14, rs2_val == -1048577,
+// opcode: c.add; op1:x5; op2:x14; op1val:0x3; op2val:-0x100001
+TEST_CR_OP( c.add, x5, x14, 0xfff00002, 0x3, -0x100001, x3, 8, x4)
+
+inst_13:
+// rs1==x2, rs2==x6, rs2_val == -524289,
+// opcode: c.add; op1:x2; op2:x6; op1val:-0xb503; op2val:-0x80001
+TEST_CR_OP( c.add, x2, x6, 0xfff74afc, -0xb503, -0x80001, x3, 12, x4)
+
+inst_14:
+// rs1==x12, rs2==x1, rs2_val == -262145, rs1_val == 4194304
+// opcode: c.add; op1:x12; op2:x1; op1val:0x400000; op2val:-0x40001
+TEST_CR_OP( c.add, x12, x1, 0x3bffff, 0x400000, -0x40001, x3, 16, x4)
+
+inst_15:
+// rs1==x1, rs2_val == -131073, rs1_val == 32
+// opcode: c.add; op1:x1; op2:x2; op1val:0x20; op2val:-0x20001
+TEST_CR_OP( c.add, x1, x2, 0xfffe001f, 0x20, -0x20001, x3, 20, x4)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:-0x10001
+TEST_CR_OP( c.add, x10, x11, 0xffff0005, 0x6, -0x10001, x3, 24, x4)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x8001
+TEST_CR_OP( c.add, x10, x11, 0x3332b333, 0x33333334, -0x8001, x3, 28, x4)
+
+inst_18:
+// rs2_val == -16385, rs1_val == 1073741824
+// opcode: c.add; op1:x10; op2:x11; op1val:0x40000000; op2val:-0x4001
+TEST_CR_OP( c.add, x10, x11, 0x3fffbfff, 0x40000000, -0x4001, x3, 32, x4)
+
+inst_19:
+// rs2_val == -8193, rs1_val == -67108865
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x4000001; op2val:-0x2001
+TEST_CR_OP( c.add, x10, x11, 0xfbffdffe, -0x4000001, -0x2001, x3, 36, x4)
+
+inst_20:
+// rs2_val == -4097, rs1_val == -65537
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x10001; op2val:-0x1001
+TEST_CR_OP( c.add, x10, x11, 0xfffeeffe, -0x10001, -0x1001, x3, 40, x4)
+
+inst_21:
+// rs2_val == -2049, rs1_val == 131072
+// opcode: c.add; op1:x10; op2:x11; op1val:0x20000; op2val:-0x801
+TEST_CR_OP( c.add, x10, x11, 0x1f7ff, 0x20000, -0x801, x3, 44, x4)
+
+inst_22:
+// rs2_val == -1025,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x401
+TEST_CR_OP( c.add, x10, x11, 0x66666265, 0x66666666, -0x401, x3, 48, x4)
+
+inst_23:
+// rs2_val == -513, rs1_val == -536870913
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x20000001; op2val:-0x201
+TEST_CR_OP( c.add, x10, x11, 0xdffffdfe, -0x20000001, -0x201, x3, 52, x4)
+
+inst_24:
+// rs2_val == -257, rs1_val == 8
+// opcode: c.add; op1:x10; op2:x11; op1val:0x8; op2val:-0x101
+TEST_CR_OP( c.add, x10, x11, 0xffffff07, 0x8, -0x101, x3, 56, x4)
+
+inst_25:
+// rs2_val == -129, rs1_val == -65
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x41; op2val:-0x81
+TEST_CR_OP( c.add, x10, x11, 0xffffff3e, -0x41, -0x81, x3, 60, x4)
+
+inst_26:
+// rs2_val == -65, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: c.add; op1:x10; op2:x11; op1val:0x7fffffff; op2val:-0x41
+TEST_CR_OP( c.add, x10, x11, 0x7fffffbe, 0x7fffffff, -0x41, x3, 64, x4)
+
+inst_27:
+// rs2_val == -33,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x21
+TEST_CR_OP( c.add, x10, x11, 0x66666646, 0x66666667, -0x21, x3, 68, x4)
+
+inst_28:
+// rs2_val == -17,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x11
+TEST_CR_OP( c.add, x10, x11, 0x55555545, 0x55555556, -0x11, x3, 72, x4)
+
+inst_29:
+// rs2_val == -9, rs1_val == 2
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:-0x9
+TEST_CR_OP( c.add, x10, x11, 0xfffffff9, 0x2, -0x9, x3, 76, x4)
+
+inst_30:
+// rs2_val == -5,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x8001; op2val:-0x5
+TEST_CR_OP( c.add, x10, x11, 0xffff7ffa, -0x8001, -0x5, x3, 80, x4)
+
+inst_31:
+// rs2_val == -3, rs1_val == 268435456
+// opcode: c.add; op1:x10; op2:x11; op1val:0x10000000; op2val:-0x3
+TEST_CR_OP( c.add, x10, x11, 0xffffffd, 0x10000000, -0x3, x3, 84, x4)
+
+inst_32:
+// rs2_val == -2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x2
+TEST_CR_OP( c.add, x10, x11, 0x66666665, 0x66666667, -0x2, x3, 88, x4)
+
+inst_33:
+// rs1_val == -1073741825, rs2_val == 536870912
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x40000001; op2val:0x20000000
+TEST_CR_OP( c.add, x10, x11, 0xdfffffff, -0x40000001, 0x20000000, x3, 92, x4)
+
+inst_34:
+// rs1_val == -134217729,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x8000001; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x5e666665, -0x8000001, 0x66666666, x3, 96, x4)
+
+inst_35:
+// rs1_val == -33554433,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x2000001; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xfdff4afc, -0x2000001, -0xb503, x3, 100, x4)
+
+inst_36:
+// rs1_val == -16777217, rs2_val == 1048576
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x1000001; op2val:0x100000
+TEST_CR_OP( c.add, x10, x11, 0xff0fffff, -0x1000001, 0x100000, x3, 104, x4)
+
+inst_37:
+// rs1_val == -8388609,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x800001; op2val:-0x40000000
+TEST_CR_OP( c.add, x10, x11, 0xbf7fffff, -0x800001, -0x40000000, x3, 108, x4)
+
+inst_38:
+// rs1_val == -4194305, rs2_val == 16777216
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x400001; op2val:0x1000000
+TEST_CR_OP( c.add, x10, x11, 0xbfffff, -0x400001, 0x1000000, x3, 112, x4)
+
+inst_39:
+// rs1_val == -2097153,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x200001; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55355555, -0x200001, 0x55555556, x3, 116, x4)
+
+inst_40:
+// rs1_val == -1048577, rs2_val == 4194304
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x100001; op2val:0x400000
+TEST_CR_OP( c.add, x10, x11, 0x2fffff, -0x100001, 0x400000, x3, 120, x4)
+
+inst_41:
+// rs1_val == -524289, rs2_val == 524288
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x80001; op2val:0x80000
+TEST_CR_OP( c.add, x10, x11, 0xffffffff, -0x80001, 0x80000, x3, 124, x4)
+
+inst_42:
+// rs1_val == -262145, rs2_val == 8388608
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x40001; op2val:0x800000
+TEST_CR_OP( c.add, x10, x11, 0x7bffff, -0x40001, 0x800000, x3, 128, x4)
+
+inst_43:
+// rs1_val == -131073,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x20001; op2val:-0x40000000
+TEST_CR_OP( c.add, x10, x11, 0xbffdffff, -0x20001, -0x40000000, x3, 132, x4)
+
+inst_44:
+// rs1_val == -16385,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x4001; op2val:0x400000
+TEST_CR_OP( c.add, x10, x11, 0x3fbfff, -0x4001, 0x400000, x3, 136, x4)
+
+inst_45:
+// rs1_val == -4097, rs2_val == 64
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x1001; op2val:0x40
+TEST_CR_OP( c.add, x10, x11, 0xfffff03f, -0x1001, 0x40, x3, 140, x4)
+
+inst_46:
+// rs1_val == -2049,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x801; op2val:0x20000000
+TEST_CR_OP( c.add, x10, x11, 0x1ffff7ff, -0x801, 0x20000000, x3, 144, x4)
+
+inst_47:
+// rs1_val == -1025,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x401; op2val:-0x8001
+TEST_CR_OP( c.add, x10, x11, 0xffff7bfe, -0x401, -0x8001, x3, 148, x4)
+
+inst_48:
+// rs1_val == -513,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x201; op2val:-0x2001
+TEST_CR_OP( c.add, x10, x11, 0xffffddfe, -0x201, -0x2001, x3, 152, x4)
+
+inst_49:
+// rs1_val == -257, rs2_val == 4
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x101; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xffffff03, -0x101, 0x4, x3, 156, x4)
+
+inst_50:
+// rs1_val == -129,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x81; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x333332b1, -0x81, 0x33333332, x3, 160, x4)
+
+inst_51:
+// rs1_val == -33,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x21; op2val:0x40
+TEST_CR_OP( c.add, x10, x11, 0x1f, -0x21, 0x40, x3, 164, x4)
+
+inst_52:
+// rs1_val == -17,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x11; op2val:-0x10000001
+TEST_CR_OP( c.add, x10, x11, 0xefffffee, -0x11, -0x10000001, x3, 168, x4)
+
+inst_53:
+// rs1_val == -9, rs2_val == 33554432
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x9; op2val:0x2000000
+TEST_CR_OP( c.add, x10, x11, 0x1fffff7, -0x9, 0x2000000, x3, 172, x4)
+
+inst_54:
+// rs1_val == -3, rs2_val == 1431655765
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x3; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55555552, -0x3, 0x55555555, x3, 176, x4)
+
+inst_55:
+// rs1_val == -2,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x2; op2val:0x20000000
+TEST_CR_OP( c.add, x10, x11, 0x1ffffffe, -0x2, 0x20000000, x3, 180, x4)
+
+inst_56:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1)), rs1_val == 4
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:-0x80000000
+TEST_CR_OP( c.add, x10, x11, 0x80000004, 0x4, -0x80000000, x3, 184, x4)
+
+inst_57:
+// rs2_val == 1073741824,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x6; op2val:0x40000000
+TEST_CR_OP( c.add, x10, x11, 0x3ffffffa, -0x6, 0x40000000, x3, 188, x4)
+
+inst_58:
+// rs2_val == 268435456,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x8; op2val:0x10000000
+TEST_CR_OP( c.add, x10, x11, 0xffffff8, -0x8, 0x10000000, x3, 192, x4)
+
+inst_59:
+// rs2_val == 134217728,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x6; op2val:0x8000000
+TEST_CR_OP( c.add, x10, x11, 0x7fffffa, -0x6, 0x8000000, x3, 196, x4)
+
+inst_60:
+// rs2_val == 67108864,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x5; op2val:0x4000000
+TEST_CR_OP( c.add, x10, x11, 0x3fffffb, -0x5, 0x4000000, x3, 200, x4)
+
+inst_61:
+// rs2_val == 2097152,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x200000
+TEST_CR_OP( c.add, x10, x11, 0x55755556, 0x55555556, 0x200000, x3, 204, x4)
+
+inst_62:
+// rs2_val == 262144,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x40000
+TEST_CR_OP( c.add, x10, x11, 0x40002, 0x2, 0x40000, x3, 208, x4)
+
+inst_63:
+// rs2_val == 131072,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x20; op2val:0x20000
+TEST_CR_OP( c.add, x10, x11, 0x20020, 0x20, 0x20000, x3, 212, x4)
+
+inst_64:
+// rs2_val == 65536,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x201; op2val:0x10000
+TEST_CR_OP( c.add, x10, x11, 0xfdff, -0x201, 0x10000, x3, 216, x4)
+
+inst_65:
+// rs2_val == 32768,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x2000001; op2val:0x8000
+TEST_CR_OP( c.add, x10, x11, 0xfe007fff, -0x2000001, 0x8000, x3, 220, x4)
+
+inst_66:
+// rs2_val == 16384,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x1001; op2val:0x4000
+TEST_CR_OP( c.add, x10, x11, 0x2fff, -0x1001, 0x4000, x3, 224, x4)
+
+inst_67:
+// rs2_val == 8192,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x8001; op2val:0x2000
+TEST_CR_OP( c.add, x10, x11, 0xffff9fff, -0x8001, 0x2000, x3, 228, x4)
+
+inst_68:
+// rs2_val == 4096,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x1000
+TEST_CR_OP( c.add, x10, x11, 0xffff5afc, -0xb504, 0x1000, x3, 232, x4)
+
+inst_69:
+// rs2_val == 2048,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x4000001; op2val:0x800
+TEST_CR_OP( c.add, x10, x11, 0xfc0007ff, -0x4000001, 0x800, x3, 236, x4)
+
+inst_70:
+// rs2_val == 1024, rs1_val == 4096
+// opcode: c.add; op1:x10; op2:x11; op1val:0x1000; op2val:0x400
+TEST_CR_OP( c.add, x10, x11, 0x1400, 0x1000, 0x400, x3, 240, x4)
+
+inst_71:
+// rs2_val == 512, rs1_val == -1431655766
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x200
+TEST_CR_OP( c.add, x10, x11, 0xaaaaacaa, -0x55555556, 0x200, x3, 244, x4)
+
+inst_72:
+// rs2_val == 256, rs1_val == 262144
+// opcode: c.add; op1:x10; op2:x11; op1val:0x40000; op2val:0x100
+TEST_CR_OP( c.add, x10, x11, 0x40100, 0x40000, 0x100, x3, 248, x4)
+
+inst_73:
+// rs2_val == 128,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x4000001; op2val:0x80
+TEST_CR_OP( c.add, x10, x11, 0xfc00007f, -0x4000001, 0x80, x3, 252, x4)
+
+inst_74:
+// rs2_val == 32,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x11; op2val:0x20
+TEST_CR_OP( c.add, x10, x11, 0xf, -0x11, 0x20, x3, 256, x4)
+
+inst_75:
+// rs2_val == 16, rs1_val == 256
+// opcode: c.add; op1:x10; op2:x11; op1val:0x100; op2val:0x10
+TEST_CR_OP( c.add, x10, x11, 0x110, 0x100, 0x10, x3, 260, x4)
+
+inst_76:
+// rs2_val == 8,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x8
+TEST_CR_OP( c.add, x10, x11, 0xa, 0x2, 0x8, x3, 264, x4)
+
+inst_77:
+// rs2_val == 2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x10000; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x10002, 0x10000, 0x2, x3, 268, x4)
+
+inst_78:
+// rs2_val == 1,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x1
+TEST_CR_OP( c.add, x10, x11, 0x5, 0x4, 0x1, x3, 272, x4)
+
+inst_79:
+// rs1_val == 134217728,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x8000000; op2val:-0xa
+TEST_CR_OP( c.add, x10, x11, 0x7fffff6, 0x8000000, -0xa, x3, 276, x4)
+
+inst_80:
+// rs1_val == 67108864,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4000000; op2val:-0x200001
+TEST_CR_OP( c.add, x10, x11, 0x3dfffff, 0x4000000, -0x200001, x3, 280, x4)
+
+inst_81:
+// rs1_val == 16777216,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x1000000; op2val:-0x4
+TEST_CR_OP( c.add, x10, x11, 0xfffffc, 0x1000000, -0x4, x3, 284, x4)
+
+inst_82:
+// rs1_val == 8388608, rs2_val == 0
+// opcode: c.add; op1:x10; op2:x11; op1val:0x800000; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x800000, 0x800000, 0x0, x3, 288, x4)
+
+inst_83:
+// rs1_val == 2097152,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x200000; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x66866666, 0x200000, 0x66666666, x3, 292, x4)
+
+inst_84:
+// rs1_val == 1048576,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x100000; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55655556, 0x100000, 0x55555556, x3, 296, x4)
+
+inst_85:
+// rs1_val == 524288,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x80000; op2val:0x200
+TEST_CR_OP( c.add, x10, x11, 0x80200, 0x80000, 0x200, x3, 300, x4)
+
+inst_86:
+// rs1_val == 32768,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x8000; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaab2aab, 0x8000, -0x55555555, x3, 304, x4)
+
+inst_87:
+// rs1_val == 16384,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4000; op2val:0x100
+TEST_CR_OP( c.add, x10, x11, 0x4100, 0x4000, 0x100, x3, 308, x4)
+
+inst_88:
+// rs1_val == 2048,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x800; op2val:0x8000
+TEST_CR_OP( c.add, x10, x11, 0x8800, 0x800, 0x8000, x3, 312, x4)
+
+inst_89:
+// rs1_val == 1024,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x400; op2val:0x1000000
+TEST_CR_OP( c.add, x10, x11, 0x1000400, 0x400, 0x1000000, x3, 316, x4)
+
+inst_90:
+// rs1_val == 512,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x200; op2val:0x40000
+TEST_CR_OP( c.add, x10, x11, 0x40200, 0x200, 0x40000, x3, 320, x4)
+
+inst_91:
+// rs1_val == 128,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x80; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xb585, 0x80, 0xb505, x3, 324, x4)
+
+inst_92:
+// rs1_val == 16,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x10; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xb514, 0x10, 0xb504, x3, 328, x4)
+
+inst_93:
+// rs1_val == 1,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x1; op2val:-0x81
+TEST_CR_OP( c.add, x10, x11, 0xffffff80, 0x1, -0x81, x3, 332, x4)
+
+inst_94:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x16a0a, 0xb505, 0xb505, x3, 336, x4)
+
+inst_95:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x2, 0xb505, -0xb503, x3, 340, x4)
+
+inst_96:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x66671b6c, 0xb505, 0x66666667, x3, 344, x4)
+
+inst_97:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x3333e839, 0xb505, 0x33333334, x3, 348, x4)
+
+inst_98:
+// rs1_val==46341 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xb50b, 0xb505, 0x6, x3, 352, x4)
+
+inst_99:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaab5fb0, 0xb505, -0x55555555, x3, 356, x4)
+
+inst_100:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55560a5b, 0xb505, 0x55555556, x3, 360, x4)
+
+inst_101:
+// rs1_val==46341 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xb509, 0xb505, 0x4, x3, 364, x4)
+
+inst_102:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x16a08, 0xb505, 0xb503, x3, 368, x4)
+
+inst_103:
+// rs1_val==46341 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0xb505, 0xb505, 0x0, x3, 372, x4)
+
+inst_104:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x66671b6a, 0xb505, 0x66666665, x3, 376, x4)
+
+inst_105:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x3333e837, 0xb505, 0x33333332, x3, 380, x4)
+
+inst_106:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x55560a59, 0xb505, 0x55555554, x3, 384, x4)
+
+inst_107:
+// rs1_val==46341 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0xb507, 0xb505, 0x2, x3, 388, x4)
+
+inst_108:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x16a09, 0xb505, 0xb504, x3, 392, x4)
+
+inst_109:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x1, 0xb505, -0xb504, x3, 396, x4)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x66671b6b, 0xb505, 0x66666666, x3, 400, x4)
+
+inst_111:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x3333e838, 0xb505, 0x33333333, x3, 404, x4)
+
+inst_112:
+// rs1_val==46341 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xb50a, 0xb505, 0x5, x3, 408, x4)
+
+inst_113:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaab5faf, 0xb505, -0x55555556, x3, 412, x4)
+
+inst_114:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55560a5a, 0xb505, 0x55555555, x3, 416, x4)
+
+inst_115:
+// rs1_val==46341 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb505; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0xb508, 0xb505, 0x3, x3, 420, x4)
+
+inst_116:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x2, -0xb503, 0xb505, x3, 424, x4)
+
+inst_117:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xfffe95fa, -0xb503, -0xb503, x3, 428, x4)
+
+inst_118:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x6665b164, -0xb503, 0x66666667, x3, 432, x4)
+
+inst_119:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x33327e31, -0xb503, 0x33333334, x3, 436, x4)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xffff4b03, -0xb503, 0x6, x3, 440, x4)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaa9f5a8, -0xb503, -0x55555555, x3, 444, x4)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x5554a053, -0xb503, 0x55555556, x3, 448, x4)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xffff4b01, -0xb503, 0x4, x3, 452, x4)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x0, -0xb503, 0xb503, x3, 456, x4)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0xffff4afd, -0xb503, 0x0, x3, 460, x4)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x6665b162, -0xb503, 0x66666665, x3, 464, x4)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x33327e2f, -0xb503, 0x33333332, x3, 468, x4)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x5554a051, -0xb503, 0x55555554, x3, 472, x4)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0xffff4aff, -0xb503, 0x2, x3, 476, x4)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x1, -0xb503, 0xb504, x3, 480, x4)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xfffe95f9, -0xb503, -0xb504, x3, 484, x4)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x6665b163, -0xb503, 0x66666666, x3, 488, x4)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x33327e30, -0xb503, 0x33333333, x3, 492, x4)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xffff4b02, -0xb503, 0x5, x3, 496, x4)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaa9f5a7, -0xb503, -0x55555556, x3, 500, x4)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x5554a052, -0xb503, 0x55555555, x3, 504, x4)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb503; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0xffff4b00, -0xb503, 0x3, x3, 508, x4)
+
+inst_138:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x66671b6c, 0x66666667, 0xb505, x3, 512, x4)
+
+inst_139:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x6665b164, 0x66666667, -0xb503, x3, 516, x4)
+
+inst_140:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0xccccccce, 0x66666667, 0x66666667, x3, 520, x4)
+
+inst_141:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x9999999b, 0x66666667, 0x33333334, x3, 524, x4)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x6666666d, 0x66666667, 0x6, x3, 528, x4)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x11111112, 0x66666667, -0x55555555, x3, 532, x4)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbd, 0x66666667, 0x55555556, x3, 536, x4)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x6666666b, 0x66666667, 0x4, x3, 540, x4)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x66671b6a, 0x66666667, 0xb503, x3, 544, x4)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x66666667, 0x66666667, 0x0, x3, 548, x4)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0xcccccccc, 0x66666667, 0x66666665, x3, 552, x4)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x99999999, 0x66666667, 0x33333332, x3, 556, x4)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbb, 0x66666667, 0x55555554, x3, 560, x4)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x66666669, 0x66666667, 0x2, x3, 564, x4)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x66671b6b, 0x66666667, 0xb504, x3, 568, x4)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x6665b163, 0x66666667, -0xb504, x3, 572, x4)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0xcccccccd, 0x66666667, 0x66666666, x3, 576, x4)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x9999999a, 0x66666667, 0x33333333, x3, 580, x4)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x6666666c, 0x66666667, 0x5, x3, 584, x4)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x11111111, 0x66666667, -0x55555556, x3, 588, x4)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbc, 0x66666667, 0x55555555, x3, 592, x4)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666667; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x6666666a, 0x66666667, 0x3, x3, 596, x4)
+
+inst_160:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x3333e839, 0x33333334, 0xb505, x3, 600, x4)
+
+inst_161:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x33327e31, 0x33333334, -0xb503, x3, 604, x4)
+
+inst_162:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x9999999b, 0x33333334, 0x66666667, x3, 608, x4)
+
+inst_163:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x66666668, 0x33333334, 0x33333334, x3, 612, x4)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x3333333a, 0x33333334, 0x6, x3, 616, x4)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xdddddddf, 0x33333334, -0x55555555, x3, 620, x4)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x8888888a, 0x33333334, 0x55555556, x3, 624, x4)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x33333338, 0x33333334, 0x4, x3, 628, x4)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x3333e837, 0x33333334, 0xb503, x3, 632, x4)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x33333334, 0x33333334, 0x0, x3, 636, x4)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x99999999, 0x33333334, 0x66666665, x3, 640, x4)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x66666666, 0x33333334, 0x33333332, x3, 644, x4)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x88888888, 0x33333334, 0x55555554, x3, 648, x4)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x33333336, 0x33333334, 0x2, x3, 652, x4)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x3333e838, 0x33333334, 0xb504, x3, 656, x4)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x33327e30, 0x33333334, -0xb504, x3, 660, x4)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x9999999a, 0x33333334, 0x66666666, x3, 664, x4)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x66666667, 0x33333334, 0x33333333, x3, 668, x4)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x33333339, 0x33333334, 0x5, x3, 672, x4)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xddddddde, 0x33333334, -0x55555556, x3, 676, x4)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x88888889, 0x33333334, 0x55555555, x3, 680, x4)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333334; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x33333337, 0x33333334, 0x3, x3, 684, x4)
+
+inst_182:
+// rs1_val==6 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xb50b, 0x6, 0xb505, x3, 688, x4)
+
+inst_183:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xffff4b03, 0x6, -0xb503, x3, 692, x4)
+
+inst_184:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x6666666d, 0x6, 0x66666667, x3, 696, x4)
+
+inst_185:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x3333333a, 0x6, 0x33333334, x3, 700, x4)
+
+inst_186:
+// rs1_val==6 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xc, 0x6, 0x6, x3, 704, x4)
+
+inst_187:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaab1, 0x6, -0x55555555, x3, 708, x4)
+
+inst_188:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x5555555c, 0x6, 0x55555556, x3, 712, x4)
+
+inst_189:
+// rs1_val==6 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xa, 0x6, 0x4, x3, 716, x4)
+
+inst_190:
+// rs1_val==6 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xb509, 0x6, 0xb503, x3, 720, x4)
+
+inst_191:
+// rs1_val==6 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x6, 0x6, 0x0, x3, 724, x4)
+
+inst_192:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x6666666b, 0x6, 0x66666665, x3, 728, x4)
+
+inst_193:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x33333338, 0x6, 0x33333332, x3, 732, x4)
+
+inst_194:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x5555555a, 0x6, 0x55555554, x3, 736, x4)
+
+inst_195:
+// rs1_val==6 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x8, 0x6, 0x2, x3, 740, x4)
+
+inst_196:
+// rs1_val==6 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xb50a, 0x6, 0xb504, x3, 744, x4)
+
+inst_197:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xffff4b02, 0x6, -0xb504, x3, 748, x4)
+
+inst_198:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x6666666c, 0x6, 0x66666666, x3, 752, x4)
+
+inst_199:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x33333339, 0x6, 0x33333333, x3, 756, x4)
+
+inst_200:
+// rs1_val==6 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xb, 0x6, 0x5, x3, 760, x4)
+
+inst_201:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaab0, 0x6, -0x55555556, x3, 764, x4)
+
+inst_202:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x5555555b, 0x6, 0x55555555, x3, 768, x4)
+
+inst_203:
+// rs1_val==6 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x6; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x9, 0x6, 0x3, x3, 772, x4)
+
+inst_204:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xaaab5fb0, -0x55555555, 0xb505, x3, 776, x4)
+
+inst_205:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xaaa9f5a8, -0x55555555, -0xb503, x3, 780, x4)
+
+inst_206:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x11111112, -0x55555555, 0x66666667, x3, 784, x4)
+
+inst_207:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0xdddddddf, -0x55555555, 0x33333334, x3, 788, x4)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaab1, -0x55555555, 0x6, x3, 792, x4)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55555556, -0x55555555, -0x55555555, x3, 796, x4)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x1, -0x55555555, 0x55555556, x3, 800, x4)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaf, -0x55555555, 0x4, x3, 804, x4)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xaaab5fae, -0x55555555, 0xb503, x3, 808, x4)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaab, -0x55555555, 0x0, x3, 812, x4)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x11111110, -0x55555555, 0x66666665, x3, 816, x4)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0xdddddddd, -0x55555555, 0x33333332, x3, 820, x4)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0xffffffff, -0x55555555, 0x55555554, x3, 824, x4)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaad, -0x55555555, 0x2, x3, 828, x4)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xaaab5faf, -0x55555555, 0xb504, x3, 832, x4)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xaaa9f5a7, -0x55555555, -0xb504, x3, 836, x4)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x11111111, -0x55555555, 0x66666666, x3, 840, x4)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0xddddddde, -0x55555555, 0x33333333, x3, 844, x4)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaab0, -0x55555555, 0x5, x3, 848, x4)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55555555, -0x55555555, -0x55555556, x3, 852, x4)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x0, -0x55555555, 0x55555555, x3, 856, x4)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaae, -0x55555555, 0x3, x3, 860, x4)
+
+inst_226:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x55560a5b, 0x55555556, 0xb505, x3, 864, x4)
+
+inst_227:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x5554a053, 0x55555556, -0xb503, x3, 868, x4)
+
+inst_228:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbd, 0x55555556, 0x66666667, x3, 872, x4)
+
+inst_229:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x8888888a, 0x55555556, 0x33333334, x3, 876, x4)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x5555555c, 0x55555556, 0x6, x3, 880, x4)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x1, 0x55555556, -0x55555555, x3, 884, x4)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaac, 0x55555556, 0x55555556, x3, 888, x4)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x5555555a, 0x55555556, 0x4, x3, 892, x4)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x55560a59, 0x55555556, 0xb503, x3, 896, x4)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x55555556, 0x55555556, 0x0, x3, 900, x4)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbb, 0x55555556, 0x66666665, x3, 904, x4)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x88888888, 0x55555556, 0x33333332, x3, 908, x4)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaa, 0x55555556, 0x55555554, x3, 912, x4)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x55555558, 0x55555556, 0x2, x3, 916, x4)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x55560a5a, 0x55555556, 0xb504, x3, 920, x4)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x5554a052, 0x55555556, -0xb504, x3, 924, x4)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbc, 0x55555556, 0x66666666, x3, 928, x4)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x88888889, 0x55555556, 0x33333333, x3, 932, x4)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x5555555b, 0x55555556, 0x5, x3, 936, x4)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x0, 0x55555556, -0x55555556, x3, 940, x4)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaab, 0x55555556, 0x55555555, x3, 944, x4)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555556; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x55555559, 0x55555556, 0x3, x3, 948, x4)
+
+inst_248:
+// rs1_val==4 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xb509, 0x4, 0xb505, x3, 952, x4)
+
+inst_249:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xffff4b01, 0x4, -0xb503, x3, 956, x4)
+
+inst_250:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x6666666b, 0x4, 0x66666667, x3, 960, x4)
+
+inst_251:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x33333338, 0x4, 0x33333334, x3, 964, x4)
+
+inst_252:
+// rs1_val==4 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xa, 0x4, 0x6, x3, 968, x4)
+
+inst_253:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaf, 0x4, -0x55555555, x3, 972, x4)
+
+inst_254:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x5555555a, 0x4, 0x55555556, x3, 976, x4)
+
+inst_255:
+// rs1_val==4 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x8, 0x4, 0x4, x3, 980, x4)
+
+inst_256:
+// rs1_val==4 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xb507, 0x4, 0xb503, x3, 984, x4)
+
+inst_257:
+// rs1_val==4 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x4, 0x4, 0x0, x3, 988, x4)
+
+inst_258:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x66666669, 0x4, 0x66666665, x3, 992, x4)
+
+inst_259:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x33333336, 0x4, 0x33333332, x3, 996, x4)
+
+inst_260:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x55555558, 0x4, 0x55555554, x3, 1000, x4)
+
+inst_261:
+// rs1_val==4 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x6, 0x4, 0x2, x3, 1004, x4)
+
+inst_262:
+// rs1_val==4 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xb508, 0x4, 0xb504, x3, 1008, x4)
+
+inst_263:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xffff4b00, 0x4, -0xb504, x3, 1012, x4)
+
+inst_264:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x6666666a, 0x4, 0x66666666, x3, 1016, x4)
+
+inst_265:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x33333337, 0x4, 0x33333333, x3, 1020, x4)
+
+inst_266:
+// rs1_val==4 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x9, 0x4, 0x5, x3, 1024, x4)
+
+inst_267:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaae, 0x4, -0x55555556, x3, 1028, x4)
+
+inst_268:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55555559, 0x4, 0x55555555, x3, 1032, x4)
+
+inst_269:
+// rs1_val==4 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x4; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x7, 0x4, 0x3, x3, 1036, x4)
+
+inst_270:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x16a08, 0xb503, 0xb505, x3, 1040, x4)
+
+inst_271:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x0, 0xb503, -0xb503, x3, 1044, x4)
+
+inst_272:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x66671b6a, 0xb503, 0x66666667, x3, 1048, x4)
+
+inst_273:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x3333e837, 0xb503, 0x33333334, x3, 1052, x4)
+
+inst_274:
+// rs1_val==46339 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xb509, 0xb503, 0x6, x3, 1056, x4)
+
+inst_275:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaab5fae, 0xb503, -0x55555555, x3, 1060, x4)
+
+inst_276:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55560a59, 0xb503, 0x55555556, x3, 1064, x4)
+
+inst_277:
+// rs1_val==46339 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xb507, 0xb503, 0x4, x3, 1068, x4)
+
+inst_278:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x16a06, 0xb503, 0xb503, x3, 1072, x4)
+
+inst_279:
+// rs1_val==46339 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0xb503, 0xb503, 0x0, x3, 1076, x4)
+
+inst_280:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x66671b68, 0xb503, 0x66666665, x3, 1080, x4)
+
+inst_281:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x3333e835, 0xb503, 0x33333332, x3, 1084, x4)
+
+inst_282:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x55560a57, 0xb503, 0x55555554, x3, 1088, x4)
+
+inst_283:
+// rs1_val==46339 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0xb505, 0xb503, 0x2, x3, 1092, x4)
+
+inst_284:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x16a07, 0xb503, 0xb504, x3, 1096, x4)
+
+inst_285:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xffffffff, 0xb503, -0xb504, x3, 1100, x4)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x66671b69, 0xb503, 0x66666666, x3, 1104, x4)
+
+inst_287:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x3333e836, 0xb503, 0x33333333, x3, 1108, x4)
+
+inst_288:
+// rs1_val==46339 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xb508, 0xb503, 0x5, x3, 1112, x4)
+
+inst_289:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaab5fad, 0xb503, -0x55555556, x3, 1116, x4)
+
+inst_290:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55560a58, 0xb503, 0x55555555, x3, 1120, x4)
+
+inst_291:
+// rs1_val==46339 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb503; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0xb506, 0xb503, 0x3, x3, 1124, x4)
+
+inst_292:
+// rs1_val==0 and rs2_val==46341, rs1_val == 0
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xb505, 0x0, 0xb505, x3, 1128, x4)
+
+inst_293:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xffff4afd, 0x0, -0xb503, x3, 1132, x4)
+
+inst_294:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x66666667, 0x0, 0x66666667, x3, 1136, x4)
+
+inst_295:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x33333334, 0x0, 0x33333334, x3, 1140, x4)
+
+inst_296:
+// rs1_val==0 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x6, 0x0, 0x6, x3, 1144, x4)
+
+inst_297:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaab, 0x0, -0x55555555, x3, 1148, x4)
+
+inst_298:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55555556, 0x0, 0x55555556, x3, 1152, x4)
+
+inst_299:
+// rs1_val==0 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x4, 0x0, 0x4, x3, 1156, x4)
+
+inst_300:
+// rs1_val==0 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xb503, 0x0, 0xb503, x3, 1160, x4)
+
+inst_301:
+// rs1_val==0 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x0, 0x0, 0x0, x3, 1164, x4)
+
+inst_302:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x66666665, 0x0, 0x66666665, x3, 1168, x4)
+
+inst_303:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x33333332, 0x0, 0x33333332, x3, 1172, x4)
+
+inst_304:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x55555554, 0x0, 0x55555554, x3, 1176, x4)
+
+inst_305:
+// rs1_val==0 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x2, 0x0, 0x2, x3, 1180, x4)
+
+inst_306:
+// rs1_val==0 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xb504, 0x0, 0xb504, x3, 1184, x4)
+
+inst_307:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xffff4afc, 0x0, -0xb504, x3, 1188, x4)
+
+inst_308:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x66666666, 0x0, 0x66666666, x3, 1192, x4)
+
+inst_309:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x33333333, 0x0, 0x33333333, x3, 1196, x4)
+
+inst_310:
+// rs1_val==0 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x5, 0x0, 0x5, x3, 1200, x4)
+
+inst_311:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaa, 0x0, -0x55555556, x3, 1204, x4)
+
+inst_312:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55555555, 0x0, 0x55555555, x3, 1208, x4)
+
+inst_313:
+// rs1_val==0 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x0; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x3, 0x0, 0x3, x3, 1212, x4)
+
+inst_314:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x66671b6a, 0x66666665, 0xb505, x3, 1216, x4)
+
+inst_315:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x6665b162, 0x66666665, -0xb503, x3, 1220, x4)
+
+inst_316:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0xcccccccc, 0x66666665, 0x66666667, x3, 1224, x4)
+
+inst_317:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x99999999, 0x66666665, 0x33333334, x3, 1228, x4)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x6666666b, 0x66666665, 0x6, x3, 1232, x4)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x11111110, 0x66666665, -0x55555555, x3, 1236, x4)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbb, 0x66666665, 0x55555556, x3, 1240, x4)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x66666669, 0x66666665, 0x4, x3, 1244, x4)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x66671b68, 0x66666665, 0xb503, x3, 1248, x4)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x66666665, 0x66666665, 0x0, x3, 1252, x4)
+
+inst_324:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x33333333, 0x33333333, 0x0, x3, 1256, x4)
+
+inst_325:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x99999998, 0x33333333, 0x66666665, x3, 1260, x4)
+
+inst_326:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x66666665, 0x33333333, 0x33333332, x3, 1264, x4)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x88888887, 0x33333333, 0x55555554, x3, 1268, x4)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x33333335, 0x33333333, 0x2, x3, 1272, x4)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x3333e837, 0x33333333, 0xb504, x3, 1276, x4)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x33327e2f, 0x33333333, -0xb504, x3, 1280, x4)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x99999999, 0x33333333, 0x66666666, x3, 1284, x4)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x66666666, 0x33333333, 0x33333333, x3, 1288, x4)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x33333338, 0x33333333, 0x5, x3, 1292, x4)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xdddddddd, 0x33333333, -0x55555556, x3, 1296, x4)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x88888888, 0x33333333, 0x55555555, x3, 1300, x4)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x33333336, 0x33333333, 0x3, x3, 1304, x4)
+
+inst_337:
+// rs1_val==5 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xb50a, 0x5, 0xb505, x3, 1308, x4)
+
+inst_338:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xffff4b02, 0x5, -0xb503, x3, 1312, x4)
+
+inst_339:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x6666666c, 0x5, 0x66666667, x3, 1316, x4)
+
+inst_340:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x33333339, 0x5, 0x33333334, x3, 1320, x4)
+
+inst_341:
+// rs1_val==5 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xb, 0x5, 0x6, x3, 1324, x4)
+
+inst_342:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaab0, 0x5, -0x55555555, x3, 1328, x4)
+
+inst_343:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x5555555b, 0x5, 0x55555556, x3, 1332, x4)
+
+inst_344:
+// rs1_val==5 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x9, 0x5, 0x4, x3, 1336, x4)
+
+inst_345:
+// rs1_val==5 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xb508, 0x5, 0xb503, x3, 1340, x4)
+
+inst_346:
+// rs1_val==5 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x5, 0x5, 0x0, x3, 1344, x4)
+
+inst_347:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x6666666a, 0x5, 0x66666665, x3, 1348, x4)
+
+inst_348:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x33333337, 0x5, 0x33333332, x3, 1352, x4)
+
+inst_349:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x55555559, 0x5, 0x55555554, x3, 1356, x4)
+
+inst_350:
+// rs1_val==5 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x7, 0x5, 0x2, x3, 1360, x4)
+
+inst_351:
+// rs1_val==5 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xb509, 0x5, 0xb504, x3, 1364, x4)
+
+inst_352:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xffff4b01, 0x5, -0xb504, x3, 1368, x4)
+
+inst_353:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x6666666b, 0x5, 0x66666666, x3, 1372, x4)
+
+inst_354:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x33333338, 0x5, 0x33333333, x3, 1376, x4)
+
+inst_355:
+// rs1_val==5 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xa, 0x5, 0x5, x3, 1380, x4)
+
+inst_356:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaf, 0x5, -0x55555556, x3, 1384, x4)
+
+inst_357:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x5555555a, 0x5, 0x55555555, x3, 1388, x4)
+
+inst_358:
+// rs1_val==5 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x5; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x8, 0x5, 0x3, x3, 1392, x4)
+
+inst_359:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xaaab5faf, -0x55555556, 0xb505, x3, 1396, x4)
+
+inst_360:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xaaa9f5a7, -0x55555556, -0xb503, x3, 1400, x4)
+
+inst_361:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x11111111, -0x55555556, 0x66666667, x3, 1404, x4)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0xddddddde, -0x55555556, 0x33333334, x3, 1408, x4)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaab0, -0x55555556, 0x6, x3, 1412, x4)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55555555, -0x55555556, -0x55555555, x3, 1416, x4)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x0, -0x55555556, 0x55555556, x3, 1420, x4)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaae, -0x55555556, 0x4, x3, 1424, x4)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xaaab5fad, -0x55555556, 0xb503, x3, 1428, x4)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaa, -0x55555556, 0x0, x3, 1432, x4)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x1111110f, -0x55555556, 0x66666665, x3, 1436, x4)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0xdddddddc, -0x55555556, 0x33333332, x3, 1440, x4)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0xfffffffe, -0x55555556, 0x55555554, x3, 1444, x4)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaac, -0x55555556, 0x2, x3, 1448, x4)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xaaab5fae, -0x55555556, 0xb504, x3, 1452, x4)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xaaa9f5a6, -0x55555556, -0xb504, x3, 1456, x4)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x11111110, -0x55555556, 0x66666666, x3, 1460, x4)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0xdddddddd, -0x55555556, 0x33333333, x3, 1464, x4)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaf, -0x55555556, 0x5, x3, 1468, x4)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55555554, -0x55555556, -0x55555556, x3, 1472, x4)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xffffffff, -0x55555556, 0x55555555, x3, 1476, x4)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaad, -0x55555556, 0x3, x3, 1480, x4)
+
+inst_381:
+// rs1_val==1431655765 and rs2_val==46341, rs1_val == 1431655765
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x55560a5a, 0x55555555, 0xb505, x3, 1484, x4)
+
+inst_382:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x5554a052, 0x55555555, -0xb503, x3, 1488, x4)
+
+inst_383:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbc, 0x55555555, 0x66666667, x3, 1492, x4)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x88888889, 0x55555555, 0x33333334, x3, 1496, x4)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x5555555b, 0x55555555, 0x6, x3, 1500, x4)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x0, 0x55555555, -0x55555555, x3, 1504, x4)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaab, 0x55555555, 0x55555556, x3, 1508, x4)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x55555559, 0x55555555, 0x4, x3, 1512, x4)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x55560a58, 0x55555555, 0xb503, x3, 1516, x4)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x55555555, 0x55555555, 0x0, x3, 1520, x4)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbba, 0x55555555, 0x66666665, x3, 1524, x4)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x88888887, 0x55555555, 0x33333332, x3, 1528, x4)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaa9, 0x55555555, 0x55555554, x3, 1532, x4)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x55555557, 0x55555555, 0x2, x3, 1536, x4)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x55560a59, 0x55555555, 0xb504, x3, 1540, x4)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x5554a051, 0x55555555, -0xb504, x3, 1544, x4)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbb, 0x55555555, 0x66666666, x3, 1548, x4)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x88888888, 0x55555555, 0x33333333, x3, 1552, x4)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x5555555a, 0x55555555, 0x5, x3, 1556, x4)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xffffffff, 0x55555555, -0x55555556, x3, 1560, x4)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaa, 0x55555555, 0x55555555, x3, 1564, x4)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555555; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x55555558, 0x55555555, 0x3, x3, 1568, x4)
+
+inst_403:
+// rs1_val==3 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xb508, 0x3, 0xb505, x3, 1572, x4)
+
+inst_404:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xffff4b00, 0x3, -0xb503, x3, 1576, x4)
+
+inst_405:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x6666666a, 0x3, 0x66666667, x3, 1580, x4)
+
+inst_406:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x33333337, 0x3, 0x33333334, x3, 1584, x4)
+
+inst_407:
+// rs1_val==3 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x9, 0x3, 0x6, x3, 1588, x4)
+
+inst_408:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaae, 0x3, -0x55555555, x3, 1592, x4)
+
+inst_409:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55555559, 0x3, 0x55555556, x3, 1596, x4)
+
+inst_410:
+// rs1_val==3 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x7, 0x3, 0x4, x3, 1600, x4)
+
+inst_411:
+// rs1_val==3 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xb506, 0x3, 0xb503, x3, 1604, x4)
+
+inst_412:
+// rs1_val==3 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x3, 0x3, 0x0, x3, 1608, x4)
+
+inst_413:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x66666668, 0x3, 0x66666665, x3, 1612, x4)
+
+inst_414:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x33333335, 0x3, 0x33333332, x3, 1616, x4)
+
+inst_415:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x55555557, 0x3, 0x55555554, x3, 1620, x4)
+
+inst_416:
+// rs1_val==3 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x5, 0x3, 0x2, x3, 1624, x4)
+
+inst_417:
+// rs1_val==3 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xb507, 0x3, 0xb504, x3, 1628, x4)
+
+inst_418:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xffff4aff, 0x3, -0xb504, x3, 1632, x4)
+
+inst_419:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x66666669, 0x3, 0x66666666, x3, 1636, x4)
+
+inst_420:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x33333336, 0x3, 0x33333333, x3, 1640, x4)
+
+inst_421:
+// rs1_val==3 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x8, 0x3, 0x5, x3, 1644, x4)
+
+inst_422:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaad, 0x3, -0x55555556, x3, 1648, x4)
+
+inst_423:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55555558, 0x3, 0x55555555, x3, 1652, x4)
+
+inst_424:
+// rs1_val==3 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x3; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x6, 0x3, 0x3, x3, 1656, x4)
+
+inst_425:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0xccccccca, 0x66666665, 0x66666665, x3, 1660, x4)
+
+inst_426:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x99999997, 0x66666665, 0x33333332, x3, 1664, x4)
+
+inst_427:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbb9, 0x66666665, 0x55555554, x3, 1668, x4)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x66666667, 0x66666665, 0x2, x3, 1672, x4)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x66671b69, 0x66666665, 0xb504, x3, 1676, x4)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x6665b161, 0x66666665, -0xb504, x3, 1680, x4)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0xcccccccb, 0x66666665, 0x66666666, x3, 1684, x4)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x99999998, 0x66666665, 0x33333333, x3, 1688, x4)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x6666666a, 0x66666665, 0x5, x3, 1692, x4)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x1111110f, 0x66666665, -0x55555556, x3, 1696, x4)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbba, 0x66666665, 0x55555555, x3, 1700, x4)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666665; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x66666668, 0x66666665, 0x3, x3, 1704, x4)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x3333e837, 0x33333332, 0xb505, x3, 1708, x4)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x33327e2f, 0x33333332, -0xb503, x3, 1712, x4)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x99999999, 0x33333332, 0x66666667, x3, 1716, x4)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x66666666, 0x33333332, 0x33333334, x3, 1720, x4)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x33333338, 0x33333332, 0x6, x3, 1724, x4)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xdddddddd, 0x33333332, -0x55555555, x3, 1728, x4)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x88888888, 0x33333332, 0x55555556, x3, 1732, x4)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x33333336, 0x33333332, 0x4, x3, 1736, x4)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x3333e835, 0x33333332, 0xb503, x3, 1740, x4)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x33333332, 0x33333332, 0x0, x3, 1744, x4)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x99999997, 0x33333332, 0x66666665, x3, 1748, x4)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x66666664, 0x33333332, 0x33333332, x3, 1752, x4)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x88888886, 0x33333332, 0x55555554, x3, 1756, x4)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x33333334, 0x33333332, 0x2, x3, 1760, x4)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x3333e836, 0x33333332, 0xb504, x3, 1764, x4)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x33327e2e, 0x33333332, -0xb504, x3, 1768, x4)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x99999998, 0x33333332, 0x66666666, x3, 1772, x4)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x66666665, 0x33333332, 0x33333333, x3, 1776, x4)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x33333337, 0x33333332, 0x5, x3, 1780, x4)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xdddddddc, 0x33333332, -0x55555556, x3, 1784, x4)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x88888887, 0x33333332, 0x55555555, x3, 1788, x4)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333332; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x33333335, 0x33333332, 0x3, x3, 1792, x4)
+
+inst_459:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x55560a59, 0x55555554, 0xb505, x3, 1796, x4)
+
+inst_460:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x5554a051, 0x55555554, -0xb503, x3, 1800, x4)
+
+inst_461:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbb, 0x55555554, 0x66666667, x3, 1804, x4)
+
+inst_462:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x88888888, 0x55555554, 0x33333334, x3, 1808, x4)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x5555555a, 0x55555554, 0x6, x3, 1812, x4)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xffffffff, 0x55555554, -0x55555555, x3, 1816, x4)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaaa, 0x55555554, 0x55555556, x3, 1820, x4)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x55555558, 0x55555554, 0x4, x3, 1824, x4)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x55560a57, 0x55555554, 0xb503, x3, 1828, x4)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x55555554, 0x55555554, 0x0, x3, 1832, x4)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbb9, 0x55555554, 0x66666665, x3, 1836, x4)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x88888886, 0x55555554, 0x33333332, x3, 1840, x4)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaa8, 0x55555554, 0x55555554, x3, 1844, x4)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x55555556, 0x55555554, 0x2, x3, 1848, x4)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x55560a58, 0x55555554, 0xb504, x3, 1852, x4)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x5554a050, 0x55555554, -0xb504, x3, 1856, x4)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbba, 0x55555554, 0x66666666, x3, 1860, x4)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x88888887, 0x55555554, 0x33333333, x3, 1864, x4)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x55555559, 0x55555554, 0x5, x3, 1868, x4)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xfffffffe, 0x55555554, -0x55555556, x3, 1872, x4)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaa9, 0x55555554, 0x55555555, x3, 1876, x4)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x55555554; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x55555557, 0x55555554, 0x3, x3, 1880, x4)
+
+inst_481:
+// rs1_val==2 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0xb507, 0x2, 0xb505, x3, 1884, x4)
+
+inst_482:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xffff4aff, 0x2, -0xb503, x3, 1888, x4)
+
+inst_483:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x66666669, 0x2, 0x66666667, x3, 1892, x4)
+
+inst_484:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x33333336, 0x2, 0x33333334, x3, 1896, x4)
+
+inst_485:
+// rs1_val==2 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x8, 0x2, 0x6, x3, 1900, x4)
+
+inst_486:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaad, 0x2, -0x55555555, x3, 1904, x4)
+
+inst_487:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55555558, 0x2, 0x55555556, x3, 1908, x4)
+
+inst_488:
+// rs1_val==2 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x6, 0x2, 0x4, x3, 1912, x4)
+
+inst_489:
+// rs1_val==2 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xb505, 0x2, 0xb503, x3, 1916, x4)
+
+inst_490:
+// rs1_val==2 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x2, 0x2, 0x0, x3, 1920, x4)
+
+inst_491:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x66666667, 0x2, 0x66666665, x3, 1924, x4)
+
+inst_492:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x33333334, 0x2, 0x33333332, x3, 1928, x4)
+
+inst_493:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x55555556, 0x2, 0x55555554, x3, 1932, x4)
+
+inst_494:
+// rs1_val==2 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x4, 0x2, 0x2, x3, 1936, x4)
+
+inst_495:
+// rs1_val==2 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0xb506, 0x2, 0xb504, x3, 1940, x4)
+
+inst_496:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xffff4afe, 0x2, -0xb504, x3, 1944, x4)
+
+inst_497:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x66666668, 0x2, 0x66666666, x3, 1948, x4)
+
+inst_498:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x33333335, 0x2, 0x33333333, x3, 1952, x4)
+
+inst_499:
+// rs1_val==2 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x7, 0x2, 0x5, x3, 1956, x4)
+
+inst_500:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaaaaaac, 0x2, -0x55555556, x3, 1960, x4)
+
+inst_501:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55555557, 0x2, 0x55555555, x3, 1964, x4)
+
+inst_502:
+// rs1_val==2 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x5, 0x2, 0x3, x3, 1968, x4)
+
+inst_503:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x16a09, 0xb504, 0xb505, x3, 1972, x4)
+
+inst_504:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x1, 0xb504, -0xb503, x3, 1976, x4)
+
+inst_505:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x66671b6b, 0xb504, 0x66666667, x3, 1980, x4)
+
+inst_506:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x3333e838, 0xb504, 0x33333334, x3, 1984, x4)
+
+inst_507:
+// rs1_val==46340 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xb50a, 0xb504, 0x6, x3, 1988, x4)
+
+inst_508:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaab5faf, 0xb504, -0x55555555, x3, 1992, x4)
+
+inst_509:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x55560a5a, 0xb504, 0x55555556, x3, 1996, x4)
+
+inst_510:
+// rs1_val==46340 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xb508, 0xb504, 0x4, x3, 2000, x4)
+
+inst_511:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x16a07, 0xb504, 0xb503, x3, 2004, x4)
+
+inst_512:
+// rs1_val==46340 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0xb504, 0xb504, 0x0, x3, 2008, x4)
+
+inst_513:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x66671b69, 0xb504, 0x66666665, x3, 2012, x4)
+
+inst_514:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x3333e836, 0xb504, 0x33333332, x3, 2016, x4)
+
+inst_515:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x55560a58, 0xb504, 0x55555554, x3, 2020, x4)
+
+inst_516:
+// rs1_val==46340 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0xb506, 0xb504, 0x2, x3, 2024, x4)
+
+inst_517:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x16a08, 0xb504, 0xb504, x3, 2028, x4)
+
+inst_518:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x0, 0xb504, -0xb504, x3, 2032, x4)
+
+inst_519:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x66671b6a, 0xb504, 0x66666666, x3, 2036, x4)
+
+inst_520:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x3333e837, 0xb504, 0x33333333, x3, 2040, x4)
+
+inst_521:
+// rs1_val==46340 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xb509, 0xb504, 0x5, x3, 2044, x4)
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_522:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaab5fae, 0xb504, -0x55555556, x3, 0, x4)
+
+inst_523:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x55560a59, 0xb504, 0x55555555, x3, 4, x4)
+
+inst_524:
+// rs1_val==46340 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0xb504; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0xb507, 0xb504, 0x3, x3, 8, x4)
+
+inst_525:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x1, -0xb504, 0xb505, x3, 12, x4)
+
+inst_526:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0xfffe95f9, -0xb504, -0xb503, x3, 16, x4)
+
+inst_527:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x6665b163, -0xb504, 0x66666667, x3, 20, x4)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x33327e30, -0xb504, 0x33333334, x3, 24, x4)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0xffff4b02, -0xb504, 0x6, x3, 28, x4)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xaaa9f5a7, -0xb504, -0x55555555, x3, 32, x4)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x5554a052, -0xb504, 0x55555556, x3, 36, x4)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0xffff4b00, -0xb504, 0x4, x3, 40, x4)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0xffffffff, -0xb504, 0xb503, x3, 44, x4)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0xffff4afc, -0xb504, 0x0, x3, 48, x4)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0x6665b161, -0xb504, 0x66666665, x3, 52, x4)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x33327e2e, -0xb504, 0x33333332, x3, 56, x4)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0x5554a050, -0xb504, 0x55555554, x3, 60, x4)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0xffff4afe, -0xb504, 0x2, x3, 64, x4)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x0, -0xb504, 0xb504, x3, 68, x4)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0xfffe95f8, -0xb504, -0xb504, x3, 72, x4)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0x6665b162, -0xb504, 0x66666666, x3, 76, x4)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x33327e2f, -0xb504, 0x33333333, x3, 80, x4)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0xffff4b01, -0xb504, 0x5, x3, 84, x4)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xaaa9f5a6, -0xb504, -0x55555556, x3, 88, x4)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x5554a051, -0xb504, 0x55555555, x3, 92, x4)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:-0xb504; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0xffff4aff, -0xb504, 0x3, x3, 96, x4)
+
+inst_547:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x66671b6b, 0x66666666, 0xb505, x3, 100, x4)
+
+inst_548:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x6665b163, 0x66666666, -0xb503, x3, 104, x4)
+
+inst_549:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0xcccccccd, 0x66666666, 0x66666667, x3, 108, x4)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x9999999a, 0x66666666, 0x33333334, x3, 112, x4)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x6666666c, 0x66666666, 0x6, x3, 116, x4)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0x11111111, 0x66666666, -0x55555555, x3, 120, x4)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbc, 0x66666666, 0x55555556, x3, 124, x4)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x6666666a, 0x66666666, 0x4, x3, 128, x4)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x66671b69, 0x66666666, 0xb503, x3, 132, x4)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x0
+TEST_CR_OP( c.add, x10, x11, 0x66666666, 0x66666666, 0x0, x3, 136, x4)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665
+TEST_CR_OP( c.add, x10, x11, 0xcccccccb, 0x66666666, 0x66666665, x3, 140, x4)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332
+TEST_CR_OP( c.add, x10, x11, 0x99999998, 0x66666666, 0x33333332, x3, 144, x4)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbba, 0x66666666, 0x55555554, x3, 148, x4)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x2
+TEST_CR_OP( c.add, x10, x11, 0x66666668, 0x66666666, 0x2, x3, 152, x4)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504
+TEST_CR_OP( c.add, x10, x11, 0x66671b6a, 0x66666666, 0xb504, x3, 156, x4)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504
+TEST_CR_OP( c.add, x10, x11, 0x6665b162, 0x66666666, -0xb504, x3, 160, x4)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666
+TEST_CR_OP( c.add, x10, x11, 0xcccccccc, 0x66666666, 0x66666666, x3, 164, x4)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333
+TEST_CR_OP( c.add, x10, x11, 0x99999999, 0x66666666, 0x33333333, x3, 168, x4)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x5
+TEST_CR_OP( c.add, x10, x11, 0x6666666b, 0x66666666, 0x5, x3, 172, x4)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x11111110, 0x66666666, -0x55555556, x3, 176, x4)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xbbbbbbbb, 0x66666666, 0x55555555, x3, 180, x4)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x66666666; op2val:0x3
+TEST_CR_OP( c.add, x10, x11, 0x66666669, 0x66666666, 0x3, x3, 184, x4)
+
+inst_569:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505
+TEST_CR_OP( c.add, x10, x11, 0x3333e838, 0x33333333, 0xb505, x3, 188, x4)
+
+inst_570:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503
+TEST_CR_OP( c.add, x10, x11, 0x33327e30, 0x33333333, -0xb503, x3, 192, x4)
+
+inst_571:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667
+TEST_CR_OP( c.add, x10, x11, 0x9999999a, 0x33333333, 0x66666667, x3, 196, x4)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334
+TEST_CR_OP( c.add, x10, x11, 0x66666667, 0x33333333, 0x33333334, x3, 200, x4)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x6
+TEST_CR_OP( c.add, x10, x11, 0x33333339, 0x33333333, 0x6, x3, 204, x4)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555
+TEST_CR_OP( c.add, x10, x11, 0xddddddde, 0x33333333, -0x55555555, x3, 208, x4)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556
+TEST_CR_OP( c.add, x10, x11, 0x88888889, 0x33333333, 0x55555556, x3, 212, x4)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0x4
+TEST_CR_OP( c.add, x10, x11, 0x33333337, 0x33333333, 0x4, x3, 216, x4)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: c.add; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503
+TEST_CR_OP( c.add, x10, x11, 0x3333e836, 0x33333333, 0xb503, x3, 220, x4)
+
+inst_578:
+// rs2_val == 2147483647, rs1_val == 8192, rs2_val == (2**(xlen-1)-1)
+// opcode: c.add; op1:x10; op2:x11; op1val:0x2000; op2val:0x7fffffff
+TEST_CR_OP( c.add, x10, x11, 0x80001fff, 0x2000, 0x7fffffff, x3, 224, x4)
+
+inst_579:
+// rs2_val == -16777217, rs1_val == -32769
+// opcode: c.add; op1:x10; op2:x11; op1val:-0x8001; op2val:-0x1000001
+TEST_CR_OP( c.add, x10, x11, 0xfeff7ffe, -0x8001, -0x1000001, x3, 228, x4)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 10*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 58*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi-01.S
new file mode 100644
index 000000000..e66b5b4e7
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi-01.S
@@ -0,0 +1,1950 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.addi instruction of the RISC-V C extension for the caddi covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",caddi)
+
+RVTEST_SIGBASE( x10,signature_x10_1)
+
+inst_0:
+// rd==x13, imm_val == (-2**(6-1)), rs1_val != imm_val, rs1_val > 0 and imm_val < 0, imm_val == -32, rs1_val == 8388608
+// opcode:c.addi; op1:x13; dest:x13 op1val:0x800000; immval:-0x20
+TEST_CI_OP( c.addi, x13, 0x7fffe0, 0x800000, -0x20, x10, 0, x8)
+
+inst_1:
+// rd==x2, rs1_val == 2147483647, imm_val == 4, rs1_val == (2**(xlen-1)-1), rs1_val > 0 and imm_val > 0
+// opcode:c.addi; op1:x2; dest:x2 op1val:0x7fffffff; immval:0x4
+TEST_CI_OP( c.addi, x2, 0x80000003, 0x7fffffff, 0x4, x10, 4, x8)
+
+inst_2:
+// rd==x4, rs1_val == -1073741825, rs1_val < 0 and imm_val < 0
+// opcode:c.addi; op1:x4; dest:x4 op1val:-0x40000001; immval:-0x1
+TEST_CI_OP( c.addi, x4, 0xbffffffe, -0x40000001, -0x1, x10, 8, x8)
+
+inst_3:
+// rd==x7, rs1_val == -536870913, imm_val == 8, rs1_val < 0 and imm_val > 0
+// opcode:c.addi; op1:x7; dest:x7 op1val:-0x20000001; immval:0x8
+TEST_CI_OP( c.addi, x7, 0xe0000007, -0x20000001, 0x8, x10, 12, x8)
+
+inst_4:
+// rd==x11, rs1_val == -268435457,
+// opcode:c.addi; op1:x11; dest:x11 op1val:-0x10000001; immval:0x4
+TEST_CI_OP( c.addi, x11, 0xf0000003, -0x10000001, 0x4, x10, 16, x8)
+
+inst_5:
+// rd==x6, rs1_val == -134217729,
+// opcode:c.addi; op1:x6; dest:x6 op1val:-0x8000001; immval:0x5
+TEST_CI_OP( c.addi, x6, 0xf8000004, -0x8000001, 0x5, x10, 20, x8)
+
+inst_6:
+// rd==x9, rs1_val == -67108865,
+// opcode:c.addi; op1:x9; dest:x9 op1val:-0x4000001; immval:0x4
+TEST_CI_OP( c.addi, x9, 0xfc000003, -0x4000001, 0x4, x10, 24, x8)
+
+inst_7:
+// rd==x5, rs1_val == -33554433, imm_val == -5
+// opcode:c.addi; op1:x5; dest:x5 op1val:-0x2000001; immval:-0x5
+TEST_CI_OP( c.addi, x5, 0xfdfffffa, -0x2000001, -0x5, x10, 28, x8)
+
+inst_8:
+// rd==x12, rs1_val == -16777217, imm_val == 16
+// opcode:c.addi; op1:x12; dest:x12 op1val:-0x1000001; immval:0x10
+TEST_CI_OP( c.addi, x12, 0xff00000f, -0x1000001, 0x10, x10, 32, x8)
+
+inst_9:
+// rd==x3, rs1_val == -8388609,
+// opcode:c.addi; op1:x3; dest:x3 op1val:-0x800001; immval:-0x5
+TEST_CI_OP( c.addi, x3, 0xff7ffffa, -0x800001, -0x5, x10, 36, x8)
+
+inst_10:
+// rd==x1, rs1_val == -4194305,
+// opcode:c.addi; op1:x1; dest:x1 op1val:-0x400001; immval:-0x20
+TEST_CI_OP( c.addi, x1, 0xffbfffdf, -0x400001, -0x20, x10, 40, x8)
+
+inst_11:
+// rd==x8, rs1_val == -2097153, imm_val == -2
+// opcode:c.addi; op1:x8; dest:x8 op1val:-0x200001; immval:-0x2
+TEST_CI_OP( c.addi, x8, 0xffdffffd, -0x200001, -0x2, x10, 44, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_12:
+// rd==x15, rs1_val == -1048577,
+// opcode:c.addi; op1:x15; dest:x15 op1val:-0x100001; immval:-0x2
+TEST_CI_OP( c.addi, x15, 0xffeffffd, -0x100001, -0x2, x1, 0, x2)
+
+inst_13:
+// rd==x14, rs1_val == -524289,
+// opcode:c.addi; op1:x14; dest:x14 op1val:-0x80001; immval:0x5
+TEST_CI_OP( c.addi, x14, 0xfff80004, -0x80001, 0x5, x1, 4, x2)
+
+inst_14:
+// rd==x10, rs1_val == -262145,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x40001; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xfffc0004, -0x40001, 0x5, x1, 8, x2)
+
+inst_15:
+// rs1_val == -131073,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x20001; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xfffe0003, -0x20001, 0x4, x1, 12, x2)
+
+inst_16:
+// rs1_val == -65537,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x10001; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xfffefffa, -0x10001, -0x5, x1, 16, x2)
+
+inst_17:
+// rs1_val == -32769,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x8001; immval:-0x8
+TEST_CI_OP( c.addi, x10, 0xffff7ff7, -0x8001, -0x8, x1, 20, x2)
+
+inst_18:
+// rs1_val == -16385,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x4001; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xffffc005, -0x4001, 0x6, x1, 24, x2)
+
+inst_19:
+// rs1_val == -8193,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x2001; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xffffe002, -0x2001, 0x3, x1, 28, x2)
+
+inst_20:
+// rs1_val == -4097,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x1001; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xffffeffd, -0x1001, -0x2, x1, 32, x2)
+
+inst_21:
+// rs1_val == -2049,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x801; immval:-0x20
+TEST_CI_OP( c.addi, x10, 0xfffff7df, -0x801, -0x20, x1, 36, x2)
+
+inst_22:
+// rs1_val == -1025,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x401; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xfffffc03, -0x401, 0x4, x1, 40, x2)
+
+inst_23:
+// rs1_val == -513, imm_val == -17
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x201; immval:-0x11
+TEST_CI_OP( c.addi, x10, 0xfffffdee, -0x201, -0x11, x1, 44, x2)
+
+inst_24:
+// rs1_val == -257,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x101; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xfffffefe, -0x101, -0x1, x1, 48, x2)
+
+inst_25:
+// rs1_val == -129,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x81; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xffffff82, -0x81, 0x3, x1, 52, x2)
+
+inst_26:
+// rs1_val == -65,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x41; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xffffffba, -0x41, -0x5, x1, 56, x2)
+
+inst_27:
+// rs1_val == -33, imm_val == -22
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x21; immval:-0x16
+TEST_CI_OP( c.addi, x10, 0xffffffc9, -0x21, -0x16, x1, 60, x2)
+
+inst_28:
+// rs1_val == -17,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x11; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xffffffeb, -0x11, -0x4, x1, 64, x2)
+
+inst_29:
+// rs1_val == -9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x9; immval:-0x10
+TEST_CI_OP( c.addi, x10, 0xffffffe7, -0x9, -0x10, x1, 68, x2)
+
+inst_30:
+// rs1_val == -5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x5; immval:-0x10
+TEST_CI_OP( c.addi, x10, 0xffffffeb, -0x5, -0x10, x1, 72, x2)
+
+inst_31:
+// rs1_val == -3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x3; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x1, -0x3, 0x4, x1, 76, x2)
+
+inst_32:
+// rs1_val == -2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x2; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x5, -0x2, 0x7, x1, 80, x2)
+
+inst_33:
+// imm_val == 31, imm_val == (2**(6-1)-1)
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x3; immval:0x1f
+TEST_CI_OP( c.addi, x10, 0x1c, -0x3, 0x1f, x1, 84, x2)
+
+inst_34:
+// imm_val == -9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x10000001; immval:-0x9
+TEST_CI_OP( c.addi, x10, 0xeffffff6, -0x10000001, -0x9, x1, 88, x2)
+
+inst_35:
+// imm_val == -3, rs1_val == 524288
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x80000; immval:-0x3
+TEST_CI_OP( c.addi, x10, 0x7fffd, 0x80000, -0x3, x1, 92, x2)
+
+inst_36:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x80000000; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x80000009, -0x80000000, 0x9, x1, 96, x2)
+
+inst_37:
+// rs1_val == 1073741824,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x40000000; immval:-0x16
+TEST_CI_OP( c.addi, x10, 0x3fffffea, 0x40000000, -0x16, x1, 100, x2)
+
+inst_38:
+// rs1_val == 536870912,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x20000000; immval:0x10
+TEST_CI_OP( c.addi, x10, 0x20000010, 0x20000000, 0x10, x1, 104, x2)
+
+inst_39:
+// rs1_val == 268435456, imm_val == 0
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x10000000; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x10000000, 0x10000000, 0x0, x1, 108, x2)
+
+inst_40:
+// rs1_val == 134217728,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x8000000; immval:0x10
+TEST_CI_OP( c.addi, x10, 0x8000010, 0x8000000, 0x10, x1, 112, x2)
+
+inst_41:
+// rs1_val == 67108864,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4000000; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x4000005, 0x4000000, 0x5, x1, 116, x2)
+
+inst_42:
+// rs1_val == 33554432,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2000000; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x2000006, 0x2000000, 0x6, x1, 120, x2)
+
+inst_43:
+// rs1_val == 16777216,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x1000000; immval:0x8
+TEST_CI_OP( c.addi, x10, 0x1000008, 0x1000000, 0x8, x1, 124, x2)
+
+inst_44:
+// rs1_val == 4194304,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x400000; immval:0xf
+TEST_CI_OP( c.addi, x10, 0x40000f, 0x400000, 0xf, x1, 128, x2)
+
+inst_45:
+// rs1_val == 2097152,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x200000; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x200009, 0x200000, 0x9, x1, 132, x2)
+
+inst_46:
+// rs1_val == 1048576,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x100000; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x100009, 0x100000, 0x9, x1, 136, x2)
+
+inst_47:
+// rs1_val == 262144,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x40000; immval:0xf
+TEST_CI_OP( c.addi, x10, 0x4000f, 0x40000, 0xf, x1, 140, x2)
+
+inst_48:
+// rs1_val == 131072,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x20000; immval:-0x16
+TEST_CI_OP( c.addi, x10, 0x1ffea, 0x20000, -0x16, x1, 144, x2)
+
+inst_49:
+// rs1_val == 65536,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x10000; immval:-0x10
+TEST_CI_OP( c.addi, x10, 0xfff0, 0x10000, -0x10, x1, 148, x2)
+
+inst_50:
+// rs1_val == 32768,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x8000; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x8006, 0x8000, 0x6, x1, 152, x2)
+
+inst_51:
+// rs1_val == 16384,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4000; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x4005, 0x4000, 0x5, x1, 156, x2)
+
+inst_52:
+// rs1_val == 8192,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2000; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x2007, 0x2000, 0x7, x1, 160, x2)
+
+inst_53:
+// rs1_val == 4096,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x1000; immval:-0x7
+TEST_CI_OP( c.addi, x10, 0xff9, 0x1000, -0x7, x1, 164, x2)
+
+inst_54:
+// rs1_val == 2048,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x800; immval:-0xa
+TEST_CI_OP( c.addi, x10, 0x7f6, 0x800, -0xa, x1, 168, x2)
+
+inst_55:
+// rs1_val == 1024,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x400; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x3fe, 0x400, -0x2, x1, 172, x2)
+
+inst_56:
+// rs1_val == 512,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x200; immval:-0x11
+TEST_CI_OP( c.addi, x10, 0x1ef, 0x200, -0x11, x1, 176, x2)
+
+inst_57:
+// rs1_val == 256, imm_val == 1
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x100; immval:0x1
+TEST_CI_OP( c.addi, x10, 0x101, 0x100, 0x1, x1, 180, x2)
+
+inst_58:
+// rs1_val == 128,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x80; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x84, 0x80, 0x4, x1, 184, x2)
+
+inst_59:
+// rs1_val == 64,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x40; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x46, 0x40, 0x6, x1, 188, x2)
+
+inst_60:
+// rs1_val == 32,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x20; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x24, 0x20, 0x4, x1, 192, x2)
+
+inst_61:
+// rs1_val == 16,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x10; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x13, 0x10, 0x3, x1, 196, x2)
+
+inst_62:
+// rs1_val == 8,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x8; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xc, 0x8, 0x4, x1, 200, x2)
+
+inst_63:
+// rs1_val == 4, rs1_val==4 and imm_val==0
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x4, 0x4, 0x0, x1, 204, x2)
+
+inst_64:
+// rs1_val == 2, rs1_val==2 and imm_val==-1
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x1, 0x2, -0x1, x1, 208, x2)
+
+inst_65:
+// rs1_val == 1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x1; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x5, 0x1, 0x4, x1, 212, x2)
+
+inst_66:
+// imm_val == 2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x1; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x1, -0x1, 0x2, x1, 216, x2)
+
+inst_67:
+// rs1_val==46341 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xb50b, 0xb505, 0x6, x1, 220, x2)
+
+inst_68:
+// rs1_val==46341 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xb501, 0xb505, -0x4, x1, 224, x2)
+
+inst_69:
+// rs1_val==46341 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xb504, 0xb505, -0x1, x1, 228, x2)
+
+inst_70:
+// rs1_val==46341 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xb50c, 0xb505, 0x7, x1, 232, x2)
+
+inst_71:
+// rs1_val==46341 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xb509, 0xb505, 0x4, x1, 236, x2)
+
+inst_72:
+// rs1_val==46341 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xb510, 0xb505, 0xb, x1, 240, x2)
+
+inst_73:
+// rs1_val==46341 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0x0
+TEST_CI_OP( c.addi, x10, 0xb505, 0xb505, 0x0, x1, 244, x2)
+
+inst_74:
+// rs1_val==46341 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xb50a, 0xb505, 0x5, x1, 248, x2)
+
+inst_75:
+// rs1_val==46341 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0x2
+TEST_CI_OP( c.addi, x10, 0xb507, 0xb505, 0x2, x1, 252, x2)
+
+inst_76:
+// rs1_val==46341 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xb50e, 0xb505, 0x9, x1, 256, x2)
+
+inst_77:
+// rs1_val==46341 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xb500, 0xb505, -0x5, x1, 260, x2)
+
+inst_78:
+// rs1_val==46341 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xb503, 0xb505, -0x2, x1, 264, x2)
+
+inst_79:
+// rs1_val==46341 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xb508, 0xb505, 0x3, x1, 268, x2)
+
+inst_80:
+// rs1_val==46341 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb505; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xb50f, 0xb505, 0xa, x1, 272, x2)
+
+inst_81:
+// rs1_val==-46339 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xffff4b03, -0xb503, 0x6, x1, 276, x2)
+
+inst_82:
+// rs1_val==-46339 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xffff4af9, -0xb503, -0x4, x1, 280, x2)
+
+inst_83:
+// rs1_val==-46339 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xffff4afc, -0xb503, -0x1, x1, 284, x2)
+
+inst_84:
+// rs1_val==-46339 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xffff4b04, -0xb503, 0x7, x1, 288, x2)
+
+inst_85:
+// rs1_val==-46339 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xffff4b01, -0xb503, 0x4, x1, 292, x2)
+
+inst_86:
+// rs1_val==-46339 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xffff4b08, -0xb503, 0xb, x1, 296, x2)
+
+inst_87:
+// rs1_val==-46339 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0x0
+TEST_CI_OP( c.addi, x10, 0xffff4afd, -0xb503, 0x0, x1, 300, x2)
+
+inst_88:
+// rs1_val==-46339 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xffff4b02, -0xb503, 0x5, x1, 304, x2)
+
+inst_89:
+// rs1_val==-46339 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0x2
+TEST_CI_OP( c.addi, x10, 0xffff4aff, -0xb503, 0x2, x1, 308, x2)
+
+inst_90:
+// rs1_val==-46339 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xffff4b06, -0xb503, 0x9, x1, 312, x2)
+
+inst_91:
+// rs1_val==-46339 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xffff4af8, -0xb503, -0x5, x1, 316, x2)
+
+inst_92:
+// rs1_val==-46339 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xffff4afb, -0xb503, -0x2, x1, 320, x2)
+
+inst_93:
+// rs1_val==-46339 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xffff4b00, -0xb503, 0x3, x1, 324, x2)
+
+inst_94:
+// rs1_val==-46339 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb503; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xffff4b07, -0xb503, 0xa, x1, 328, x2)
+
+inst_95:
+// rs1_val==1717986919 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x6666666d, 0x66666667, 0x6, x1, 332, x2)
+
+inst_96:
+// rs1_val==1717986919 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x66666663, 0x66666667, -0x4, x1, 336, x2)
+
+inst_97:
+// rs1_val==1717986919 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x66666666, 0x66666667, -0x1, x1, 340, x2)
+
+inst_98:
+// rs1_val==1717986919 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x6666666e, 0x66666667, 0x7, x1, 344, x2)
+
+inst_99:
+// rs1_val==1717986919 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x6666666b, 0x66666667, 0x4, x1, 348, x2)
+
+inst_100:
+// rs1_val==1717986919 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x66666672, 0x66666667, 0xb, x1, 352, x2)
+
+inst_101:
+// rs1_val==1717986919 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x66666667, 0x66666667, 0x0, x1, 356, x2)
+
+inst_102:
+// rs1_val==1717986919 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x6666666c, 0x66666667, 0x5, x1, 360, x2)
+
+inst_103:
+// rs1_val==1717986919 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x66666669, 0x66666667, 0x2, x1, 364, x2)
+
+inst_104:
+// rs1_val==1717986919 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x66666670, 0x66666667, 0x9, x1, 368, x2)
+
+inst_105:
+// rs1_val==1717986919 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x66666662, 0x66666667, -0x5, x1, 372, x2)
+
+inst_106:
+// rs1_val==1717986919 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x66666665, 0x66666667, -0x2, x1, 376, x2)
+
+inst_107:
+// rs1_val==1717986919 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x6666666a, 0x66666667, 0x3, x1, 380, x2)
+
+inst_108:
+// rs1_val==1717986919 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666667; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x66666671, 0x66666667, 0xa, x1, 384, x2)
+
+inst_109:
+// rs1_val==858993460 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x3333333a, 0x33333334, 0x6, x1, 388, x2)
+
+inst_110:
+// rs1_val==858993460 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x33333330, 0x33333334, -0x4, x1, 392, x2)
+
+inst_111:
+// rs1_val==858993460 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x33333333, 0x33333334, -0x1, x1, 396, x2)
+
+inst_112:
+// rs1_val==858993460 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x3333333b, 0x33333334, 0x7, x1, 400, x2)
+
+inst_113:
+// rs1_val==858993460 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x33333338, 0x33333334, 0x4, x1, 404, x2)
+
+inst_114:
+// rs1_val==858993460 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x3333333f, 0x33333334, 0xb, x1, 408, x2)
+
+inst_115:
+// rs1_val==858993460 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x33333334, 0x33333334, 0x0, x1, 412, x2)
+
+inst_116:
+// rs1_val==858993460 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x33333339, 0x33333334, 0x5, x1, 416, x2)
+
+inst_117:
+// rs1_val==858993460 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x33333336, 0x33333334, 0x2, x1, 420, x2)
+
+inst_118:
+// rs1_val==858993460 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x3333333d, 0x33333334, 0x9, x1, 424, x2)
+
+inst_119:
+// rs1_val==858993460 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x3333332f, 0x33333334, -0x5, x1, 428, x2)
+
+inst_120:
+// rs1_val==858993460 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x33333332, 0x33333334, -0x2, x1, 432, x2)
+
+inst_121:
+// rs1_val==858993460 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x33333337, 0x33333334, 0x3, x1, 436, x2)
+
+inst_122:
+// rs1_val==858993460 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333334; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x3333333e, 0x33333334, 0xa, x1, 440, x2)
+
+inst_123:
+// rs1_val==6 and imm_val==6, rs1_val == imm_val
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xc, 0x6, 0x6, x1, 444, x2)
+
+inst_124:
+// rs1_val==6 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x2, 0x6, -0x4, x1, 448, x2)
+
+inst_125:
+// rs1_val==6 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x5, 0x6, -0x1, x1, 452, x2)
+
+inst_126:
+// rs1_val==6 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xd, 0x6, 0x7, x1, 456, x2)
+
+inst_127:
+// rs1_val==6 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xa, 0x6, 0x4, x1, 460, x2)
+
+inst_128:
+// rs1_val==6 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x11, 0x6, 0xb, x1, 464, x2)
+
+inst_129:
+// rs1_val==6 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x6, 0x6, 0x0, x1, 468, x2)
+
+inst_130:
+// rs1_val==6 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xb, 0x6, 0x5, x1, 472, x2)
+
+inst_131:
+// rs1_val==6 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x8, 0x6, 0x2, x1, 476, x2)
+
+inst_132:
+// rs1_val==6 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xf, 0x6, 0x9, x1, 480, x2)
+
+inst_133:
+// rs1_val==6 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x1, 0x6, -0x5, x1, 484, x2)
+
+inst_134:
+// rs1_val==6 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x4, 0x6, -0x2, x1, 488, x2)
+
+inst_135:
+// rs1_val==6 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x9, 0x6, 0x3, x1, 492, x2)
+
+inst_136:
+// rs1_val==6 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x10, 0x6, 0xa, x1, 496, x2)
+
+inst_137:
+// rs1_val==-1431655765 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xaaaaaab1, -0x55555555, 0x6, x1, 500, x2)
+
+inst_138:
+// rs1_val==-1431655765 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xaaaaaaa7, -0x55555555, -0x4, x1, 504, x2)
+
+inst_139:
+// rs1_val==-1431655765 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xaaaaaaaa, -0x55555555, -0x1, x1, 508, x2)
+
+inst_140:
+// rs1_val==-1431655765 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xaaaaaab2, -0x55555555, 0x7, x1, 512, x2)
+
+inst_141:
+// rs1_val==-1431655765 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xaaaaaaaf, -0x55555555, 0x4, x1, 516, x2)
+
+inst_142:
+// rs1_val==-1431655765 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xaaaaaab6, -0x55555555, 0xb, x1, 520, x2)
+
+inst_143:
+// rs1_val==-1431655765 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0x0
+TEST_CI_OP( c.addi, x10, 0xaaaaaaab, -0x55555555, 0x0, x1, 524, x2)
+
+inst_144:
+// rs1_val==-1431655765 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xaaaaaab0, -0x55555555, 0x5, x1, 528, x2)
+
+inst_145:
+// rs1_val==-1431655765 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0x2
+TEST_CI_OP( c.addi, x10, 0xaaaaaaad, -0x55555555, 0x2, x1, 532, x2)
+
+inst_146:
+// rs1_val==-1431655765 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xaaaaaab4, -0x55555555, 0x9, x1, 536, x2)
+
+inst_147:
+// rs1_val==-1431655765 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xaaaaaaa6, -0x55555555, -0x5, x1, 540, x2)
+
+inst_148:
+// rs1_val==-1431655765 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xaaaaaaa9, -0x55555555, -0x2, x1, 544, x2)
+
+inst_149:
+// rs1_val==-1431655765 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xaaaaaaae, -0x55555555, 0x3, x1, 548, x2)
+
+inst_150:
+// rs1_val==-1431655765 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555555; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xaaaaaab5, -0x55555555, 0xa, x1, 552, x2)
+
+inst_151:
+// rs1_val==1431655766 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x5555555c, 0x55555556, 0x6, x1, 556, x2)
+
+inst_152:
+// rs1_val==1431655766 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x55555552, 0x55555556, -0x4, x1, 560, x2)
+
+inst_153:
+// rs1_val==1431655766 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x55555555, 0x55555556, -0x1, x1, 564, x2)
+
+inst_154:
+// rs1_val==1431655766 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x5555555d, 0x55555556, 0x7, x1, 568, x2)
+
+inst_155:
+// rs1_val==1431655766 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x5555555a, 0x55555556, 0x4, x1, 572, x2)
+
+inst_156:
+// rs1_val==1431655766 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x55555561, 0x55555556, 0xb, x1, 576, x2)
+
+inst_157:
+// rs1_val==1431655766 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x55555556, 0x55555556, 0x0, x1, 580, x2)
+
+inst_158:
+// rs1_val==1431655766 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x5555555b, 0x55555556, 0x5, x1, 584, x2)
+
+inst_159:
+// rs1_val==1431655766 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x55555558, 0x55555556, 0x2, x1, 588, x2)
+
+inst_160:
+// rs1_val==1431655766 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x5555555f, 0x55555556, 0x9, x1, 592, x2)
+
+inst_161:
+// rs1_val==1431655766 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x55555551, 0x55555556, -0x5, x1, 596, x2)
+
+inst_162:
+// rs1_val==1431655766 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x55555554, 0x55555556, -0x2, x1, 600, x2)
+
+inst_163:
+// rs1_val==1431655766 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x55555559, 0x55555556, 0x3, x1, 604, x2)
+
+inst_164:
+// rs1_val==1431655766 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555556; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x55555560, 0x55555556, 0xa, x1, 608, x2)
+
+inst_165:
+// rs1_val==4 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xa, 0x4, 0x6, x1, 612, x2)
+
+inst_166:
+// rs1_val==4 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x0, 0x4, -0x4, x1, 616, x2)
+
+inst_167:
+// rs1_val==4 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x3, 0x4, -0x1, x1, 620, x2)
+
+inst_168:
+// rs1_val==4 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xb, 0x4, 0x7, x1, 624, x2)
+
+inst_169:
+// rs1_val==4 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x8, 0x4, 0x4, x1, 628, x2)
+
+inst_170:
+// rs1_val==4 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xf, 0x4, 0xb, x1, 632, x2)
+
+inst_171:
+// rs1_val==4 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x9, 0x4, 0x5, x1, 636, x2)
+
+inst_172:
+// rs1_val==4 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x6, 0x4, 0x2, x1, 640, x2)
+
+inst_173:
+// rs1_val==4 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xd, 0x4, 0x9, x1, 644, x2)
+
+inst_174:
+// rs1_val==4 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xffffffff, 0x4, -0x5, x1, 648, x2)
+
+inst_175:
+// rs1_val==4 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x2, 0x4, -0x2, x1, 652, x2)
+
+inst_176:
+// rs1_val==4 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x7, 0x4, 0x3, x1, 656, x2)
+
+inst_177:
+// rs1_val==4 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x4; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xe, 0x4, 0xa, x1, 660, x2)
+
+inst_178:
+// rs1_val==46339 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xb509, 0xb503, 0x6, x1, 664, x2)
+
+inst_179:
+// rs1_val==46339 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xb4ff, 0xb503, -0x4, x1, 668, x2)
+
+inst_180:
+// rs1_val==46339 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xb502, 0xb503, -0x1, x1, 672, x2)
+
+inst_181:
+// rs1_val==46339 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xb50a, 0xb503, 0x7, x1, 676, x2)
+
+inst_182:
+// rs1_val==46339 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xb507, 0xb503, 0x4, x1, 680, x2)
+
+inst_183:
+// rs1_val==46339 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xb50e, 0xb503, 0xb, x1, 684, x2)
+
+inst_184:
+// rs1_val==46339 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0x0
+TEST_CI_OP( c.addi, x10, 0xb503, 0xb503, 0x0, x1, 688, x2)
+
+inst_185:
+// rs1_val==46339 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xb508, 0xb503, 0x5, x1, 692, x2)
+
+inst_186:
+// rs1_val==46339 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0x2
+TEST_CI_OP( c.addi, x10, 0xb505, 0xb503, 0x2, x1, 696, x2)
+
+inst_187:
+// rs1_val==46339 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xb50c, 0xb503, 0x9, x1, 700, x2)
+
+inst_188:
+// rs1_val==46339 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xb4fe, 0xb503, -0x5, x1, 704, x2)
+
+inst_189:
+// rs1_val==46339 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xb501, 0xb503, -0x2, x1, 708, x2)
+
+inst_190:
+// rs1_val==46339 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xb506, 0xb503, 0x3, x1, 712, x2)
+
+inst_191:
+// rs1_val==46339 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb503; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xb50d, 0xb503, 0xa, x1, 716, x2)
+
+inst_192:
+// rs1_val==0 and imm_val==6, rs1_val == 0
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x6, 0x0, 0x6, x1, 720, x2)
+
+inst_193:
+// rs1_val==0 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xfffffffc, 0x0, -0x4, x1, 724, x2)
+
+inst_194:
+// rs1_val==0 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xffffffff, 0x0, -0x1, x1, 728, x2)
+
+inst_195:
+// rs1_val==0 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x7, 0x0, 0x7, x1, 732, x2)
+
+inst_196:
+// rs1_val==0 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x4, 0x0, 0x4, x1, 736, x2)
+
+inst_197:
+// rs1_val==0 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xb, 0x0, 0xb, x1, 740, x2)
+
+inst_198:
+// rs1_val==0 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x0, 0x0, 0x0, x1, 744, x2)
+
+inst_199:
+// rs1_val==0 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x5, 0x0, 0x5, x1, 748, x2)
+
+inst_200:
+// rs1_val==0 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x2, 0x0, 0x2, x1, 752, x2)
+
+inst_201:
+// rs1_val==0 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x9, 0x0, 0x9, x1, 756, x2)
+
+inst_202:
+// rs1_val==0 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xfffffffb, 0x0, -0x5, x1, 760, x2)
+
+inst_203:
+// rs1_val==0 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xfffffffe, 0x0, -0x2, x1, 764, x2)
+
+inst_204:
+// rs1_val==0 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x3, 0x0, 0x3, x1, 768, x2)
+
+inst_205:
+// rs1_val==0 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x0; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xa, 0x0, 0xa, x1, 772, x2)
+
+inst_206:
+// rs1_val==1717986917 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x6666666b, 0x66666665, 0x6, x1, 776, x2)
+
+inst_207:
+// rs1_val==1717986917 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x66666661, 0x66666665, -0x4, x1, 780, x2)
+
+inst_208:
+// rs1_val==1717986917 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x66666664, 0x66666665, -0x1, x1, 784, x2)
+
+inst_209:
+// rs1_val==1717986917 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x6666666c, 0x66666665, 0x7, x1, 788, x2)
+
+inst_210:
+// rs1_val==1717986917 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x66666669, 0x66666665, 0x4, x1, 792, x2)
+
+inst_211:
+// rs1_val==1717986917 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x66666670, 0x66666665, 0xb, x1, 796, x2)
+
+inst_212:
+// rs1_val==1717986917 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x66666665, 0x66666665, 0x0, x1, 800, x2)
+
+inst_213:
+// rs1_val==1717986917 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x6666666a, 0x66666665, 0x5, x1, 804, x2)
+
+inst_214:
+// rs1_val==1717986917 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x66666667, 0x66666665, 0x2, x1, 808, x2)
+
+inst_215:
+// rs1_val==1717986917 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x6666666e, 0x66666665, 0x9, x1, 812, x2)
+
+inst_216:
+// rs1_val==1717986917 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x66666660, 0x66666665, -0x5, x1, 816, x2)
+
+inst_217:
+// rs1_val==1717986917 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x66666663, 0x66666665, -0x2, x1, 820, x2)
+
+inst_218:
+// rs1_val==1717986917 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x66666668, 0x66666665, 0x3, x1, 824, x2)
+
+inst_219:
+// rs1_val==1717986917 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666665; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x6666666f, 0x66666665, 0xa, x1, 828, x2)
+
+inst_220:
+// rs1_val==858993458 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x33333338, 0x33333332, 0x6, x1, 832, x2)
+
+inst_221:
+// rs1_val==858993458 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x3333332e, 0x33333332, -0x4, x1, 836, x2)
+
+inst_222:
+// rs1_val==858993458 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x33333331, 0x33333332, -0x1, x1, 840, x2)
+
+inst_223:
+// rs1_val==858993458 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x33333339, 0x33333332, 0x7, x1, 844, x2)
+
+inst_224:
+// rs1_val==858993458 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x33333336, 0x33333332, 0x4, x1, 848, x2)
+
+inst_225:
+// rs1_val==858993458 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x3333333d, 0x33333332, 0xb, x1, 852, x2)
+
+inst_226:
+// rs1_val==858993458 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x33333332, 0x33333332, 0x0, x1, 856, x2)
+
+inst_227:
+// rs1_val==858993458 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x33333337, 0x33333332, 0x5, x1, 860, x2)
+
+inst_228:
+// rs1_val==858993458 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x33333334, 0x33333332, 0x2, x1, 864, x2)
+
+inst_229:
+// rs1_val==858993458 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x3333333b, 0x33333332, 0x9, x1, 868, x2)
+
+inst_230:
+// rs1_val==858993458 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x3333332d, 0x33333332, -0x5, x1, 872, x2)
+
+inst_231:
+// rs1_val==858993458 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x33333330, 0x33333332, -0x2, x1, 876, x2)
+
+inst_232:
+// rs1_val==858993458 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x33333335, 0x33333332, 0x3, x1, 880, x2)
+
+inst_233:
+// rs1_val==858993458 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333332; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x3333333c, 0x33333332, 0xa, x1, 884, x2)
+
+inst_234:
+// rs1_val==1431655764 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x5555555a, 0x55555554, 0x6, x1, 888, x2)
+
+inst_235:
+// rs1_val==1431655764 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x55555550, 0x55555554, -0x4, x1, 892, x2)
+
+inst_236:
+// rs1_val==1431655764 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x55555553, 0x55555554, -0x1, x1, 896, x2)
+
+inst_237:
+// rs1_val==1431655764 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x5555555b, 0x55555554, 0x7, x1, 900, x2)
+
+inst_238:
+// rs1_val==1431655764 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x55555558, 0x55555554, 0x4, x1, 904, x2)
+
+inst_239:
+// rs1_val==1431655764 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x5555555f, 0x55555554, 0xb, x1, 908, x2)
+
+inst_240:
+// rs1_val==1431655764 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x55555554, 0x55555554, 0x0, x1, 912, x2)
+
+inst_241:
+// rs1_val==1431655764 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x55555559, 0x55555554, 0x5, x1, 916, x2)
+
+inst_242:
+// rs1_val==1431655764 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x55555556, 0x55555554, 0x2, x1, 920, x2)
+
+inst_243:
+// rs1_val==1431655764 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x5555555d, 0x55555554, 0x9, x1, 924, x2)
+
+inst_244:
+// rs1_val==1431655764 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x5555554f, 0x55555554, -0x5, x1, 928, x2)
+
+inst_245:
+// rs1_val==1431655764 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x55555552, 0x55555554, -0x2, x1, 932, x2)
+
+inst_246:
+// rs1_val==1431655764 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x55555557, 0x55555554, 0x3, x1, 936, x2)
+
+inst_247:
+// rs1_val==1431655764 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555554; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x5555555e, 0x55555554, 0xa, x1, 940, x2)
+
+inst_248:
+// rs1_val==2 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x8, 0x2, 0x6, x1, 944, x2)
+
+inst_249:
+// rs1_val==2 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xfffffffe, 0x2, -0x4, x1, 948, x2)
+
+inst_250:
+// rs1_val==2 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x9, 0x2, 0x7, x1, 952, x2)
+
+inst_251:
+// rs1_val==2 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x6, 0x2, 0x4, x1, 956, x2)
+
+inst_252:
+// rs1_val==2 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xd, 0x2, 0xb, x1, 960, x2)
+
+inst_253:
+// rs1_val==2 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x2, 0x2, 0x0, x1, 964, x2)
+
+inst_254:
+// rs1_val==2 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x7, 0x2, 0x5, x1, 968, x2)
+
+inst_255:
+// rs1_val==2 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x4, 0x2, 0x2, x1, 972, x2)
+
+inst_256:
+// rs1_val==2 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xb, 0x2, 0x9, x1, 976, x2)
+
+inst_257:
+// rs1_val==2 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xfffffffd, 0x2, -0x5, x1, 980, x2)
+
+inst_258:
+// rs1_val==2 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x0, 0x2, -0x2, x1, 984, x2)
+
+inst_259:
+// rs1_val==2 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x5, 0x2, 0x3, x1, 988, x2)
+
+inst_260:
+// rs1_val==2 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x2; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xc, 0x2, 0xa, x1, 992, x2)
+
+inst_261:
+// rs1_val==46340 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xb50a, 0xb504, 0x6, x1, 996, x2)
+
+inst_262:
+// rs1_val==46340 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xb500, 0xb504, -0x4, x1, 1000, x2)
+
+inst_263:
+// rs1_val==46340 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xb503, 0xb504, -0x1, x1, 1004, x2)
+
+inst_264:
+// rs1_val==46340 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xb50b, 0xb504, 0x7, x1, 1008, x2)
+
+inst_265:
+// rs1_val==46340 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xb508, 0xb504, 0x4, x1, 1012, x2)
+
+inst_266:
+// rs1_val==46340 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xb50f, 0xb504, 0xb, x1, 1016, x2)
+
+inst_267:
+// rs1_val==46340 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0x0
+TEST_CI_OP( c.addi, x10, 0xb504, 0xb504, 0x0, x1, 1020, x2)
+
+inst_268:
+// rs1_val==46340 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xb509, 0xb504, 0x5, x1, 1024, x2)
+
+inst_269:
+// rs1_val==46340 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0x2
+TEST_CI_OP( c.addi, x10, 0xb506, 0xb504, 0x2, x1, 1028, x2)
+
+inst_270:
+// rs1_val==46340 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xb50d, 0xb504, 0x9, x1, 1032, x2)
+
+inst_271:
+// rs1_val==46340 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xb4ff, 0xb504, -0x5, x1, 1036, x2)
+
+inst_272:
+// rs1_val==46340 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xb502, 0xb504, -0x2, x1, 1040, x2)
+
+inst_273:
+// rs1_val==46340 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xb507, 0xb504, 0x3, x1, 1044, x2)
+
+inst_274:
+// rs1_val==46340 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0xb504; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xb50e, 0xb504, 0xa, x1, 1048, x2)
+
+inst_275:
+// rs1_val==-46340 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xffff4b02, -0xb504, 0x6, x1, 1052, x2)
+
+inst_276:
+// rs1_val==-46340 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xffff4af8, -0xb504, -0x4, x1, 1056, x2)
+
+inst_277:
+// rs1_val==-46340 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xffff4afb, -0xb504, -0x1, x1, 1060, x2)
+
+inst_278:
+// rs1_val==-46340 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xffff4b03, -0xb504, 0x7, x1, 1064, x2)
+
+inst_279:
+// rs1_val==-46340 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xffff4b00, -0xb504, 0x4, x1, 1068, x2)
+
+inst_280:
+// rs1_val==-46340 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xffff4b07, -0xb504, 0xb, x1, 1072, x2)
+
+inst_281:
+// rs1_val==-46340 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0x0
+TEST_CI_OP( c.addi, x10, 0xffff4afc, -0xb504, 0x0, x1, 1076, x2)
+
+inst_282:
+// rs1_val==-46340 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xffff4b01, -0xb504, 0x5, x1, 1080, x2)
+
+inst_283:
+// rs1_val==-46340 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0x2
+TEST_CI_OP( c.addi, x10, 0xffff4afe, -0xb504, 0x2, x1, 1084, x2)
+
+inst_284:
+// rs1_val==-46340 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xffff4b05, -0xb504, 0x9, x1, 1088, x2)
+
+inst_285:
+// rs1_val==-46340 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xffff4af7, -0xb504, -0x5, x1, 1092, x2)
+
+inst_286:
+// rs1_val==-46340 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xffff4afa, -0xb504, -0x2, x1, 1096, x2)
+
+inst_287:
+// rs1_val==-46340 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xffff4aff, -0xb504, 0x3, x1, 1100, x2)
+
+inst_288:
+// rs1_val==-46340 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0xb504; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xffff4b06, -0xb504, 0xa, x1, 1104, x2)
+
+inst_289:
+// rs1_val==1717986918 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x6666666c, 0x66666666, 0x6, x1, 1108, x2)
+
+inst_290:
+// rs1_val==1717986918 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x66666662, 0x66666666, -0x4, x1, 1112, x2)
+
+inst_291:
+// rs1_val==1717986918 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x66666665, 0x66666666, -0x1, x1, 1116, x2)
+
+inst_292:
+// rs1_val==1717986918 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x6666666d, 0x66666666, 0x7, x1, 1120, x2)
+
+inst_293:
+// rs1_val==1717986918 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x6666666a, 0x66666666, 0x4, x1, 1124, x2)
+
+inst_294:
+// rs1_val==1717986918 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x66666671, 0x66666666, 0xb, x1, 1128, x2)
+
+inst_295:
+// rs1_val==1717986918 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x66666666, 0x66666666, 0x0, x1, 1132, x2)
+
+inst_296:
+// rs1_val==1717986918 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x6666666b, 0x66666666, 0x5, x1, 1136, x2)
+
+inst_297:
+// rs1_val==1717986918 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x66666668, 0x66666666, 0x2, x1, 1140, x2)
+
+inst_298:
+// rs1_val==1717986918 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x6666666f, 0x66666666, 0x9, x1, 1144, x2)
+
+inst_299:
+// rs1_val==1717986918 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x66666661, 0x66666666, -0x5, x1, 1148, x2)
+
+inst_300:
+// rs1_val==1717986918 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x66666664, 0x66666666, -0x2, x1, 1152, x2)
+
+inst_301:
+// rs1_val==1717986918 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x66666669, 0x66666666, 0x3, x1, 1156, x2)
+
+inst_302:
+// rs1_val==1717986918 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x66666666; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x66666670, 0x66666666, 0xa, x1, 1160, x2)
+
+inst_303:
+// rs1_val==858993459 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x33333339, 0x33333333, 0x6, x1, 1164, x2)
+
+inst_304:
+// rs1_val==858993459 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x3333332f, 0x33333333, -0x4, x1, 1168, x2)
+
+inst_305:
+// rs1_val==858993459 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x33333332, 0x33333333, -0x1, x1, 1172, x2)
+
+inst_306:
+// rs1_val==858993459 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x3333333a, 0x33333333, 0x7, x1, 1176, x2)
+
+inst_307:
+// rs1_val==858993459 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x33333337, 0x33333333, 0x4, x1, 1180, x2)
+
+inst_308:
+// rs1_val==858993459 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x3333333e, 0x33333333, 0xb, x1, 1184, x2)
+
+inst_309:
+// rs1_val==858993459 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x33333333, 0x33333333, 0x0, x1, 1188, x2)
+
+inst_310:
+// rs1_val==858993459 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x33333338, 0x33333333, 0x5, x1, 1192, x2)
+
+inst_311:
+// rs1_val==858993459 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x33333335, 0x33333333, 0x2, x1, 1196, x2)
+
+inst_312:
+// rs1_val==858993459 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x3333333c, 0x33333333, 0x9, x1, 1200, x2)
+
+inst_313:
+// rs1_val==3 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xd, 0x3, 0xa, x1, 1204, x2)
+
+inst_314:
+// rs1_val == -1431655766,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:-0x7
+TEST_CI_OP( c.addi, x10, 0xaaaaaaa3, -0x55555556, -0x7, x1, 1208, x2)
+
+inst_315:
+// rs1_val == 1431655765, rs1_val==1431655765 and imm_val==9
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0x9
+TEST_CI_OP( c.addi, x10, 0x5555555e, 0x55555555, 0x9, x1, 1212, x2)
+
+inst_316:
+// imm_val == 21,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x6; immval:0x15
+TEST_CI_OP( c.addi, x10, 0x1b, 0x6, 0x15, x1, 1216, x2)
+
+inst_317:
+// rs1_val==858993459 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x3333332e, 0x33333333, -0x5, x1, 1220, x2)
+
+inst_318:
+// rs1_val==858993459 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x33333331, 0x33333333, -0x2, x1, 1224, x2)
+
+inst_319:
+// rs1_val==858993459 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x33333336, 0x33333333, 0x3, x1, 1228, x2)
+
+inst_320:
+// rs1_val==858993459 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x33333333; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x3333333d, 0x33333333, 0xa, x1, 1232, x2)
+
+inst_321:
+// rs1_val==5 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xb, 0x5, 0x6, x1, 1236, x2)
+
+inst_322:
+// rs1_val==5 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x1, 0x5, -0x4, x1, 1240, x2)
+
+inst_323:
+// rs1_val==5 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x4, 0x5, -0x1, x1, 1244, x2)
+
+inst_324:
+// rs1_val==5 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xc, 0x5, 0x7, x1, 1248, x2)
+
+inst_325:
+// rs1_val==5 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x9, 0x5, 0x4, x1, 1252, x2)
+
+inst_326:
+// rs1_val==5 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x10, 0x5, 0xb, x1, 1256, x2)
+
+inst_327:
+// rs1_val==5 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x5, 0x5, 0x0, x1, 1260, x2)
+
+inst_328:
+// rs1_val==5 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xa, 0x5, 0x5, x1, 1264, x2)
+
+inst_329:
+// rs1_val==5 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x7, 0x5, 0x2, x1, 1268, x2)
+
+inst_330:
+// rs1_val==5 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xe, 0x5, 0x9, x1, 1272, x2)
+
+inst_331:
+// rs1_val==5 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x0, 0x5, -0x5, x1, 1276, x2)
+
+inst_332:
+// rs1_val==5 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x3, 0x5, -0x2, x1, 1280, x2)
+
+inst_333:
+// rs1_val==5 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x8, 0x5, 0x3, x1, 1284, x2)
+
+inst_334:
+// rs1_val==5 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x5; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xf, 0x5, 0xa, x1, 1288, x2)
+
+inst_335:
+// rs1_val==-1431655766 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0x6
+TEST_CI_OP( c.addi, x10, 0xaaaaaab0, -0x55555556, 0x6, x1, 1292, x2)
+
+inst_336:
+// rs1_val==-1431655766 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xaaaaaaa6, -0x55555556, -0x4, x1, 1296, x2)
+
+inst_337:
+// rs1_val==-1431655766 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0xaaaaaaa9, -0x55555556, -0x1, x1, 1300, x2)
+
+inst_338:
+// rs1_val==-1431655766 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xaaaaaab1, -0x55555556, 0x7, x1, 1304, x2)
+
+inst_339:
+// rs1_val==-1431655766 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0x4
+TEST_CI_OP( c.addi, x10, 0xaaaaaaae, -0x55555556, 0x4, x1, 1308, x2)
+
+inst_340:
+// rs1_val==-1431655766 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xaaaaaab5, -0x55555556, 0xb, x1, 1312, x2)
+
+inst_341:
+// rs1_val==-1431655766 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0x0
+TEST_CI_OP( c.addi, x10, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1316, x2)
+
+inst_342:
+// rs1_val==-1431655766 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0x5
+TEST_CI_OP( c.addi, x10, 0xaaaaaaaf, -0x55555556, 0x5, x1, 1320, x2)
+
+inst_343:
+// rs1_val==-1431655766 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0x2
+TEST_CI_OP( c.addi, x10, 0xaaaaaaac, -0x55555556, 0x2, x1, 1324, x2)
+
+inst_344:
+// rs1_val==-1431655766 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xaaaaaab3, -0x55555556, 0x9, x1, 1328, x2)
+
+inst_345:
+// rs1_val==-1431655766 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xaaaaaaa5, -0x55555556, -0x5, x1, 1332, x2)
+
+inst_346:
+// rs1_val==-1431655766 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0xaaaaaaa8, -0x55555556, -0x2, x1, 1336, x2)
+
+inst_347:
+// rs1_val==-1431655766 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0x3
+TEST_CI_OP( c.addi, x10, 0xaaaaaaad, -0x55555556, 0x3, x1, 1340, x2)
+
+inst_348:
+// rs1_val==-1431655766 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:-0x55555556; immval:0xa
+TEST_CI_OP( c.addi, x10, 0xaaaaaab4, -0x55555556, 0xa, x1, 1344, x2)
+
+inst_349:
+// rs1_val==1431655765 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x5555555b, 0x55555555, 0x6, x1, 1348, x2)
+
+inst_350:
+// rs1_val==1431655765 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0x55555551, 0x55555555, -0x4, x1, 1352, x2)
+
+inst_351:
+// rs1_val==1431655765 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x55555554, 0x55555555, -0x1, x1, 1356, x2)
+
+inst_352:
+// rs1_val==1431655765 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0x7
+TEST_CI_OP( c.addi, x10, 0x5555555c, 0x55555555, 0x7, x1, 1360, x2)
+
+inst_353:
+// rs1_val==1431655765 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x55555559, 0x55555555, 0x4, x1, 1364, x2)
+
+inst_354:
+// rs1_val==1431655765 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0xb
+TEST_CI_OP( c.addi, x10, 0x55555560, 0x55555555, 0xb, x1, 1368, x2)
+
+inst_355:
+// rs1_val==1431655765 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x55555555, 0x55555555, 0x0, x1, 1372, x2)
+
+inst_356:
+// rs1_val==1431655765 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x5555555a, 0x55555555, 0x5, x1, 1376, x2)
+
+inst_357:
+// rs1_val==1431655765 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x55555557, 0x55555555, 0x2, x1, 1380, x2)
+
+inst_358:
+// rs1_val==1431655765 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0x55555550, 0x55555555, -0x5, x1, 1384, x2)
+
+inst_359:
+// rs1_val==1431655765 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x55555553, 0x55555555, -0x2, x1, 1388, x2)
+
+inst_360:
+// rs1_val==1431655765 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x55555558, 0x55555555, 0x3, x1, 1392, x2)
+
+inst_361:
+// rs1_val==1431655765 and imm_val==10,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x55555555; immval:0xa
+TEST_CI_OP( c.addi, x10, 0x5555555f, 0x55555555, 0xa, x1, 1396, x2)
+
+inst_362:
+// rs1_val==3 and imm_val==6,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0x6
+TEST_CI_OP( c.addi, x10, 0x9, 0x3, 0x6, x1, 1400, x2)
+
+inst_363:
+// rs1_val==3 and imm_val==-4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:-0x4
+TEST_CI_OP( c.addi, x10, 0xffffffff, 0x3, -0x4, x1, 1404, x2)
+
+inst_364:
+// rs1_val==3 and imm_val==-1,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:-0x1
+TEST_CI_OP( c.addi, x10, 0x2, 0x3, -0x1, x1, 1408, x2)
+
+inst_365:
+// rs1_val==3 and imm_val==7,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0x7
+TEST_CI_OP( c.addi, x10, 0xa, 0x3, 0x7, x1, 1412, x2)
+
+inst_366:
+// rs1_val==3 and imm_val==4,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0x4
+TEST_CI_OP( c.addi, x10, 0x7, 0x3, 0x4, x1, 1416, x2)
+
+inst_367:
+// rs1_val==3 and imm_val==11,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0xb
+TEST_CI_OP( c.addi, x10, 0xe, 0x3, 0xb, x1, 1420, x2)
+
+inst_368:
+// rs1_val==3 and imm_val==0,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0x0
+TEST_CI_OP( c.addi, x10, 0x3, 0x3, 0x0, x1, 1424, x2)
+
+inst_369:
+// rs1_val==3 and imm_val==5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0x5
+TEST_CI_OP( c.addi, x10, 0x8, 0x3, 0x5, x1, 1428, x2)
+
+inst_370:
+// rs1_val==3 and imm_val==2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0x2
+TEST_CI_OP( c.addi, x10, 0x5, 0x3, 0x2, x1, 1432, x2)
+
+inst_371:
+// rs1_val==3 and imm_val==9,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0x9
+TEST_CI_OP( c.addi, x10, 0xc, 0x3, 0x9, x1, 1436, x2)
+
+inst_372:
+// rs1_val==3 and imm_val==-5,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:-0x5
+TEST_CI_OP( c.addi, x10, 0xfffffffe, 0x3, -0x5, x1, 1440, x2)
+
+inst_373:
+// rs1_val==3 and imm_val==-2,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:-0x2
+TEST_CI_OP( c.addi, x10, 0x1, 0x3, -0x2, x1, 1444, x2)
+
+inst_374:
+// rs1_val==3 and imm_val==3,
+// opcode:c.addi; op1:x10; dest:x10 op1val:0x3; immval:0x3
+TEST_CI_OP( c.addi, x10, 0x6, 0x3, 0x3, x1, 1448, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x10_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x10_1:
+ .fill 12*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 363*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi16sp-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi16sp-01.S
new file mode 100644
index 000000000..886fd1476
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi16sp-01.S
@@ -0,0 +1,430 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.addi16sp instruction of the RISC-V C extension for the caddi16sp covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",caddi16sp)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rd==x2, imm_val == -512, rs1_val == 4194304, rs1_val != imm_val, rs1_val > 0 and imm_val < 0
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x400000; immval:-0x200
+TEST_CI_OP( c.addi16sp, x2, 0x3ffe00, 0x400000, -0x200, x1, 0, x3)
+
+inst_1:
+// rs1_val == 2147483647, imm_val == 128, rs1_val > 0 and imm_val > 0, rs1_val == (2**(xlen-1)-1)
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x7fffffff; immval:0x80
+TEST_CI_OP( c.addi16sp, x2, 0x8000007f, 0x7fffffff, 0x80, x1, 4, x3)
+
+inst_2:
+// rs1_val == -1073741825, rs1_val < 0 and imm_val > 0
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x40000001; immval:0x60
+TEST_CI_OP( c.addi16sp, x2, 0xc000005f, -0x40000001, 0x60, x1, 8, x3)
+
+inst_3:
+// rs1_val == -536870913, rs1_val < 0 and imm_val < 0
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x20000001; immval:-0x60
+TEST_CI_OP( c.addi16sp, x2, 0xdfffff9f, -0x20000001, -0x60, x1, 12, x3)
+
+inst_4:
+// rs1_val == -268435457, imm_val == -352
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x10000001; immval:-0x160
+TEST_CI_OP( c.addi16sp, x2, 0xeffffe9f, -0x10000001, -0x160, x1, 16, x3)
+
+inst_5:
+// rs1_val == -134217729, imm_val == -80
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x8000001; immval:-0x50
+TEST_CI_OP( c.addi16sp, x2, 0xf7ffffaf, -0x8000001, -0x50, x1, 20, x3)
+
+inst_6:
+// rs1_val == -67108865, imm_val == -144
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x4000001; immval:-0x90
+TEST_CI_OP( c.addi16sp, x2, 0xfbffff6f, -0x4000001, -0x90, x1, 24, x3)
+
+inst_7:
+// rs1_val == -33554433,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x2000001; immval:0xf0
+TEST_CI_OP( c.addi16sp, x2, 0xfe0000ef, -0x2000001, 0xf0, x1, 28, x3)
+
+inst_8:
+// rs1_val == -16777217,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x1000001; immval:-0x80
+TEST_CI_OP( c.addi16sp, x2, 0xfeffff7f, -0x1000001, -0x80, x1, 32, x3)
+
+inst_9:
+// rs1_val == -8388609,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x800001; immval:-0x70
+TEST_CI_OP( c.addi16sp, x2, 0xff7fff8f, -0x800001, -0x70, x1, 36, x3)
+
+inst_10:
+// rs1_val == -4194305, imm_val == 64
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x400001; immval:0x40
+TEST_CI_OP( c.addi16sp, x2, 0xffc0003f, -0x400001, 0x40, x1, 40, x3)
+
+inst_11:
+// rs1_val == -2097153,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x200001; immval:-0x160
+TEST_CI_OP( c.addi16sp, x2, 0xffdffe9f, -0x200001, -0x160, x1, 44, x3)
+
+inst_12:
+// rs1_val == -1048577, imm_val == 16
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x100001; immval:0x10
+TEST_CI_OP( c.addi16sp, x2, 0xfff0000f, -0x100001, 0x10, x1, 48, x3)
+
+inst_13:
+// rs1_val == -524289,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x80001; immval:0x10
+TEST_CI_OP( c.addi16sp, x2, 0xfff8000f, -0x80001, 0x10, x1, 52, x3)
+
+inst_14:
+// rs1_val == -262145,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x40001; immval:-0x100
+TEST_CI_OP( c.addi16sp, x2, 0xfffbfeff, -0x40001, -0x100, x1, 56, x3)
+
+inst_15:
+// rs1_val == -131073, imm_val == 336
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x20001; immval:0x150
+TEST_CI_OP( c.addi16sp, x2, 0xfffe014f, -0x20001, 0x150, x1, 60, x3)
+
+inst_16:
+// rs1_val == -65537,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x10001; immval:-0x50
+TEST_CI_OP( c.addi16sp, x2, 0xfffeffaf, -0x10001, -0x50, x1, 64, x3)
+
+inst_17:
+// rs1_val == -32769,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x8001; immval:0x40
+TEST_CI_OP( c.addi16sp, x2, 0xffff803f, -0x8001, 0x40, x1, 68, x3)
+
+inst_18:
+// rs1_val == -16385,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x4001; immval:0x50
+TEST_CI_OP( c.addi16sp, x2, 0xffffc04f, -0x4001, 0x50, x1, 72, x3)
+
+inst_19:
+// rs1_val == -8193,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x2001; immval:-0x40
+TEST_CI_OP( c.addi16sp, x2, 0xffffdfbf, -0x2001, -0x40, x1, 76, x3)
+
+inst_20:
+// rs1_val == -4097,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x1001; immval:0x80
+TEST_CI_OP( c.addi16sp, x2, 0xfffff07f, -0x1001, 0x80, x1, 80, x3)
+
+inst_21:
+// rs1_val == -2049,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x801; immval:0x80
+TEST_CI_OP( c.addi16sp, x2, 0xfffff87f, -0x801, 0x80, x1, 84, x3)
+
+inst_22:
+// rs1_val == -1025,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x401; immval:-0x10
+TEST_CI_OP( c.addi16sp, x2, 0xfffffbef, -0x401, -0x10, x1, 88, x3)
+
+inst_23:
+// rs1_val == -513,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x201; immval:0x150
+TEST_CI_OP( c.addi16sp, x2, 0xffffff4f, -0x201, 0x150, x1, 92, x3)
+
+inst_24:
+// rs1_val == -257, imm_val == -32
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x101; immval:-0x20
+TEST_CI_OP( c.addi16sp, x2, 0xfffffedf, -0x101, -0x20, x1, 96, x3)
+
+inst_25:
+// rs1_val == -129,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x81; immval:-0x20
+TEST_CI_OP( c.addi16sp, x2, 0xffffff5f, -0x81, -0x20, x1, 100, x3)
+
+inst_26:
+// rs1_val == -65,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x41; immval:0x90
+TEST_CI_OP( c.addi16sp, x2, 0x4f, -0x41, 0x90, x1, 104, x3)
+
+inst_27:
+// rs1_val == -33,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x21; immval:0x10
+TEST_CI_OP( c.addi16sp, x2, 0xffffffef, -0x21, 0x10, x1, 108, x3)
+
+inst_28:
+// rs1_val == -17,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x11; immval:-0x160
+TEST_CI_OP( c.addi16sp, x2, 0xfffffe8f, -0x11, -0x160, x1, 112, x3)
+
+inst_29:
+// rs1_val == -9,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x9; immval:-0x60
+TEST_CI_OP( c.addi16sp, x2, 0xffffff97, -0x9, -0x60, x1, 116, x3)
+
+inst_30:
+// rs1_val == -5,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x5; immval:-0x100
+TEST_CI_OP( c.addi16sp, x2, 0xfffffefb, -0x5, -0x100, x1, 120, x3)
+
+inst_31:
+// rs1_val == -3,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x3; immval:-0x90
+TEST_CI_OP( c.addi16sp, x2, 0xffffff6d, -0x3, -0x90, x1, 124, x3)
+
+inst_32:
+// rs1_val == -2,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x2; immval:0x70
+TEST_CI_OP( c.addi16sp, x2, 0x6e, -0x2, 0x70, x1, 128, x3)
+
+inst_33:
+// imm_val == 496,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x400000; immval:0x1f0
+TEST_CI_OP( c.addi16sp, x2, 0x4001f0, 0x400000, 0x1f0, x1, 132, x3)
+
+inst_34:
+// imm_val == -272,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x5; immval:-0x110
+TEST_CI_OP( c.addi16sp, x2, 0xfffffeeb, -0x5, -0x110, x1, 136, x3)
+
+inst_35:
+// imm_val == -48,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x400001; immval:-0x30
+TEST_CI_OP( c.addi16sp, x2, 0xffbfffcf, -0x400001, -0x30, x1, 140, x3)
+
+inst_36:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x80000000; immval:-0xa0
+TEST_CI_OP( c.addi16sp, x2, 0x7fffff60, -0x80000000, -0xa0, x1, 144, x3)
+
+inst_37:
+// rs1_val == 1073741824, imm_val == 256
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x40000000; immval:0x100
+TEST_CI_OP( c.addi16sp, x2, 0x40000100, 0x40000000, 0x100, x1, 148, x3)
+
+inst_38:
+// rs1_val == 536870912,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x20000000; immval:-0x10
+TEST_CI_OP( c.addi16sp, x2, 0x1ffffff0, 0x20000000, -0x10, x1, 152, x3)
+
+inst_39:
+// rs1_val == 268435456,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x10000000; immval:0x30
+TEST_CI_OP( c.addi16sp, x2, 0x10000030, 0x10000000, 0x30, x1, 156, x3)
+
+inst_40:
+// rs1_val == 134217728,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x8000000; immval:-0xa0
+TEST_CI_OP( c.addi16sp, x2, 0x7ffff60, 0x8000000, -0xa0, x1, 160, x3)
+
+inst_41:
+// rs1_val == 64,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x40; immval:0x80
+TEST_CI_OP( c.addi16sp, x2, 0xc0, 0x40, 0x80, x1, 164, x3)
+
+inst_42:
+// rs1_val == 32,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x20; immval:0x1f0
+TEST_CI_OP( c.addi16sp, x2, 0x210, 0x20, 0x1f0, x1, 168, x3)
+
+inst_43:
+// rs1_val == 16,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x10; immval:0x1f0
+TEST_CI_OP( c.addi16sp, x2, 0x200, 0x10, 0x1f0, x1, 172, x3)
+
+inst_44:
+// rs1_val == 8,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x8; immval:0x70
+TEST_CI_OP( c.addi16sp, x2, 0x78, 0x8, 0x70, x1, 176, x3)
+
+inst_45:
+// rs1_val == 4,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x4; immval:-0x110
+TEST_CI_OP( c.addi16sp, x2, 0xfffffef4, 0x4, -0x110, x1, 180, x3)
+
+inst_46:
+// rs1_val == 2,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x2; immval:-0x50
+TEST_CI_OP( c.addi16sp, x2, 0xffffffb2, 0x2, -0x50, x1, 184, x3)
+
+inst_47:
+// rs1_val == 1,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x1; immval:0x50
+TEST_CI_OP( c.addi16sp, x2, 0x51, 0x1, 0x50, x1, 188, x3)
+
+inst_48:
+// imm_val == 32,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x9; immval:0x20
+TEST_CI_OP( c.addi16sp, x2, 0x29, 0x9, 0x20, x1, 192, x3)
+
+inst_49:
+// rs1_val == -1431655766,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:-0x55555556; immval:0x30
+TEST_CI_OP( c.addi16sp, x2, 0xaaaaaada, -0x55555556, 0x30, x1, 196, x3)
+
+inst_50:
+// rs1_val == 1431655765,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x55555555; immval:0x60
+TEST_CI_OP( c.addi16sp, x2, 0x555555b5, 0x55555555, 0x60, x1, 200, x3)
+
+inst_51:
+// rs1_val == 0,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x0; immval:-0x100
+TEST_CI_OP( c.addi16sp, x2, 0xffffff00, 0x0, -0x100, x1, 204, x3)
+
+inst_52:
+// rs1_val == imm_val,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x40; immval:0x40
+TEST_CI_OP( c.addi16sp, x2, 0x80, 0x40, 0x40, x1, 208, x3)
+
+inst_53:
+// rs1_val == 67108864,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x4000000; immval:-0x200
+TEST_CI_OP( c.addi16sp, x2, 0x3fffe00, 0x4000000, -0x200, x1, 212, x3)
+
+inst_54:
+// rs1_val == 33554432,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x2000000; immval:-0x200
+TEST_CI_OP( c.addi16sp, x2, 0x1fffe00, 0x2000000, -0x200, x1, 216, x3)
+
+inst_55:
+// rs1_val == 16777216,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x1000000; immval:-0x40
+TEST_CI_OP( c.addi16sp, x2, 0xffffc0, 0x1000000, -0x40, x1, 220, x3)
+
+inst_56:
+// rs1_val == 8388608,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x800000; immval:0x10
+TEST_CI_OP( c.addi16sp, x2, 0x800010, 0x800000, 0x10, x1, 224, x3)
+
+inst_57:
+// rs1_val == 2097152,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x200000; immval:0x20
+TEST_CI_OP( c.addi16sp, x2, 0x200020, 0x200000, 0x20, x1, 228, x3)
+
+inst_58:
+// rs1_val == 1048576,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x100000; immval:0x90
+TEST_CI_OP( c.addi16sp, x2, 0x100090, 0x100000, 0x90, x1, 232, x3)
+
+inst_59:
+// rs1_val == 524288,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x80000; immval:0x50
+TEST_CI_OP( c.addi16sp, x2, 0x80050, 0x80000, 0x50, x1, 236, x3)
+
+inst_60:
+// rs1_val == 262144,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x40000; immval:-0x160
+TEST_CI_OP( c.addi16sp, x2, 0x3fea0, 0x40000, -0x160, x1, 240, x3)
+
+inst_61:
+// rs1_val == 131072,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x20000; immval:-0xa0
+TEST_CI_OP( c.addi16sp, x2, 0x1ff60, 0x20000, -0xa0, x1, 244, x3)
+
+inst_62:
+// rs1_val == 65536,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x10000; immval:0x150
+TEST_CI_OP( c.addi16sp, x2, 0x10150, 0x10000, 0x150, x1, 248, x3)
+
+inst_63:
+// rs1_val == 32768,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x8000; immval:0x1f0
+TEST_CI_OP( c.addi16sp, x2, 0x81f0, 0x8000, 0x1f0, x1, 252, x3)
+
+inst_64:
+// rs1_val == 16384,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x4000; immval:0x40
+TEST_CI_OP( c.addi16sp, x2, 0x4040, 0x4000, 0x40, x1, 256, x3)
+
+inst_65:
+// rs1_val == 8192,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x2000; immval:0x80
+TEST_CI_OP( c.addi16sp, x2, 0x2080, 0x2000, 0x80, x1, 260, x3)
+
+inst_66:
+// rs1_val == 4096,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x1000; immval:0x1f0
+TEST_CI_OP( c.addi16sp, x2, 0x11f0, 0x1000, 0x1f0, x1, 264, x3)
+
+inst_67:
+// rs1_val == 2048,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x800; immval:0x100
+TEST_CI_OP( c.addi16sp, x2, 0x900, 0x800, 0x100, x1, 268, x3)
+
+inst_68:
+// rs1_val == 1024,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x400; immval:0x1f0
+TEST_CI_OP( c.addi16sp, x2, 0x5f0, 0x400, 0x1f0, x1, 272, x3)
+
+inst_69:
+// rs1_val == 512,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x200; immval:0x150
+TEST_CI_OP( c.addi16sp, x2, 0x350, 0x200, 0x150, x1, 276, x3)
+
+inst_70:
+// rs1_val == 256,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x100; immval:0x1f0
+TEST_CI_OP( c.addi16sp, x2, 0x2f0, 0x100, 0x1f0, x1, 280, x3)
+
+inst_71:
+// rs1_val == 128,
+// opcode:c.addi16sp; op1:x2; dest:x2 op1val:0x80; immval:0x30
+TEST_CI_OP( c.addi16sp, x2, 0xb0, 0x80, 0x30, x1, 284, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 72*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi4spn-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi4spn-01.S
new file mode 100644
index 000000000..9ecd98f0f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/caddi4spn-01.S
@@ -0,0 +1,165 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.addi4spn instruction of the RISC-V C extension for the caddi4spn covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",caddi4spn)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rd==x10, imm_val == 1020, imm_val > 0
+// opcode:c.addi4spn; dest:x10; immval:0x3fc
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x3fc, 0x3fc, x1, 0, x2)
+
+inst_1:
+// rd==x13, imm_val == 508,
+// opcode:c.addi4spn; dest:x13; immval:0x1fc
+TEST_CADDI4SPN_OP( c.addi4spn, x13, 0x1fc, 0x1fc, x1, 4, x2)
+
+inst_2:
+// rd==x9, imm_val == 764,
+// opcode:c.addi4spn; dest:x9; immval:0x2fc
+TEST_CADDI4SPN_OP( c.addi4spn, x9, 0x2fc, 0x2fc, x1, 8, x2)
+
+inst_3:
+// rd==x8, imm_val == 892,
+// opcode:c.addi4spn; dest:x8; immval:0x37c
+TEST_CADDI4SPN_OP( c.addi4spn, x8, 0x37c, 0x37c, x1, 12, x2)
+
+inst_4:
+// rd==x14, imm_val == 956,
+// opcode:c.addi4spn; dest:x14; immval:0x3bc
+TEST_CADDI4SPN_OP( c.addi4spn, x14, 0x3bc, 0x3bc, x1, 16, x2)
+
+inst_5:
+// rd==x11, imm_val == 988,
+// opcode:c.addi4spn; dest:x11; immval:0x3dc
+TEST_CADDI4SPN_OP( c.addi4spn, x11, 0x3dc, 0x3dc, x1, 20, x2)
+
+inst_6:
+// rd==x15, imm_val == 1004,
+// opcode:c.addi4spn; dest:x15; immval:0x3ec
+TEST_CADDI4SPN_OP( c.addi4spn, x15, 0x3ec, 0x3ec, x1, 24, x2)
+
+inst_7:
+// rd==x12, imm_val == 1012,
+// opcode:c.addi4spn; dest:x12; immval:0x3f4
+TEST_CADDI4SPN_OP( c.addi4spn, x12, 0x3f4, 0x3f4, x1, 28, x2)
+
+inst_8:
+// imm_val == 1016,
+// opcode:c.addi4spn; dest:x10; immval:0x3f8
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x3f8, 0x3f8, x1, 32, x2)
+
+inst_9:
+// imm_val == 512,
+// opcode:c.addi4spn; dest:x10; immval:0x200
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x200, 0x200, x1, 36, x2)
+
+inst_10:
+// imm_val == 256,
+// opcode:c.addi4spn; dest:x10; immval:0x100
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x100, 0x100, x1, 40, x2)
+
+inst_11:
+// imm_val == 128,
+// opcode:c.addi4spn; dest:x10; immval:0x80
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x80, 0x80, x1, 44, x2)
+
+inst_12:
+// imm_val == 4,
+// opcode:c.addi4spn; dest:x10; immval:0x4
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x4, 0x4, x1, 48, x2)
+
+inst_13:
+// imm_val == 680,
+// opcode:c.addi4spn; dest:x10; immval:0x2a8
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x2a8, 0x2a8, x1, 52, x2)
+
+inst_14:
+// imm_val == 340,
+// opcode:c.addi4spn; dest:x10; immval:0x154
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x154, 0x154, x1, 56, x2)
+
+inst_15:
+// imm_val == 64,
+// opcode:c.addi4spn; dest:x10; immval:0x40
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x40, 0x40, x1, 60, x2)
+
+inst_16:
+// imm_val == 32,
+// opcode:c.addi4spn; dest:x10; immval:0x20
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x20, 0x20, x1, 64, x2)
+
+inst_17:
+// imm_val == 16,
+// opcode:c.addi4spn; dest:x10; immval:0x10
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x10, 0x10, x1, 68, x2)
+
+inst_18:
+// imm_val == 8,
+// opcode:c.addi4spn; dest:x10; immval:0x8
+TEST_CADDI4SPN_OP( c.addi4spn, x10, 0x8, 0x8, x1, 72, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cand-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cand-01.S
new file mode 100644
index 000000000..06dbde15d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cand-01.S
@@ -0,0 +1,3005 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.and instruction of the RISC-V C extension for the cand covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cand)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rs2, rs1==x14, rs2==x10, rs1_val == (-2**(xlen-1)), rs2_val < 0, rs1_val == -2147483648, rs2_val == -8193
+// opcode: c.and; op1:x14; op2:x10; op1val:-0x80000000; op2val:-0x2001
+TEST_CR_OP( c.and, x14, x10, 0x80000000, -0x80000000, -0x2001, x1, 0, x2)
+
+inst_1:
+// rs1 == rs2, rs1==x11, rs2==x11, rs2_val == 2147483647, rs2_val == (2**(xlen-1)-1), rs2_val > 0
+// opcode: c.and; op1:x11; op2:x11; op1val:0xb503; op2val:0xb503
+TEST_CR_OP( c.and, x11, x11, 0xb503, 0xb503, 0xb503, x1, 4, x2)
+
+inst_2:
+// rs1==x12, rs2==x9, rs2_val == -1073741825,
+// opcode: c.and; op1:x12; op2:x9; op1val:-0xb504; op2val:-0x40000001
+TEST_CR_OP( c.and, x12, x9, 0xbfff4afc, -0xb504, -0x40000001, x1, 8, x2)
+
+inst_3:
+// rs1==x13, rs2==x12, rs2_val == -536870913,
+// opcode: c.and; op1:x13; op2:x12; op1val:0x3; op2val:-0x20000001
+TEST_CR_OP( c.and, x13, x12, 0x3, 0x3, -0x20000001, x1, 12, x2)
+
+inst_4:
+// rs1==x8, rs2==x14, rs2_val == -268435457, rs1_val == 512
+// opcode: c.and; op1:x8; op2:x14; op1val:0x200; op2val:-0x10000001
+TEST_CR_OP( c.and, x8, x14, 0x200, 0x200, -0x10000001, x1, 16, x2)
+
+inst_5:
+// rs1==x10, rs2==x13, rs2_val == -134217729, rs1_val == 1431655765
+// opcode: c.and; op1:x10; op2:x13; op1val:0x55555555; op2val:-0x8000001
+TEST_CR_OP( c.and, x10, x13, 0x55555555, 0x55555555, -0x8000001, x1, 20, x2)
+
+inst_6:
+// rs1==x15, rs2==x8, rs2_val == -67108865, rs1_val == 4096
+// opcode: c.and; op1:x15; op2:x8; op1val:0x1000; op2val:-0x4000001
+TEST_CR_OP( c.and, x15, x8, 0x1000, 0x1000, -0x4000001, x1, 24, x2)
+
+inst_7:
+// rs1==x9, rs2==x15, rs2_val == -33554433, rs1_val == -32769
+// opcode: c.and; op1:x9; op2:x15; op1val:-0x8001; op2val:-0x2000001
+TEST_CR_OP( c.and, x9, x15, 0xfdff7fff, -0x8001, -0x2000001, x1, 28, x2)
+
+inst_8:
+// rs2_val == -16777217,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x7; op2val:-0x1000001
+TEST_CR_OP( c.and, x10, x11, 0xfefffff9, -0x7, -0x1000001, x1, 32, x2)
+
+inst_9:
+// rs2_val == -8388609,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x6; op2val:-0x800001
+TEST_CR_OP( c.and, x10, x11, 0xff7ffffa, -0x6, -0x800001, x1, 36, x2)
+
+inst_10:
+// rs2_val == -4194305, rs1_val == 1073741824
+// opcode: c.and; op1:x10; op2:x11; op1val:0x40000000; op2val:-0x400001
+TEST_CR_OP( c.and, x10, x11, 0x40000000, 0x40000000, -0x400001, x1, 40, x2)
+
+inst_11:
+// rs2_val == -2097153,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:-0x200001
+TEST_CR_OP( c.and, x10, x11, 0x6, 0x6, -0x200001, x1, 44, x2)
+
+inst_12:
+// rs2_val == -1048577, rs1_val == 32
+// opcode: c.and; op1:x10; op2:x11; op1val:0x20; op2val:-0x100001
+TEST_CR_OP( c.and, x10, x11, 0x20, 0x20, -0x100001, x1, 48, x2)
+
+inst_13:
+// rs2_val == -524289, rs1_val == 536870912
+// opcode: c.and; op1:x10; op2:x11; op1val:0x20000000; op2val:-0x80001
+TEST_CR_OP( c.and, x10, x11, 0x20000000, 0x20000000, -0x80001, x1, 52, x2)
+
+inst_14:
+// rs2_val == -262145,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x20; op2val:-0x40001
+TEST_CR_OP( c.and, x10, x11, 0x20, 0x20, -0x40001, x1, 56, x2)
+
+inst_15:
+// rs2_val == -131073, rs1_val == -33
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x21; op2val:-0x20001
+TEST_CR_OP( c.and, x10, x11, 0xfffdffdf, -0x21, -0x20001, x1, 60, x2)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x10001
+TEST_CR_OP( c.and, x10, x11, 0x66666665, 0x66666665, -0x10001, x1, 64, x2)
+
+inst_17:
+// rs2_val == -32769, rs1_val == 0
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:-0x8001
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, -0x8001, x1, 68, x2)
+
+inst_18:
+// rs2_val == -16385,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x8; op2val:-0x4001
+TEST_CR_OP( c.and, x10, x11, 0xffffbff8, -0x8, -0x4001, x1, 72, x2)
+
+inst_19:
+// rs2_val == -4097,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:-0x1001
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x3, -0x1001, x1, 76, x2)
+
+inst_20:
+// rs2_val == -2049, rs1_val == -3
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x3; op2val:-0x801
+TEST_CR_OP( c.and, x10, x11, 0xfffff7fd, -0x3, -0x801, x1, 80, x2)
+
+inst_21:
+// rs2_val == -1025,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:-0x401
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x3, -0x401, x1, 84, x2)
+
+inst_22:
+// rs2_val == -513, rs1_val == 2097152
+// opcode: c.and; op1:x10; op2:x11; op1val:0x200000; op2val:-0x201
+TEST_CR_OP( c.and, x10, x11, 0x200000, 0x200000, -0x201, x1, 88, x2)
+
+inst_23:
+// rs2_val == -257,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x101
+TEST_CR_OP( c.and, x10, x11, 0x55555456, 0x55555556, -0x101, x1, 92, x2)
+
+inst_24:
+// rs2_val == -129,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x4; op2val:-0x81
+TEST_CR_OP( c.and, x10, x11, 0xffffff7c, -0x4, -0x81, x1, 96, x2)
+
+inst_25:
+// rs2_val == -65,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x41
+TEST_CR_OP( c.and, x10, x11, 0xffff4abd, -0xb503, -0x41, x1, 100, x2)
+
+inst_26:
+// rs2_val == -33,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x20000000; op2val:-0x21
+TEST_CR_OP( c.and, x10, x11, 0x20000000, 0x20000000, -0x21, x1, 104, x2)
+
+inst_27:
+// rs2_val == -17,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x11
+TEST_CR_OP( c.and, x10, x11, 0x55555545, 0x55555555, -0x11, x1, 108, x2)
+
+inst_28:
+// rs2_val == -9,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x9
+TEST_CR_OP( c.and, x10, x11, 0xaaaaaaa3, -0x55555555, -0x9, x1, 112, x2)
+
+inst_29:
+// rs2_val == -5,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x80000000; op2val:-0x5
+TEST_CR_OP( c.and, x10, x11, 0x80000000, -0x80000000, -0x5, x1, 116, x2)
+
+inst_30:
+// rs2_val == -3, rs1_val == -536870913
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x20000001; op2val:-0x3
+TEST_CR_OP( c.and, x10, x11, 0xdffffffd, -0x20000001, -0x3, x1, 120, x2)
+
+inst_31:
+// rs2_val == -2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x2
+TEST_CR_OP( c.and, x10, x11, 0x33333334, 0x33333334, -0x2, x1, 124, x2)
+
+inst_32:
+// rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1), rs2_val == 2048
+// opcode: c.and; op1:x10; op2:x11; op1val:0x7fffffff; op2val:0x800
+TEST_CR_OP( c.and, x10, x11, 0x800, 0x7fffffff, 0x800, x1, 128, x2)
+
+inst_33:
+// rs1_val == -1073741825, rs2_val == 1431655765
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x40000001; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x15555555, -0x40000001, 0x55555555, x1, 132, x2)
+
+inst_34:
+// rs1_val == -268435457,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x10000001; op2val:0x3fffffff
+TEST_CR_OP( c.and, x10, x11, 0x2fffffff, -0x10000001, 0x3fffffff, x1, 136, x2)
+
+inst_35:
+// rs1_val == -134217729,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x8000001; op2val:-0x10001
+TEST_CR_OP( c.and, x10, x11, 0xf7feffff, -0x8000001, -0x10001, x1, 140, x2)
+
+inst_36:
+// rs1_val == -67108865,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x4000001; op2val:0x9
+TEST_CR_OP( c.and, x10, x11, 0x9, -0x4000001, 0x9, x1, 144, x2)
+
+inst_37:
+// rs1_val == -33554433,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x2000001; op2val:-0x20000001
+TEST_CR_OP( c.and, x10, x11, 0xddffffff, -0x2000001, -0x20000001, x1, 148, x2)
+
+inst_38:
+// rs1_val == -16777217,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x1000001; op2val:-0x6
+TEST_CR_OP( c.and, x10, x11, 0xfefffffa, -0x1000001, -0x6, x1, 152, x2)
+
+inst_39:
+// rs1_val == -8388609,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x800001; op2val:-0x40000000
+TEST_CR_OP( c.and, x10, x11, 0xc0000000, -0x800001, -0x40000000, x1, 156, x2)
+
+inst_40:
+// rs1_val == -4194305, rs2_val == 32768
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x400001; op2val:0x8000
+TEST_CR_OP( c.and, x10, x11, 0x8000, -0x400001, 0x8000, x1, 160, x2)
+
+inst_41:
+// rs1_val == -2097153,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x200001; op2val:-0x8001
+TEST_CR_OP( c.and, x10, x11, 0xffdf7fff, -0x200001, -0x8001, x1, 164, x2)
+
+inst_42:
+// rs1_val == -1048577, rs2_val == 2097152
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x100001; op2val:0x200000
+TEST_CR_OP( c.and, x10, x11, 0x200000, -0x100001, 0x200000, x1, 168, x2)
+
+inst_43:
+// rs1_val == -524289, rs2_val == 256
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x80001; op2val:0x100
+TEST_CR_OP( c.and, x10, x11, 0x100, -0x80001, 0x100, x1, 172, x2)
+
+inst_44:
+// rs1_val == -262145, rs2_val == 0
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x40001; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x40001, 0x0, x1, 176, x2)
+
+inst_45:
+// rs1_val == -131073,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x20001; op2val:-0x4
+TEST_CR_OP( c.and, x10, x11, 0xfffdfffc, -0x20001, -0x4, x1, 180, x2)
+
+inst_46:
+// rs1_val == -65537,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x10001; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x6, -0x10001, 0x6, x1, 184, x2)
+
+inst_47:
+// rs1_val == -16385, rs2_val == 131072
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x4001; op2val:0x20000
+TEST_CR_OP( c.and, x10, x11, 0x20000, -0x4001, 0x20000, x1, 188, x2)
+
+inst_48:
+// rs1_val == -8193, rs2_val == 1073741824
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x2001; op2val:0x40000000
+TEST_CR_OP( c.and, x10, x11, 0x40000000, -0x2001, 0x40000000, x1, 192, x2)
+
+inst_49:
+// rs1_val == -4097,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x1001; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x55554554, -0x1001, 0x55555554, x1, 196, x2)
+
+inst_50:
+// rs1_val == -2049,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x801; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0xffff42fd, -0x801, -0xb503, x1, 200, x2)
+
+inst_51:
+// rs1_val == -1025,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x401; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x55555156, -0x401, 0x55555556, x1, 204, x2)
+
+inst_52:
+// rs1_val == -513,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x201; op2val:-0x81
+TEST_CR_OP( c.and, x10, x11, 0xfffffd7f, -0x201, -0x81, x1, 208, x2)
+
+inst_53:
+// rs1_val == -257,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x101; op2val:-0x3
+TEST_CR_OP( c.and, x10, x11, 0xfffffefd, -0x101, -0x3, x1, 212, x2)
+
+inst_54:
+// rs1_val == -129, rs2_val == 4
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x81; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, -0x81, 0x4, x1, 216, x2)
+
+inst_55:
+// rs1_val == -65, rs2_val == 512
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x41; op2val:0x200
+TEST_CR_OP( c.and, x10, x11, 0x200, -0x41, 0x200, x1, 220, x2)
+
+inst_56:
+// rs1_val == -17,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x11; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x6, -0x11, 0x6, x1, 224, x2)
+
+inst_57:
+// rs1_val == -9, rs2_val == 1048576
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x9; op2val:0x100000
+TEST_CR_OP( c.and, x10, x11, 0x100000, -0x9, 0x100000, x1, 228, x2)
+
+inst_58:
+// rs1_val == -5, rs2_val == -1431655766
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x5; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0xaaaaaaaa, -0x5, -0x55555556, x1, 232, x2)
+
+inst_59:
+// rs1_val == -2,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x2; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x2, -0x2, 0x3, x1, 236, x2)
+
+inst_60:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x4; op2val:-0x80000000
+TEST_CR_OP( c.and, x10, x11, 0x80000000, -0x4, -0x80000000, x1, 240, x2)
+
+inst_61:
+// rs2_val == 536870912, rs1_val == 33554432
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2000000; op2val:0x20000000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2000000, 0x20000000, x1, 244, x2)
+
+inst_62:
+// rs2_val == 268435456, rs1_val == 8
+// opcode: c.and; op1:x10; op2:x11; op1val:0x8; op2val:0x10000000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x8, 0x10000000, x1, 248, x2)
+
+inst_63:
+// rs2_val == 134217728,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x401; op2val:0x8000000
+TEST_CR_OP( c.and, x10, x11, 0x8000000, -0x401, 0x8000000, x1, 252, x2)
+
+inst_64:
+// rs2_val == 67108864, rs1_val == 64
+// opcode: c.and; op1:x10; op2:x11; op1val:0x40; op2val:0x4000000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x40, 0x4000000, x1, 256, x2)
+
+inst_65:
+// rs2_val == 33554432,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x200000; op2val:0x2000000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x200000, 0x2000000, x1, 260, x2)
+
+inst_66:
+// rs2_val == 16777216,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x8; op2val:0x1000000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x8, 0x1000000, x1, 264, x2)
+
+inst_67:
+// rs2_val == 8388608,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x800000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555555, 0x800000, x1, 268, x2)
+
+inst_68:
+// rs2_val == 4194304,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x80001; op2val:0x400000
+TEST_CR_OP( c.and, x10, x11, 0x400000, -0x80001, 0x400000, x1, 272, x2)
+
+inst_69:
+// rs2_val == 524288,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x80000
+TEST_CR_OP( c.and, x10, x11, 0x80000, -0x55555555, 0x80000, x1, 276, x2)
+
+inst_70:
+// rs2_val == 262144,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x40000
+TEST_CR_OP( c.and, x10, x11, 0x40000, 0x55555555, 0x40000, x1, 280, x2)
+
+inst_71:
+// rs2_val == 65536,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x10000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x3, 0x10000, x1, 284, x2)
+
+inst_72:
+// rs2_val == 16384, rs1_val == 8388608
+// opcode: c.and; op1:x10; op2:x11; op1val:0x800000; op2val:0x4000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x800000, 0x4000, x1, 288, x2)
+
+inst_73:
+// rs2_val == 8192,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3fffffff; op2val:0x2000
+TEST_CR_OP( c.and, x10, x11, 0x2000, 0x3fffffff, 0x2000, x1, 292, x2)
+
+inst_74:
+// rs2_val == 4096,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x1000; op2val:0x1000
+TEST_CR_OP( c.and, x10, x11, 0x1000, 0x1000, 0x1000, x1, 296, x2)
+
+inst_75:
+// rs2_val == 1024,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x100001; op2val:0x400
+TEST_CR_OP( c.and, x10, x11, 0x400, -0x100001, 0x400, x1, 300, x2)
+
+inst_76:
+// rs2_val == 128,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x2; op2val:0x80
+TEST_CR_OP( c.and, x10, x11, 0x80, -0x2, 0x80, x1, 304, x2)
+
+inst_77:
+// rs2_val == 64,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x9; op2val:0x40
+TEST_CR_OP( c.and, x10, x11, 0x40, -0x9, 0x40, x1, 308, x2)
+
+inst_78:
+// rs2_val == 32,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x20
+TEST_CR_OP( c.and, x10, x11, 0x20, 0x33333334, 0x20, x1, 312, x2)
+
+inst_79:
+// rs2_val == 16,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x4001; op2val:0x10
+TEST_CR_OP( c.and, x10, x11, 0x10, -0x4001, 0x10, x1, 316, x2)
+
+inst_80:
+// rs2_val == 8,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x8
+TEST_CR_OP( c.and, x10, x11, 0x8, -0xb503, 0x8, x1, 320, x2)
+
+inst_81:
+// rs2_val == 2, rs1_val==1717986917 and rs2_val==2
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x66666665, 0x2, x1, 324, x2)
+
+inst_82:
+// rs2_val == 1,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x1
+TEST_CR_OP( c.and, x10, x11, 0x1, 0xb505, 0x1, x1, 328, x2)
+
+inst_83:
+// rs1_val == 268435456,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x10000000; op2val:0x3fffffff
+TEST_CR_OP( c.and, x10, x11, 0x10000000, 0x10000000, 0x3fffffff, x1, 332, x2)
+
+inst_84:
+// rs1_val == 134217728,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x8000000; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x8000000, 0x3, x1, 336, x2)
+
+inst_85:
+// rs1_val == 67108864,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4000000; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x4000000, 0x4000000, 0x55555555, x1, 340, x2)
+
+inst_86:
+// rs1_val == 16777216,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x1000000; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x1000000, 0x1000000, 0x33333332, x1, 344, x2)
+
+inst_87:
+// rs1_val == 4194304,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x400000; op2val:0x20000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x400000, 0x20000, x1, 348, x2)
+
+inst_88:
+// rs1_val == 1048576,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x100000; op2val:0x7fffffff
+TEST_CR_OP( c.and, x10, x11, 0x100000, 0x100000, 0x7fffffff, x1, 352, x2)
+
+inst_89:
+// rs1_val == 524288,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x80000; op2val:0x20
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x80000, 0x20, x1, 356, x2)
+
+inst_90:
+// rs1_val == 262144,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x40000; op2val:-0x8
+TEST_CR_OP( c.and, x10, x11, 0x40000, 0x40000, -0x8, x1, 360, x2)
+
+inst_91:
+// rs1_val == 131072,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x20000; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x20000, 0x20000, -0x55555556, x1, 364, x2)
+
+inst_92:
+// rs1_val == 65536,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x10000; op2val:-0x401
+TEST_CR_OP( c.and, x10, x11, 0x10000, 0x10000, -0x401, x1, 368, x2)
+
+inst_93:
+// rs1_val == 32768,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x8000; op2val:0x10
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x8000, 0x10, x1, 372, x2)
+
+inst_94:
+// rs1_val == 16384,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4000; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4000, -0x55555556, x1, 376, x2)
+
+inst_95:
+// rs1_val == 8192,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2000; op2val:-0x21
+TEST_CR_OP( c.and, x10, x11, 0x2000, 0x2000, -0x21, x1, 380, x2)
+
+inst_96:
+// rs1_val == 2048,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x800; op2val:0x1
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x800, 0x1, x1, 384, x2)
+
+inst_97:
+// rs1_val == 1024,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x400; op2val:-0x400001
+TEST_CR_OP( c.and, x10, x11, 0x400, 0x400, -0x400001, x1, 388, x2)
+
+inst_98:
+// rs1_val == 256,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x100; op2val:-0x10000001
+TEST_CR_OP( c.and, x10, x11, 0x100, 0x100, -0x10000001, x1, 392, x2)
+
+inst_99:
+// rs1_val == 128,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x80; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x80, 0x80, -0x55555556, x1, 396, x2)
+
+inst_100:
+// rs1_val == 16,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x10; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x10, 0x66666667, x1, 400, x2)
+
+inst_101:
+// rs1_val == 4, rs1_val==4 and rs2_val==1431655766
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x55555556, x1, 404, x2)
+
+inst_102:
+// rs1_val == 2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x20000
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0x20000, x1, 408, x2)
+
+inst_103:
+// rs1_val == 1,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x1; op2val:0x10
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x1, 0x10, x1, 412, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0xb505, 0xb505, 0xb505, x1, 416, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x5, 0xb505, -0xb503, x1, 420, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x2405, 0xb505, 0x66666667, x1, 424, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x3104, 0xb505, 0x33333334, x1, 428, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, 0xb505, 0x6, x1, 432, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0xa001, 0xb505, -0x55555555, x1, 436, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0xb505, 0x55555556, x1, 440, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0xb505, 0x4, x1, 444, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0xb501, 0xb505, 0xb503, x1, 448, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0xb505, 0x0, x1, 452, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x2405, 0xb505, 0x66666665, x1, 456, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x3100, 0xb505, 0x33333332, x1, 460, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0xb505, 0x55555554, x1, 464, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0xb505, 0x2, x1, 468, x2)
+
+inst_118:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0xb504, 0xb505, 0xb504, x1, 472, x2)
+
+inst_119:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, 0xb505, -0xb504, x1, 476, x2)
+
+inst_120:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x2404, 0xb505, 0x66666666, x1, 480, x2)
+
+inst_121:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x3101, 0xb505, 0x33333333, x1, 484, x2)
+
+inst_122:
+// rs1_val==46341 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x5, 0xb505, 0x5, x1, 488, x2)
+
+inst_123:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0xa000, 0xb505, -0x55555556, x1, 492, x2)
+
+inst_124:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x1505, 0xb505, 0x55555555, x1, 496, x2)
+
+inst_125:
+// rs1_val==46341 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb505; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x1, 0xb505, 0x3, x1, 500, x2)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x5, -0xb503, 0xb505, x1, 504, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0xffff4afd, -0xb503, -0xb503, x1, 508, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x66664265, -0xb503, 0x66666667, x1, 512, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x33330234, -0xb503, 0x33333334, x1, 516, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, -0xb503, 0x6, x1, 520, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0xaaaa0aa9, -0xb503, -0x55555555, x1, 524, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x55554054, -0xb503, 0x55555556, x1, 528, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, -0xb503, 0x4, x1, 532, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x1, -0xb503, 0xb503, x1, 536, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, -0xb503, 0x0, x1, 540, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x66664265, -0xb503, 0x66666665, x1, 544, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x33330230, -0xb503, 0x33333332, x1, 548, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x55554054, -0xb503, 0x55555554, x1, 552, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, -0xb503, 0x2, x1, 556, x2)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, -0xb503, 0xb504, x1, 560, x2)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0xffff4afc, -0xb503, -0xb504, x1, 564, x2)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x66664264, -0xb503, 0x66666666, x1, 568, x2)
+
+inst_143:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x33330231, -0xb503, 0x33333333, x1, 572, x2)
+
+inst_144:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x5, -0xb503, 0x5, x1, 576, x2)
+
+inst_145:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0xaaaa0aa8, -0xb503, -0x55555556, x1, 580, x2)
+
+inst_146:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x55554055, -0xb503, 0x55555555, x1, 584, x2)
+
+inst_147:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb503; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x1, -0xb503, 0x3, x1, 588, x2)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x2405, 0x66666667, 0xb505, x1, 592, x2)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x66664265, 0x66666667, -0xb503, x1, 596, x2)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x66666667, 0x66666667, 0x66666667, x1, 600, x2)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x22222224, 0x66666667, 0x33333334, x1, 604, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x6, 0x66666667, 0x6, x1, 608, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x22222223, 0x66666667, -0x55555555, x1, 612, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x44444446, 0x66666667, 0x55555556, x1, 616, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x66666667, 0x4, x1, 620, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x2403, 0x66666667, 0xb503, x1, 624, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x66666667, 0x0, x1, 628, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x66666665, 0x66666667, 0x66666665, x1, 632, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x66666667, 0x33333332, x1, 636, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x66666667, 0x55555554, x1, 640, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x66666667, 0x2, x1, 644, x2)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x2404, 0x66666667, 0xb504, x1, 648, x2)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x66664264, 0x66666667, -0xb504, x1, 652, x2)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x66666666, 0x66666667, 0x66666666, x1, 656, x2)
+
+inst_165:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x22222223, 0x66666667, 0x33333333, x1, 660, x2)
+
+inst_166:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x66666667, 0x5, x1, 664, x2)
+
+inst_167:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x66666667, -0x55555556, x1, 668, x2)
+
+inst_168:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x44444445, 0x66666667, 0x55555555, x1, 672, x2)
+
+inst_169:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666667; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x66666667, 0x3, x1, 676, x2)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x3104, 0x33333334, 0xb505, x1, 680, x2)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x33330234, 0x33333334, -0xb503, x1, 684, x2)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x22222224, 0x33333334, 0x66666667, x1, 688, x2)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x33333334, 0x33333334, 0x33333334, x1, 692, x2)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x33333334, 0x6, x1, 696, x2)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x22222220, 0x33333334, -0x55555555, x1, 700, x2)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x11111114, 0x33333334, 0x55555556, x1, 704, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x33333334, 0x4, x1, 708, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x3100, 0x33333334, 0xb503, x1, 712, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x33333334, 0x0, x1, 716, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x22222224, 0x33333334, 0x66666665, x1, 720, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x33333330, 0x33333334, 0x33333332, x1, 724, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x11111114, 0x33333334, 0x55555554, x1, 728, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x33333334, 0x2, x1, 732, x2)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x3104, 0x33333334, 0xb504, x1, 736, x2)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x33330234, 0x33333334, -0xb504, x1, 740, x2)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x22222224, 0x33333334, 0x66666666, x1, 744, x2)
+
+inst_187:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x33333330, 0x33333334, 0x33333333, x1, 748, x2)
+
+inst_188:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x33333334, 0x5, x1, 752, x2)
+
+inst_189:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x22222220, 0x33333334, -0x55555556, x1, 756, x2)
+
+inst_190:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x11111114, 0x33333334, 0x55555555, x1, 760, x2)
+
+inst_191:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333334; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x33333334, 0x3, x1, 764, x2)
+
+inst_192:
+// rs1_val==6 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, 0xb505, x1, 768, x2)
+
+inst_193:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, -0xb503, x1, 772, x2)
+
+inst_194:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x6, 0x6, 0x66666667, x1, 776, x2)
+
+inst_195:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, 0x33333334, x1, 780, x2)
+
+inst_196:
+// rs1_val==6 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x6, 0x6, 0x6, x1, 784, x2)
+
+inst_197:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x6, -0x55555555, x1, 788, x2)
+
+inst_198:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x6, 0x6, 0x55555556, x1, 792, x2)
+
+inst_199:
+// rs1_val==6 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, 0x4, x1, 796, x2)
+
+inst_200:
+// rs1_val==6 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x6, 0xb503, x1, 800, x2)
+
+inst_201:
+// rs1_val==6 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x6, 0x0, x1, 804, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, 0x66666665, x1, 808, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x6, 0x33333332, x1, 812, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, 0x55555554, x1, 816, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x6, 0x2, x1, 820, x2)
+
+inst_206:
+// rs1_val==6 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, 0xb504, x1, 824, x2)
+
+inst_207:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, -0xb504, x1, 828, x2)
+
+inst_208:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x6, 0x6, 0x66666666, x1, 832, x2)
+
+inst_209:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x6, 0x33333333, x1, 836, x2)
+
+inst_210:
+// rs1_val==6 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, 0x5, x1, 840, x2)
+
+inst_211:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x6, -0x55555556, x1, 844, x2)
+
+inst_212:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x6, 0x55555555, x1, 848, x2)
+
+inst_213:
+// rs1_val==6 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x6; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x6, 0x3, x1, 852, x2)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0xa001, -0x55555555, 0xb505, x1, 856, x2)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0xaaaa0aa9, -0x55555555, -0xb503, x1, 860, x2)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x22222223, -0x55555555, 0x66666667, x1, 864, x2)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x22222220, -0x55555555, 0x33333334, x1, 868, x2)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x2, -0x55555555, 0x6, x1, 872, x2)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0xaaaaaaab, -0x55555555, -0x55555555, x1, 876, x2)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x2, -0x55555555, 0x55555556, x1, 880, x2)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x55555555, 0x4, x1, 884, x2)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0xa003, -0x55555555, 0xb503, x1, 888, x2)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x55555555, 0x0, x1, 892, x2)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x22222221, -0x55555555, 0x66666665, x1, 896, x2)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x22222222, -0x55555555, 0x33333332, x1, 900, x2)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x55555555, 0x55555554, x1, 904, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, -0x55555555, 0x2, x1, 908, x2)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0xa000, -0x55555555, 0xb504, x1, 912, x2)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0xaaaa0aa8, -0x55555555, -0xb504, x1, 916, x2)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x22222222, -0x55555555, 0x66666666, x1, 920, x2)
+
+inst_231:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x22222223, -0x55555555, 0x33333333, x1, 924, x2)
+
+inst_232:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x1, -0x55555555, 0x5, x1, 928, x2)
+
+inst_233:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0xaaaaaaaa, -0x55555555, -0x55555556, x1, 932, x2)
+
+inst_234:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x1, -0x55555555, 0x55555555, x1, 936, x2)
+
+inst_235:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x3, -0x55555555, 0x3, x1, 940, x2)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0x55555556, 0xb505, x1, 944, x2)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x55554054, 0x55555556, -0xb503, x1, 948, x2)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x44444446, 0x55555556, 0x66666667, x1, 952, x2)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x11111114, 0x55555556, 0x33333334, x1, 956, x2)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x6, 0x55555556, 0x6, x1, 960, x2)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x55555556, -0x55555555, x1, 964, x2)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x55555556, 0x55555556, 0x55555556, x1, 968, x2)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x55555556, 0x4, x1, 972, x2)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x1502, 0x55555556, 0xb503, x1, 976, x2)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555556, 0x0, x1, 980, x2)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x55555556, 0x66666665, x1, 984, x2)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x11111112, 0x55555556, 0x33333332, x1, 988, x2)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x55555554, 0x55555556, 0x55555554, x1, 992, x2)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x55555556, 0x2, x1, 996, x2)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0x55555556, 0xb504, x1, 1000, x2)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x55554054, 0x55555556, -0xb504, x1, 1004, x2)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x44444446, 0x55555556, 0x66666666, x1, 1008, x2)
+
+inst_253:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x11111112, 0x55555556, 0x33333333, x1, 1012, x2)
+
+inst_254:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x55555556, 0x5, x1, 1016, x2)
+
+inst_255:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x55555556, -0x55555556, x1, 1020, x2)
+
+inst_256:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x55555554, 0x55555556, 0x55555555, x1, 1024, x2)
+
+inst_257:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555556; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x55555556, 0x3, x1, 1028, x2)
+
+inst_258:
+// rs1_val==4 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0xb505, x1, 1032, x2)
+
+inst_259:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, -0xb503, x1, 1036, x2)
+
+inst_260:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x66666667, x1, 1040, x2)
+
+inst_261:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x33333334, x1, 1044, x2)
+
+inst_262:
+// rs1_val==4 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x6, x1, 1048, x2)
+
+inst_263:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4, -0x55555555, x1, 1052, x2)
+
+inst_264:
+// rs1_val==4 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x4, x1, 1056, x2)
+
+inst_265:
+// rs1_val==4 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4, 0xb503, x1, 1060, x2)
+
+inst_266:
+// rs1_val==4 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4, 0x0, x1, 1064, x2)
+
+inst_267:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x66666665, x1, 1068, x2)
+
+inst_268:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4, 0x33333332, x1, 1072, x2)
+
+inst_269:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x55555554, x1, 1076, x2)
+
+inst_270:
+// rs1_val==4 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4, 0x2, x1, 1080, x2)
+
+inst_271:
+// rs1_val==4 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0xb504, x1, 1084, x2)
+
+inst_272:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, -0xb504, x1, 1088, x2)
+
+inst_273:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x66666666, x1, 1092, x2)
+
+inst_274:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4, 0x33333333, x1, 1096, x2)
+
+inst_275:
+// rs1_val==4 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x5, x1, 1100, x2)
+
+inst_276:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4, -0x55555556, x1, 1104, x2)
+
+inst_277:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x4, 0x55555555, x1, 1108, x2)
+
+inst_278:
+// rs1_val==4 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x4; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x4, 0x3, x1, 1112, x2)
+
+inst_279:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0xb501, 0xb503, 0xb505, x1, 1116, x2)
+
+inst_280:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x1, 0xb503, -0xb503, x1, 1120, x2)
+
+inst_281:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x2403, 0xb503, 0x66666667, x1, 1124, x2)
+
+inst_282:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x3100, 0xb503, 0x33333334, x1, 1128, x2)
+
+inst_283:
+// rs1_val==46339 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x2, 0xb503, 0x6, x1, 1132, x2)
+
+inst_284:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0xa003, 0xb503, -0x55555555, x1, 1136, x2)
+
+inst_285:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x1502, 0xb503, 0x55555556, x1, 1140, x2)
+
+inst_286:
+// rs1_val==46339 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x0, 0xb503, 0x4, x1, 1144, x2)
+
+inst_287:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0xb503, 0xb503, 0xb503, x1, 1148, x2)
+
+inst_288:
+// rs1_val==46339 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0xb503, 0x0, x1, 1152, x2)
+
+inst_289:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x2401, 0xb503, 0x66666665, x1, 1156, x2)
+
+inst_290:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x3102, 0xb503, 0x33333332, x1, 1160, x2)
+
+inst_291:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x1500, 0xb503, 0x55555554, x1, 1164, x2)
+
+inst_292:
+// rs1_val==46339 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0xb503, 0x2, x1, 1168, x2)
+
+inst_293:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0xb500, 0xb503, 0xb504, x1, 1172, x2)
+
+inst_294:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x0, 0xb503, -0xb504, x1, 1176, x2)
+
+inst_295:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x2402, 0xb503, 0x66666666, x1, 1180, x2)
+
+inst_296:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x3103, 0xb503, 0x33333333, x1, 1184, x2)
+
+inst_297:
+// rs1_val==46339 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x1, 0xb503, 0x5, x1, 1188, x2)
+
+inst_298:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0xa002, 0xb503, -0x55555556, x1, 1192, x2)
+
+inst_299:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x1501, 0xb503, 0x55555555, x1, 1196, x2)
+
+inst_300:
+// rs1_val==46339 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb503; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x3, 0xb503, 0x3, x1, 1200, x2)
+
+inst_301:
+// rs1_val==0 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0xb505, x1, 1204, x2)
+
+inst_302:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, -0xb503, x1, 1208, x2)
+
+inst_303:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x66666667, x1, 1212, x2)
+
+inst_304:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x33333334, x1, 1216, x2)
+
+inst_305:
+// rs1_val==0 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x6, x1, 1220, x2)
+
+inst_306:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, -0x55555555, x1, 1224, x2)
+
+inst_307:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x55555556, x1, 1228, x2)
+
+inst_308:
+// rs1_val==0 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x4, x1, 1232, x2)
+
+inst_309:
+// rs1_val==0 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0xb503, x1, 1236, x2)
+
+inst_310:
+// rs1_val==0 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x0, x1, 1240, x2)
+
+inst_311:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x66666665, x1, 1244, x2)
+
+inst_312:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x33333332, x1, 1248, x2)
+
+inst_313:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x55555554, x1, 1252, x2)
+
+inst_314:
+// rs1_val==0 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x2, x1, 1256, x2)
+
+inst_315:
+// rs1_val==0 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0xb504, x1, 1260, x2)
+
+inst_316:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, -0xb504, x1, 1264, x2)
+
+inst_317:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x66666666, x1, 1268, x2)
+
+inst_318:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x33333333, x1, 1272, x2)
+
+inst_319:
+// rs1_val==0 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x5, x1, 1276, x2)
+
+inst_320:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, -0x55555556, x1, 1280, x2)
+
+inst_321:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x55555555, x1, 1284, x2)
+
+inst_322:
+// rs1_val==0 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x0; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x0, 0x3, x1, 1288, x2)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x2405, 0x66666665, 0xb505, x1, 1292, x2)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x66664265, 0x66666665, -0xb503, x1, 1296, x2)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x66666665, 0x66666665, 0x66666667, x1, 1300, x2)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x22222224, 0x66666665, 0x33333334, x1, 1304, x2)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x66666665, 0x6, x1, 1308, x2)
+
+inst_328:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x22222221, 0x66666665, -0x55555555, x1, 1312, x2)
+
+inst_329:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x66666665, 0x55555556, x1, 1316, x2)
+
+inst_330:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x66666665, 0x4, x1, 1320, x2)
+
+inst_331:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x2401, 0x66666665, 0xb503, x1, 1324, x2)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x33333333, 0x0, x1, 1328, x2)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x22222221, 0x33333333, 0x66666665, x1, 1332, x2)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x33333332, 0x33333333, 0x33333332, x1, 1336, x2)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x11111110, 0x33333333, 0x55555554, x1, 1340, x2)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x33333333, 0x2, x1, 1344, x2)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x3100, 0x33333333, 0xb504, x1, 1348, x2)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x33330230, 0x33333333, -0xb504, x1, 1352, x2)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x33333333, 0x66666666, x1, 1356, x2)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x33333333, 0x33333333, 0x33333333, x1, 1360, x2)
+
+inst_341:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x33333333, 0x5, x1, 1364, x2)
+
+inst_342:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x33333333, -0x55555556, x1, 1368, x2)
+
+inst_343:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x11111111, 0x33333333, 0x55555555, x1, 1372, x2)
+
+inst_344:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x33333333, 0x3, x1, 1376, x2)
+
+inst_345:
+// rs1_val==5 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x5, 0xb505, x1, 1380, x2)
+
+inst_346:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x5, -0xb503, x1, 1384, x2)
+
+inst_347:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x5, 0x66666667, x1, 1388, x2)
+
+inst_348:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x5, 0x33333334, x1, 1392, x2)
+
+inst_349:
+// rs1_val==5 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x5, 0x6, x1, 1396, x2)
+
+inst_350:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x5, -0x55555555, x1, 1400, x2)
+
+inst_351:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x5, 0x55555556, x1, 1404, x2)
+
+inst_352:
+// rs1_val==5 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x5, 0x4, x1, 1408, x2)
+
+inst_353:
+// rs1_val==5 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x5, 0xb503, x1, 1412, x2)
+
+inst_354:
+// rs1_val==5 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x5, 0x0, x1, 1416, x2)
+
+inst_355:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x5, 0x66666665, x1, 1420, x2)
+
+inst_356:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x5, 0x33333332, x1, 1424, x2)
+
+inst_357:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x5, 0x55555554, x1, 1428, x2)
+
+inst_358:
+// rs1_val==5 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x5, 0x2, x1, 1432, x2)
+
+inst_359:
+// rs1_val==5 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x5, 0xb504, x1, 1436, x2)
+
+inst_360:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x5, -0xb504, x1, 1440, x2)
+
+inst_361:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x5, 0x66666666, x1, 1444, x2)
+
+inst_362:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x5, 0x33333333, x1, 1448, x2)
+
+inst_363:
+// rs1_val==5 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x5, 0x5, x1, 1452, x2)
+
+inst_364:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x5, -0x55555556, x1, 1456, x2)
+
+inst_365:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x5, 0x55555555, x1, 1460, x2)
+
+inst_366:
+// rs1_val==5 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x5; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x5, 0x3, x1, 1464, x2)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==46341, rs1_val == -1431655766
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0xa000, -0x55555556, 0xb505, x1, 1468, x2)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0xaaaa0aa8, -0x55555556, -0xb503, x1, 1472, x2)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x22222222, -0x55555556, 0x66666667, x1, 1476, x2)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x22222220, -0x55555556, 0x33333334, x1, 1480, x2)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x2, -0x55555556, 0x6, x1, 1484, x2)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0xaaaaaaaa, -0x55555556, -0x55555555, x1, 1488, x2)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x2, -0x55555556, 0x55555556, x1, 1492, x2)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x55555556, 0x4, x1, 1496, x2)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0xa002, -0x55555556, 0xb503, x1, 1500, x2)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x55555556, 0x0, x1, 1504, x2)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x22222220, -0x55555556, 0x66666665, x1, 1508, x2)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x22222222, -0x55555556, 0x33333332, x1, 1512, x2)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x55555556, 0x55555554, x1, 1516, x2)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, -0x55555556, 0x2, x1, 1520, x2)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0xa000, -0x55555556, 0xb504, x1, 1524, x2)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0xaaaa0aa8, -0x55555556, -0xb504, x1, 1528, x2)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x22222222, -0x55555556, 0x66666666, x1, 1532, x2)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x22222222, -0x55555556, 0x33333333, x1, 1536, x2)
+
+inst_385:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x55555556, 0x5, x1, 1540, x2)
+
+inst_386:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0xaaaaaaaa, -0x55555556, -0x55555556, x1, 1544, x2)
+
+inst_387:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x0, -0x55555556, 0x55555555, x1, 1548, x2)
+
+inst_388:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x2, -0x55555556, 0x3, x1, 1552, x2)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x1505, 0x55555555, 0xb505, x1, 1556, x2)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x55554055, 0x55555555, -0xb503, x1, 1560, x2)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x44444445, 0x55555555, 0x66666667, x1, 1564, x2)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x11111114, 0x55555555, 0x33333334, x1, 1568, x2)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x55555555, 0x6, x1, 1572, x2)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x55555555, -0x55555555, x1, 1576, x2)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x55555554, 0x55555555, 0x55555556, x1, 1580, x2)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x55555555, 0x4, x1, 1584, x2)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x1501, 0x55555555, 0xb503, x1, 1588, x2)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555555, 0x0, x1, 1592, x2)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x44444445, 0x55555555, 0x66666665, x1, 1596, x2)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x11111110, 0x55555555, 0x33333332, x1, 1600, x2)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x55555554, 0x55555555, 0x55555554, x1, 1604, x2)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555555, 0x2, x1, 1608, x2)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0x55555555, 0xb504, x1, 1612, x2)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x55554054, 0x55555555, -0xb504, x1, 1616, x2)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x55555555, 0x66666666, x1, 1620, x2)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x11111111, 0x55555555, 0x33333333, x1, 1624, x2)
+
+inst_407:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x55555555, 0x5, x1, 1628, x2)
+
+inst_408:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555555, -0x55555556, x1, 1632, x2)
+
+inst_409:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x55555555, 0x55555555, 0x55555555, x1, 1636, x2)
+
+inst_410:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555555; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x55555555, 0x3, x1, 1640, x2)
+
+inst_411:
+// rs1_val==3 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x3, 0xb505, x1, 1644, x2)
+
+inst_412:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x3, -0xb503, x1, 1648, x2)
+
+inst_413:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x3, 0x66666667, x1, 1652, x2)
+
+inst_414:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x3, 0x33333334, x1, 1656, x2)
+
+inst_415:
+// rs1_val==3 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x3, 0x6, x1, 1660, x2)
+
+inst_416:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x3, -0x55555555, x1, 1664, x2)
+
+inst_417:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x3, 0x55555556, x1, 1668, x2)
+
+inst_418:
+// rs1_val==3 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x3, 0x4, x1, 1672, x2)
+
+inst_419:
+// rs1_val==3 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x3, 0xb503, x1, 1676, x2)
+
+inst_420:
+// rs1_val==3 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x3, 0x0, x1, 1680, x2)
+
+inst_421:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x3, 0x66666665, x1, 1684, x2)
+
+inst_422:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x3, 0x33333332, x1, 1688, x2)
+
+inst_423:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x3, 0x55555554, x1, 1692, x2)
+
+inst_424:
+// rs1_val==3 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x3, 0x2, x1, 1696, x2)
+
+inst_425:
+// rs1_val==3 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x3, 0xb504, x1, 1700, x2)
+
+inst_426:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x3, -0xb504, x1, 1704, x2)
+
+inst_427:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x3, 0x66666666, x1, 1708, x2)
+
+inst_428:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x3, 0x33333333, x1, 1712, x2)
+
+inst_429:
+// rs1_val==3 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x3, 0x5, x1, 1716, x2)
+
+inst_430:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x3, -0x55555556, x1, 1720, x2)
+
+inst_431:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x3, 0x55555555, x1, 1724, x2)
+
+inst_432:
+// rs1_val==3 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x3; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x3, 0x3, 0x3, x1, 1728, x2)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x66666665, 0x0, x1, 1732, x2)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x66666665, 0x66666665, 0x66666665, x1, 1736, x2)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x22222220, 0x66666665, 0x33333332, x1, 1740, x2)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x66666665, 0x55555554, x1, 1744, x2)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x2404, 0x66666665, 0xb504, x1, 1748, x2)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x66664264, 0x66666665, -0xb504, x1, 1752, x2)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x66666664, 0x66666665, 0x66666666, x1, 1756, x2)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x22222221, 0x66666665, 0x33333333, x1, 1760, x2)
+
+inst_441:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x5, 0x66666665, 0x5, x1, 1764, x2)
+
+inst_442:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x22222220, 0x66666665, -0x55555556, x1, 1768, x2)
+
+inst_443:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x44444445, 0x66666665, 0x55555555, x1, 1772, x2)
+
+inst_444:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666665; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x1, 0x66666665, 0x3, x1, 1776, x2)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x3100, 0x33333332, 0xb505, x1, 1780, x2)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x33330230, 0x33333332, -0xb503, x1, 1784, x2)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x33333332, 0x66666667, x1, 1788, x2)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x33333330, 0x33333332, 0x33333334, x1, 1792, x2)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x33333332, 0x6, x1, 1796, x2)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x33333332, -0x55555555, x1, 1800, x2)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x11111112, 0x33333332, 0x55555556, x1, 1804, x2)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x33333332, 0x4, x1, 1808, x2)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x3102, 0x33333332, 0xb503, x1, 1812, x2)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x33333332, 0x0, x1, 1816, x2)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x22222220, 0x33333332, 0x66666665, x1, 1820, x2)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x33333332, 0x33333332, 0x33333332, x1, 1824, x2)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x11111110, 0x33333332, 0x55555554, x1, 1828, x2)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x33333332, 0x2, x1, 1832, x2)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x3100, 0x33333332, 0xb504, x1, 1836, x2)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x33330230, 0x33333332, -0xb504, x1, 1840, x2)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x33333332, 0x66666666, x1, 1844, x2)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x33333332, 0x33333332, 0x33333333, x1, 1848, x2)
+
+inst_463:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x33333332, 0x5, x1, 1852, x2)
+
+inst_464:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x33333332, -0x55555556, x1, 1856, x2)
+
+inst_465:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x11111110, 0x33333332, 0x55555555, x1, 1860, x2)
+
+inst_466:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333332; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x33333332, 0x3, x1, 1864, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0x55555554, 0xb505, x1, 1868, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x55554054, 0x55555554, -0xb503, x1, 1872, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x55555554, 0x66666667, x1, 1876, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x11111114, 0x55555554, 0x33333334, x1, 1880, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x55555554, 0x6, x1, 1884, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555554, -0x55555555, x1, 1888, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x55555554, 0x55555554, 0x55555556, x1, 1892, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x55555554, 0x4, x1, 1896, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x1500, 0x55555554, 0xb503, x1, 1900, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555554, 0x0, x1, 1904, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x55555554, 0x66666665, x1, 1908, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x11111110, 0x55555554, 0x33333332, x1, 1912, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x55555554, 0x55555554, 0x55555554, x1, 1916, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555554, 0x2, x1, 1920, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0x55555554, 0xb504, x1, 1924, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x55554054, 0x55555554, -0xb504, x1, 1928, x2)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x55555554, 0x66666666, x1, 1932, x2)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x11111110, 0x55555554, 0x33333333, x1, 1936, x2)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x55555554, 0x5, x1, 1940, x2)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555554, -0x55555556, x1, 1944, x2)
+
+inst_487:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x55555554, 0x55555554, 0x55555555, x1, 1948, x2)
+
+inst_488:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x55555554; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x55555554, 0x3, x1, 1952, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0xb505, x1, 1956, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, -0xb503, x1, 1960, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0x66666667, x1, 1964, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0x33333334, x1, 1968, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0x6, x1, 1972, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, -0x55555555, x1, 1976, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0x55555556, x1, 1980, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0x4, x1, 1984, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0xb503, x1, 1988, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0x0, x1, 1992, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0x66666665, x1, 1996, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0x33333332, x1, 2000, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0x55555554, x1, 2004, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0x2, x1, 2008, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0xb504, x1, 2012, x2)
+
+inst_504:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, -0xb504, x1, 2016, x2)
+
+inst_505:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0x66666666, x1, 2020, x2)
+
+inst_506:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0x33333333, x1, 2024, x2)
+
+inst_507:
+// rs1_val==2 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0x5, x1, 2028, x2)
+
+inst_508:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, -0x55555556, x1, 2032, x2)
+
+inst_509:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x2, 0x55555555, x1, 2036, x2)
+
+inst_510:
+// rs1_val==2 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x2; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x2, 0x3, x1, 2040, x2)
+
+inst_511:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0xb504, 0xb504, 0xb505, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_512:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x4, 0xb504, -0xb503, x1, 0, x2)
+
+inst_513:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x2404, 0xb504, 0x66666667, x1, 4, x2)
+
+inst_514:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x3104, 0xb504, 0x33333334, x1, 8, x2)
+
+inst_515:
+// rs1_val==46340 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, 0xb504, 0x6, x1, 12, x2)
+
+inst_516:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0xa000, 0xb504, -0x55555555, x1, 16, x2)
+
+inst_517:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0xb504, 0x55555556, x1, 20, x2)
+
+inst_518:
+// rs1_val==46340 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0xb504, 0x4, x1, 24, x2)
+
+inst_519:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0xb500, 0xb504, 0xb503, x1, 28, x2)
+
+inst_520:
+// rs1_val==46340 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0xb504, 0x0, x1, 32, x2)
+
+inst_521:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x2404, 0xb504, 0x66666665, x1, 36, x2)
+
+inst_522:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x3100, 0xb504, 0x33333332, x1, 40, x2)
+
+inst_523:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0xb504, 0x55555554, x1, 44, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, 0xb504, 0x2, x1, 48, x2)
+
+inst_525:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0xb504, 0xb504, 0xb504, x1, 52, x2)
+
+inst_526:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, 0xb504, -0xb504, x1, 56, x2)
+
+inst_527:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x2404, 0xb504, 0x66666666, x1, 60, x2)
+
+inst_528:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x3100, 0xb504, 0x33333333, x1, 64, x2)
+
+inst_529:
+// rs1_val==46340 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x4, 0xb504, 0x5, x1, 68, x2)
+
+inst_530:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0xa000, 0xb504, -0x55555556, x1, 72, x2)
+
+inst_531:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x1504, 0xb504, 0x55555555, x1, 76, x2)
+
+inst_532:
+// rs1_val==46340 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0xb504; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x0, 0xb504, 0x3, x1, 80, x2)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x4, -0xb504, 0xb505, x1, 84, x2)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0xffff4afc, -0xb504, -0xb503, x1, 88, x2)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x66664264, -0xb504, 0x66666667, x1, 92, x2)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x33330234, -0xb504, 0x33333334, x1, 96, x2)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x4, -0xb504, 0x6, x1, 100, x2)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0xaaaa0aa8, -0xb504, -0x55555555, x1, 104, x2)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x55554054, -0xb504, 0x55555556, x1, 108, x2)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, -0xb504, 0x4, x1, 112, x2)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x0, -0xb504, 0xb503, x1, 116, x2)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, -0xb504, 0x0, x1, 120, x2)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x66664264, -0xb504, 0x66666665, x1, 124, x2)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x33330230, -0xb504, 0x33333332, x1, 128, x2)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x55554054, -0xb504, 0x55555554, x1, 132, x2)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x0, -0xb504, 0x2, x1, 136, x2)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x4, -0xb504, 0xb504, x1, 140, x2)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0xffff4afc, -0xb504, -0xb504, x1, 144, x2)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x66664264, -0xb504, 0x66666666, x1, 148, x2)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x33330230, -0xb504, 0x33333333, x1, 152, x2)
+
+inst_551:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x4, -0xb504, 0x5, x1, 156, x2)
+
+inst_552:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0xaaaa0aa8, -0xb504, -0x55555556, x1, 160, x2)
+
+inst_553:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x55554054, -0xb504, 0x55555555, x1, 164, x2)
+
+inst_554:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:-0xb504; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x0, -0xb504, 0x3, x1, 168, x2)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x2404, 0x66666666, 0xb505, x1, 172, x2)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x66664264, 0x66666666, -0xb503, x1, 176, x2)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x66666666, 0x66666666, 0x66666667, x1, 180, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x22222224, 0x66666666, 0x33333334, x1, 184, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x6, 0x66666666, 0x6, x1, 188, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x66666666, -0x55555555, x1, 192, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x44444446, 0x66666666, 0x55555556, x1, 196, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x66666666, 0x4, x1, 200, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x2402, 0x66666666, 0xb503, x1, 204, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x0
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x66666666, 0x0, x1, 208, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665
+TEST_CR_OP( c.and, x10, x11, 0x66666664, 0x66666666, 0x66666665, x1, 212, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x66666666, 0x33333332, x1, 216, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x66666666, 0x55555554, x1, 220, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x2
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x66666666, 0x2, x1, 224, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504
+TEST_CR_OP( c.and, x10, x11, 0x2404, 0x66666666, 0xb504, x1, 228, x2)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504
+TEST_CR_OP( c.and, x10, x11, 0x66664264, 0x66666666, -0xb504, x1, 232, x2)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666
+TEST_CR_OP( c.and, x10, x11, 0x66666666, 0x66666666, 0x66666666, x1, 236, x2)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x66666666, 0x33333333, x1, 240, x2)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x5
+TEST_CR_OP( c.and, x10, x11, 0x4, 0x66666666, 0x5, x1, 244, x2)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x22222222, 0x66666666, -0x55555556, x1, 248, x2)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x44444444, 0x66666666, 0x55555555, x1, 252, x2)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x66666666; op2val:0x3
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x66666666, 0x3, x1, 256, x2)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505
+TEST_CR_OP( c.and, x10, x11, 0x3101, 0x33333333, 0xb505, x1, 260, x2)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503
+TEST_CR_OP( c.and, x10, x11, 0x33330231, 0x33333333, -0xb503, x1, 264, x2)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667
+TEST_CR_OP( c.and, x10, x11, 0x22222223, 0x33333333, 0x66666667, x1, 268, x2)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334
+TEST_CR_OP( c.and, x10, x11, 0x33333330, 0x33333333, 0x33333334, x1, 272, x2)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x6
+TEST_CR_OP( c.and, x10, x11, 0x2, 0x33333333, 0x6, x1, 276, x2)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555
+TEST_CR_OP( c.and, x10, x11, 0x22222223, 0x33333333, -0x55555555, x1, 280, x2)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556
+TEST_CR_OP( c.and, x10, x11, 0x11111112, 0x33333333, 0x55555556, x1, 284, x2)
+
+inst_584:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0x4
+TEST_CR_OP( c.and, x10, x11, 0x0, 0x33333333, 0x4, x1, 288, x2)
+
+inst_585:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: c.and; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503
+TEST_CR_OP( c.and, x10, x11, 0x3103, 0x33333333, 0xb503, x1, 292, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 74*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/candi-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/candi-01.S
new file mode 100644
index 000000000..ff2c2a5ba
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/candi-01.S
@@ -0,0 +1,1940 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.andi instruction of the RISC-V C extension for the candi covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",candi)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1==x14, imm_val == (-2**(6-1)), rs1_val != imm_val, rs1_val == 512, rs1_val > 0 and imm_val < 0, imm_val == -32
+// opcode: c.andi; op1:x14; immval:-0x20
+TEST_CI_OP( c.andi, x14, 0x200, 0x200, -0x20, x1, 0, x2)
+
+inst_1:
+// rs1==x11, rs1_val == 2147483647, imm_val == 4, rs1_val == (2**(xlen-1)-1), rs1_val > 0 and imm_val > 0
+// opcode: c.andi; op1:x11; immval:0x4
+TEST_CI_OP( c.andi, x11, 0x4, 0x7fffffff, 0x4, x1, 4, x2)
+
+inst_2:
+// rs1==x8, rs1_val == -1073741825, imm_val == 0
+// opcode: c.andi; op1:x8; immval:0x0
+TEST_CI_OP( c.andi, x8, 0x0, -0x40000001, 0x0, x1, 8, x2)
+
+inst_3:
+// rs1==x9, rs1_val == -536870913, rs1_val < 0 and imm_val > 0
+// opcode: c.andi; op1:x9; immval:0x7
+TEST_CI_OP( c.andi, x9, 0x7, -0x20000001, 0x7, x1, 12, x2)
+
+inst_4:
+// rs1==x12, rs1_val == -268435457,
+// opcode: c.andi; op1:x12; immval:0x3
+TEST_CI_OP( c.andi, x12, 0x3, -0x10000001, 0x3, x1, 16, x2)
+
+inst_5:
+// rs1==x15, rs1_val == -134217729,
+// opcode: c.andi; op1:x15; immval:0x6
+TEST_CI_OP( c.andi, x15, 0x6, -0x8000001, 0x6, x1, 20, x2)
+
+inst_6:
+// rs1==x10, rs1_val == -67108865,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x9, -0x4000001, 0x9, x1, 24, x2)
+
+inst_7:
+// rs1==x13, rs1_val == -33554433,
+// opcode: c.andi; op1:x13; immval:0x4
+TEST_CI_OP( c.andi, x13, 0x4, -0x2000001, 0x4, x1, 28, x2)
+
+inst_8:
+// rs1_val == -16777217,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, -0x1000001, 0x0, x1, 32, x2)
+
+inst_9:
+// rs1_val == -8388609,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x5, -0x800001, 0x5, x1, 36, x2)
+
+inst_10:
+// rs1_val == -4194305, rs1_val < 0 and imm_val < 0
+// opcode: c.andi; op1:x10; immval:-0x8
+TEST_CI_OP( c.andi, x10, 0xffbffff8, -0x400001, -0x8, x1, 40, x2)
+
+inst_11:
+// rs1_val == -2097153, imm_val == -3
+// opcode: c.andi; op1:x10; immval:-0x3
+TEST_CI_OP( c.andi, x10, 0xffdffffd, -0x200001, -0x3, x1, 44, x2)
+
+inst_12:
+// rs1_val == -1048577,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, -0x100001, 0x4, x1, 48, x2)
+
+inst_13:
+// rs1_val == -524289, imm_val == 2
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, -0x80001, 0x2, x1, 52, x2)
+
+inst_14:
+// rs1_val == -262145,
+// opcode: c.andi; op1:x10; immval:-0x8
+TEST_CI_OP( c.andi, x10, 0xfffbfff8, -0x40001, -0x8, x1, 56, x2)
+
+inst_15:
+// rs1_val == -131073,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x7, -0x20001, 0x7, x1, 60, x2)
+
+inst_16:
+// rs1_val == -65537,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x6, -0x10001, 0x6, x1, 64, x2)
+
+inst_17:
+// rs1_val == -32769,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x5, -0x8001, 0x5, x1, 68, x2)
+
+inst_18:
+// rs1_val == -16385,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, -0x4001, 0x4, x1, 72, x2)
+
+inst_19:
+// rs1_val == -8193,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x3, -0x2001, 0x3, x1, 76, x2)
+
+inst_20:
+// rs1_val == -4097,
+// opcode: c.andi; op1:x10; immval:-0x6
+TEST_CI_OP( c.andi, x10, 0xffffeffa, -0x1001, -0x6, x1, 80, x2)
+
+inst_21:
+// rs1_val == -2049,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x6, -0x801, 0x6, x1, 84, x2)
+
+inst_22:
+// rs1_val == -1025, imm_val == -5
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0xfffffbfb, -0x401, -0x5, x1, 88, x2)
+
+inst_23:
+// rs1_val == -513, imm_val == -22
+// opcode: c.andi; op1:x10; immval:-0x16
+TEST_CI_OP( c.andi, x10, 0xfffffdea, -0x201, -0x16, x1, 92, x2)
+
+inst_24:
+// rs1_val == -257,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x6, -0x101, 0x6, x1, 96, x2)
+
+inst_25:
+// rs1_val == -129,
+// opcode: c.andi; op1:x10; immval:-0x16
+TEST_CI_OP( c.andi, x10, 0xffffff6a, -0x81, -0x16, x1, 100, x2)
+
+inst_26:
+// rs1_val == -65, imm_val == -2
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0xffffffbe, -0x41, -0x2, x1, 104, x2)
+
+inst_27:
+// rs1_val == -33,
+// opcode: c.andi; op1:x10; immval:-0x10
+TEST_CI_OP( c.andi, x10, 0xffffffd0, -0x21, -0x10, x1, 108, x2)
+
+inst_28:
+// rs1_val == -17,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, -0x11, 0x4, x1, 112, x2)
+
+inst_29:
+// rs1_val == -9,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, -0x9, 0x0, x1, 116, x2)
+
+inst_30:
+// rs1_val == -5,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, -0x5, 0x2, x1, 120, x2)
+
+inst_31:
+// rs1_val == -3,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, -0x3, 0x2, x1, 124, x2)
+
+inst_32:
+// rs1_val == -2,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x6, -0x2, 0x6, x1, 128, x2)
+
+inst_33:
+// imm_val == 31, imm_val == (2**(6-1)-1)
+// opcode: c.andi; op1:x10; immval:0x1f
+TEST_CI_OP( c.andi, x10, 0x1f, -0x8000001, 0x1f, x1, 132, x2)
+
+inst_34:
+// imm_val == -17, rs1_val == 2048
+// opcode: c.andi; op1:x10; immval:-0x11
+TEST_CI_OP( c.andi, x10, 0x800, 0x800, -0x11, x1, 136, x2)
+
+inst_35:
+// imm_val == -9,
+// opcode: c.andi; op1:x10; immval:-0x9
+TEST_CI_OP( c.andi, x10, 0x5, 0x5, -0x9, x1, 140, x2)
+
+inst_36:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x0, -0x80000000, 0x3, x1, 144, x2)
+
+inst_37:
+// rs1_val == 1073741824,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x40000000, 0x0, x1, 148, x2)
+
+inst_38:
+// rs1_val == 536870912,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x0, 0x20000000, 0x5, x1, 152, x2)
+
+inst_39:
+// rs1_val == 268435456,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x10000000, 0x10000000, -0x2, x1, 156, x2)
+
+inst_40:
+// rs1_val == 134217728, imm_val == 1
+// opcode: c.andi; op1:x10; immval:0x1
+TEST_CI_OP( c.andi, x10, 0x0, 0x8000000, 0x1, x1, 160, x2)
+
+inst_41:
+// rs1_val == 67108864, imm_val == 16
+// opcode: c.andi; op1:x10; immval:0x10
+TEST_CI_OP( c.andi, x10, 0x0, 0x4000000, 0x10, x1, 164, x2)
+
+inst_42:
+// rs1_val == 33554432,
+// opcode: c.andi; op1:x10; immval:-0x20
+TEST_CI_OP( c.andi, x10, 0x2000000, 0x2000000, -0x20, x1, 168, x2)
+
+inst_43:
+// rs1_val == 16777216,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x1000000, 0x1000000, -0x4, x1, 172, x2)
+
+inst_44:
+// rs1_val == 8388608,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x800000, 0x2, x1, 176, x2)
+
+inst_45:
+// rs1_val == 4194304,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x400000, 0x0, x1, 180, x2)
+
+inst_46:
+// rs1_val == 2097152,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x200000, 0x4, x1, 184, x2)
+
+inst_47:
+// rs1_val == 1048576,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x100000, 0x4, x1, 188, x2)
+
+inst_48:
+// rs1_val == 524288,
+// opcode: c.andi; op1:x10; immval:0xf
+TEST_CI_OP( c.andi, x10, 0x0, 0x80000, 0xf, x1, 192, x2)
+
+inst_49:
+// rs1_val == 262144,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x40000, 0x2, x1, 196, x2)
+
+inst_50:
+// rs1_val == 131072,
+// opcode: c.andi; op1:x10; immval:0x1f
+TEST_CI_OP( c.andi, x10, 0x0, 0x20000, 0x1f, x1, 200, x2)
+
+inst_51:
+// rs1_val == 65536,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x10000, 0x0, x1, 204, x2)
+
+inst_52:
+// rs1_val == 32768,
+// opcode: c.andi; op1:x10; immval:-0xa
+TEST_CI_OP( c.andi, x10, 0x8000, 0x8000, -0xa, x1, 208, x2)
+
+inst_53:
+// rs1_val == 16384,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x0, 0x4000, 0xb, x1, 212, x2)
+
+inst_54:
+// rs1_val == 8192,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x0, 0x2000, 0x6, x1, 216, x2)
+
+inst_55:
+// rs1_val == 4096,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x0, 0x1000, 0x6, x1, 220, x2)
+
+inst_56:
+// rs1_val == 1024,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x0, 0x400, 0x6, x1, 224, x2)
+
+inst_57:
+// rs1_val == 256,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x0, 0x100, 0x6, x1, 228, x2)
+
+inst_58:
+// rs1_val == 128,
+// opcode: c.andi; op1:x10; immval:-0x8
+TEST_CI_OP( c.andi, x10, 0x80, 0x80, -0x8, x1, 232, x2)
+
+inst_59:
+// rs1_val == 64,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0x40, 0xa, x1, 236, x2)
+
+inst_60:
+// rs1_val == 32,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x20, 0x4, x1, 240, x2)
+
+inst_61:
+// rs1_val == 16, imm_val == 8
+// opcode: c.andi; op1:x10; immval:0x8
+TEST_CI_OP( c.andi, x10, 0x0, 0x10, 0x8, x1, 244, x2)
+
+inst_62:
+// rs1_val == 8,
+// opcode: c.andi; op1:x10; immval:-0x11
+TEST_CI_OP( c.andi, x10, 0x8, 0x8, -0x11, x1, 248, x2)
+
+inst_63:
+// rs1_val == 4, rs1_val==4 and imm_val==0
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x4, 0x0, x1, 252, x2)
+
+inst_64:
+// rs1_val == 2,
+// opcode: c.andi; op1:x10; immval:0x8
+TEST_CI_OP( c.andi, x10, 0x0, 0x2, 0x8, x1, 256, x2)
+
+inst_65:
+// rs1_val == 1,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x1, 0x0, x1, 260, x2)
+
+inst_66:
+// rs1_val==46341 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, 0xb505, 0x6, x1, 264, x2)
+
+inst_67:
+// rs1_val==46341 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0xb504, 0xb505, -0x4, x1, 268, x2)
+
+inst_68:
+// rs1_val==46341 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0xb505, 0xb505, -0x1, x1, 272, x2)
+
+inst_69:
+// rs1_val==46341 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x5, 0xb505, 0x7, x1, 276, x2)
+
+inst_70:
+// rs1_val==46341 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0xb505, 0x4, x1, 280, x2)
+
+inst_71:
+// rs1_val==46341 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x1, 0xb505, 0xb, x1, 284, x2)
+
+inst_72:
+// rs1_val==46341 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0xb505, 0x0, x1, 288, x2)
+
+inst_73:
+// rs1_val==46341 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x5, 0xb505, 0x5, x1, 292, x2)
+
+inst_74:
+// rs1_val==46341 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0xb505, 0x2, x1, 296, x2)
+
+inst_75:
+// rs1_val==46341 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x1, 0xb505, 0x9, x1, 300, x2)
+
+inst_76:
+// rs1_val==46341 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0xb501, 0xb505, -0x5, x1, 304, x2)
+
+inst_77:
+// rs1_val==46341 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0xb504, 0xb505, -0x2, x1, 308, x2)
+
+inst_78:
+// rs1_val==46341 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x1, 0xb505, 0x3, x1, 312, x2)
+
+inst_79:
+// rs1_val==46341 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0xb505, 0xa, x1, 316, x2)
+
+inst_80:
+// rs1_val==-46339 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, -0xb503, 0x6, x1, 320, x2)
+
+inst_81:
+// rs1_val==-46339 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0xffff4afc, -0xb503, -0x4, x1, 324, x2)
+
+inst_82:
+// rs1_val==-46339 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0xffff4afd, -0xb503, -0x1, x1, 328, x2)
+
+inst_83:
+// rs1_val==-46339 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x5, -0xb503, 0x7, x1, 332, x2)
+
+inst_84:
+// rs1_val==-46339 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, -0xb503, 0x4, x1, 336, x2)
+
+inst_85:
+// rs1_val==-46339 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x9, -0xb503, 0xb, x1, 340, x2)
+
+inst_86:
+// rs1_val==-46339 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, -0xb503, 0x0, x1, 344, x2)
+
+inst_87:
+// rs1_val==-46339 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x5, -0xb503, 0x5, x1, 348, x2)
+
+inst_88:
+// rs1_val==-46339 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, -0xb503, 0x2, x1, 352, x2)
+
+inst_89:
+// rs1_val==-46339 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x9, -0xb503, 0x9, x1, 356, x2)
+
+inst_90:
+// rs1_val==-46339 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0xffff4af9, -0xb503, -0x5, x1, 360, x2)
+
+inst_91:
+// rs1_val==-46339 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0xffff4afc, -0xb503, -0x2, x1, 364, x2)
+
+inst_92:
+// rs1_val==-46339 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x1, -0xb503, 0x3, x1, 368, x2)
+
+inst_93:
+// rs1_val==-46339 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x8, -0xb503, 0xa, x1, 372, x2)
+
+inst_94:
+// rs1_val==1717986919 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x6, 0x66666667, 0x6, x1, 376, x2)
+
+inst_95:
+// rs1_val==1717986919 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x66666664, 0x66666667, -0x4, x1, 380, x2)
+
+inst_96:
+// rs1_val==1717986919 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x66666667, 0x66666667, -0x1, x1, 384, x2)
+
+inst_97:
+// rs1_val==1717986919 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x7, 0x66666667, 0x7, x1, 388, x2)
+
+inst_98:
+// rs1_val==1717986919 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x66666667, 0x4, x1, 392, x2)
+
+inst_99:
+// rs1_val==1717986919 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x3, 0x66666667, 0xb, x1, 396, x2)
+
+inst_100:
+// rs1_val==1717986919 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x66666667, 0x0, x1, 400, x2)
+
+inst_101:
+// rs1_val==1717986919 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x5, 0x66666667, 0x5, x1, 404, x2)
+
+inst_102:
+// rs1_val==1717986919 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x66666667, 0x2, x1, 408, x2)
+
+inst_103:
+// rs1_val==1717986919 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x1, 0x66666667, 0x9, x1, 412, x2)
+
+inst_104:
+// rs1_val==1717986919 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x66666663, 0x66666667, -0x5, x1, 416, x2)
+
+inst_105:
+// rs1_val==1717986919 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x66666666, 0x66666667, -0x2, x1, 420, x2)
+
+inst_106:
+// rs1_val==1717986919 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x3, 0x66666667, 0x3, x1, 424, x2)
+
+inst_107:
+// rs1_val==1717986919 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0x66666667, 0xa, x1, 428, x2)
+
+inst_108:
+// rs1_val==858993460 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, 0x33333334, 0x6, x1, 432, x2)
+
+inst_109:
+// rs1_val==858993460 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x33333334, 0x33333334, -0x4, x1, 436, x2)
+
+inst_110:
+// rs1_val==858993460 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x33333334, 0x33333334, -0x1, x1, 440, x2)
+
+inst_111:
+// rs1_val==858993460 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x4, 0x33333334, 0x7, x1, 444, x2)
+
+inst_112:
+// rs1_val==858993460 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x33333334, 0x4, x1, 448, x2)
+
+inst_113:
+// rs1_val==858993460 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333334, 0xb, x1, 452, x2)
+
+inst_114:
+// rs1_val==858993460 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333334, 0x0, x1, 456, x2)
+
+inst_115:
+// rs1_val==858993460 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x4, 0x33333334, 0x5, x1, 460, x2)
+
+inst_116:
+// rs1_val==858993460 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333334, 0x2, x1, 464, x2)
+
+inst_117:
+// rs1_val==858993460 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333334, 0x9, x1, 468, x2)
+
+inst_118:
+// rs1_val==858993460 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x33333330, 0x33333334, -0x5, x1, 472, x2)
+
+inst_119:
+// rs1_val==858993460 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x33333334, 0x33333334, -0x2, x1, 476, x2)
+
+inst_120:
+// rs1_val==858993460 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333334, 0x3, x1, 480, x2)
+
+inst_121:
+// rs1_val==858993460 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333334, 0xa, x1, 484, x2)
+
+inst_122:
+// rs1_val==6 and imm_val==6, rs1_val == imm_val
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x6, 0x6, 0x6, x1, 488, x2)
+
+inst_123:
+// rs1_val==6 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x6, -0x4, x1, 492, x2)
+
+inst_124:
+// rs1_val==6 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x6, 0x6, -0x1, x1, 496, x2)
+
+inst_125:
+// rs1_val==6 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x6, 0x6, 0x7, x1, 500, x2)
+
+inst_126:
+// rs1_val==6 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x6, 0x4, x1, 504, x2)
+
+inst_127:
+// rs1_val==6 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x2, 0x6, 0xb, x1, 508, x2)
+
+inst_128:
+// rs1_val==6 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x6, 0x0, x1, 512, x2)
+
+inst_129:
+// rs1_val==6 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x4, 0x6, 0x5, x1, 516, x2)
+
+inst_130:
+// rs1_val==6 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x6, 0x2, x1, 520, x2)
+
+inst_131:
+// rs1_val==6 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x6, 0x9, x1, 524, x2)
+
+inst_132:
+// rs1_val==6 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x2, 0x6, -0x5, x1, 528, x2)
+
+inst_133:
+// rs1_val==6 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x6, 0x6, -0x2, x1, 532, x2)
+
+inst_134:
+// rs1_val==6 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x2, 0x6, 0x3, x1, 536, x2)
+
+inst_135:
+// rs1_val==6 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0x6, 0xa, x1, 540, x2)
+
+inst_136:
+// rs1_val==-1431655765 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x2, -0x55555555, 0x6, x1, 544, x2)
+
+inst_137:
+// rs1_val==-1431655765 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0xaaaaaaa8, -0x55555555, -0x4, x1, 548, x2)
+
+inst_138:
+// rs1_val==-1431655765 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0xaaaaaaab, -0x55555555, -0x1, x1, 552, x2)
+
+inst_139:
+// rs1_val==-1431655765 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x3, -0x55555555, 0x7, x1, 556, x2)
+
+inst_140:
+// rs1_val==-1431655765 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, -0x55555555, 0x4, x1, 560, x2)
+
+inst_141:
+// rs1_val==-1431655765 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0xb, -0x55555555, 0xb, x1, 564, x2)
+
+inst_142:
+// rs1_val==-1431655765 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, -0x55555555, 0x0, x1, 568, x2)
+
+inst_143:
+// rs1_val==-1431655765 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x1, -0x55555555, 0x5, x1, 572, x2)
+
+inst_144:
+// rs1_val==-1431655765 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, -0x55555555, 0x2, x1, 576, x2)
+
+inst_145:
+// rs1_val==-1431655765 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x9, -0x55555555, 0x9, x1, 580, x2)
+
+inst_146:
+// rs1_val==-1431655765 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0xaaaaaaab, -0x55555555, -0x5, x1, 584, x2)
+
+inst_147:
+// rs1_val==-1431655765 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0xaaaaaaaa, -0x55555555, -0x2, x1, 588, x2)
+
+inst_148:
+// rs1_val==-1431655765 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x3, -0x55555555, 0x3, x1, 592, x2)
+
+inst_149:
+// rs1_val==-1431655765 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0xa, -0x55555555, 0xa, x1, 596, x2)
+
+inst_150:
+// rs1_val==1431655766 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x6, 0x55555556, 0x6, x1, 600, x2)
+
+inst_151:
+// rs1_val==1431655766 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x55555554, 0x55555556, -0x4, x1, 604, x2)
+
+inst_152:
+// rs1_val==1431655766 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x55555556, 0x55555556, -0x1, x1, 608, x2)
+
+inst_153:
+// rs1_val==1431655766 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x6, 0x55555556, 0x7, x1, 612, x2)
+
+inst_154:
+// rs1_val==1431655766 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x55555556, 0x4, x1, 616, x2)
+
+inst_155:
+// rs1_val==1431655766 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x2, 0x55555556, 0xb, x1, 620, x2)
+
+inst_156:
+// rs1_val==1431655766 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555556, 0x0, x1, 624, x2)
+
+inst_157:
+// rs1_val==1431655766 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x4, 0x55555556, 0x5, x1, 628, x2)
+
+inst_158:
+// rs1_val==1431655766 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x55555556, 0x2, x1, 632, x2)
+
+inst_159:
+// rs1_val==1431655766 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555556, 0x9, x1, 636, x2)
+
+inst_160:
+// rs1_val==1431655766 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x55555552, 0x55555556, -0x5, x1, 640, x2)
+
+inst_161:
+// rs1_val==1431655766 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x55555556, 0x55555556, -0x2, x1, 644, x2)
+
+inst_162:
+// rs1_val==1431655766 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x2, 0x55555556, 0x3, x1, 648, x2)
+
+inst_163:
+// rs1_val==1431655766 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0x55555556, 0xa, x1, 652, x2)
+
+inst_164:
+// rs1_val==4 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, 0x4, 0x6, x1, 656, x2)
+
+inst_165:
+// rs1_val==4 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x4, -0x4, x1, 660, x2)
+
+inst_166:
+// rs1_val==4 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x4, 0x4, -0x1, x1, 664, x2)
+
+inst_167:
+// rs1_val==4 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x4, 0x4, 0x7, x1, 668, x2)
+
+inst_168:
+// rs1_val==4 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x4, 0x4, x1, 672, x2)
+
+inst_169:
+// rs1_val==4 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x0, 0x4, 0xb, x1, 676, x2)
+
+inst_170:
+// rs1_val==4 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x4, 0x4, 0x5, x1, 680, x2)
+
+inst_171:
+// rs1_val==4 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x4, 0x2, x1, 684, x2)
+
+inst_172:
+// rs1_val==4 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x4, 0x9, x1, 688, x2)
+
+inst_173:
+// rs1_val==4 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x0, 0x4, -0x5, x1, 692, x2)
+
+inst_174:
+// rs1_val==4 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x4, 0x4, -0x2, x1, 696, x2)
+
+inst_175:
+// rs1_val==4 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x0, 0x4, 0x3, x1, 700, x2)
+
+inst_176:
+// rs1_val==4 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0x4, 0xa, x1, 704, x2)
+
+inst_177:
+// rs1_val==46339 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x2, 0xb503, 0x6, x1, 708, x2)
+
+inst_178:
+// rs1_val==46339 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0xb500, 0xb503, -0x4, x1, 712, x2)
+
+inst_179:
+// rs1_val==46339 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0xb503, 0xb503, -0x1, x1, 716, x2)
+
+inst_180:
+// rs1_val==46339 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x3, 0xb503, 0x7, x1, 720, x2)
+
+inst_181:
+// rs1_val==46339 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0xb503, 0x4, x1, 724, x2)
+
+inst_182:
+// rs1_val==46339 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x3, 0xb503, 0xb, x1, 728, x2)
+
+inst_183:
+// rs1_val==46339 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0xb503, 0x0, x1, 732, x2)
+
+inst_184:
+// rs1_val==46339 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x1, 0xb503, 0x5, x1, 736, x2)
+
+inst_185:
+// rs1_val==46339 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0xb503, 0x2, x1, 740, x2)
+
+inst_186:
+// rs1_val==46339 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x1, 0xb503, 0x9, x1, 744, x2)
+
+inst_187:
+// rs1_val==46339 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0xb503, 0xb503, -0x5, x1, 748, x2)
+
+inst_188:
+// rs1_val==46339 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0xb502, 0xb503, -0x2, x1, 752, x2)
+
+inst_189:
+// rs1_val==46339 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x3, 0xb503, 0x3, x1, 756, x2)
+
+inst_190:
+// rs1_val==46339 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0xb503, 0xa, x1, 760, x2)
+
+inst_191:
+// rs1_val==0 and imm_val==6, rs1_val == 0
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0x6, x1, 764, x2)
+
+inst_192:
+// rs1_val==0 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, -0x4, x1, 768, x2)
+
+inst_193:
+// rs1_val==0 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, -0x1, x1, 772, x2)
+
+inst_194:
+// rs1_val==0 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0x7, x1, 776, x2)
+
+inst_195:
+// rs1_val==0 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0x4, x1, 780, x2)
+
+inst_196:
+// rs1_val==0 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0xb, x1, 784, x2)
+
+inst_197:
+// rs1_val==0 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0x0, x1, 788, x2)
+
+inst_198:
+// rs1_val==0 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0x5, x1, 792, x2)
+
+inst_199:
+// rs1_val==0 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0x2, x1, 796, x2)
+
+inst_200:
+// rs1_val==0 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0x9, x1, 800, x2)
+
+inst_201:
+// rs1_val==0 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, -0x5, x1, 804, x2)
+
+inst_202:
+// rs1_val==0 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, -0x2, x1, 808, x2)
+
+inst_203:
+// rs1_val==0 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0x3, x1, 812, x2)
+
+inst_204:
+// rs1_val==0 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0x0, 0xa, x1, 816, x2)
+
+inst_205:
+// rs1_val==1717986917 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, 0x66666665, 0x6, x1, 820, x2)
+
+inst_206:
+// rs1_val==1717986917 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x66666664, 0x66666665, -0x4, x1, 824, x2)
+
+inst_207:
+// rs1_val==1717986917 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x66666665, 0x66666665, -0x1, x1, 828, x2)
+
+inst_208:
+// rs1_val==1717986917 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x5, 0x66666665, 0x7, x1, 832, x2)
+
+inst_209:
+// rs1_val==1717986917 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x66666665, 0x4, x1, 836, x2)
+
+inst_210:
+// rs1_val==1717986917 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x1, 0x66666665, 0xb, x1, 840, x2)
+
+inst_211:
+// rs1_val==1717986917 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x66666665, 0x0, x1, 844, x2)
+
+inst_212:
+// rs1_val==1717986917 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x5, 0x66666665, 0x5, x1, 848, x2)
+
+inst_213:
+// rs1_val==1717986917 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x66666665, 0x2, x1, 852, x2)
+
+inst_214:
+// rs1_val==1717986917 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x1, 0x66666665, 0x9, x1, 856, x2)
+
+inst_215:
+// rs1_val==1717986917 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x66666661, 0x66666665, -0x5, x1, 860, x2)
+
+inst_216:
+// rs1_val==1717986917 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x66666664, 0x66666665, -0x2, x1, 864, x2)
+
+inst_217:
+// rs1_val==1717986917 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x1, 0x66666665, 0x3, x1, 868, x2)
+
+inst_218:
+// rs1_val==1717986917 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0x66666665, 0xa, x1, 872, x2)
+
+inst_219:
+// rs1_val==858993458 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333332, 0x6, x1, 876, x2)
+
+inst_220:
+// rs1_val==858993458 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x33333330, 0x33333332, -0x4, x1, 880, x2)
+
+inst_221:
+// rs1_val==858993458 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x33333332, 0x33333332, -0x1, x1, 884, x2)
+
+inst_222:
+// rs1_val==858993458 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333332, 0x7, x1, 888, x2)
+
+inst_223:
+// rs1_val==858993458 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333332, 0x4, x1, 892, x2)
+
+inst_224:
+// rs1_val==858993458 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333332, 0xb, x1, 896, x2)
+
+inst_225:
+// rs1_val==858993458 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333332, 0x0, x1, 900, x2)
+
+inst_226:
+// rs1_val==858993458 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333332, 0x5, x1, 904, x2)
+
+inst_227:
+// rs1_val==858993458 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333332, 0x2, x1, 908, x2)
+
+inst_228:
+// rs1_val==858993458 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333332, 0x9, x1, 912, x2)
+
+inst_229:
+// rs1_val==858993458 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x33333332, 0x33333332, -0x5, x1, 916, x2)
+
+inst_230:
+// rs1_val==858993458 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x33333332, 0x33333332, -0x2, x1, 920, x2)
+
+inst_231:
+// rs1_val==858993458 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333332, 0x3, x1, 924, x2)
+
+inst_232:
+// rs1_val==858993458 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333332, 0xa, x1, 928, x2)
+
+inst_233:
+// rs1_val==1431655764 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, 0x55555554, 0x6, x1, 932, x2)
+
+inst_234:
+// rs1_val==1431655764 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x55555554, 0x55555554, -0x4, x1, 936, x2)
+
+inst_235:
+// rs1_val==1431655764 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x55555554, 0x55555554, -0x1, x1, 940, x2)
+
+inst_236:
+// rs1_val==1431655764 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x4, 0x55555554, 0x7, x1, 944, x2)
+
+inst_237:
+// rs1_val==1431655764 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x55555554, 0x4, x1, 948, x2)
+
+inst_238:
+// rs1_val==1431655764 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555554, 0xb, x1, 952, x2)
+
+inst_239:
+// rs1_val==1431655764 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555554, 0x0, x1, 956, x2)
+
+inst_240:
+// rs1_val==1431655764 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x4, 0x55555554, 0x5, x1, 960, x2)
+
+inst_241:
+// rs1_val==1431655764 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555554, 0x2, x1, 964, x2)
+
+inst_242:
+// rs1_val==1431655764 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555554, 0x9, x1, 968, x2)
+
+inst_243:
+// rs1_val==1431655764 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x55555550, 0x55555554, -0x5, x1, 972, x2)
+
+inst_244:
+// rs1_val==1431655764 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x55555554, 0x55555554, -0x2, x1, 976, x2)
+
+inst_245:
+// rs1_val==1431655764 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555554, 0x3, x1, 980, x2)
+
+inst_246:
+// rs1_val==1431655764 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555554, 0xa, x1, 984, x2)
+
+inst_247:
+// rs1_val==2 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, 0x6, x1, 988, x2)
+
+inst_248:
+// rs1_val==2 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x2, -0x4, x1, 992, x2)
+
+inst_249:
+// rs1_val==2 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, -0x1, x1, 996, x2)
+
+inst_250:
+// rs1_val==2 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, 0x7, x1, 1000, x2)
+
+inst_251:
+// rs1_val==2 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x2, 0x4, x1, 1004, x2)
+
+inst_252:
+// rs1_val==2 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, 0xb, x1, 1008, x2)
+
+inst_253:
+// rs1_val==2 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x2, 0x0, x1, 1012, x2)
+
+inst_254:
+// rs1_val==2 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x0, 0x2, 0x5, x1, 1016, x2)
+
+inst_255:
+// rs1_val==2 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, 0x2, x1, 1020, x2)
+
+inst_256:
+// rs1_val==2 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x2, 0x9, x1, 1024, x2)
+
+inst_257:
+// rs1_val==2 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, -0x5, x1, 1028, x2)
+
+inst_258:
+// rs1_val==2 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, -0x2, x1, 1032, x2)
+
+inst_259:
+// rs1_val==2 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, 0x3, x1, 1036, x2)
+
+inst_260:
+// rs1_val==2 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0x2, 0xa, x1, 1040, x2)
+
+inst_261:
+// rs1_val==46340 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, 0xb504, 0x6, x1, 1044, x2)
+
+inst_262:
+// rs1_val==46340 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0xb504, 0xb504, -0x4, x1, 1048, x2)
+
+inst_263:
+// rs1_val==46340 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0xb504, 0xb504, -0x1, x1, 1052, x2)
+
+inst_264:
+// rs1_val==46340 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x4, 0xb504, 0x7, x1, 1056, x2)
+
+inst_265:
+// rs1_val==46340 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0xb504, 0x4, x1, 1060, x2)
+
+inst_266:
+// rs1_val==46340 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x0, 0xb504, 0xb, x1, 1064, x2)
+
+inst_267:
+// rs1_val==46340 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0xb504, 0x0, x1, 1068, x2)
+
+inst_268:
+// rs1_val==46340 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x4, 0xb504, 0x5, x1, 1072, x2)
+
+inst_269:
+// rs1_val==46340 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0xb504, 0x2, x1, 1076, x2)
+
+inst_270:
+// rs1_val==46340 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0xb504, 0x9, x1, 1080, x2)
+
+inst_271:
+// rs1_val==46340 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0xb500, 0xb504, -0x5, x1, 1084, x2)
+
+inst_272:
+// rs1_val==46340 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0xb504, 0xb504, -0x2, x1, 1088, x2)
+
+inst_273:
+// rs1_val==46340 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x0, 0xb504, 0x3, x1, 1092, x2)
+
+inst_274:
+// rs1_val==46340 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0xb504, 0xa, x1, 1096, x2)
+
+inst_275:
+// rs1_val==-46340 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, -0xb504, 0x6, x1, 1100, x2)
+
+inst_276:
+// rs1_val==-46340 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0xffff4afc, -0xb504, -0x4, x1, 1104, x2)
+
+inst_277:
+// rs1_val==-46340 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0xffff4afc, -0xb504, -0x1, x1, 1108, x2)
+
+inst_278:
+// rs1_val==-46340 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x4, -0xb504, 0x7, x1, 1112, x2)
+
+inst_279:
+// rs1_val==-46340 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, -0xb504, 0x4, x1, 1116, x2)
+
+inst_280:
+// rs1_val==-46340 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x8, -0xb504, 0xb, x1, 1120, x2)
+
+inst_281:
+// rs1_val==-46340 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, -0xb504, 0x0, x1, 1124, x2)
+
+inst_282:
+// rs1_val==-46340 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x4, -0xb504, 0x5, x1, 1128, x2)
+
+inst_283:
+// rs1_val==-46340 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, -0xb504, 0x2, x1, 1132, x2)
+
+inst_284:
+// rs1_val==-46340 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x8, -0xb504, 0x9, x1, 1136, x2)
+
+inst_285:
+// rs1_val==-46340 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0xffff4af8, -0xb504, -0x5, x1, 1140, x2)
+
+inst_286:
+// rs1_val==-46340 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0xffff4afc, -0xb504, -0x2, x1, 1144, x2)
+
+inst_287:
+// rs1_val==-46340 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x0, -0xb504, 0x3, x1, 1148, x2)
+
+inst_288:
+// rs1_val==-46340 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x8, -0xb504, 0xa, x1, 1152, x2)
+
+inst_289:
+// rs1_val==1717986918 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x6, 0x66666666, 0x6, x1, 1156, x2)
+
+inst_290:
+// rs1_val==1717986918 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x66666664, 0x66666666, -0x4, x1, 1160, x2)
+
+inst_291:
+// rs1_val==1717986918 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x66666666, 0x66666666, -0x1, x1, 1164, x2)
+
+inst_292:
+// rs1_val==1717986918 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x6, 0x66666666, 0x7, x1, 1168, x2)
+
+inst_293:
+// rs1_val==1717986918 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x66666666, 0x4, x1, 1172, x2)
+
+inst_294:
+// rs1_val==1717986918 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x2, 0x66666666, 0xb, x1, 1176, x2)
+
+inst_295:
+// rs1_val==1717986918 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x66666666, 0x0, x1, 1180, x2)
+
+inst_296:
+// rs1_val==1717986918 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x4, 0x66666666, 0x5, x1, 1184, x2)
+
+inst_297:
+// rs1_val==1717986918 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x66666666, 0x2, x1, 1188, x2)
+
+inst_298:
+// rs1_val==1717986918 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x0, 0x66666666, 0x9, x1, 1192, x2)
+
+inst_299:
+// rs1_val==1717986918 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x66666662, 0x66666666, -0x5, x1, 1196, x2)
+
+inst_300:
+// rs1_val==1717986918 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x66666666, 0x66666666, -0x2, x1, 1200, x2)
+
+inst_301:
+// rs1_val==1717986918 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x2, 0x66666666, 0x3, x1, 1204, x2)
+
+inst_302:
+// rs1_val==1717986918 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0x66666666, 0xa, x1, 1208, x2)
+
+inst_303:
+// rs1_val==858993459 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333333, 0x6, x1, 1212, x2)
+
+inst_304:
+// rs1_val==858993459 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x33333330, 0x33333333, -0x4, x1, 1216, x2)
+
+inst_305:
+// rs1_val==858993459 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x33333333, 0x33333333, -0x1, x1, 1220, x2)
+
+inst_306:
+// rs1_val==858993459 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x3, 0x33333333, 0x7, x1, 1224, x2)
+
+inst_307:
+// rs1_val==858993459 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333333, 0x4, x1, 1228, x2)
+
+inst_308:
+// rs1_val==858993459 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x3, 0x33333333, 0xb, x1, 1232, x2)
+
+inst_309:
+// rs1_val==858993459 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x33333333, 0x0, x1, 1236, x2)
+
+inst_310:
+// rs1_val==858993459 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x1, 0x33333333, 0x5, x1, 1240, x2)
+
+inst_311:
+// rs1_val==858993459 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333333, 0x2, x1, 1244, x2)
+
+inst_312:
+// rs1_val==858993459 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x1, 0x33333333, 0x9, x1, 1248, x2)
+
+inst_313:
+// rs1_val==3 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0x3, 0xa, x1, 1252, x2)
+
+inst_314:
+// rs1_val == -1431655766, rs1_val==-1431655766 and imm_val==5
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x0, -0x55555556, 0x5, x1, 1256, x2)
+
+inst_315:
+// rs1_val == 1431655765, rs1_val==1431655765 and imm_val==4
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x55555555, 0x4, x1, 1260, x2)
+
+inst_316:
+// imm_val == 21,
+// opcode: c.andi; op1:x10; immval:0x15
+TEST_CI_OP( c.andi, x10, 0x0, -0x55555556, 0x15, x1, 1264, x2)
+
+inst_317:
+// rs1_val==858993459 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x33333333, 0x33333333, -0x5, x1, 1268, x2)
+
+inst_318:
+// rs1_val==858993459 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x33333332, 0x33333333, -0x2, x1, 1272, x2)
+
+inst_319:
+// rs1_val==858993459 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x3, 0x33333333, 0x3, x1, 1276, x2)
+
+inst_320:
+// rs1_val==858993459 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x2, 0x33333333, 0xa, x1, 1280, x2)
+
+inst_321:
+// rs1_val==5 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, 0x5, 0x6, x1, 1284, x2)
+
+inst_322:
+// rs1_val==5 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x5, -0x4, x1, 1288, x2)
+
+inst_323:
+// rs1_val==5 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x5, 0x5, -0x1, x1, 1292, x2)
+
+inst_324:
+// rs1_val==5 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x5, 0x5, 0x7, x1, 1296, x2)
+
+inst_325:
+// rs1_val==5 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x4, 0x5, 0x4, x1, 1300, x2)
+
+inst_326:
+// rs1_val==5 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x1, 0x5, 0xb, x1, 1304, x2)
+
+inst_327:
+// rs1_val==5 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x5, 0x0, x1, 1308, x2)
+
+inst_328:
+// rs1_val==5 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x5, 0x5, 0x5, x1, 1312, x2)
+
+inst_329:
+// rs1_val==5 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x5, 0x2, x1, 1316, x2)
+
+inst_330:
+// rs1_val==5 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x1, 0x5, 0x9, x1, 1320, x2)
+
+inst_331:
+// rs1_val==5 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x1, 0x5, -0x5, x1, 1324, x2)
+
+inst_332:
+// rs1_val==5 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x4, 0x5, -0x2, x1, 1328, x2)
+
+inst_333:
+// rs1_val==5 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x1, 0x5, 0x3, x1, 1332, x2)
+
+inst_334:
+// rs1_val==5 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0x5, 0xa, x1, 1336, x2)
+
+inst_335:
+// rs1_val==-1431655766 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x2, -0x55555556, 0x6, x1, 1340, x2)
+
+inst_336:
+// rs1_val==-1431655766 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0xaaaaaaa8, -0x55555556, -0x4, x1, 1344, x2)
+
+inst_337:
+// rs1_val==-1431655766 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0xaaaaaaaa, -0x55555556, -0x1, x1, 1348, x2)
+
+inst_338:
+// rs1_val==-1431655766 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x2, -0x55555556, 0x7, x1, 1352, x2)
+
+inst_339:
+// rs1_val==-1431655766 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, -0x55555556, 0x4, x1, 1356, x2)
+
+inst_340:
+// rs1_val==-1431655766 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0xa, -0x55555556, 0xb, x1, 1360, x2)
+
+inst_341:
+// rs1_val==-1431655766 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, -0x55555556, 0x0, x1, 1364, x2)
+
+inst_342:
+// rs1_val==-1431655766 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, -0x55555556, 0x2, x1, 1368, x2)
+
+inst_343:
+// rs1_val==-1431655766 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x8, -0x55555556, 0x9, x1, 1372, x2)
+
+inst_344:
+// rs1_val==-1431655766 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0xaaaaaaaa, -0x55555556, -0x5, x1, 1376, x2)
+
+inst_345:
+// rs1_val==-1431655766 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0xaaaaaaaa, -0x55555556, -0x2, x1, 1380, x2)
+
+inst_346:
+// rs1_val==-1431655766 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x2, -0x55555556, 0x3, x1, 1384, x2)
+
+inst_347:
+// rs1_val==-1431655766 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0xa, -0x55555556, 0xa, x1, 1388, x2)
+
+inst_348:
+// rs1_val==1431655765 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x4, 0x55555555, 0x6, x1, 1392, x2)
+
+inst_349:
+// rs1_val==1431655765 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x55555554, 0x55555555, -0x4, x1, 1396, x2)
+
+inst_350:
+// rs1_val==1431655765 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x55555555, 0x55555555, -0x1, x1, 1400, x2)
+
+inst_351:
+// rs1_val==1431655765 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x5, 0x55555555, 0x7, x1, 1404, x2)
+
+inst_352:
+// rs1_val==1431655765 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x1, 0x55555555, 0xb, x1, 1408, x2)
+
+inst_353:
+// rs1_val==1431655765 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555555, 0x0, x1, 1412, x2)
+
+inst_354:
+// rs1_val==1431655765 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x5, 0x55555555, 0x5, x1, 1416, x2)
+
+inst_355:
+// rs1_val==1431655765 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555555, 0x2, x1, 1420, x2)
+
+inst_356:
+// rs1_val==1431655765 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x1, 0x55555555, 0x9, x1, 1424, x2)
+
+inst_357:
+// rs1_val==1431655765 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x55555551, 0x55555555, -0x5, x1, 1428, x2)
+
+inst_358:
+// rs1_val==1431655765 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x55555554, 0x55555555, -0x2, x1, 1432, x2)
+
+inst_359:
+// rs1_val==1431655765 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x1, 0x55555555, 0x3, x1, 1436, x2)
+
+inst_360:
+// rs1_val==1431655765 and imm_val==10,
+// opcode: c.andi; op1:x10; immval:0xa
+TEST_CI_OP( c.andi, x10, 0x0, 0x55555555, 0xa, x1, 1440, x2)
+
+inst_361:
+// rs1_val==3 and imm_val==6,
+// opcode: c.andi; op1:x10; immval:0x6
+TEST_CI_OP( c.andi, x10, 0x2, 0x3, 0x6, x1, 1444, x2)
+
+inst_362:
+// rs1_val==3 and imm_val==-4,
+// opcode: c.andi; op1:x10; immval:-0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x3, -0x4, x1, 1448, x2)
+
+inst_363:
+// rs1_val==3 and imm_val==-1,
+// opcode: c.andi; op1:x10; immval:-0x1
+TEST_CI_OP( c.andi, x10, 0x3, 0x3, -0x1, x1, 1452, x2)
+
+inst_364:
+// rs1_val==3 and imm_val==7,
+// opcode: c.andi; op1:x10; immval:0x7
+TEST_CI_OP( c.andi, x10, 0x3, 0x3, 0x7, x1, 1456, x2)
+
+inst_365:
+// rs1_val==3 and imm_val==4,
+// opcode: c.andi; op1:x10; immval:0x4
+TEST_CI_OP( c.andi, x10, 0x0, 0x3, 0x4, x1, 1460, x2)
+
+inst_366:
+// rs1_val==3 and imm_val==11,
+// opcode: c.andi; op1:x10; immval:0xb
+TEST_CI_OP( c.andi, x10, 0x3, 0x3, 0xb, x1, 1464, x2)
+
+inst_367:
+// rs1_val==3 and imm_val==0,
+// opcode: c.andi; op1:x10; immval:0x0
+TEST_CI_OP( c.andi, x10, 0x0, 0x3, 0x0, x1, 1468, x2)
+
+inst_368:
+// rs1_val==3 and imm_val==5,
+// opcode: c.andi; op1:x10; immval:0x5
+TEST_CI_OP( c.andi, x10, 0x1, 0x3, 0x5, x1, 1472, x2)
+
+inst_369:
+// rs1_val==3 and imm_val==2,
+// opcode: c.andi; op1:x10; immval:0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x3, 0x2, x1, 1476, x2)
+
+inst_370:
+// rs1_val==3 and imm_val==9,
+// opcode: c.andi; op1:x10; immval:0x9
+TEST_CI_OP( c.andi, x10, 0x1, 0x3, 0x9, x1, 1480, x2)
+
+inst_371:
+// rs1_val==3 and imm_val==-5,
+// opcode: c.andi; op1:x10; immval:-0x5
+TEST_CI_OP( c.andi, x10, 0x3, 0x3, -0x5, x1, 1484, x2)
+
+inst_372:
+// rs1_val==3 and imm_val==-2,
+// opcode: c.andi; op1:x10; immval:-0x2
+TEST_CI_OP( c.andi, x10, 0x2, 0x3, -0x2, x1, 1488, x2)
+
+inst_373:
+// rs1_val==3 and imm_val==3,
+// opcode: c.andi; op1:x10; immval:0x3
+TEST_CI_OP( c.andi, x10, 0x3, 0x3, 0x3, x1, 1492, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 374*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cbeqz-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cbeqz-01.S
new file mode 100644
index 000000000..a0a21cd3c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cbeqz-01.S
@@ -0,0 +1,490 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.beqz instruction of the RISC-V C extension for the cbeqz covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cbeqz)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1==x10, rs1_val < 0 and imm_val < 0, rs1_val == -4097
+// opcode:c.beqz; op1:x10; op1val:-0x1001; immval:0xac
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x1001, 0xac, 1b, x1, 0)
+
+inst_1:
+// rs1==x14, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1), rs1_val > 0 and imm_val < 0
+// opcode:c.beqz; op1:x14; op1val:0x7fffffff; immval:0x14
+TEST_CBRANCH_OP(c.beqz, x2, x14, 0x7fffffff, 0x14, 1b, x1, 4)
+
+inst_2:
+// rs1==x8, rs1_val == -1073741825, rs1_val < 0 and imm_val > 0
+// opcode:c.beqz; op1:x8; op1val:-0x40000001; immval:0x20
+TEST_CBRANCH_OP(c.beqz, x2, x8, -0x40000001, 0x20, 3f, x1, 8)
+
+inst_3:
+// rs1==x15, rs1_val == -536870913,
+// opcode:c.beqz; op1:x15; op1val:-0x20000001; immval:0xac
+TEST_CBRANCH_OP(c.beqz, x2, x15, -0x20000001, 0xac, 1b, x1, 12)
+
+inst_4:
+// rs1==x12, rs1_val == -268435457,
+// opcode:c.beqz; op1:x12; op1val:-0x10000001; immval:0x12
+TEST_CBRANCH_OP(c.beqz, x2, x12, -0x10000001, 0x12, 3f, x1, 16)
+
+inst_5:
+// rs1==x13, rs1_val == -134217729,
+// opcode:c.beqz; op1:x13; op1val:-0x8000001; immval:0x7e
+TEST_CBRANCH_OP(c.beqz, x2, x13, -0x8000001, 0x7e, 3f, x1, 20)
+
+inst_6:
+// rs1==x11, rs1_val == -67108865,
+// opcode:c.beqz; op1:x11; op1val:-0x4000001; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x11, -0x4000001, 0xe, 1b, x1, 24)
+
+inst_7:
+// rs1==x9, rs1_val == -33554433,
+// opcode:c.beqz; op1:x9; op1val:-0x2000001; immval:0xc
+TEST_CBRANCH_OP(c.beqz, x2, x9, -0x2000001, 0xc, 1b, x1, 28)
+
+inst_8:
+// rs1_val == -16777217,
+// opcode:c.beqz; op1:x10; op1val:-0x1000001; immval:0x20
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x1000001, 0x20, 3f, x1, 32)
+
+inst_9:
+// rs1_val == -8388609,
+// opcode:c.beqz; op1:x10; op1val:-0x800001; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x800001, 0x80, 1b, x1, 36)
+
+inst_10:
+// rs1_val == -4194305,
+// opcode:c.beqz; op1:x10; op1val:-0x400001; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x400001, 0xe, 1b, x1, 40)
+
+inst_11:
+// rs1_val == -2097153,
+// opcode:c.beqz; op1:x10; op1val:-0x200001; immval:0x40
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x200001, 0x40, 3f, x1, 44)
+
+inst_12:
+// rs1_val == -1048577,
+// opcode:c.beqz; op1:x10; op1val:-0x100001; immval:0x22
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x100001, 0x22, 1b, x1, 48)
+
+inst_13:
+// rs1_val == -524289,
+// opcode:c.beqz; op1:x10; op1val:-0x80001; immval:0x82
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x80001, 0x82, 1b, x1, 52)
+
+inst_14:
+// rs1_val == -262145,
+// opcode:c.beqz; op1:x10; op1val:-0x40001; immval:0xc
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x40001, 0xc, 3f, x1, 56)
+
+inst_15:
+// rs1_val == -131073,
+// opcode:c.beqz; op1:x10; op1val:-0x20001; immval:0x6
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x20001, 0x6, 3f, x1, 60)
+
+inst_16:
+// rs1_val == -65537,
+// opcode:c.beqz; op1:x10; op1val:-0x10001; immval:0x12
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x10001, 0x12, 3f, x1, 64)
+
+inst_17:
+// rs1_val == -32769,
+// opcode:c.beqz; op1:x10; op1val:-0x8001; immval:0x42
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x8001, 0x42, 1b, x1, 68)
+
+inst_18:
+// rs1_val == -16385,
+// opcode:c.beqz; op1:x10; op1val:-0x4001; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x4001, 0x80, 3f, x1, 72)
+
+inst_19:
+// rs1_val == -8193,
+// opcode:c.beqz; op1:x10; op1val:-0x2001; immval:0x7e
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x2001, 0x7e, 3f, x1, 76)
+
+inst_20:
+// rs1_val == -2049,
+// opcode:c.beqz; op1:x10; op1val:-0x801; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x801, 0xe, 1b, x1, 80)
+
+inst_21:
+// rs1_val == -1025,
+// opcode:c.beqz; op1:x10; op1val:-0x401; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x401, 0x80, 1b, x1, 84)
+
+inst_22:
+// rs1_val == -513,
+// opcode:c.beqz; op1:x10; op1val:-0x201; immval:0xc
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x201, 0xc, 3f, x1, 88)
+
+inst_23:
+// rs1_val == -257,
+// opcode:c.beqz; op1:x10; op1val:-0x101; immval:0xa
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x101, 0xa, 1b, x1, 92)
+
+inst_24:
+// rs1_val == -129,
+// opcode:c.beqz; op1:x10; op1val:-0x81; immval:0x14
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x81, 0x14, 1b, x1, 96)
+
+inst_25:
+// rs1_val == -65,
+// opcode:c.beqz; op1:x10; op1val:-0x41; immval:0xa
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x41, 0xa, 1b, x1, 100)
+
+inst_26:
+// rs1_val == -33,
+// opcode:c.beqz; op1:x10; op1val:-0x21; immval:0xac
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x21, 0xac, 1b, x1, 104)
+
+inst_27:
+// rs1_val == -17,
+// opcode:c.beqz; op1:x10; op1val:-0x11; immval:0x12
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x11, 0x12, 1b, x1, 108)
+
+inst_28:
+// rs1_val == -9,
+// opcode:c.beqz; op1:x10; op1val:-0x9; immval:0x20
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x9, 0x20, 3f, x1, 112)
+
+inst_29:
+// rs1_val == -5,
+// opcode:c.beqz; op1:x10; op1val:-0x5; immval:0x42
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x5, 0x42, 1b, x1, 116)
+
+inst_30:
+// rs1_val == -3,
+// opcode:c.beqz; op1:x10; op1val:-0x3; immval:0x42
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x3, 0x42, 1b, x1, 120)
+
+inst_31:
+// rs1_val == -2,
+// opcode:c.beqz; op1:x10; op1val:-0x2; immval:0xa
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x2, 0xa, 3f, x1, 124)
+
+inst_32:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode:c.beqz; op1:x10; op1val:-0x80000000; immval:0x6
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x80000000, 0x6, 3f, x1, 128)
+
+inst_33:
+// rs1_val == 1073741824, rs1_val > 0 and imm_val > 0
+// opcode:c.beqz; op1:x10; op1val:0x40000000; immval:0x7e
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x40000000, 0x7e, 3f, x1, 132)
+
+inst_34:
+// rs1_val == 536870912,
+// opcode:c.beqz; op1:x10; op1val:0x20000000; immval:0x22
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x20000000, 0x22, 1b, x1, 136)
+
+inst_35:
+// rs1_val == 268435456,
+// opcode:c.beqz; op1:x10; op1val:0x10000000; immval:0x40
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x10000000, 0x40, 3f, x1, 140)
+
+inst_36:
+// rs1_val == 134217728,
+// opcode:c.beqz; op1:x10; op1val:0x8000000; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x8000000, 0x80, 3f, x1, 144)
+
+inst_37:
+// rs1_val == 67108864,
+// opcode:c.beqz; op1:x10; op1val:0x4000000; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x4000000, 0x80, 3f, x1, 148)
+
+inst_38:
+// rs1_val == 33554432,
+// opcode:c.beqz; op1:x10; op1val:0x2000000; immval:0x22
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x2000000, 0x22, 1b, x1, 152)
+
+inst_39:
+// rs1_val == 16777216,
+// opcode:c.beqz; op1:x10; op1val:0x1000000; immval:0x40
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x1000000, 0x40, 3f, x1, 156)
+
+inst_40:
+// rs1_val == 8388608,
+// opcode:c.beqz; op1:x10; op1val:0x800000; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x800000, 0xe, 3f, x1, 160)
+
+inst_41:
+// rs1_val == 4194304,
+// opcode:c.beqz; op1:x10; op1val:0x400000; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x400000, 0x80, 3f, x1, 164)
+
+inst_42:
+// rs1_val == 2097152,
+// opcode:c.beqz; op1:x10; op1val:0x200000; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x200000, 0xe, 3f, x1, 168)
+
+inst_43:
+// rs1_val == 1048576,
+// opcode:c.beqz; op1:x10; op1val:0x100000; immval:0x6
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x100000, 0x6, 1b, x1, 172)
+
+inst_44:
+// rs1_val == 524288,
+// opcode:c.beqz; op1:x10; op1val:0x80000; immval:0x82
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x80000, 0x82, 1b, x1, 176)
+
+inst_45:
+// rs1_val == 262144,
+// opcode:c.beqz; op1:x10; op1val:0x40000; immval:0x42
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x40000, 0x42, 1b, x1, 180)
+
+inst_46:
+// rs1_val == 131072,
+// opcode:c.beqz; op1:x10; op1val:0x20000; immval:0xc
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x20000, 0xc, 1b, x1, 184)
+
+inst_47:
+// rs1_val == 65536,
+// opcode:c.beqz; op1:x10; op1val:0x10000; immval:0x82
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x10000, 0x82, 1b, x1, 188)
+
+inst_48:
+// rs1_val == 32768,
+// opcode:c.beqz; op1:x10; op1val:0x8000; immval:0x4
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x8000, 0x4, 1b, x1, 192)
+
+inst_49:
+// rs1_val == 16384,
+// opcode:c.beqz; op1:x10; op1val:0x4000; immval:0xa
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x4000, 0xa, 1b, x1, 196)
+
+inst_50:
+// rs1_val == 8192,
+// opcode:c.beqz; op1:x10; op1val:0x2000; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x2000, 0x80, 1b, x1, 200)
+
+inst_51:
+// rs1_val == 4096,
+// opcode:c.beqz; op1:x10; op1val:0x1000; immval:0x40
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x1000, 0x40, 3f, x1, 204)
+
+inst_52:
+// rs1_val == 2048,
+// opcode:c.beqz; op1:x10; op1val:0x800; immval:0x20
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x800, 0x20, 3f, x1, 208)
+
+inst_53:
+// rs1_val == 1024,
+// opcode:c.beqz; op1:x10; op1val:0x400; immval:0xc
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x400, 0xc, 3f, x1, 212)
+
+inst_54:
+// rs1_val == 512,
+// opcode:c.beqz; op1:x10; op1val:0x200; immval:0x10
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x200, 0x10, 1b, x1, 216)
+
+inst_55:
+// rs1_val == 256,
+// opcode:c.beqz; op1:x10; op1val:0x100; immval:0x7e
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x100, 0x7e, 3f, x1, 220)
+
+inst_56:
+// rs1_val == 128,
+// opcode:c.beqz; op1:x10; op1val:0x80; immval:0x6
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x80, 0x6, 3f, x1, 224)
+
+inst_57:
+// rs1_val == 64,
+// opcode:c.beqz; op1:x10; op1val:0x40; immval:0xa
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x40, 0xa, 3f, x1, 228)
+
+inst_58:
+// rs1_val == 32,
+// opcode:c.beqz; op1:x10; op1val:0x20; immval:0x12
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x20, 0x12, 1b, x1, 232)
+
+inst_59:
+// rs1_val == 16,
+// opcode:c.beqz; op1:x10; op1val:0x10; immval:0x4
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x10, 0x4, 1b, x1, 236)
+
+inst_60:
+// rs1_val == 1,
+// opcode:c.beqz; op1:x10; op1val:0x1; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x1, 0xe, 3f, x1, 240)
+
+inst_61:
+// rs1_val==46341,
+// opcode:c.beqz; op1:x10; op1val:0xb505; immval:0x10
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0xb505, 0x10, 1b, x1, 244)
+
+inst_62:
+// rs1_val==-46339,
+// opcode:c.beqz; op1:x10; op1val:-0xb503; immval:0x82
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0xb503, 0x82, 1b, x1, 248)
+
+inst_63:
+// rs1_val==1717986919,
+// opcode:c.beqz; op1:x10; op1val:0x66666667; immval:0x8
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x66666667, 0x8, 3f, x1, 252)
+
+inst_64:
+// rs1_val==858993460,
+// opcode:c.beqz; op1:x10; op1val:0x33333334; immval:0x8
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x33333334, 0x8, 3f, x1, 256)
+
+inst_65:
+// rs1_val==6,
+// opcode:c.beqz; op1:x10; op1val:0x6; immval:0x6
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x6, 0x6, 1b, x1, 260)
+
+inst_66:
+// rs1_val==-1431655765,
+// opcode:c.beqz; op1:x10; op1val:-0x55555555; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x55555555, 0x80, 3f, x1, 264)
+
+inst_67:
+// rs1_val==1431655766,
+// opcode:c.beqz; op1:x10; op1val:0x55555556; immval:0x14
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x55555556, 0x14, 1b, x1, 268)
+
+inst_68:
+// rs1_val==4, rs1_val == 4
+// opcode:c.beqz; op1:x10; op1val:0x4; immval:0x82
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x4, 0x82, 1b, x1, 272)
+
+inst_69:
+// rs1_val==46339,
+// opcode:c.beqz; op1:x10; op1val:0xb503; immval:0x14
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0xb503, 0x14, 1b, x1, 276)
+
+inst_70:
+// rs1_val==0, rs1_val == 0, rs1_val == 0 and imm_val > 0
+// opcode:c.beqz; op1:x10; op1val:0x0; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x0, 0xe, 3f, x1, 280)
+
+inst_71:
+// rs1_val==1717986917,
+// opcode:c.beqz; op1:x10; op1val:0x66666665; immval:0x80
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x66666665, 0x80, 3f, x1, 284)
+
+inst_72:
+// rs1_val==858993458,
+// opcode:c.beqz; op1:x10; op1val:0x33333332; immval:0xa
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x33333332, 0xa, 1b, x1, 288)
+
+inst_73:
+// rs1_val==1431655764,
+// opcode:c.beqz; op1:x10; op1val:0x55555554; immval:0xc
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x55555554, 0xc, 1b, x1, 292)
+
+inst_74:
+// rs1_val==2, rs1_val == 2
+// opcode:c.beqz; op1:x10; op1val:0x2; immval:0xa
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x2, 0xa, 1b, x1, 296)
+
+inst_75:
+// rs1_val==46340,
+// opcode:c.beqz; op1:x10; op1val:0xb504; immval:0x8
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0xb504, 0x8, 1b, x1, 300)
+
+inst_76:
+// rs1_val==-46340,
+// opcode:c.beqz; op1:x10; op1val:-0xb504; immval:0x7e
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0xb504, 0x7e, 3f, x1, 304)
+
+inst_77:
+// rs1_val==1717986918,
+// opcode:c.beqz; op1:x10; op1val:0x66666666; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x66666666, 0xe, 3f, x1, 308)
+
+inst_78:
+// rs1_val==858993459,
+// opcode:c.beqz; op1:x10; op1val:0x33333333; immval:0x12
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x33333333, 0x12, 3f, x1, 312)
+
+inst_79:
+// rs1_val==5,
+// opcode:c.beqz; op1:x10; op1val:0x5; immval:0x10
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x5, 0x10, 1b, x1, 316)
+
+inst_80:
+// rs1_val==-1431655766, rs1_val == -1431655766
+// opcode:c.beqz; op1:x10; op1val:-0x55555556; immval:0x40
+TEST_CBRANCH_OP(c.beqz, x2, x10, -0x55555556, 0x40, 3f, x1, 320)
+
+inst_81:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode:c.beqz; op1:x10; op1val:0x55555555; immval:0x12
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x55555555, 0x12, 1b, x1, 324)
+
+inst_82:
+// rs1_val == 8,
+// opcode:c.beqz; op1:x10; op1val:0x8; immval:0xe
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x8, 0xe, 1b, x1, 328)
+
+inst_83:
+// rs1_val==3,
+// opcode:c.beqz; op1:x10; op1val:0x3; immval:0x4
+TEST_CBRANCH_OP(c.beqz, x2, x10, 0x3, 0x4, 1b, x1, 332)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 84*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cbnez-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cbnez-01.S
new file mode 100644
index 000000000..b59b696f5
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cbnez-01.S
@@ -0,0 +1,490 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.bnez instruction of the RISC-V C extension for the cbnez covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cbnez)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1==x11, rs1_val < 0 and imm_val < 0, rs1_val == -524289
+// opcode: c.bnez; op1:x11; op1val:-0x80001; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x11, -0x80001, 0x4, 1b, x1, 0)
+
+inst_1:
+// rs1==x10, rs1_val == 2147483647, rs1_val > 0 and imm_val > 0, rs1_val == (2**(xlen-1)-1)
+// opcode: c.bnez; op1:x10; op1val:0x7fffffff; immval:0x7e
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x7fffffff, 0x7e, 3f, x1, 4)
+
+inst_2:
+// rs1==x8, rs1_val == -1073741825, rs1_val < 0 and imm_val > 0
+// opcode: c.bnez; op1:x8; op1val:-0x40000001; immval:0xaa
+TEST_CBRANCH_OP(c.bnez, x2, x8, -0x40000001, 0xaa, 3f, x1, 8)
+
+inst_3:
+// rs1==x12, rs1_val == -536870913,
+// opcode: c.bnez; op1:x12; op1val:-0x20000001; immval:0xe
+TEST_CBRANCH_OP(c.bnez, x2, x12, -0x20000001, 0xe, 1b, x1, 12)
+
+inst_4:
+// rs1==x15, rs1_val == -268435457,
+// opcode: c.bnez; op1:x15; op1val:-0x10000001; immval:0x8
+TEST_CBRANCH_OP(c.bnez, x2, x15, -0x10000001, 0x8, 3f, x1, 16)
+
+inst_5:
+// rs1==x13, rs1_val == -134217729,
+// opcode: c.bnez; op1:x13; op1val:-0x8000001; immval:0xa
+TEST_CBRANCH_OP(c.bnez, x2, x13, -0x8000001, 0xa, 1b, x1, 20)
+
+inst_6:
+// rs1==x9, rs1_val == -67108865,
+// opcode: c.bnez; op1:x9; op1val:-0x4000001; immval:0xe
+TEST_CBRANCH_OP(c.bnez, x2, x9, -0x4000001, 0xe, 1b, x1, 24)
+
+inst_7:
+// rs1==x14, rs1_val == -33554433,
+// opcode: c.bnez; op1:x14; op1val:-0x2000001; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x14, -0x2000001, 0x4, 3f, x1, 28)
+
+inst_8:
+// rs1_val == -16777217,
+// opcode: c.bnez; op1:x10; op1val:-0x1000001; immval:0xaa
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x1000001, 0xaa, 3f, x1, 32)
+
+inst_9:
+// rs1_val == -8388609,
+// opcode: c.bnez; op1:x10; op1val:-0x800001; immval:0xc
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x800001, 0xc, 3f, x1, 36)
+
+inst_10:
+// rs1_val == -4194305,
+// opcode: c.bnez; op1:x10; op1val:-0x400001; immval:0x6
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x400001, 0x6, 1b, x1, 40)
+
+inst_11:
+// rs1_val == -2097153,
+// opcode: c.bnez; op1:x10; op1val:-0x200001; immval:0x40
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x200001, 0x40, 3f, x1, 44)
+
+inst_12:
+// rs1_val == -1048577,
+// opcode: c.bnez; op1:x10; op1val:-0x100001; immval:0xaa
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x100001, 0xaa, 3f, x1, 48)
+
+inst_13:
+// rs1_val == -262145,
+// opcode: c.bnez; op1:x10; op1val:-0x40001; immval:0xe
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x40001, 0xe, 3f, x1, 52)
+
+inst_14:
+// rs1_val == -131073,
+// opcode: c.bnez; op1:x10; op1val:-0x20001; immval:0x20
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x20001, 0x20, 3f, x1, 56)
+
+inst_15:
+// rs1_val == -65537,
+// opcode: c.bnez; op1:x10; op1val:-0x10001; immval:0x40
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x10001, 0x40, 3f, x1, 60)
+
+inst_16:
+// rs1_val == -32769,
+// opcode: c.bnez; op1:x10; op1val:-0x8001; immval:0xa
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x8001, 0xa, 1b, x1, 64)
+
+inst_17:
+// rs1_val == -16385,
+// opcode: c.bnez; op1:x10; op1val:-0x4001; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x4001, 0x12, 3f, x1, 68)
+
+inst_18:
+// rs1_val == -8193,
+// opcode: c.bnez; op1:x10; op1val:-0x2001; immval:0xc
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x2001, 0xc, 1b, x1, 72)
+
+inst_19:
+// rs1_val == -4097,
+// opcode: c.bnez; op1:x10; op1val:-0x1001; immval:0x42
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x1001, 0x42, 1b, x1, 76)
+
+inst_20:
+// rs1_val == -2049,
+// opcode: c.bnez; op1:x10; op1val:-0x801; immval:0x80
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x801, 0x80, 3f, x1, 80)
+
+inst_21:
+// rs1_val == -1025,
+// opcode: c.bnez; op1:x10; op1val:-0x401; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x401, 0x12, 3f, x1, 84)
+
+inst_22:
+// rs1_val == -513,
+// opcode: c.bnez; op1:x10; op1val:-0x201; immval:0x82
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x201, 0x82, 1b, x1, 88)
+
+inst_23:
+// rs1_val == -257,
+// opcode: c.bnez; op1:x10; op1val:-0x101; immval:0x80
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x101, 0x80, 1b, x1, 92)
+
+inst_24:
+// rs1_val == -129,
+// opcode: c.bnez; op1:x10; op1val:-0x81; immval:0xe
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x81, 0xe, 3f, x1, 96)
+
+inst_25:
+// rs1_val == -65,
+// opcode: c.bnez; op1:x10; op1val:-0x41; immval:0x10
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x41, 0x10, 3f, x1, 100)
+
+inst_26:
+// rs1_val == -33,
+// opcode: c.bnez; op1:x10; op1val:-0x21; immval:0x7e
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x21, 0x7e, 3f, x1, 104)
+
+inst_27:
+// rs1_val == -17,
+// opcode: c.bnez; op1:x10; op1val:-0x11; immval:0x20
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x11, 0x20, 3f, x1, 108)
+
+inst_28:
+// rs1_val == -9,
+// opcode: c.bnez; op1:x10; op1val:-0x9; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x9, 0x4, 1b, x1, 112)
+
+inst_29:
+// rs1_val == -5,
+// opcode: c.bnez; op1:x10; op1val:-0x5; immval:0x80
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x5, 0x80, 1b, x1, 116)
+
+inst_30:
+// rs1_val == -3,
+// opcode: c.bnez; op1:x10; op1val:-0x3; immval:0xaa
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x3, 0xaa, 3f, x1, 120)
+
+inst_31:
+// rs1_val == -2,
+// opcode: c.bnez; op1:x10; op1val:-0x2; immval:0x10
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x2, 0x10, 1b, x1, 124)
+
+inst_32:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: c.bnez; op1:x10; op1val:-0x80000000; immval:0x80
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x80000000, 0x80, 1b, x1, 128)
+
+inst_33:
+// rs1_val == 1073741824,
+// opcode: c.bnez; op1:x10; op1val:0x40000000; immval:0x7e
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x40000000, 0x7e, 3f, x1, 132)
+
+inst_34:
+// rs1_val == 536870912, rs1_val > 0 and imm_val < 0
+// opcode: c.bnez; op1:x10; op1val:0x20000000; immval:0xc
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x20000000, 0xc, 1b, x1, 136)
+
+inst_35:
+// rs1_val == 268435456,
+// opcode: c.bnez; op1:x10; op1val:0x10000000; immval:0x7e
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x10000000, 0x7e, 3f, x1, 140)
+
+inst_36:
+// rs1_val == 134217728,
+// opcode: c.bnez; op1:x10; op1val:0x8000000; immval:0x82
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x8000000, 0x82, 1b, x1, 144)
+
+inst_37:
+// rs1_val == 67108864,
+// opcode: c.bnez; op1:x10; op1val:0x4000000; immval:0xaa
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x4000000, 0xaa, 3f, x1, 148)
+
+inst_38:
+// rs1_val == 33554432,
+// opcode: c.bnez; op1:x10; op1val:0x2000000; immval:0xe
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x2000000, 0xe, 1b, x1, 152)
+
+inst_39:
+// rs1_val == 16777216,
+// opcode: c.bnez; op1:x10; op1val:0x1000000; immval:0xc
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x1000000, 0xc, 3f, x1, 156)
+
+inst_40:
+// rs1_val == 8388608,
+// opcode: c.bnez; op1:x10; op1val:0x800000; immval:0x20
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x800000, 0x20, 3f, x1, 160)
+
+inst_41:
+// rs1_val == 4194304,
+// opcode: c.bnez; op1:x10; op1val:0x400000; immval:0x8
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x400000, 0x8, 3f, x1, 164)
+
+inst_42:
+// rs1_val == 2097152,
+// opcode: c.bnez; op1:x10; op1val:0x200000; immval:0x22
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x200000, 0x22, 1b, x1, 168)
+
+inst_43:
+// rs1_val == 1048576,
+// opcode: c.bnez; op1:x10; op1val:0x100000; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x100000, 0x4, 1b, x1, 172)
+
+inst_44:
+// rs1_val == 524288,
+// opcode: c.bnez; op1:x10; op1val:0x80000; immval:0x8
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x80000, 0x8, 1b, x1, 176)
+
+inst_45:
+// rs1_val == 262144,
+// opcode: c.bnez; op1:x10; op1val:0x40000; immval:0x6
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x40000, 0x6, 1b, x1, 180)
+
+inst_46:
+// rs1_val == 131072,
+// opcode: c.bnez; op1:x10; op1val:0x20000; immval:0x6
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x20000, 0x6, 1b, x1, 184)
+
+inst_47:
+// rs1_val == 65536,
+// opcode: c.bnez; op1:x10; op1val:0x10000; immval:0x7e
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x10000, 0x7e, 3f, x1, 188)
+
+inst_48:
+// rs1_val == 32768,
+// opcode: c.bnez; op1:x10; op1val:0x8000; immval:0x7e
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x8000, 0x7e, 3f, x1, 192)
+
+inst_49:
+// rs1_val == 16384,
+// opcode: c.bnez; op1:x10; op1val:0x4000; immval:0xac
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x4000, 0xac, 1b, x1, 196)
+
+inst_50:
+// rs1_val == 8192,
+// opcode: c.bnez; op1:x10; op1val:0x2000; immval:0x10
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x2000, 0x10, 3f, x1, 200)
+
+inst_51:
+// rs1_val == 4096,
+// opcode: c.bnez; op1:x10; op1val:0x1000; immval:0xc
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x1000, 0xc, 1b, x1, 204)
+
+inst_52:
+// rs1_val == 2048,
+// opcode: c.bnez; op1:x10; op1val:0x800; immval:0x7e
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x800, 0x7e, 3f, x1, 208)
+
+inst_53:
+// rs1_val == 1024,
+// opcode: c.bnez; op1:x10; op1val:0x400; immval:0xa
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x400, 0xa, 1b, x1, 212)
+
+inst_54:
+// rs1_val == 512,
+// opcode: c.bnez; op1:x10; op1val:0x200; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x200, 0x12, 3f, x1, 216)
+
+inst_55:
+// rs1_val == 256,
+// opcode: c.bnez; op1:x10; op1val:0x100; immval:0xe
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x100, 0xe, 3f, x1, 220)
+
+inst_56:
+// rs1_val == 128,
+// opcode: c.bnez; op1:x10; op1val:0x80; immval:0xe
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x80, 0xe, 1b, x1, 224)
+
+inst_57:
+// rs1_val == 64,
+// opcode: c.bnez; op1:x10; op1val:0x40; immval:0x22
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x40, 0x22, 1b, x1, 228)
+
+inst_58:
+// rs1_val == 32,
+// opcode: c.bnez; op1:x10; op1val:0x20; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x20, 0x4, 1b, x1, 232)
+
+inst_59:
+// rs1_val == 16,
+// opcode: c.bnez; op1:x10; op1val:0x10; immval:0x8
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x10, 0x8, 3f, x1, 236)
+
+inst_60:
+// rs1_val == 1,
+// opcode: c.bnez; op1:x10; op1val:0x1; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x1, 0x4, 3f, x1, 240)
+
+inst_61:
+// rs1_val==46341,
+// opcode: c.bnez; op1:x10; op1val:0xb505; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0xb505, 0x12, 1b, x1, 244)
+
+inst_62:
+// rs1_val==-46339,
+// opcode: c.bnez; op1:x10; op1val:-0xb503; immval:0x22
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0xb503, 0x22, 1b, x1, 248)
+
+inst_63:
+// rs1_val==1717986919,
+// opcode: c.bnez; op1:x10; op1val:0x66666667; immval:0x8
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x66666667, 0x8, 3f, x1, 252)
+
+inst_64:
+// rs1_val==858993460,
+// opcode: c.bnez; op1:x10; op1val:0x33333334; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x33333334, 0x4, 1b, x1, 256)
+
+inst_65:
+// rs1_val==6,
+// opcode: c.bnez; op1:x10; op1val:0x6; immval:0x6
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x6, 0x6, 1b, x1, 260)
+
+inst_66:
+// rs1_val==-1431655765,
+// opcode: c.bnez; op1:x10; op1val:-0x55555555; immval:0x20
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x55555555, 0x20, 3f, x1, 264)
+
+inst_67:
+// rs1_val==1431655766,
+// opcode: c.bnez; op1:x10; op1val:0x55555556; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x55555556, 0x12, 3f, x1, 268)
+
+inst_68:
+// rs1_val==4, rs1_val == 4
+// opcode: c.bnez; op1:x10; op1val:0x4; immval:0xac
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x4, 0xac, 1b, x1, 272)
+
+inst_69:
+// rs1_val==46339,
+// opcode: c.bnez; op1:x10; op1val:0xb503; immval:0x7e
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0xb503, 0x7e, 3f, x1, 276)
+
+inst_70:
+// rs1_val==0, rs1_val == 0, rs1_val == 0 and imm_val < 0
+// opcode: c.bnez; op1:x10; op1val:0x0; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x0, 0x12, 1b, x1, 280)
+
+inst_71:
+// rs1_val==1717986917,
+// opcode: c.bnez; op1:x10; op1val:0x66666665; immval:0x8
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x66666665, 0x8, 3f, x1, 284)
+
+inst_72:
+// rs1_val==858993458,
+// opcode: c.bnez; op1:x10; op1val:0x33333332; immval:0x80
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x33333332, 0x80, 1b, x1, 288)
+
+inst_73:
+// rs1_val==1431655764,
+// opcode: c.bnez; op1:x10; op1val:0x55555554; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x55555554, 0x12, 3f, x1, 292)
+
+inst_74:
+// rs1_val==2, rs1_val == 2
+// opcode: c.bnez; op1:x10; op1val:0x2; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x2, 0x12, 1b, x1, 296)
+
+inst_75:
+// rs1_val==46340,
+// opcode: c.bnez; op1:x10; op1val:0xb504; immval:0xaa
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0xb504, 0xaa, 3f, x1, 300)
+
+inst_76:
+// rs1_val==-46340,
+// opcode: c.bnez; op1:x10; op1val:-0xb504; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0xb504, 0x4, 1b, x1, 304)
+
+inst_77:
+// rs1_val==1717986918,
+// opcode: c.bnez; op1:x10; op1val:0x66666666; immval:0x8
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x66666666, 0x8, 3f, x1, 308)
+
+inst_78:
+// rs1_val==858993459,
+// opcode: c.bnez; op1:x10; op1val:0x33333333; immval:0x22
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x33333333, 0x22, 1b, x1, 312)
+
+inst_79:
+// rs1_val==5,
+// opcode: c.bnez; op1:x10; op1val:0x5; immval:0x12
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x5, 0x12, 1b, x1, 316)
+
+inst_80:
+// rs1_val==-1431655766, rs1_val == -1431655766
+// opcode: c.bnez; op1:x10; op1val:-0x55555556; immval:0xac
+TEST_CBRANCH_OP(c.bnez, x2, x10, -0x55555556, 0xac, 1b, x1, 320)
+
+inst_81:
+// rs1_val==1431655765, rs1_val == 1431655765
+// opcode: c.bnez; op1:x10; op1val:0x55555555; immval:0x4
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x55555555, 0x4, 1b, x1, 324)
+
+inst_82:
+// rs1_val == 8,
+// opcode: c.bnez; op1:x10; op1val:0x8; immval:0xaa
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x8, 0xaa, 3f, x1, 328)
+
+inst_83:
+// rs1_val==3,
+// opcode: c.bnez; op1:x10; op1val:0x3; immval:0xaa
+TEST_CBRANCH_OP(c.bnez, x2, x10, 0x3, 0xaa, 3f, x1, 332)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 84*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cj-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cj-01.S
new file mode 100644
index 000000000..4797626b6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cj-01.S
@@ -0,0 +1,155 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.j instruction of the RISC-V C extension for the cj covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cj)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// imm_val < 0, imm_val == -66
+// opcode:c.j; immval:0x42
+TEST_CJ_OP(c.j, x2, 0x42, 1b, x1, 0)
+
+inst_1:
+// imm_val == -1026,
+// opcode:c.j; immval:0x402
+TEST_CJ_OP(c.j, x2, 0x402, 1b, x1, 4)
+
+inst_2:
+// imm_val == -514,
+// opcode:c.j; immval:0x202
+TEST_CJ_OP(c.j, x2, 0x202, 1b, x1, 8)
+
+inst_3:
+// imm_val == -258,
+// opcode:c.j; immval:0x102
+TEST_CJ_OP(c.j, x2, 0x102, 1b, x1, 12)
+
+inst_4:
+// imm_val == -130,
+// opcode:c.j; immval:0x82
+TEST_CJ_OP(c.j, x2, 0x82, 1b, x1, 16)
+
+inst_5:
+// imm_val == -34,
+// opcode:c.j; immval:0x22
+TEST_CJ_OP(c.j, x2, 0x22, 1b, x1, 20)
+
+inst_6:
+// imm_val == -18,
+// opcode:c.j; immval:0x12
+TEST_CJ_OP(c.j, x2, 0x12, 1b, x1, 24)
+
+inst_7:
+// imm_val == -10,
+// opcode:c.j; immval:0xa
+TEST_CJ_OP(c.j, x2, 0xa, 1b, x1, 28)
+
+inst_8:
+// imm_val == 1024, imm_val > 0
+// opcode:c.j; immval:0x400
+TEST_CJ_OP(c.j, x2, 0x400, 3f, x1, 32)
+
+inst_9:
+// imm_val == 512,
+// opcode:c.j; immval:0x200
+TEST_CJ_OP(c.j, x2, 0x200, 3f, x1, 36)
+
+inst_10:
+// imm_val == 1364,
+// opcode:c.j; immval:0x554
+TEST_CJ_OP(c.j, x2, 0x554, 3f, x1, 40)
+
+inst_11:
+// imm_val == -1366,
+// opcode:c.j; immval:0x556
+TEST_CJ_OP(c.j, x2, 0x556, 1b, x1, 44)
+
+inst_12:
+// imm_val == 256,
+// opcode:c.j; immval:0x100
+TEST_CJ_OP(c.j, x2, 0x100, 3f, x1, 48)
+
+inst_13:
+// imm_val == 128,
+// opcode:c.j; immval:0x80
+TEST_CJ_OP(c.j, x2, 0x80, 3f, x1, 52)
+
+inst_14:
+// imm_val == 64,
+// opcode:c.j; immval:0x40
+TEST_CJ_OP(c.j, x2, 0x40, 3f, x1, 56)
+
+inst_15:
+// imm_val == 32,
+// opcode:c.j; immval:0x20
+TEST_CJ_OP(c.j, x2, 0x20, 3f, x1, 60)
+
+inst_16:
+// imm_val == 16,
+// opcode:c.j; immval:0x10
+TEST_CJ_OP(c.j, x2, 0x10, 3f, x1, 64)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 17*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjal-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjal-01.S
new file mode 100644
index 000000000..a55b5d7c0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjal-01.S
@@ -0,0 +1,160 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.jal instruction of the RISC-V C extension for the cjal covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*RV32.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cjal)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// imm_val < 0,
+// opcode:c.jal; immval:0x10
+TEST_CJAL_OP(c.jal, x3, 0x10, 1b, x2, 0)
+
+inst_1:
+// imm_val == -1026,
+// opcode:c.jal; immval:0x402
+TEST_CJAL_OP(c.jal, x3, 0x402, 1b, x2, 4)
+
+inst_2:
+// imm_val == -514,
+// opcode:c.jal; immval:0x202
+TEST_CJAL_OP(c.jal, x3, 0x202, 1b, x2, 8)
+
+inst_3:
+// imm_val == -258,
+// opcode:c.jal; immval:0x102
+TEST_CJAL_OP(c.jal, x3, 0x102, 1b, x2, 12)
+
+inst_4:
+// imm_val == -130,
+// opcode:c.jal; immval:0x82
+TEST_CJAL_OP(c.jal, x3, 0x82, 1b, x2, 16)
+
+inst_5:
+// imm_val == -66,
+// opcode:c.jal; immval:0x42
+TEST_CJAL_OP(c.jal, x3, 0x42, 1b, x2, 20)
+
+inst_6:
+// imm_val == -34,
+// opcode:c.jal; immval:0x22
+TEST_CJAL_OP(c.jal, x3, 0x22, 1b, x2, 24)
+
+inst_7:
+// imm_val == -18,
+// opcode:c.jal; immval:0x12
+TEST_CJAL_OP(c.jal, x3, 0x12, 1b, x2, 28)
+
+inst_8:
+// imm_val == -10,
+// opcode:c.jal; immval:0xa
+TEST_CJAL_OP(c.jal, x3, 0xa, 1b, x2, 32)
+
+inst_9:
+// imm_val == 1024, imm_val > 0
+// opcode:c.jal; immval:0x400
+TEST_CJAL_OP(c.jal, x3, 0x400, 3f, x2, 36)
+
+inst_10:
+// imm_val == 512,
+// opcode:c.jal; immval:0x200
+TEST_CJAL_OP(c.jal, x3, 0x200, 3f, x2, 40)
+
+inst_11:
+// imm_val == 1364,
+// opcode:c.jal; immval:0x554
+TEST_CJAL_OP(c.jal, x3, 0x554, 3f, x2, 44)
+
+inst_12:
+// imm_val == -1366,
+// opcode:c.jal; immval:0x556
+TEST_CJAL_OP(c.jal, x3, 0x556, 1b, x2, 48)
+
+inst_13:
+// imm_val == 256,
+// opcode:c.jal; immval:0x100
+TEST_CJAL_OP(c.jal, x3, 0x100, 3f, x2, 52)
+
+inst_14:
+// imm_val == 128,
+// opcode:c.jal; immval:0x80
+TEST_CJAL_OP(c.jal, x3, 0x80, 3f, x2, 56)
+
+inst_15:
+// imm_val == 64,
+// opcode:c.jal; immval:0x40
+TEST_CJAL_OP(c.jal, x3, 0x40, 3f, x2, 60)
+
+inst_16:
+// imm_val == 32,
+// opcode:c.jal; immval:0x20
+TEST_CJAL_OP(c.jal, x3, 0x20, 3f, x2, 64)
+
+inst_17:
+// imm_val == 16,
+// opcode:c.jal; immval:0x10
+TEST_CJAL_OP(c.jal, x3, 0x10, 3f, x2, 68)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 18*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjalr-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjalr-01.S
new file mode 100644
index 000000000..9940ec9eb
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjalr-01.S
@@ -0,0 +1,150 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.jalr instruction of the RISC-V C extension for the cjalr covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cjalr)
+
+RVTEST_SIGBASE( x10,signature_x10_1)
+
+inst_0:
+// rs1==x6,
+// opcode:c.jalr; op1:x6
+TEST_CJALR_OP(x11, x6, x10, 0)
+
+inst_1:
+// rs1==x4,
+// opcode:c.jalr; op1:x4
+TEST_CJALR_OP(x11, x4, x10, 4)
+
+inst_2:
+// rs1==x3,
+// opcode:c.jalr; op1:x3
+TEST_CJALR_OP(x11, x3, x10, 8)
+
+inst_3:
+// rs1==x1,
+// opcode:c.jalr; op1:x1
+TEST_CJALR_OP(x11, x1, x10, 12)
+
+inst_4:
+// rs1==x12,
+// opcode:c.jalr; op1:x12
+TEST_CJALR_OP(x11, x12, x10, 16)
+
+inst_5:
+// rs1==x2,
+// opcode:c.jalr; op1:x2
+TEST_CJALR_OP(x11, x2, x10, 20)
+
+inst_6:
+// rs1==x8,
+// opcode:c.jalr; op1:x8
+TEST_CJALR_OP(x11, x8, x10, 24)
+
+inst_7:
+// rs1==x7,
+// opcode:c.jalr; op1:x7
+TEST_CJALR_OP(x11, x7, x10, 28)
+
+inst_8:
+// rs1==x15,
+// opcode:c.jalr; op1:x15
+TEST_CJALR_OP(x11, x15, x10, 32)
+
+inst_9:
+// rs1==x5,
+// opcode:c.jalr; op1:x5
+TEST_CJALR_OP(x11, x5, x10, 36)
+
+inst_10:
+// rs1==x9,
+// opcode:c.jalr; op1:x9
+TEST_CJALR_OP(x11, x9, x10, 40)
+
+inst_11:
+// rs1==x14,
+// opcode:c.jalr; op1:x14
+TEST_CJALR_OP(x3, x14, x10, 44)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_12:
+// rs1==x11,
+// opcode:c.jalr; op1:x11
+TEST_CJALR_OP(x3, x11, x2, 0)
+
+inst_13:
+// rs1==x13,
+// opcode:c.jalr; op1:x13
+TEST_CJALR_OP(x3, x13, x2, 4)
+
+inst_14:
+// rs1==x10,
+// opcode:c.jalr; op1:x10
+TEST_CJALR_OP(x3, x10, x2, 8)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x10_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x10_1:
+ .fill 12*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 3*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjr-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjr-01.S
new file mode 100644
index 000000000..9a6186778
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cjr-01.S
@@ -0,0 +1,150 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.jr instruction of the RISC-V C extension for the cjr covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cjr)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1==x6,
+// opcode: c.jr; op1:x6
+TEST_CJR_OP(x7, x6, x1, 0)
+
+inst_1:
+// rs1==x15,
+// opcode: c.jr; op1:x15
+TEST_CJR_OP(x7, x15, x1, 4)
+
+inst_2:
+// rs1==x14,
+// opcode: c.jr; op1:x14
+TEST_CJR_OP(x7, x14, x1, 8)
+
+inst_3:
+// rs1==x13,
+// opcode: c.jr; op1:x13
+TEST_CJR_OP(x7, x13, x1, 12)
+
+inst_4:
+// rs1==x3,
+// opcode: c.jr; op1:x3
+TEST_CJR_OP(x7, x3, x1, 16)
+
+inst_5:
+// rs1==x8,
+// opcode: c.jr; op1:x8
+TEST_CJR_OP(x7, x8, x1, 20)
+
+inst_6:
+// rs1==x2,
+// opcode: c.jr; op1:x2
+TEST_CJR_OP(x7, x2, x1, 24)
+
+inst_7:
+// rs1==x4,
+// opcode: c.jr; op1:x4
+TEST_CJR_OP(x7, x4, x1, 28)
+
+inst_8:
+// rs1==x12,
+// opcode: c.jr; op1:x12
+TEST_CJR_OP(x7, x12, x1, 32)
+
+inst_9:
+// rs1==x5,
+// opcode: c.jr; op1:x5
+TEST_CJR_OP(x7, x5, x1, 36)
+
+inst_10:
+// rs1==x7,
+// opcode: c.jr; op1:x7
+TEST_CJR_OP(x3, x7, x1, 40)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_11:
+// rs1==x9,
+// opcode: c.jr; op1:x9
+TEST_CJR_OP(x3, x9, x2, 0)
+
+inst_12:
+// rs1==x1,
+// opcode: c.jr; op1:x1
+TEST_CJR_OP(x3, x1, x2, 4)
+
+inst_13:
+// rs1==x11,
+// opcode: c.jr; op1:x11
+TEST_CJR_OP(x3, x11, x2, 8)
+
+inst_14:
+// rs1==x10,
+// opcode: c.jr; op1:x10
+TEST_CJR_OP(x3, x10, x2, 12)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 11*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 4*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cli-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cli-01.S
new file mode 100644
index 000000000..15653ea5e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cli-01.S
@@ -0,0 +1,160 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.li instruction of the RISC-V C extension for the cli covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cli)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rd==x15, imm_val == (-2**(6-1)), imm_val == -32
+// opcode:c.li; dest:x15; immval:-0x20
+TEST_CASE(x7, x15, -0x20, x4, 0, c.li x15, -0x20;)
+
+inst_1:
+// rd==x8, imm_val == 31, imm_val == (2**(6-1)-1)
+// opcode:c.li; dest:x8; immval:0x1f
+TEST_CASE(x7, x8, 0x1f, x4, 4, c.li x8, 0x1f;)
+
+inst_2:
+// rd==x13, imm_val == -17,
+// opcode:c.li; dest:x13; immval:-0x11
+TEST_CASE(x7, x13, -0x11, x4, 8, c.li x13, -0x11;)
+
+inst_3:
+// rd==x6, imm_val == -9,
+// opcode:c.li; dest:x6; immval:-0x9
+TEST_CASE(x7, x6, -0x9, x4, 12, c.li x6, -0x9;)
+
+inst_4:
+// rd==x2, imm_val == -5,
+// opcode:c.li; dest:x2; immval:-0x5
+TEST_CASE(x7, x2, -0x5, x4, 16, c.li x2, -0x5;)
+
+inst_5:
+// rd==x12, imm_val == -3,
+// opcode:c.li; dest:x12; immval:-0x3
+TEST_CASE(x7, x12, -0x3, x4, 20, c.li x12, -0x3;)
+
+inst_6:
+// rd==x1, imm_val == -2,
+// opcode:c.li; dest:x1; immval:-0x2
+TEST_CASE(x7, x1, -0x2, x4, 24, c.li x1, -0x2;)
+
+inst_7:
+// rd==x14, imm_val == 16,
+// opcode:c.li; dest:x14; immval:0x10
+TEST_CASE(x7, x14, 0x10, x4, 28, c.li x14, 0x10;)
+
+inst_8:
+// rd==x3, imm_val == 0,
+// opcode:c.li; dest:x3; immval:0x0
+TEST_CASE(x7, x3, 0x0, x4, 32, c.li x3, 0x0;)
+
+inst_9:
+// rd==x5, imm_val == 8,
+// opcode:c.li; dest:x5; immval:0x8
+TEST_CASE(x7, x5, 0x8, x4, 36, c.li x5, 0x8;)
+
+inst_10:
+// rd==x10, imm_val == 4,
+// opcode:c.li; dest:x10; immval:0x4
+TEST_CASE(x7, x10, 0x4, x4, 40, c.li x10, 0x4;)
+
+inst_11:
+// rd==x0, imm_val == 2,
+// opcode:c.li; dest:x0; immval:0x2
+TEST_CASE(x2, x0, 0, x4, 44, c.li x0, 0x2;)
+
+inst_12:
+// rd==x11, imm_val == 1,
+// opcode:c.li; dest:x11; immval:0x1
+TEST_CASE(x2, x11, 0x1, x4, 48, c.li x11, 0x1;)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_13:
+// rd==x7, imm_val == -22,
+// opcode:c.li; dest:x7; immval:-0x16
+TEST_CASE(x2, x7, -0x16, x1, 0, c.li x7, -0x16;)
+
+inst_14:
+// rd==x4, imm_val == 21,
+// opcode:c.li; dest:x4; immval:0x15
+TEST_CASE(x2, x4, 0x15, x1, 4, c.li x4, 0x15;)
+
+inst_15:
+// rd==x9,
+// opcode:c.li; dest:x9; immval:0x0
+TEST_CASE(x2, x9, 0x0, x1, 8, c.li x9, 0x0;)
+
+inst_16:
+// imm_val == 2,
+// opcode:c.li; dest:x10; immval:0x2
+TEST_CASE(x2, x10, 0x2, x1, 12, c.li x10, 0x2;)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 13*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 4*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clui-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clui-01.S
new file mode 100644
index 000000000..79746a15b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clui-01.S
@@ -0,0 +1,150 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.lui instruction of the RISC-V C extension for the clui covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",clui)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rd==x8, rs1_val < 0 and imm_val < 32 and imm_val !=0 , imm_val == 4
+// opcode:c.lui; op1:x8; dest:x8 op1val:-0x1000001; immval:0x4
+TEST_CI_OP( c.lui, x8, 0x4000, -0x1000001, 0x4, x2, 0, x5)
+
+inst_1:
+// rd==x10, imm_val == 31,
+// opcode:c.lui; op1:x10; dest:x10 op1val:-0x4; immval:0x1f
+TEST_CI_OP( c.lui, x10, 0x1f000, -0x4, 0x1f, x2, 4, x5)
+
+inst_2:
+// rd==x6, imm_val == 47, rs1_val > 0 and imm_val > 32
+// opcode:c.lui; op1:x6; dest:x6 op1val:0x4000; immval:0xfffef
+TEST_CI_OP( c.lui, x6, -0x11000, 0x4000, 0xfffef, x2, 8, x5)
+
+inst_3:
+// rd==x9, imm_val == 55, rs1_val < 0 and imm_val > 32
+// opcode:c.lui; op1:x9; dest:x9 op1val:-0x3; immval:0xffff7
+TEST_CI_OP( c.lui, x9, -0x9000, -0x3, 0xffff7, x2, 12, x5)
+
+inst_4:
+// rd==x15, imm_val == 59,
+// opcode:c.lui; op1:x15; dest:x15 op1val:0x4; immval:0xffffb
+TEST_CI_OP( c.lui, x15, -0x5000, 0x4, 0xffffb, x2, 16, x5)
+
+inst_5:
+// rd==x1, imm_val == 61,
+// opcode:c.lui; op1:x1; dest:x1 op1val:-0x20000001; immval:0xffffd
+TEST_CI_OP( c.lui, x1, -0x3000, -0x20000001, 0xffffd, x2, 20, x5)
+
+inst_6:
+// rd==x0, imm_val == 62,
+// opcode:c.lui; op1:x0; dest:x0 op1val:-0x20000001; immval:0xffffe
+TEST_CI_OP( c.lui, x0, 0, -0x20000001, 0xffffe, x2, 24, x5)
+
+inst_7:
+// rd==x7, imm_val == 32,
+// opcode:c.lui; op1:x7; dest:x7 op1val:0x4000; immval:0xfffe0
+TEST_CI_OP( c.lui, x7, -0x20000, 0x4000, 0xfffe0, x2, 28, x5)
+
+inst_8:
+// rd==x3, rs1_val > 0 and imm_val < 32 and imm_val !=0 ,
+// opcode:c.lui; op1:x3; dest:x3 op1val:0x10; immval:0xc
+TEST_CI_OP( c.lui, x3, 0xc000, 0x10, 0xc, x2, 32, x5)
+
+inst_9:
+// rd==x4, imm_val == 16,
+// opcode:c.lui; op1:x4; dest:x4 op1val:0x7fffffff; immval:0x10
+TEST_CI_OP( c.lui, x4, 0x10000, 0x7fffffff, 0x10, x2, 36, x5)
+
+inst_10:
+// rd==x11, imm_val == 8,
+// opcode:c.lui; op1:x11; dest:x11 op1val:-0x20001; immval:0x8
+TEST_CI_OP( c.lui, x11, 0x8000, -0x20001, 0x8, x2, 40, x5)
+
+inst_11:
+// rd==x12, imm_val == 2,
+// opcode:c.lui; op1:x12; dest:x12 op1val:0x200000; immval:0x2
+TEST_CI_OP( c.lui, x12, 0x2000, 0x200000, 0x2, x2, 44, x5)
+
+inst_12:
+// rd==x13, imm_val == 1,
+// opcode:c.lui; op1:x13; dest:x13 op1val:-0x2001; immval:0x1
+TEST_CI_OP( c.lui, x13, 0x1000, -0x2001, 0x1, x2, 48, x3)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_13:
+// rd==x14, imm_val == 42,
+// opcode:c.lui; op1:x14; dest:x14 op1val:0x400000; immval:0xfffea
+TEST_CI_OP( c.lui, x14, -0x16000, 0x400000, 0xfffea, x1, 0, x3)
+
+inst_14:
+// rd==x5, imm_val == 21,
+// opcode:c.lui; op1:x5; dest:x5 op1val:-0x10001; immval:0x15
+TEST_CI_OP( c.lui, x5, 0x15000, -0x10001, 0x15, x1, 4, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 13*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 2*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clw-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clw-01.S
new file mode 100644
index 000000000..246cbb8ac
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clw-01.S
@@ -0,0 +1,135 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.lw instruction of the RISC-V C extension for the clw covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",clw)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 == rd, rd==x8, rs1==x8, imm_val == 0,
+// opcode: c.lw; op1:x8; dest:x8; immval:0x0
+TEST_LOAD(x1,x2,0,x8,x8,0x0,0,c.lw,0)
+
+inst_1:
+// rs1 != rd, rd==x14, rs1==x12, imm_val == 60, imm_val > 0
+// opcode: c.lw; op1:x12; dest:x14; immval:0x3c
+TEST_LOAD(x1,x2,0,x12,x14,0x3c,4,c.lw,0)
+
+inst_2:
+// rd==x15, rs1==x11, imm_val == 92,
+// opcode: c.lw; op1:x11; dest:x15; immval:0x5c
+TEST_LOAD(x1,x2,0,x11,x15,0x5c,8,c.lw,0)
+
+inst_3:
+// rd==x10, rs1==x15, imm_val == 108,
+// opcode: c.lw; op1:x15; dest:x10; immval:0x6c
+TEST_LOAD(x1,x2,0,x15,x10,0x6c,12,c.lw,0)
+
+inst_4:
+// rd==x13, rs1==x14, imm_val == 116,
+// opcode: c.lw; op1:x14; dest:x13; immval:0x74
+TEST_LOAD(x1,x2,0,x14,x13,0x74,16,c.lw,0)
+
+inst_5:
+// rd==x11, rs1==x13, imm_val == 120,
+// opcode: c.lw; op1:x13; dest:x11; immval:0x78
+TEST_LOAD(x1,x2,0,x13,x11,0x78,20,c.lw,0)
+
+inst_6:
+// rd==x12, rs1==x10, imm_val == 64,
+// opcode: c.lw; op1:x10; dest:x12; immval:0x40
+TEST_LOAD(x1,x2,0,x10,x12,0x40,24,c.lw,0)
+
+inst_7:
+// rd==x9, imm_val == 32,
+// opcode: c.lw; op1:x10; dest:x9; immval:0x20
+TEST_LOAD(x1,x2,0,x10,x9,0x20,28,c.lw,0)
+
+inst_8:
+// rs1==x9, imm_val == 16,
+// opcode: c.lw; op1:x9; dest:x8; immval:0x10
+TEST_LOAD(x1,x2,0,x9,x8,0x10,32,c.lw,0)
+
+inst_9:
+// imm_val == 8,
+// opcode: c.lw; op1:x11; dest:x10; immval:0x8
+TEST_LOAD(x1,x2,0,x11,x10,0x8,36,c.lw,0)
+
+inst_10:
+// imm_val == 4,
+// opcode: c.lw; op1:x11; dest:x10; immval:0x4
+TEST_LOAD(x1,x2,0,x11,x10,0x4,40,c.lw,0)
+
+inst_11:
+// imm_val == 40,
+// opcode: c.lw; op1:x11; dest:x10; immval:0x28
+TEST_LOAD(x1,x2,0,x11,x10,0x28,44,c.lw,0)
+
+inst_12:
+// imm_val == 84,
+// opcode: c.lw; op1:x11; dest:x10; immval:0x54
+TEST_LOAD(x1,x2,0,x11,x10,0x54,48,c.lw,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 13*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clwsp-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clwsp-01.S
new file mode 100644
index 000000000..49f3f6409
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/clwsp-01.S
@@ -0,0 +1,150 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.lwsp instruction of the RISC-V C extension for the clwsp covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",clwsp)
+
+RVTEST_SIGBASE( x5,signature_x5_1)
+
+inst_0:
+// rd==x2, imm_val == 0,
+// opcode: c.lwsp; op1:x2; dest:x2; immval:0x0
+TEST_LOAD(x5,x7,0,x2,x2,0x0,0,c.lwsp,0)
+
+inst_1:
+// rd==x11, imm_val == 124, imm_val > 0
+// opcode: c.lwsp; op1:x2; dest:x11; immval:0x7c
+TEST_LOAD(x5,x7,0,x2,x11,0x7c,4,c.lwsp,0)
+
+inst_2:
+// rd==x3, imm_val == 188,
+// opcode: c.lwsp; op1:x2; dest:x3; immval:0xbc
+TEST_LOAD(x5,x7,0,x2,x3,0xbc,8,c.lwsp,0)
+
+inst_3:
+// rd==x6, imm_val == 220,
+// opcode: c.lwsp; op1:x2; dest:x6; immval:0xdc
+TEST_LOAD(x5,x7,0,x2,x6,0xdc,12,c.lwsp,0)
+
+inst_4:
+// rd==x9, imm_val == 236,
+// opcode: c.lwsp; op1:x2; dest:x9; immval:0xec
+TEST_LOAD(x5,x7,0,x2,x9,0xec,16,c.lwsp,0)
+
+inst_5:
+// rd==x1, imm_val == 244,
+// opcode: c.lwsp; op1:x2; dest:x1; immval:0xf4
+TEST_LOAD(x5,x7,0,x2,x1,0xf4,20,c.lwsp,0)
+
+inst_6:
+// rd==x4, imm_val == 248,
+// opcode: c.lwsp; op1:x2; dest:x4; immval:0xf8
+TEST_LOAD(x5,x7,0,x2,x4,0xf8,24,c.lwsp,0)
+
+inst_7:
+// rd==x8, imm_val == 128,
+// opcode: c.lwsp; op1:x2; dest:x8; immval:0x80
+TEST_LOAD(x5,x7,0,x2,x8,0x80,28,c.lwsp,0)
+
+inst_8:
+// rd==x15, imm_val == 64,
+// opcode: c.lwsp; op1:x2; dest:x15; immval:0x40
+TEST_LOAD(x5,x7,0,x2,x15,0x40,32,c.lwsp,0)
+
+inst_9:
+// rd==x12, imm_val == 32,
+// opcode: c.lwsp; op1:x2; dest:x12; immval:0x20
+TEST_LOAD(x5,x7,0,x2,x12,0x20,36,c.lwsp,0)
+
+inst_10:
+// rd==x10, imm_val == 16,
+// opcode: c.lwsp; op1:x2; dest:x10; immval:0x10
+TEST_LOAD(x5,x7,0,x2,x10,0x10,40,c.lwsp,0)
+
+inst_11:
+// rd==x14, imm_val == 8,
+// opcode: c.lwsp; op1:x2; dest:x14; immval:0x8
+TEST_LOAD(x5,x3,0,x2,x14,0x8,44,c.lwsp,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_12:
+// rd==x13, imm_val == 4,
+// opcode: c.lwsp; op1:x2; dest:x13; immval:0x4
+TEST_LOAD(x1,x3,0,x2,x13,0x4,0,c.lwsp,0)
+
+inst_13:
+// rd==x5, imm_val == 168,
+// opcode: c.lwsp; op1:x2; dest:x5; immval:0xa8
+TEST_LOAD(x1,x3,0,x2,x5,0xa8,4,c.lwsp,0)
+
+inst_14:
+// rd==x7, imm_val == 84,
+// opcode: c.lwsp; op1:x2; dest:x7; immval:0x54
+TEST_LOAD(x1,x3,0,x2,x7,0x54,8,c.lwsp,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x5_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_1:
+ .fill 12*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 3*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cmv-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cmv-01.S
new file mode 100644
index 000000000..ae1c87f68
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cmv-01.S
@@ -0,0 +1,500 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.mv instruction of the RISC-V C extension for the cmv covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cmv)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs2 == rd and rs2 != 0, rd==x13, rs2==x13, rs2_val == (-2**(xlen-1)), rs2_val == -2147483648
+// opcode: c.mv; op2:x13; dest:x13; op2val:-0x80000000
+TEST_CMV_OP( c.mv, x13, x13, -0x80000000, -0x80000000, x4, 0, x10)
+
+inst_1:
+// rs2 != rd and rs2 != 0, rd==x3, rs2==x14, rs2_val == 2147483647, rs2_val == (2**(xlen-1)-1)
+// opcode: c.mv; op2:x14; dest:x3; op2val:0x7fffffff
+TEST_CMV_OP( c.mv, x3, x14, 0x7fffffff, 0x7fffffff, x4, 4, x10)
+
+inst_2:
+// rd==x15, rs2==x5, rs2_val == -1073741825,
+// opcode: c.mv; op2:x5; dest:x15; op2val:-0x40000001
+TEST_CMV_OP( c.mv, x15, x5, -0x40000001, -0x40000001, x4, 8, x10)
+
+inst_3:
+// rd==x6, rs2==x2, rs2_val == -536870913,
+// opcode: c.mv; op2:x2; dest:x6; op2val:-0x20000001
+TEST_CMV_OP( c.mv, x6, x2, -0x20000001, -0x20000001, x4, 12, x10)
+
+inst_4:
+// rd==x9, rs2==x7, rs2_val == -268435457,
+// opcode: c.mv; op2:x7; dest:x9; op2val:-0x10000001
+TEST_CMV_OP( c.mv, x9, x7, -0x10000001, -0x10000001, x4, 16, x10)
+
+inst_5:
+// rd==x2, rs2==x11, rs2_val == -134217729,
+// opcode: c.mv; op2:x11; dest:x2; op2val:-0x8000001
+TEST_CMV_OP( c.mv, x2, x11, -0x8000001, -0x8000001, x4, 20, x10)
+
+inst_6:
+// rd==x5, rs2==x15, rs2_val == -67108865,
+// opcode: c.mv; op2:x15; dest:x5; op2val:-0x4000001
+TEST_CMV_OP( c.mv, x5, x15, -0x4000001, -0x4000001, x4, 24, x10)
+
+inst_7:
+// rd==x11, rs2==x9, rs2_val == -33554433,
+// opcode: c.mv; op2:x9; dest:x11; op2val:-0x2000001
+TEST_CMV_OP( c.mv, x11, x9, -0x2000001, -0x2000001, x4, 28, x10)
+
+inst_8:
+// rd==x1, rs2==x8, rs2_val == -16777217,
+// opcode: c.mv; op2:x8; dest:x1; op2val:-0x1000001
+TEST_CMV_OP( c.mv, x1, x8, -0x1000001, -0x1000001, x4, 32, x10)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_9:
+// rd==x7, rs2==x6, rs2_val == -8388609,
+// opcode: c.mv; op2:x6; dest:x7; op2val:-0x800001
+TEST_CMV_OP( c.mv, x7, x6, -0x800001, -0x800001, x2, 0, x5)
+
+inst_10:
+// rd==x12, rs2==x1, rs2_val == -4194305,
+// opcode: c.mv; op2:x1; dest:x12; op2val:-0x400001
+TEST_CMV_OP( c.mv, x12, x1, -0x400001, -0x400001, x2, 4, x5)
+
+inst_11:
+// rd==x14, rs2==x4, rs2_val == -2097153,
+// opcode: c.mv; op2:x4; dest:x14; op2val:-0x200001
+TEST_CMV_OP( c.mv, x14, x4, -0x200001, -0x200001, x2, 8, x5)
+
+inst_12:
+// rd==x10, rs2==x12, rs2_val == -1048577,
+// opcode: c.mv; op2:x12; dest:x10; op2val:-0x100001
+TEST_CMV_OP( c.mv, x10, x12, -0x100001, -0x100001, x2, 12, x5)
+
+inst_13:
+// rd==x8, rs2==x3, rs2_val == -524289,
+// opcode: c.mv; op2:x3; dest:x8; op2val:-0x80001
+TEST_CMV_OP( c.mv, x8, x3, -0x80001, -0x80001, x2, 16, x5)
+
+inst_14:
+// rd==x0, rs2==x10, rs2_val == -262145,
+// opcode: c.mv; op2:x10; dest:x0; op2val:-0x40001
+TEST_CMV_OP( c.mv, x0, x10, 0, -0x40001, x2, 20, x5)
+
+inst_15:
+// rd==x4, rs2_val == -131073,
+// opcode: c.mv; op2:x12; dest:x4; op2val:-0x20001
+TEST_CMV_OP( c.mv, x4, x12, -0x20001, -0x20001, x2, 24, x5)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x10001
+TEST_CMV_OP( c.mv, x10, x11, -0x10001, -0x10001, x2, 28, x5)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x8001
+TEST_CMV_OP( c.mv, x10, x11, -0x8001, -0x8001, x2, 32, x5)
+
+inst_18:
+// rs2_val == -16385,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x4001
+TEST_CMV_OP( c.mv, x10, x11, -0x4001, -0x4001, x2, 36, x5)
+
+inst_19:
+// rs2_val == -8193,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x2001
+TEST_CMV_OP( c.mv, x10, x11, -0x2001, -0x2001, x2, 40, x5)
+
+inst_20:
+// rs2_val == -4097,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x1001
+TEST_CMV_OP( c.mv, x10, x11, -0x1001, -0x1001, x2, 44, x5)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x801
+TEST_CMV_OP( c.mv, x10, x11, -0x801, -0x801, x2, 48, x5)
+
+inst_22:
+// rs2_val == -1025,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x401
+TEST_CMV_OP( c.mv, x10, x11, -0x401, -0x401, x2, 52, x5)
+
+inst_23:
+// rs2_val == -513,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x201
+TEST_CMV_OP( c.mv, x10, x11, -0x201, -0x201, x2, 56, x5)
+
+inst_24:
+// rs2_val == -257,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x101
+TEST_CMV_OP( c.mv, x10, x11, -0x101, -0x101, x2, 60, x5)
+
+inst_25:
+// rs2_val == -129,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x81
+TEST_CMV_OP( c.mv, x10, x11, -0x81, -0x81, x2, 64, x5)
+
+inst_26:
+// rs2_val == -65,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x41
+TEST_CMV_OP( c.mv, x10, x11, -0x41, -0x41, x2, 68, x5)
+
+inst_27:
+// rs2_val == -33,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x21
+TEST_CMV_OP( c.mv, x10, x11, -0x21, -0x21, x2, 72, x5)
+
+inst_28:
+// rs2_val == -17,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x11
+TEST_CMV_OP( c.mv, x10, x11, -0x11, -0x11, x2, 76, x5)
+
+inst_29:
+// rs2_val == -9,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x9
+TEST_CMV_OP( c.mv, x10, x11, -0x9, -0x9, x2, 80, x5)
+
+inst_30:
+// rs2_val == -5,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x5
+TEST_CMV_OP( c.mv, x10, x11, -0x5, -0x5, x2, 84, x5)
+
+inst_31:
+// rs2_val == -3,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x3
+TEST_CMV_OP( c.mv, x10, x11, -0x3, -0x3, x2, 88, x5)
+
+inst_32:
+// rs2_val == -2,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x2
+TEST_CMV_OP( c.mv, x10, x11, -0x2, -0x2, x2, 92, x5)
+
+inst_33:
+// rs2_val == 1073741824,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x40000000
+TEST_CMV_OP( c.mv, x10, x11, 0x40000000, 0x40000000, x2, 96, x5)
+
+inst_34:
+// rs2_val == 536870912,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x20000000
+TEST_CMV_OP( c.mv, x10, x11, 0x20000000, 0x20000000, x2, 100, x5)
+
+inst_35:
+// rs2_val == 268435456,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x10000000
+TEST_CMV_OP( c.mv, x10, x11, 0x10000000, 0x10000000, x2, 104, x5)
+
+inst_36:
+// rs2_val == 134217728,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x8000000
+TEST_CMV_OP( c.mv, x10, x11, 0x8000000, 0x8000000, x2, 108, x5)
+
+inst_37:
+// rs2_val == 67108864,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x4000000
+TEST_CMV_OP( c.mv, x10, x11, 0x4000000, 0x4000000, x2, 112, x5)
+
+inst_38:
+// rs2_val == 33554432,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x2000000
+TEST_CMV_OP( c.mv, x10, x11, 0x2000000, 0x2000000, x2, 116, x5)
+
+inst_39:
+// rs2_val == 16777216,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x1000000
+TEST_CMV_OP( c.mv, x10, x11, 0x1000000, 0x1000000, x2, 120, x5)
+
+inst_40:
+// rs2_val == 8388608,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x800000
+TEST_CMV_OP( c.mv, x10, x11, 0x800000, 0x800000, x2, 124, x5)
+
+inst_41:
+// rs2_val == 4194304,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x400000
+TEST_CMV_OP( c.mv, x10, x11, 0x400000, 0x400000, x2, 128, x5)
+
+inst_42:
+// rs2_val == 2097152,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x200000
+TEST_CMV_OP( c.mv, x10, x11, 0x200000, 0x200000, x2, 132, x5)
+
+inst_43:
+// rs2_val == 1048576,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x100000
+TEST_CMV_OP( c.mv, x10, x11, 0x100000, 0x100000, x2, 136, x5)
+
+inst_44:
+// rs2_val == 524288,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x80000
+TEST_CMV_OP( c.mv, x10, x11, 0x80000, 0x80000, x2, 140, x5)
+
+inst_45:
+// rs2_val == 262144,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x40000
+TEST_CMV_OP( c.mv, x10, x11, 0x40000, 0x40000, x2, 144, x5)
+
+inst_46:
+// rs2_val == 131072,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x20000
+TEST_CMV_OP( c.mv, x10, x11, 0x20000, 0x20000, x2, 148, x5)
+
+inst_47:
+// rs2_val == 65536,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x10000
+TEST_CMV_OP( c.mv, x10, x11, 0x10000, 0x10000, x2, 152, x5)
+
+inst_48:
+// rs2_val == 32768,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x8000
+TEST_CMV_OP( c.mv, x10, x11, 0x8000, 0x8000, x2, 156, x5)
+
+inst_49:
+// rs2_val == 16384,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x4000
+TEST_CMV_OP( c.mv, x10, x11, 0x4000, 0x4000, x2, 160, x5)
+
+inst_50:
+// rs2_val == 8192,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x2000
+TEST_CMV_OP( c.mv, x10, x11, 0x2000, 0x2000, x2, 164, x5)
+
+inst_51:
+// rs2_val == 4096,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x1000
+TEST_CMV_OP( c.mv, x10, x11, 0x1000, 0x1000, x2, 168, x5)
+
+inst_52:
+// rs2_val == 2048,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x800
+TEST_CMV_OP( c.mv, x10, x11, 0x800, 0x800, x2, 172, x5)
+
+inst_53:
+// rs2_val == 1024,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x400
+TEST_CMV_OP( c.mv, x10, x11, 0x400, 0x400, x2, 176, x5)
+
+inst_54:
+// rs2_val == 512,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x200
+TEST_CMV_OP( c.mv, x10, x11, 0x200, 0x200, x2, 180, x5)
+
+inst_55:
+// rs2_val == 256,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x100
+TEST_CMV_OP( c.mv, x10, x11, 0x100, 0x100, x2, 184, x5)
+
+inst_56:
+// rs2_val == 128,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x80
+TEST_CMV_OP( c.mv, x10, x11, 0x80, 0x80, x2, 188, x5)
+
+inst_57:
+// rs2_val == 64,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x40
+TEST_CMV_OP( c.mv, x10, x11, 0x40, 0x40, x2, 192, x5)
+
+inst_58:
+// rs2_val == 1,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x1
+TEST_CMV_OP( c.mv, x10, x11, 0x1, 0x1, x2, 196, x5)
+
+inst_59:
+// rs2_val==46341,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0xb505
+TEST_CMV_OP( c.mv, x10, x11, 0xb505, 0xb505, x2, 200, x5)
+
+inst_60:
+// rs2_val==-46339,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0xb503
+TEST_CMV_OP( c.mv, x10, x11, -0xb503, -0xb503, x2, 204, x5)
+
+inst_61:
+// rs2_val==1717986919,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x66666667
+TEST_CMV_OP( c.mv, x10, x11, 0x66666667, 0x66666667, x2, 208, x5)
+
+inst_62:
+// rs2_val==858993460,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x33333334
+TEST_CMV_OP( c.mv, x10, x11, 0x33333334, 0x33333334, x2, 212, x5)
+
+inst_63:
+// rs2_val==6,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x6
+TEST_CMV_OP( c.mv, x10, x11, 0x6, 0x6, x2, 216, x5)
+
+inst_64:
+// rs2_val==-1431655765,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x55555555
+TEST_CMV_OP( c.mv, x10, x11, -0x55555555, -0x55555555, x2, 220, x5)
+
+inst_65:
+// rs2_val==1431655766,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x55555556
+TEST_CMV_OP( c.mv, x10, x11, 0x55555556, 0x55555556, x2, 224, x5)
+
+inst_66:
+// rs2_val==4, rs2_val == 4
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x4
+TEST_CMV_OP( c.mv, x10, x11, 0x4, 0x4, x2, 228, x5)
+
+inst_67:
+// rs2_val==46339,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0xb503
+TEST_CMV_OP( c.mv, x10, x11, 0xb503, 0xb503, x2, 232, x5)
+
+inst_68:
+// rs2_val==0, rs2_val == 0
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x0
+TEST_CMV_OP( c.mv, x10, x11, 0x0, 0x0, x2, 236, x5)
+
+inst_69:
+// rs2_val==1717986917,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x66666665
+TEST_CMV_OP( c.mv, x10, x11, 0x66666665, 0x66666665, x2, 240, x5)
+
+inst_70:
+// rs2_val==858993458,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x33333332
+TEST_CMV_OP( c.mv, x10, x11, 0x33333332, 0x33333332, x2, 244, x5)
+
+inst_71:
+// rs2_val==1431655764,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x55555554
+TEST_CMV_OP( c.mv, x10, x11, 0x55555554, 0x55555554, x2, 248, x5)
+
+inst_72:
+// rs2_val==2, rs2_val == 2
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x2
+TEST_CMV_OP( c.mv, x10, x11, 0x2, 0x2, x2, 252, x5)
+
+inst_73:
+// rs2_val==46340,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0xb504
+TEST_CMV_OP( c.mv, x10, x11, 0xb504, 0xb504, x2, 256, x5)
+
+inst_74:
+// rs2_val==-46340,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0xb504
+TEST_CMV_OP( c.mv, x10, x11, -0xb504, -0xb504, x2, 260, x5)
+
+inst_75:
+// rs2_val==1717986918,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x66666666
+TEST_CMV_OP( c.mv, x10, x11, 0x66666666, 0x66666666, x2, 264, x5)
+
+inst_76:
+// rs2_val==858993459,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x33333333
+TEST_CMV_OP( c.mv, x10, x11, 0x33333333, 0x33333333, x2, 268, x5)
+
+inst_77:
+// rs2_val==5,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x5
+TEST_CMV_OP( c.mv, x10, x11, 0x5, 0x5, x2, 272, x5)
+
+inst_78:
+// rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x55555556
+TEST_CMV_OP( c.mv, x10, x11, -0x55555556, -0x55555556, x2, 276, x5)
+
+inst_79:
+// rs2_val==1431655765, rs2_val == 1431655765
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x55555555
+TEST_CMV_OP( c.mv, x10, x11, 0x55555555, 0x55555555, x2, 280, x5)
+
+inst_80:
+// rs2_val == 32,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x20
+TEST_CMV_OP( c.mv, x10, x11, 0x20, 0x20, x2, 284, x5)
+
+inst_81:
+// rs2_val == 16,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x10
+TEST_CMV_OP( c.mv, x10, x11, 0x10, 0x10, x2, 288, x5)
+
+inst_82:
+// rs2_val == 8,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x8
+TEST_CMV_OP( c.mv, x10, x11, 0x8, 0x8, x2, 292, x5)
+
+inst_83:
+// rs2_val==3,
+// opcode: c.mv; op2:x11; dest:x10; op2val:0x3
+TEST_CMV_OP( c.mv, x10, x11, 0x3, 0x3, x2, 296, x5)
+
+inst_84:
+// rs2_val == -262145,
+// opcode: c.mv; op2:x11; dest:x10; op2val:-0x40001
+TEST_CMV_OP( c.mv, x10, x11, -0x40001, -0x40001, x2, 300, x5)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 76*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cnop-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cnop-01.S
new file mode 100644
index 000000000..387aff04f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cnop-01.S
@@ -0,0 +1,140 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.nop instruction of the RISC-V C extension for the cnop covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cnop)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// imm_val == 21,
+// opcode:c.nop; immval:0x15
+TEST_CNOP_OP(c.nop, x2, 0x15, x1, 0)
+
+inst_1:
+// imm_val == 31,
+// opcode:c.nop; immval:0x1f
+TEST_CNOP_OP(c.nop, x2, 0x1f, x1, 4)
+
+inst_2:
+// imm_val == -17,
+// opcode:c.nop; immval:-0x11
+TEST_CNOP_OP(c.nop, x2, -0x11, x1, 8)
+
+inst_3:
+// imm_val == -9,
+// opcode:c.nop; immval:-0x9
+TEST_CNOP_OP(c.nop, x2, -0x9, x1, 12)
+
+inst_4:
+// imm_val == -5,
+// opcode:c.nop; immval:-0x5
+TEST_CNOP_OP(c.nop, x2, -0x5, x1, 16)
+
+inst_5:
+// imm_val == -3,
+// opcode:c.nop; immval:-0x3
+TEST_CNOP_OP(c.nop, x2, -0x3, x1, 20)
+
+inst_6:
+// imm_val == -2,
+// opcode:c.nop; immval:-0x2
+TEST_CNOP_OP(c.nop, x2, -0x2, x1, 24)
+
+inst_7:
+// imm_val == -32,
+// opcode:c.nop; immval:-0x20
+TEST_CNOP_OP(c.nop, x2, -0x20, x1, 28)
+
+inst_8:
+// imm_val == 16,
+// opcode:c.nop; immval:0x10
+TEST_CNOP_OP(c.nop, x2, 0x10, x1, 32)
+
+inst_9:
+// imm_val == 8,
+// opcode:c.nop; immval:0x8
+TEST_CNOP_OP(c.nop, x2, 0x8, x1, 36)
+
+inst_10:
+// imm_val == 4,
+// opcode:c.nop; immval:0x4
+TEST_CNOP_OP(c.nop, x2, 0x4, x1, 40)
+
+inst_11:
+// imm_val == 2,
+// opcode:c.nop; immval:0x2
+TEST_CNOP_OP(c.nop, x2, 0x2, x1, 44)
+
+inst_12:
+// imm_val == 1,
+// opcode:c.nop; immval:0x1
+TEST_CNOP_OP(c.nop, x2, 0x1, x1, 48)
+
+inst_13:
+// imm_val == -22,
+// opcode:c.nop; immval:-0x16
+TEST_CNOP_OP(c.nop, x2, -0x16, x1, 52)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 14*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cor-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cor-01.S
new file mode 100644
index 000000000..770219fd0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cor-01.S
@@ -0,0 +1,2985 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.or instruction of the RISC-V C extension for the cor covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cor)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rs2, rs1==x12, rs2==x10, rs1_val == (-2**(xlen-1)), rs1_val == -2147483648, rs2_val == 0
+// opcode: c.or; op1:x12; op2:x10; op1val:-0x80000000; op2val:0x0
+TEST_CR_OP( c.or, x12, x10, 0x80000000, -0x80000000, 0x0, x1, 0, x2)
+
+inst_1:
+// rs1 == rs2, rs1==x9, rs2==x9, rs2_val == 2147483647, rs2_val == (2**(xlen-1)-1), rs2_val > 0
+// opcode: c.or; op1:x9; op2:x9; op1val:0x33333334; op2val:0x33333334
+TEST_CR_OP( c.or, x9, x9, 0x33333334, 0x33333334, 0x33333334, x1, 4, x2)
+
+inst_2:
+// rs1==x14, rs2==x12, rs2_val == -1073741825, rs2_val < 0, rs1_val == 8
+// opcode: c.or; op1:x14; op2:x12; op1val:0x8; op2val:-0x40000001
+TEST_CR_OP( c.or, x14, x12, 0xbfffffff, 0x8, -0x40000001, x1, 8, x2)
+
+inst_3:
+// rs1==x15, rs2==x13, rs2_val == -536870913, rs1_val == 32768
+// opcode: c.or; op1:x15; op2:x13; op1val:0x8000; op2val:-0x20000001
+TEST_CR_OP( c.or, x15, x13, 0xdfffffff, 0x8000, -0x20000001, x1, 12, x2)
+
+inst_4:
+// rs1==x10, rs2==x15, rs2_val == -268435457,
+// opcode: c.or; op1:x10; op2:x15; op1val:-0x6; op2val:-0x10000001
+TEST_CR_OP( c.or, x10, x15, 0xffffffff, -0x6, -0x10000001, x1, 16, x2)
+
+inst_5:
+// rs1==x11, rs2==x8, rs2_val == -134217729,
+// opcode: c.or; op1:x11; op2:x8; op1val:0xb505; op2val:-0x8000001
+TEST_CR_OP( c.or, x11, x8, 0xf7ffffff, 0xb505, -0x8000001, x1, 20, x2)
+
+inst_6:
+// rs1==x13, rs2==x11, rs2_val == -67108865,
+// opcode: c.or; op1:x13; op2:x11; op1val:0x55555554; op2val:-0x4000001
+TEST_CR_OP( c.or, x13, x11, 0xffffffff, 0x55555554, -0x4000001, x1, 24, x2)
+
+inst_7:
+// rs1==x8, rs2==x14, rs2_val == -33554433, rs1_val == 2
+// opcode: c.or; op1:x8; op2:x14; op1val:0x2; op2val:-0x2000001
+TEST_CR_OP( c.or, x8, x14, 0xfdffffff, 0x2, -0x2000001, x1, 28, x2)
+
+inst_8:
+// rs2_val == -16777217, rs1_val == -33
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x21; op2val:-0x1000001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x21, -0x1000001, x1, 32, x2)
+
+inst_9:
+// rs2_val == -8388609, rs1_val == -1431655766
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x800001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x55555556, -0x800001, x1, 36, x2)
+
+inst_10:
+// rs2_val == -4194305, rs1_val == -4194305
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x400001; op2val:-0x400001
+TEST_CR_OP( c.or, x10, x11, 0xffbfffff, -0x400001, -0x400001, x1, 40, x2)
+
+inst_11:
+// rs2_val == -2097153, rs1_val == -1073741825
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x40000001; op2val:-0x200001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x40000001, -0x200001, x1, 44, x2)
+
+inst_12:
+// rs2_val == -1048577,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x100001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, 0x55555556, -0x100001, x1, 48, x2)
+
+inst_13:
+// rs2_val == -524289, rs1_val == 8192
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2000; op2val:-0x80001
+TEST_CR_OP( c.or, x10, x11, 0xfff7ffff, 0x2000, -0x80001, x1, 52, x2)
+
+inst_14:
+// rs2_val == -262145,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:-0x40001
+TEST_CR_OP( c.or, x10, x11, 0xfffbffff, 0x6, -0x40001, x1, 56, x2)
+
+inst_15:
+// rs2_val == -131073, rs1_val == 32
+// opcode: c.or; op1:x10; op2:x11; op1val:0x20; op2val:-0x20001
+TEST_CR_OP( c.or, x10, x11, 0xfffdffff, 0x20, -0x20001, x1, 60, x2)
+
+inst_16:
+// rs2_val == -65537, rs1_val == -524289
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x80001; op2val:-0x10001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x80001, -0x10001, x1, 64, x2)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:-0x8001
+TEST_CR_OP( c.or, x10, x11, 0xffff7fff, 0x2, -0x8001, x1, 68, x2)
+
+inst_18:
+// rs2_val == -16385,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:-0x4001
+TEST_CR_OP( c.or, x10, x11, 0xffffbfff, 0x3, -0x4001, x1, 72, x2)
+
+inst_19:
+// rs2_val == -8193, rs1_val == 16
+// opcode: c.or; op1:x10; op2:x11; op1val:0x10; op2val:-0x2001
+TEST_CR_OP( c.or, x10, x11, 0xffffdfff, 0x10, -0x2001, x1, 76, x2)
+
+inst_20:
+// rs2_val == -4097, rs1_val == -8388609
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x800001; op2val:-0x1001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x800001, -0x1001, x1, 80, x2)
+
+inst_21:
+// rs2_val == -2049, rs1_val == -262145
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x40001; op2val:-0x801
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x40001, -0x801, x1, 84, x2)
+
+inst_22:
+// rs2_val == -1025,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x7; op2val:-0x401
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x7, -0x401, x1, 88, x2)
+
+inst_23:
+// rs2_val == -513,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x40001; op2val:-0x201
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x40001, -0x201, x1, 92, x2)
+
+inst_24:
+// rs2_val == -257, rs1_val == 64
+// opcode: c.or; op1:x10; op2:x11; op1val:0x40; op2val:-0x101
+TEST_CR_OP( c.or, x10, x11, 0xfffffeff, 0x40, -0x101, x1, 96, x2)
+
+inst_25:
+// rs2_val == -129,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x81
+TEST_CR_OP( c.or, x10, x11, 0xffffff7f, 0x66666665, -0x81, x1, 100, x2)
+
+inst_26:
+// rs2_val == -65, rs1_val == 8388608
+// opcode: c.or; op1:x10; op2:x11; op1val:0x800000; op2val:-0x41
+TEST_CR_OP( c.or, x10, x11, 0xffffffbf, 0x800000, -0x41, x1, 104, x2)
+
+inst_27:
+// rs2_val == -33, rs1_val == -3
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x3; op2val:-0x21
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x3, -0x21, x1, 108, x2)
+
+inst_28:
+// rs2_val == -17,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x3; op2val:-0x11
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x3, -0x11, x1, 112, x2)
+
+inst_29:
+// rs2_val == -9, rs1_val == 4
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:-0x9
+TEST_CR_OP( c.or, x10, x11, 0xfffffff7, 0x4, -0x9, x1, 116, x2)
+
+inst_30:
+// rs2_val == -5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x8; op2val:-0x5
+TEST_CR_OP( c.or, x10, x11, 0xfffffffb, 0x8, -0x5, x1, 120, x2)
+
+inst_31:
+// rs2_val == -3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x8000; op2val:-0x3
+TEST_CR_OP( c.or, x10, x11, 0xfffffffd, 0x8000, -0x3, x1, 124, x2)
+
+inst_32:
+// rs2_val == -2, rs1_val == 134217728
+// opcode: c.or; op1:x10; op2:x11; op1val:0x8000000; op2val:-0x2
+TEST_CR_OP( c.or, x10, x11, 0xfffffffe, 0x8000000, -0x2, x1, 128, x2)
+
+inst_33:
+// rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: c.or; op1:x10; op2:x11; op1val:0x7fffffff; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x7fffffff, 0x7fffffff, 0x3, x1, 132, x2)
+
+inst_34:
+// rs1_val == -536870913, rs2_val == 256
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x20000001; op2val:0x100
+TEST_CR_OP( c.or, x10, x11, 0xdfffffff, -0x20000001, 0x100, x1, 136, x2)
+
+inst_35:
+// rs1_val == -268435457,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x10000001; op2val:-0x4001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x10000001, -0x4001, x1, 140, x2)
+
+inst_36:
+// rs1_val == -134217729, rs2_val == 67108864
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x8000001; op2val:0x4000000
+TEST_CR_OP( c.or, x10, x11, 0xf7ffffff, -0x8000001, 0x4000000, x1, 144, x2)
+
+inst_37:
+// rs1_val == -67108865,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x4000001; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0xfbffffff, -0x4000001, 0x33333334, x1, 148, x2)
+
+inst_38:
+// rs1_val == -33554433,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x2000001; op2val:0x100
+TEST_CR_OP( c.or, x10, x11, 0xfdffffff, -0x2000001, 0x100, x1, 152, x2)
+
+inst_39:
+// rs1_val == -16777217,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x1000001; op2val:-0x40000000
+TEST_CR_OP( c.or, x10, x11, 0xfeffffff, -0x1000001, -0x40000000, x1, 156, x2)
+
+inst_40:
+// rs1_val == -2097153,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x200001; op2val:-0x11
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x200001, -0x11, x1, 160, x2)
+
+inst_41:
+// rs1_val == -1048577,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x100001; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0xffefffff, -0x100001, 0x3, x1, 164, x2)
+
+inst_42:
+// rs1_val == -131073,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x20001; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0xfffdffff, -0x20001, 0x6, x1, 168, x2)
+
+inst_43:
+// rs1_val == -65537,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x10001; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0xfffeffff, -0x10001, 0x0, x1, 172, x2)
+
+inst_44:
+// rs1_val == -32769, rs2_val == 2
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x8001; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0xffff7fff, -0x8001, 0x2, x1, 176, x2)
+
+inst_45:
+// rs1_val == -16385, rs2_val == 4
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x4001; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0xffffbfff, -0x4001, 0x4, x1, 180, x2)
+
+inst_46:
+// rs1_val == -8193, rs2_val == 2048
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x2001; op2val:0x800
+TEST_CR_OP( c.or, x10, x11, 0xffffdfff, -0x2001, 0x800, x1, 184, x2)
+
+inst_47:
+// rs1_val == -4097, rs2_val == 32
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x1001; op2val:0x20
+TEST_CR_OP( c.or, x10, x11, 0xffffefff, -0x1001, 0x20, x1, 188, x2)
+
+inst_48:
+// rs1_val == -2049, rs2_val == 16384
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x801; op2val:0x4000
+TEST_CR_OP( c.or, x10, x11, 0xfffff7ff, -0x801, 0x4000, x1, 192, x2)
+
+inst_49:
+// rs1_val == -1025,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x401; op2val:-0x2
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x401, -0x2, x1, 196, x2)
+
+inst_50:
+// rs1_val == -513, rs2_val == 8
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x201; op2val:0x8
+TEST_CR_OP( c.or, x10, x11, 0xfffffdff, -0x201, 0x8, x1, 200, x2)
+
+inst_51:
+// rs1_val == -257,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x101; op2val:-0x3
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x101, -0x3, x1, 204, x2)
+
+inst_52:
+// rs1_val == -129,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x81; op2val:-0x20001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x81, -0x20001, x1, 208, x2)
+
+inst_53:
+// rs1_val == -65, rs2_val == 128
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x41; op2val:0x80
+TEST_CR_OP( c.or, x10, x11, 0xffffffbf, -0x41, 0x80, x1, 212, x2)
+
+inst_54:
+// rs1_val == -17,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x11; op2val:-0x201
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x11, -0x201, x1, 216, x2)
+
+inst_55:
+// rs1_val == -9,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x9; op2val:0x7fffffff
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x9, 0x7fffffff, x1, 220, x2)
+
+inst_56:
+// rs1_val == -5,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x5; op2val:-0x3
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x5, -0x3, x1, 224, x2)
+
+inst_57:
+// rs1_val == -2,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x2; op2val:-0x10001
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x2, -0x10001, x1, 228, x2)
+
+inst_58:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:-0x80000000
+TEST_CR_OP( c.or, x10, x11, 0x8000b503, 0xb503, -0x80000000, x1, 232, x2)
+
+inst_59:
+// rs2_val == 1073741824,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x40000000
+TEST_CR_OP( c.or, x10, x11, 0x40000003, 0x3, 0x40000000, x1, 236, x2)
+
+inst_60:
+// rs2_val == 536870912, rs1_val == 0
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x20000000
+TEST_CR_OP( c.or, x10, x11, 0x20000000, 0x0, 0x20000000, x1, 240, x2)
+
+inst_61:
+// rs2_val == 268435456,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x10000000
+TEST_CR_OP( c.or, x10, x11, 0x55555554, 0x55555554, 0x10000000, x1, 244, x2)
+
+inst_62:
+// rs2_val == 134217728,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x1000001; op2val:0x8000000
+TEST_CR_OP( c.or, x10, x11, 0xfeffffff, -0x1000001, 0x8000000, x1, 248, x2)
+
+inst_63:
+// rs2_val == 33554432,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x801; op2val:0x2000000
+TEST_CR_OP( c.or, x10, x11, 0xfffff7ff, -0x801, 0x2000000, x1, 252, x2)
+
+inst_64:
+// rs2_val == 16777216,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x40000000; op2val:0x1000000
+TEST_CR_OP( c.or, x10, x11, 0xc1000000, -0x40000000, 0x1000000, x1, 256, x2)
+
+inst_65:
+// rs2_val == 8388608, rs1_val == 268435456
+// opcode: c.or; op1:x10; op2:x11; op1val:0x10000000; op2val:0x800000
+TEST_CR_OP( c.or, x10, x11, 0x10800000, 0x10000000, 0x800000, x1, 260, x2)
+
+inst_66:
+// rs2_val == 4194304,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x2000001; op2val:0x400000
+TEST_CR_OP( c.or, x10, x11, 0xfdffffff, -0x2000001, 0x400000, x1, 264, x2)
+
+inst_67:
+// rs2_val == 2097152,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x200000
+TEST_CR_OP( c.or, x10, x11, 0x55755554, 0x55555554, 0x200000, x1, 268, x2)
+
+inst_68:
+// rs2_val == 1048576,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x40000001; op2val:0x100000
+TEST_CR_OP( c.or, x10, x11, 0xbfffffff, -0x40000001, 0x100000, x1, 272, x2)
+
+inst_69:
+// rs2_val == 524288,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x7; op2val:0x80000
+TEST_CR_OP( c.or, x10, x11, 0xfffffff9, -0x7, 0x80000, x1, 276, x2)
+
+inst_70:
+// rs2_val == 262144,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2000; op2val:0x40000
+TEST_CR_OP( c.or, x10, x11, 0x42000, 0x2000, 0x40000, x1, 280, x2)
+
+inst_71:
+// rs2_val == 131072,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x20000
+TEST_CR_OP( c.or, x10, x11, 0x33333332, 0x33333332, 0x20000, x1, 284, x2)
+
+inst_72:
+// rs2_val == 65536,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2000; op2val:0x10000
+TEST_CR_OP( c.or, x10, x11, 0x12000, 0x2000, 0x10000, x1, 288, x2)
+
+inst_73:
+// rs2_val == 32768, rs1_val == 16384
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4000; op2val:0x8000
+TEST_CR_OP( c.or, x10, x11, 0xc000, 0x4000, 0x8000, x1, 292, x2)
+
+inst_74:
+// rs2_val == 8192, rs1_val == 512
+// opcode: c.or; op1:x10; op2:x11; op1val:0x200; op2val:0x2000
+TEST_CR_OP( c.or, x10, x11, 0x2200, 0x200, 0x2000, x1, 296, x2)
+
+inst_75:
+// rs2_val == 4096, rs1_val == 67108864
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4000000; op2val:0x1000
+TEST_CR_OP( c.or, x10, x11, 0x4001000, 0x4000000, 0x1000, x1, 300, x2)
+
+inst_76:
+// rs2_val == 1024,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x5; op2val:0x400
+TEST_CR_OP( c.or, x10, x11, 0xfffffffb, -0x5, 0x400, x1, 304, x2)
+
+inst_77:
+// rs2_val == 512,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x200
+TEST_CR_OP( c.or, x10, x11, 0x200, 0x0, 0x200, x1, 308, x2)
+
+inst_78:
+// rs2_val == 64,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x4000001; op2val:0x40
+TEST_CR_OP( c.or, x10, x11, 0xfbffffff, -0x4000001, 0x40, x1, 312, x2)
+
+inst_79:
+// rs2_val == 16,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4000000; op2val:0x10
+TEST_CR_OP( c.or, x10, x11, 0x4000010, 0x4000000, 0x10, x1, 316, x2)
+
+inst_80:
+// rs2_val == 1,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x41; op2val:0x1
+TEST_CR_OP( c.or, x10, x11, 0xffffffbf, -0x41, 0x1, x1, 320, x2)
+
+inst_81:
+// rs1_val == 1073741824,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x40000000; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x40000000, 0x40000000, 0x0, x1, 324, x2)
+
+inst_82:
+// rs1_val == 536870912,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x20000000; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4afc, 0x20000000, -0xb504, x1, 328, x2)
+
+inst_83:
+// rs1_val == 33554432,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2000000; op2val:0x10
+TEST_CR_OP( c.or, x10, x11, 0x2000010, 0x2000000, 0x10, x1, 332, x2)
+
+inst_84:
+// rs1_val == 16777216,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x1000000; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x1000004, 0x1000000, 0x4, x1, 336, x2)
+
+inst_85:
+// rs1_val == 4194304,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x400000; op2val:-0x1
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, 0x400000, -0x1, x1, 340, x2)
+
+inst_86:
+// rs1_val == 2097152,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x200000; op2val:-0x2001
+TEST_CR_OP( c.or, x10, x11, 0xffffdfff, 0x200000, -0x2001, x1, 344, x2)
+
+inst_87:
+// rs1_val == 1048576,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x100000; op2val:0x200000
+TEST_CR_OP( c.or, x10, x11, 0x300000, 0x100000, 0x200000, x1, 348, x2)
+
+inst_88:
+// rs1_val == 524288,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x80000; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x80003, 0x80000, 0x3, x1, 352, x2)
+
+inst_89:
+// rs1_val == 262144,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x40000; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x40006, 0x40000, 0x6, x1, 356, x2)
+
+inst_90:
+// rs1_val == 131072,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x20000; op2val:-0x10001
+TEST_CR_OP( c.or, x10, x11, 0xfffeffff, 0x20000, -0x10001, x1, 360, x2)
+
+inst_91:
+// rs1_val == 65536,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x10000; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaabaaab, 0x10000, -0x55555555, x1, 364, x2)
+
+inst_92:
+// rs1_val == 4096,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x1000; op2val:0x1
+TEST_CR_OP( c.or, x10, x11, 0x1001, 0x1000, 0x1, x1, 368, x2)
+
+inst_93:
+// rs1_val == 2048,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x800; op2val:0x100000
+TEST_CR_OP( c.or, x10, x11, 0x100800, 0x800, 0x100000, x1, 372, x2)
+
+inst_94:
+// rs1_val == 1024,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x400; op2val:0x20000
+TEST_CR_OP( c.or, x10, x11, 0x20400, 0x400, 0x20000, x1, 376, x2)
+
+inst_95:
+// rs1_val == 256,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x100; op2val:-0x4001
+TEST_CR_OP( c.or, x10, x11, 0xffffbfff, 0x100, -0x4001, x1, 380, x2)
+
+inst_96:
+// rs1_val == 128,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x80; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x85, 0x80, 0x5, x1, 384, x2)
+
+inst_97:
+// rs1_val == 1,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x1; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0x1, 0xb505, x1, 388, x2)
+
+inst_98:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0xb505, 0xb505, x1, 392, x2)
+
+inst_99:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xfffffffd, 0xb505, -0xb503, x1, 396, x2)
+
+inst_100:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0xb505, 0x66666667, x1, 400, x2)
+
+inst_101:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x3333b735, 0xb505, 0x33333334, x1, 404, x2)
+
+inst_102:
+// rs1_val==46341 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb505, 0x6, x1, 408, x2)
+
+inst_103:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfaf, 0xb505, -0x55555555, x1, 412, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x5555f557, 0xb505, 0x55555556, x1, 416, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0xb505, 0x4, x1, 420, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb505, 0xb503, x1, 424, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0xb505, 0x0, x1, 428, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x6666f765, 0xb505, 0x66666665, x1, 432, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x3333b737, 0xb505, 0x33333332, x1, 436, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x5555f555, 0xb505, 0x55555554, x1, 440, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb505, 0x2, x1, 444, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0xb505, 0xb504, x1, 448, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xfffffffd, 0xb505, -0xb504, x1, 452, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0xb505, 0x66666666, x1, 456, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x3333b737, 0xb505, 0x33333333, x1, 460, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0xb505, 0x5, x1, 464, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfaf, 0xb505, -0x55555556, x1, 468, x2)
+
+inst_118:
+// rs1_val==46341 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x5555f555, 0xb505, 0x55555555, x1, 472, x2)
+
+inst_119:
+// rs1_val==46341 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb505; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb505, 0x3, x1, 476, x2)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xfffffffd, -0xb503, 0xb505, x1, 480, x2)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, -0xb503, -0xb503, x1, 484, x2)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0xffff6eff, -0xb503, 0x66666667, x1, 488, x2)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0xffff7bfd, -0xb503, 0x33333334, x1, 492, x2)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0xffff4aff, -0xb503, 0x6, x1, 496, x2)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffffeaff, -0xb503, -0x55555555, x1, 500, x2)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xffff5fff, -0xb503, 0x55555556, x1, 504, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, -0xb503, 0x4, x1, 508, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0xb503, 0xb503, x1, 512, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, -0xb503, 0x0, x1, 516, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0xffff6efd, -0xb503, 0x66666665, x1, 520, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0xffff7bff, -0xb503, 0x33333332, x1, 524, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffd, -0xb503, 0x55555554, x1, 528, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0xffff4aff, -0xb503, 0x2, x1, 532, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xfffffffd, -0xb503, 0xb504, x1, 536, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, -0xb503, -0xb504, x1, 540, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0xffff6eff, -0xb503, 0x66666666, x1, 544, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0xffff7bff, -0xb503, 0x33333333, x1, 548, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, -0xb503, 0x5, x1, 552, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xffffeaff, -0xb503, -0x55555556, x1, 556, x2)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffd, -0xb503, 0x55555555, x1, 560, x2)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb503; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0xffff4aff, -0xb503, 0x3, x1, 564, x2)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0x66666667, 0xb505, x1, 568, x2)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff6eff, 0x66666667, -0xb503, x1, 572, x2)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x66666667, x1, 576, x2)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666667, 0x33333334, x1, 580, x2)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x6, x1, 584, x2)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, 0x66666667, -0x55555555, x1, 588, x2)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666667, 0x55555556, x1, 592, x2)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x4, x1, 596, x2)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0x66666667, 0xb503, x1, 600, x2)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x0, x1, 604, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x66666665, x1, 608, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666667, 0x33333332, x1, 612, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666667, 0x55555554, x1, 616, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x2, x1, 620, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0x66666667, 0xb504, x1, 624, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff6eff, 0x66666667, -0xb504, x1, 628, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x66666666, x1, 632, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666667, 0x33333333, x1, 636, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x5, x1, 640, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, 0x66666667, -0x55555556, x1, 644, x2)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666667, 0x55555555, x1, 648, x2)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666667; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666667, 0x3, x1, 652, x2)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x3333b735, 0x33333334, 0xb505, x1, 656, x2)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff7bfd, 0x33333334, -0xb503, x1, 660, x2)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333334, 0x66666667, x1, 664, x2)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333334, 0x33333334, 0x33333334, x1, 668, x2)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x33333334, 0x6, x1, 672, x2)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbf, 0x33333334, -0x55555555, x1, 676, x2)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x33333334, 0x55555556, x1, 680, x2)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x33333334, 0x33333334, 0x4, x1, 684, x2)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x3333b737, 0x33333334, 0xb503, x1, 688, x2)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x33333334, 0x33333334, 0x0, x1, 692, x2)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x77777775, 0x33333334, 0x66666665, x1, 696, x2)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x33333334, 0x33333332, x1, 700, x2)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x77777774, 0x33333334, 0x55555554, x1, 704, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x33333334, 0x2, x1, 708, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x3333b734, 0x33333334, 0xb504, x1, 712, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff7bfc, 0x33333334, -0xb504, x1, 716, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x33333334, 0x66666666, x1, 720, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x33333334, 0x33333333, x1, 724, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x33333335, 0x33333334, 0x5, x1, 728, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbe, 0x33333334, -0x55555556, x1, 732, x2)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x77777775, 0x33333334, 0x55555555, x1, 736, x2)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333334; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x33333334, 0x3, x1, 740, x2)
+
+inst_186:
+// rs1_val==6 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0x6, 0xb505, x1, 744, x2)
+
+inst_187:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff4aff, 0x6, -0xb503, x1, 748, x2)
+
+inst_188:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x6, 0x66666667, x1, 752, x2)
+
+inst_189:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x6, 0x33333334, x1, 756, x2)
+
+inst_190:
+// rs1_val==6 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x6, 0x6, x1, 760, x2)
+
+inst_191:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaf, 0x6, -0x55555555, x1, 764, x2)
+
+inst_192:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x6, 0x55555556, x1, 768, x2)
+
+inst_193:
+// rs1_val==6 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x6, 0x4, x1, 772, x2)
+
+inst_194:
+// rs1_val==6 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0x6, 0xb503, x1, 776, x2)
+
+inst_195:
+// rs1_val==6 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x6, 0x0, x1, 780, x2)
+
+inst_196:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x6, 0x66666665, x1, 784, x2)
+
+inst_197:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x6, 0x33333332, x1, 788, x2)
+
+inst_198:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x6, 0x55555554, x1, 792, x2)
+
+inst_199:
+// rs1_val==6 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x6, 0x2, x1, 796, x2)
+
+inst_200:
+// rs1_val==6 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb506, 0x6, 0xb504, x1, 800, x2)
+
+inst_201:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4afe, 0x6, -0xb504, x1, 804, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x6, 0x66666666, x1, 808, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x6, 0x33333333, x1, 812, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x6, 0x5, x1, 816, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaae, 0x6, -0x55555556, x1, 820, x2)
+
+inst_206:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x6, 0x55555555, x1, 824, x2)
+
+inst_207:
+// rs1_val==6 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x6; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x6, 0x3, x1, 828, x2)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfaf, -0x55555555, 0xb505, x1, 832, x2)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffffeaff, -0x55555555, -0xb503, x1, 836, x2)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, -0x55555555, 0x66666667, x1, 840, x2)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbf, -0x55555555, 0x33333334, x1, 844, x2)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaf, -0x55555555, 0x6, x1, 848, x2)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, -0x55555555, -0x55555555, x1, 852, x2)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x55555555, 0x55555556, x1, 856, x2)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaf, -0x55555555, 0x4, x1, 860, x2)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfab, -0x55555555, 0xb503, x1, 864, x2)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, -0x55555555, 0x0, x1, 868, x2)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, -0x55555555, 0x66666665, x1, 872, x2)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbb, -0x55555555, 0x33333332, x1, 876, x2)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x55555555, 0x55555554, x1, 880, x2)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, -0x55555555, 0x2, x1, 884, x2)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfaf, -0x55555555, 0xb504, x1, 888, x2)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffffeaff, -0x55555555, -0xb504, x1, 892, x2)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, -0x55555555, 0x66666666, x1, 896, x2)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbb, -0x55555555, 0x33333333, x1, 900, x2)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaf, -0x55555555, 0x5, x1, 904, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, -0x55555555, -0x55555556, x1, 908, x2)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x55555555, 0x55555555, x1, 912, x2)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, -0x55555555, 0x3, x1, 916, x2)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x5555f557, 0x55555556, 0xb505, x1, 920, x2)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff5fff, 0x55555556, -0xb503, x1, 924, x2)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555556, 0x66666667, x1, 928, x2)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x55555556, 0x33333334, x1, 932, x2)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555556, 0x6, x1, 936, x2)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, 0x55555556, -0x55555555, x1, 940, x2)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555556, 0x55555556, x1, 944, x2)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555556, 0x4, x1, 948, x2)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x5555f557, 0x55555556, 0xb503, x1, 952, x2)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 956, x2)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555556, 0x66666665, x1, 960, x2)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x55555556, 0x33333332, x1, 964, x2)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555556, 0x55555554, x1, 968, x2)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555556, 0x2, x1, 972, x2)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x5555f556, 0x55555556, 0xb504, x1, 976, x2)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffe, 0x55555556, -0xb504, x1, 980, x2)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x55555556, 0x66666666, x1, 984, x2)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555556, 0x33333333, x1, 988, x2)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x55555556, 0x5, x1, 992, x2)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xfffffffe, 0x55555556, -0x55555556, x1, 996, x2)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x55555556, 0x55555555, x1, 1000, x2)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555556; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x55555556, 0x3, x1, 1004, x2)
+
+inst_252:
+// rs1_val==4 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0x4, 0xb505, x1, 1008, x2)
+
+inst_253:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, 0x4, -0xb503, x1, 1012, x2)
+
+inst_254:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x4, 0x66666667, x1, 1016, x2)
+
+inst_255:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333334, 0x4, 0x33333334, x1, 1020, x2)
+
+inst_256:
+// rs1_val==4 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x4, 0x6, x1, 1024, x2)
+
+inst_257:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaf, 0x4, -0x55555555, x1, 1028, x2)
+
+inst_258:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x4, 0x55555556, x1, 1032, x2)
+
+inst_259:
+// rs1_val==4 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x4, 0x4, 0x4, x1, 1036, x2)
+
+inst_260:
+// rs1_val==4 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0x4, 0xb503, x1, 1040, x2)
+
+inst_261:
+// rs1_val==4 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x4, 0x4, 0x0, x1, 1044, x2)
+
+inst_262:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666665, 0x4, 0x66666665, x1, 1048, x2)
+
+inst_263:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x4, 0x33333332, x1, 1052, x2)
+
+inst_264:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555554, 0x4, 0x55555554, x1, 1056, x2)
+
+inst_265:
+// rs1_val==4 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x4, 0x2, x1, 1060, x2)
+
+inst_266:
+// rs1_val==4 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb504, 0x4, 0xb504, x1, 1064, x2)
+
+inst_267:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4afc, 0x4, -0xb504, x1, 1068, x2)
+
+inst_268:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x4, 0x66666666, x1, 1072, x2)
+
+inst_269:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x4, 0x33333333, x1, 1076, x2)
+
+inst_270:
+// rs1_val==4 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x5, 0x4, 0x5, x1, 1080, x2)
+
+inst_271:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaae, 0x4, -0x55555556, x1, 1084, x2)
+
+inst_272:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x4, 0x55555555, x1, 1088, x2)
+
+inst_273:
+// rs1_val==4 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x4; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x4, 0x3, x1, 1092, x2)
+
+inst_274:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb503, 0xb505, x1, 1096, x2)
+
+inst_275:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, 0xb503, -0xb503, x1, 1100, x2)
+
+inst_276:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0xb503, 0x66666667, x1, 1104, x2)
+
+inst_277:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x3333b737, 0xb503, 0x33333334, x1, 1108, x2)
+
+inst_278:
+// rs1_val==46339 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb503, 0x6, x1, 1112, x2)
+
+inst_279:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfab, 0xb503, -0x55555555, x1, 1116, x2)
+
+inst_280:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x5555f557, 0xb503, 0x55555556, x1, 1120, x2)
+
+inst_281:
+// rs1_val==46339 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb503, 0x4, x1, 1124, x2)
+
+inst_282:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb503, 0xb503, 0xb503, x1, 1128, x2)
+
+inst_283:
+// rs1_val==46339 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0xb503, 0xb503, 0x0, x1, 1132, x2)
+
+inst_284:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0xb503, 0x66666665, x1, 1136, x2)
+
+inst_285:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x3333b733, 0xb503, 0x33333332, x1, 1140, x2)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x5555f557, 0xb503, 0x55555554, x1, 1144, x2)
+
+inst_287:
+// rs1_val==46339 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0xb503, 0xb503, 0x2, x1, 1148, x2)
+
+inst_288:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb503, 0xb504, x1, 1152, x2)
+
+inst_289:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, 0xb503, -0xb504, x1, 1156, x2)
+
+inst_290:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0xb503, 0x66666666, x1, 1160, x2)
+
+inst_291:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x3333b733, 0xb503, 0x33333333, x1, 1164, x2)
+
+inst_292:
+// rs1_val==46339 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb503, 0x5, x1, 1168, x2)
+
+inst_293:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfab, 0xb503, -0x55555556, x1, 1172, x2)
+
+inst_294:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x5555f557, 0xb503, 0x55555555, x1, 1176, x2)
+
+inst_295:
+// rs1_val==46339 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb503; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0xb503, 0xb503, 0x3, x1, 1180, x2)
+
+inst_296:
+// rs1_val==0 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0x0, 0xb505, x1, 1184, x2)
+
+inst_297:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, 0x0, -0xb503, x1, 1188, x2)
+
+inst_298:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x0, 0x66666667, x1, 1192, x2)
+
+inst_299:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333334, 0x0, 0x33333334, x1, 1196, x2)
+
+inst_300:
+// rs1_val==0 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x0, 0x6, x1, 1200, x2)
+
+inst_301:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, 0x0, -0x55555555, x1, 1204, x2)
+
+inst_302:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x0, 0x55555556, x1, 1208, x2)
+
+inst_303:
+// rs1_val==0 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x4, 0x0, 0x4, x1, 1212, x2)
+
+inst_304:
+// rs1_val==0 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb503, 0x0, 0xb503, x1, 1216, x2)
+
+inst_305:
+// rs1_val==0 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x0, 0x0, 0x0, x1, 1220, x2)
+
+inst_306:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666665, 0x0, 0x66666665, x1, 1224, x2)
+
+inst_307:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333332, 0x0, 0x33333332, x1, 1228, x2)
+
+inst_308:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555554, 0x0, 0x55555554, x1, 1232, x2)
+
+inst_309:
+// rs1_val==0 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x2, 0x0, 0x2, x1, 1236, x2)
+
+inst_310:
+// rs1_val==0 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb504, 0x0, 0xb504, x1, 1240, x2)
+
+inst_311:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4afc, 0x0, -0xb504, x1, 1244, x2)
+
+inst_312:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x0, 0x66666666, x1, 1248, x2)
+
+inst_313:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x0, 0x33333333, x1, 1252, x2)
+
+inst_314:
+// rs1_val==0 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x5, 0x0, 0x5, x1, 1256, x2)
+
+inst_315:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaa, 0x0, -0x55555556, x1, 1260, x2)
+
+inst_316:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x0, 0x55555555, x1, 1264, x2)
+
+inst_317:
+// rs1_val==0 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x0; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x3, 0x0, 0x3, x1, 1268, x2)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x6666f765, 0x66666665, 0xb505, x1, 1272, x2)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff6efd, 0x66666665, -0xb503, x1, 1276, x2)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666665, 0x66666667, x1, 1280, x2)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x77777775, 0x66666665, 0x33333334, x1, 1284, x2)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666665, 0x6, x1, 1288, x2)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, 0x66666665, -0x55555555, x1, 1292, x2)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666665, 0x55555556, x1, 1296, x2)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x66666665, 0x66666665, 0x4, x1, 1300, x2)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0x66666665, 0xb503, x1, 1304, x2)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x66666665, 0x66666665, 0x0, x1, 1308, x2)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x33333333, 0x0, x1, 1312, x2)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333333, 0x66666665, x1, 1316, x2)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x33333333, 0x33333332, x1, 1320, x2)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333333, 0x55555554, x1, 1324, x2)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x33333333, 0x2, x1, 1328, x2)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x3333b737, 0x33333333, 0xb504, x1, 1332, x2)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff7bff, 0x33333333, -0xb504, x1, 1336, x2)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333333, 0x66666666, x1, 1340, x2)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x33333333, 0x33333333, x1, 1344, x2)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x33333333, 0x5, x1, 1348, x2)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbb, 0x33333333, -0x55555556, x1, 1352, x2)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333333, 0x55555555, x1, 1356, x2)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x33333333, 0x3, x1, 1360, x2)
+
+inst_341:
+// rs1_val==5 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0x5, 0xb505, x1, 1364, x2)
+
+inst_342:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, 0x5, -0xb503, x1, 1368, x2)
+
+inst_343:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x5, 0x66666667, x1, 1372, x2)
+
+inst_344:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333335, 0x5, 0x33333334, x1, 1376, x2)
+
+inst_345:
+// rs1_val==5 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x5, 0x6, x1, 1380, x2)
+
+inst_346:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaf, 0x5, -0x55555555, x1, 1384, x2)
+
+inst_347:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x5, 0x55555556, x1, 1388, x2)
+
+inst_348:
+// rs1_val==5 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x5, 0x5, 0x4, x1, 1392, x2)
+
+inst_349:
+// rs1_val==5 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0x5, 0xb503, x1, 1396, x2)
+
+inst_350:
+// rs1_val==5 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x5, 0x5, 0x0, x1, 1400, x2)
+
+inst_351:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666665, 0x5, 0x66666665, x1, 1404, x2)
+
+inst_352:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x5, 0x33333332, x1, 1408, x2)
+
+inst_353:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x5, 0x55555554, x1, 1412, x2)
+
+inst_354:
+// rs1_val==5 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x5, 0x2, x1, 1416, x2)
+
+inst_355:
+// rs1_val==5 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0x5, 0xb504, x1, 1420, x2)
+
+inst_356:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, 0x5, -0xb504, x1, 1424, x2)
+
+inst_357:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x5, 0x66666666, x1, 1428, x2)
+
+inst_358:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x5, 0x33333333, x1, 1432, x2)
+
+inst_359:
+// rs1_val==5 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x5, 0x5, 0x5, x1, 1436, x2)
+
+inst_360:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaf, 0x5, -0x55555556, x1, 1440, x2)
+
+inst_361:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x5, 0x55555555, x1, 1444, x2)
+
+inst_362:
+// rs1_val==5 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x5; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x5, 0x3, x1, 1448, x2)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfaf, -0x55555556, 0xb505, x1, 1452, x2)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffffeaff, -0x55555556, -0xb503, x1, 1456, x2)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, -0x55555556, 0x66666667, x1, 1460, x2)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbe, -0x55555556, 0x33333334, x1, 1464, x2)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaae, -0x55555556, 0x6, x1, 1468, x2)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, -0x55555556, -0x55555555, x1, 1472, x2)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xfffffffe, -0x55555556, 0x55555556, x1, 1476, x2)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaae, -0x55555556, 0x4, x1, 1480, x2)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfab, -0x55555556, 0xb503, x1, 1484, x2)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1488, x2)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, -0x55555556, 0x66666665, x1, 1492, x2)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbba, -0x55555556, 0x33333332, x1, 1496, x2)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0xfffffffe, -0x55555556, 0x55555554, x1, 1500, x2)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaa, -0x55555556, 0x2, x1, 1504, x2)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfae, -0x55555556, 0xb504, x1, 1508, x2)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffffeafe, -0x55555556, -0xb504, x1, 1512, x2)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeee, -0x55555556, 0x66666666, x1, 1516, x2)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbb, -0x55555556, 0x33333333, x1, 1520, x2)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaf, -0x55555556, 0x5, x1, 1524, x2)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaa, -0x55555556, -0x55555556, x1, 1528, x2)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0x55555556, 0x55555555, x1, 1532, x2)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, -0x55555556, 0x3, x1, 1536, x2)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==46341, rs1_val == 1431655765
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x5555f555, 0x55555555, 0xb505, x1, 1540, x2)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffd, 0x55555555, -0xb503, x1, 1544, x2)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555555, 0x66666667, x1, 1548, x2)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x77777775, 0x55555555, 0x33333334, x1, 1552, x2)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x55555555, 0x6, x1, 1556, x2)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, 0x55555555, -0x55555555, x1, 1560, x2)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x55555555, 0x55555556, x1, 1564, x2)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x55555555, 0x4, x1, 1568, x2)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x5555f557, 0x55555555, 0xb503, x1, 1572, x2)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x55555555, 0x0, x1, 1576, x2)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x77777775, 0x55555555, 0x66666665, x1, 1580, x2)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555555, 0x33333332, x1, 1584, x2)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x55555555, 0x55555554, x1, 1588, x2)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x55555555, 0x2, x1, 1592, x2)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x5555f555, 0x55555555, 0xb504, x1, 1596, x2)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffd, 0x55555555, -0xb504, x1, 1600, x2)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555555, 0x66666666, x1, 1604, x2)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555555, 0x33333333, x1, 1608, x2)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x55555555, 0x5, x1, 1612, x2)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, 0x55555555, -0x55555556, x1, 1616, x2)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x55555555, 0x55555555, x1, 1620, x2)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555555; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x55555555, 0x3, x1, 1624, x2)
+
+inst_407:
+// rs1_val==3 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0x3, 0xb505, x1, 1628, x2)
+
+inst_408:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff4aff, 0x3, -0xb503, x1, 1632, x2)
+
+inst_409:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x3, 0x66666667, x1, 1636, x2)
+
+inst_410:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x3, 0x33333334, x1, 1640, x2)
+
+inst_411:
+// rs1_val==3 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x3, 0x6, x1, 1644, x2)
+
+inst_412:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, 0x3, -0x55555555, x1, 1648, x2)
+
+inst_413:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x3, 0x55555556, x1, 1652, x2)
+
+inst_414:
+// rs1_val==3 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x3, 0x4, x1, 1656, x2)
+
+inst_415:
+// rs1_val==3 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb503, 0x3, 0xb503, x1, 1660, x2)
+
+inst_416:
+// rs1_val==3 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x3, 0x3, 0x0, x1, 1664, x2)
+
+inst_417:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x3, 0x66666665, x1, 1668, x2)
+
+inst_418:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x3, 0x33333332, x1, 1672, x2)
+
+inst_419:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x3, 0x55555554, x1, 1676, x2)
+
+inst_420:
+// rs1_val==3 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x3, 0x3, 0x2, x1, 1680, x2)
+
+inst_421:
+// rs1_val==3 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0x3, 0xb504, x1, 1684, x2)
+
+inst_422:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4aff, 0x3, -0xb504, x1, 1688, x2)
+
+inst_423:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x3, 0x66666666, x1, 1692, x2)
+
+inst_424:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x3, 0x33333333, x1, 1696, x2)
+
+inst_425:
+// rs1_val==3 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x3, 0x5, x1, 1700, x2)
+
+inst_426:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, 0x3, -0x55555556, x1, 1704, x2)
+
+inst_427:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x3, 0x55555555, x1, 1708, x2)
+
+inst_428:
+// rs1_val==3 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x3; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x3, 0x3, 0x3, x1, 1712, x2)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666665, 0x66666665, 0x66666665, x1, 1716, x2)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666665, 0x33333332, x1, 1720, x2)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x77777775, 0x66666665, 0x55555554, x1, 1724, x2)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666665, 0x2, x1, 1728, x2)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x6666f765, 0x66666665, 0xb504, x1, 1732, x2)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff6efd, 0x66666665, -0xb504, x1, 1736, x2)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666665, 0x66666666, x1, 1740, x2)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666665, 0x33333333, x1, 1744, x2)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x66666665, 0x66666665, 0x5, x1, 1748, x2)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, 0x66666665, -0x55555556, x1, 1752, x2)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x77777775, 0x66666665, 0x55555555, x1, 1756, x2)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666665; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666665, 0x3, x1, 1760, x2)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x3333b737, 0x33333332, 0xb505, x1, 1764, x2)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff7bff, 0x33333332, -0xb503, x1, 1768, x2)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333332, 0x66666667, x1, 1772, x2)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x33333332, 0x33333334, x1, 1776, x2)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x33333332, 0x6, x1, 1780, x2)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbb, 0x33333332, -0x55555555, x1, 1784, x2)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x33333332, 0x55555556, x1, 1788, x2)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x33333332, 0x4, x1, 1792, x2)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x3333b733, 0x33333332, 0xb503, x1, 1796, x2)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x33333332, 0x33333332, 0x0, x1, 1800, x2)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333332, 0x66666665, x1, 1804, x2)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333332, 0x33333332, 0x33333332, x1, 1808, x2)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x33333332, 0x55555554, x1, 1812, x2)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x33333332, 0x33333332, 0x2, x1, 1816, x2)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x3333b736, 0x33333332, 0xb504, x1, 1820, x2)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff7bfe, 0x33333332, -0xb504, x1, 1824, x2)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x33333332, 0x66666666, x1, 1828, x2)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x33333332, 0x33333333, x1, 1832, x2)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x33333332, 0x5, x1, 1836, x2)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbba, 0x33333332, -0x55555556, x1, 1840, x2)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333332, 0x55555555, x1, 1844, x2)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333332; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x33333332, 0x3, x1, 1848, x2)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x5555f555, 0x55555554, 0xb505, x1, 1852, x2)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffd, 0x55555554, -0xb503, x1, 1856, x2)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555554, 0x66666667, x1, 1860, x2)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x77777774, 0x55555554, 0x33333334, x1, 1864, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555554, 0x6, x1, 1868, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, 0x55555554, -0x55555555, x1, 1872, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555554, 0x55555556, x1, 1876, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x55555554, 0x55555554, 0x4, x1, 1880, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x5555f557, 0x55555554, 0xb503, x1, 1884, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 1888, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x77777775, 0x55555554, 0x66666665, x1, 1892, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x55555554, 0x33333332, x1, 1896, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555554, 0x55555554, 0x55555554, x1, 1900, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x55555554, 0x2, x1, 1904, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x5555f554, 0x55555554, 0xb504, x1, 1908, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffc, 0x55555554, -0xb504, x1, 1912, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x55555554, 0x66666666, x1, 1916, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x55555554, 0x33333333, x1, 1920, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x55555554, 0x5, x1, 1924, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xfffffffe, 0x55555554, -0x55555556, x1, 1928, x2)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555555, 0x55555554, 0x55555555, x1, 1932, x2)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x55555554; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x55555554, 0x3, x1, 1936, x2)
+
+inst_485:
+// rs1_val==2 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0x2, 0xb505, x1, 1940, x2)
+
+inst_486:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff4aff, 0x2, -0xb503, x1, 1944, x2)
+
+inst_487:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x2, 0x66666667, x1, 1948, x2)
+
+inst_488:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333336, 0x2, 0x33333334, x1, 1952, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x2, 0x6, x1, 1956, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaab, 0x2, -0x55555555, x1, 1960, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x2, 0x55555556, x1, 1964, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x6, 0x2, 0x4, x1, 1968, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb503, 0x2, 0xb503, x1, 1972, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x2, 0x2, 0x0, x1, 1976, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x2, 0x66666665, x1, 1980, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x33333332, 0x2, 0x33333332, x1, 1984, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x55555556, 0x2, 0x55555554, x1, 1988, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x2, 0x2, 0x2, x1, 1992, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb506, 0x2, 0xb504, x1, 1996, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4afe, 0x2, -0xb504, x1, 2000, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x2, 0x66666666, x1, 2004, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x33333333, 0x2, 0x33333333, x1, 2008, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x7, 0x2, 0x5, x1, 2012, x2)
+
+inst_504:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaaaaaa, 0x2, -0x55555556, x1, 2016, x2)
+
+inst_505:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x55555557, 0x2, 0x55555555, x1, 2020, x2)
+
+inst_506:
+// rs1_val==2 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x2; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x3, 0x2, 0x3, x1, 2024, x2)
+
+inst_507:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0xb504, 0xb505, x1, 2028, x2)
+
+inst_508:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xfffffffd, 0xb504, -0xb503, x1, 2032, x2)
+
+inst_509:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0xb504, 0x66666667, x1, 2036, x2)
+
+inst_510:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x3333b734, 0xb504, 0x33333334, x1, 2040, x2)
+
+inst_511:
+// rs1_val==46340 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0xb506, 0xb504, 0x6, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_512:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfaf, 0xb504, -0x55555555, x1, 0, x2)
+
+inst_513:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x5555f556, 0xb504, 0x55555556, x1, 4, x2)
+
+inst_514:
+// rs1_val==46340 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0xb504, 0xb504, 0x4, x1, 8, x2)
+
+inst_515:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb504, 0xb503, x1, 12, x2)
+
+inst_516:
+// rs1_val==46340 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0xb504, 0xb504, 0x0, x1, 16, x2)
+
+inst_517:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x6666f765, 0xb504, 0x66666665, x1, 20, x2)
+
+inst_518:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x3333b736, 0xb504, 0x33333332, x1, 24, x2)
+
+inst_519:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x5555f554, 0xb504, 0x55555554, x1, 28, x2)
+
+inst_520:
+// rs1_val==46340 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0xb506, 0xb504, 0x2, x1, 32, x2)
+
+inst_521:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xb504, 0xb504, 0xb504, x1, 36, x2)
+
+inst_522:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xfffffffc, 0xb504, -0xb504, x1, 40, x2)
+
+inst_523:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x6666f766, 0xb504, 0x66666666, x1, 44, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x3333b737, 0xb504, 0x33333333, x1, 48, x2)
+
+inst_525:
+// rs1_val==46340 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0xb505, 0xb504, 0x5, x1, 52, x2)
+
+inst_526:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xaaaabfae, 0xb504, -0x55555556, x1, 56, x2)
+
+inst_527:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x5555f555, 0xb504, 0x55555555, x1, 60, x2)
+
+inst_528:
+// rs1_val==46340 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0xb504; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0xb507, 0xb504, 0x3, x1, 64, x2)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0xfffffffd, -0xb504, 0xb505, x1, 68, x2)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, -0xb504, -0xb503, x1, 72, x2)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0xffff6eff, -0xb504, 0x66666667, x1, 76, x2)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0xffff7bfc, -0xb504, 0x33333334, x1, 80, x2)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0xffff4afe, -0xb504, 0x6, x1, 84, x2)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffffeaff, -0xb504, -0x55555555, x1, 88, x2)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffe, -0xb504, 0x55555556, x1, 92, x2)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0xffff4afc, -0xb504, 0x4, x1, 96, x2)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffffffff, -0xb504, 0xb503, x1, 100, x2)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0xffff4afc, -0xb504, 0x0, x1, 104, x2)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0xffff6efd, -0xb504, 0x66666665, x1, 108, x2)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0xffff7bfe, -0xb504, 0x33333332, x1, 112, x2)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffc, -0xb504, 0x55555554, x1, 116, x2)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0xffff4afe, -0xb504, 0x2, x1, 120, x2)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0xfffffffc, -0xb504, 0xb504, x1, 124, x2)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff4afc, -0xb504, -0xb504, x1, 128, x2)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0xffff6efe, -0xb504, 0x66666666, x1, 132, x2)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0xffff7bff, -0xb504, 0x33333333, x1, 136, x2)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0xffff4afd, -0xb504, 0x5, x1, 140, x2)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xffffeafe, -0xb504, -0x55555556, x1, 144, x2)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xffff5ffd, -0xb504, 0x55555555, x1, 148, x2)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:-0xb504; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0xffff4aff, -0xb504, 0x3, x1, 152, x2)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0x66666666, 0xb505, x1, 156, x2)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff6eff, 0x66666666, -0xb503, x1, 160, x2)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666666, 0x66666667, x1, 164, x2)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x66666666, 0x33333334, x1, 168, x2)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x66666666, 0x6, x1, 172, x2)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeef, 0x66666666, -0x55555555, x1, 176, x2)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x66666666, 0x55555556, x1, 180, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x66666666, 0x4, x1, 184, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x6666f767, 0x66666666, 0xb503, x1, 188, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x0
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x66666666, 0x0, x1, 192, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666666, 0x66666665, x1, 196, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x66666666, 0x33333332, x1, 200, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554
+TEST_CR_OP( c.or, x10, x11, 0x77777776, 0x66666666, 0x55555554, x1, 204, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x2
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x66666666, 0x2, x1, 208, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504
+TEST_CR_OP( c.or, x10, x11, 0x6666f766, 0x66666666, 0xb504, x1, 212, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504
+TEST_CR_OP( c.or, x10, x11, 0xffff6efe, 0x66666666, -0xb504, x1, 216, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666
+TEST_CR_OP( c.or, x10, x11, 0x66666666, 0x66666666, 0x66666666, x1, 220, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666666, 0x33333333, x1, 224, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x5
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666666, 0x5, x1, 228, x2)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556
+TEST_CR_OP( c.or, x10, x11, 0xeeeeeeee, 0x66666666, -0x55555556, x1, 232, x2)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x66666666, 0x55555555, x1, 236, x2)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x66666666; op2val:0x3
+TEST_CR_OP( c.or, x10, x11, 0x66666667, 0x66666666, 0x3, x1, 240, x2)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505
+TEST_CR_OP( c.or, x10, x11, 0x3333b737, 0x33333333, 0xb505, x1, 244, x2)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503
+TEST_CR_OP( c.or, x10, x11, 0xffff7bff, 0x33333333, -0xb503, x1, 248, x2)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333333, 0x66666667, x1, 252, x2)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x33333333, 0x33333334, x1, 256, x2)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x6
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x33333333, 0x6, x1, 260, x2)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555
+TEST_CR_OP( c.or, x10, x11, 0xbbbbbbbb, 0x33333333, -0x55555555, x1, 264, x2)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556
+TEST_CR_OP( c.or, x10, x11, 0x77777777, 0x33333333, 0x55555556, x1, 268, x2)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0x4
+TEST_CR_OP( c.or, x10, x11, 0x33333337, 0x33333333, 0x4, x1, 272, x2)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: c.or; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503
+TEST_CR_OP( c.or, x10, x11, 0x3333b733, 0x33333333, 0xb503, x1, 276, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 70*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cslli-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cslli-01.S
new file mode 100644
index 000000000..33b37b62b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cslli-01.S
@@ -0,0 +1,500 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.slli instruction of the RISC-V C extension for the cslli covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cslli)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rd==x11, rs1_val < 0 and imm_val < xlen, rs1_val == -65537, imm_val == 29
+// opcode:c.slli; op1:x11; dest:x11 op1val:-0x10001; immval:0x1d
+TEST_CI_OP( c.slli, x11, 0xe0000000, -0x10001, 0x1d, x1, 0, x2)
+
+inst_1:
+// rd==x8, rs1_val == 2147483647, rs1_val > 0 and imm_val < xlen, rs1_val == (2**(xlen-1)-1) and imm_val != 0 and imm_val < xlen
+// opcode:c.slli; op1:x8; dest:x8 op1val:0x7fffffff; immval:0xb
+TEST_CI_OP( c.slli, x8, 0xfffff800, 0x7fffffff, 0xb, x1, 4, x2)
+
+inst_2:
+// rd==x9, rs1_val == -1073741825,
+// opcode:c.slli; op1:x9; dest:x9 op1val:-0x40000001; immval:0xc
+TEST_CI_OP( c.slli, x9, 0xfffff000, -0x40000001, 0xc, x1, 8, x2)
+
+inst_3:
+// rd==x12, rs1_val == -536870913,
+// opcode:c.slli; op1:x12; dest:x12 op1val:-0x20000001; immval:0x7
+TEST_CI_OP( c.slli, x12, 0xffffff80, -0x20000001, 0x7, x1, 12, x2)
+
+inst_4:
+// rd==x14, rs1_val == -268435457,
+// opcode:c.slli; op1:x14; dest:x14 op1val:-0x10000001; immval:0x3
+TEST_CI_OP( c.slli, x14, 0x7ffffff8, -0x10000001, 0x3, x1, 16, x2)
+
+inst_5:
+// rd==x10, rs1_val == -134217729,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x8000001; immval:0x1f
+TEST_CI_OP( c.slli, x10, 0x80000000, -0x8000001, 0x1f, x1, 20, x2)
+
+inst_6:
+// rd==x13, rs1_val == -67108865,
+// opcode:c.slli; op1:x13; dest:x13 op1val:-0x4000001; immval:0x13
+TEST_CI_OP( c.slli, x13, 0xfff80000, -0x4000001, 0x13, x1, 24, x2)
+
+inst_7:
+// rd==x15, rs1_val == -33554433, imm_val == 10
+// opcode:c.slli; op1:x15; dest:x15 op1val:-0x2000001; immval:0xa
+TEST_CI_OP( c.slli, x15, 0xfffffc00, -0x2000001, 0xa, x1, 28, x2)
+
+inst_8:
+// rs1_val == -16777217,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x1000001; immval:0x5
+TEST_CI_OP( c.slli, x10, 0xdfffffe0, -0x1000001, 0x5, x1, 32, x2)
+
+inst_9:
+// rs1_val == -8388609,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x800001; immval:0x1f
+TEST_CI_OP( c.slli, x10, 0x80000000, -0x800001, 0x1f, x1, 36, x2)
+
+inst_10:
+// rs1_val == -4194305,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x400001; immval:0x13
+TEST_CI_OP( c.slli, x10, 0xfff80000, -0x400001, 0x13, x1, 40, x2)
+
+inst_11:
+// rs1_val == -2097153,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x200001; immval:0x11
+TEST_CI_OP( c.slli, x10, 0xfffe0000, -0x200001, 0x11, x1, 44, x2)
+
+inst_12:
+// rs1_val == -1048577,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x100001; immval:0x9
+TEST_CI_OP( c.slli, x10, 0xdffffe00, -0x100001, 0x9, x1, 48, x2)
+
+inst_13:
+// rs1_val == -524289, imm_val == 21
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x80001; immval:0x15
+TEST_CI_OP( c.slli, x10, 0xffe00000, -0x80001, 0x15, x1, 52, x2)
+
+inst_14:
+// rs1_val == -262145, imm_val == 27
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x40001; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0xf8000000, -0x40001, 0x1b, x1, 56, x2)
+
+inst_15:
+// rs1_val == -131073, imm_val == 2
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x20001; immval:0x2
+TEST_CI_OP( c.slli, x10, 0xfff7fffc, -0x20001, 0x2, x1, 60, x2)
+
+inst_16:
+// rs1_val == -32769,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x8001; immval:0x1f
+TEST_CI_OP( c.slli, x10, 0x80000000, -0x8001, 0x1f, x1, 64, x2)
+
+inst_17:
+// rs1_val == -16385,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x4001; immval:0xd
+TEST_CI_OP( c.slli, x10, 0xf7ffe000, -0x4001, 0xd, x1, 68, x2)
+
+inst_18:
+// rs1_val == -8193,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x2001; immval:0x1d
+TEST_CI_OP( c.slli, x10, 0xe0000000, -0x2001, 0x1d, x1, 72, x2)
+
+inst_19:
+// rs1_val == -4097,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x1001; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0xf8000000, -0x1001, 0x1b, x1, 76, x2)
+
+inst_20:
+// rs1_val == -2049, imm_val == 15
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x801; immval:0xf
+TEST_CI_OP( c.slli, x10, 0xfbff8000, -0x801, 0xf, x1, 80, x2)
+
+inst_21:
+// rs1_val == -1025,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x401; immval:0x1f
+TEST_CI_OP( c.slli, x10, 0x80000000, -0x401, 0x1f, x1, 84, x2)
+
+inst_22:
+// rs1_val == -513,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x201; immval:0x5
+TEST_CI_OP( c.slli, x10, 0xffffbfe0, -0x201, 0x5, x1, 88, x2)
+
+inst_23:
+// rs1_val == -257,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x101; immval:0x1f
+TEST_CI_OP( c.slli, x10, 0x80000000, -0x101, 0x1f, x1, 92, x2)
+
+inst_24:
+// rs1_val == -129, imm_val == 30
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x81; immval:0x1e
+TEST_CI_OP( c.slli, x10, 0xc0000000, -0x81, 0x1e, x1, 96, x2)
+
+inst_25:
+// rs1_val == -65,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x41; immval:0x3
+TEST_CI_OP( c.slli, x10, 0xfffffdf8, -0x41, 0x3, x1, 100, x2)
+
+inst_26:
+// rs1_val == -33, imm_val == 23
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x21; immval:0x17
+TEST_CI_OP( c.slli, x10, 0xef800000, -0x21, 0x17, x1, 104, x2)
+
+inst_27:
+// rs1_val == -17, imm_val == 1
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x11; immval:0x1
+TEST_CI_OP( c.slli, x10, 0xffffffde, -0x11, 0x1, x1, 108, x2)
+
+inst_28:
+// rs1_val == -9,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x9; immval:0x1d
+TEST_CI_OP( c.slli, x10, 0xe0000000, -0x9, 0x1d, x1, 112, x2)
+
+inst_29:
+// rs1_val == -5,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x5; immval:0x17
+TEST_CI_OP( c.slli, x10, 0xfd800000, -0x5, 0x17, x1, 116, x2)
+
+inst_30:
+// rs1_val == -3,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x3; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0xe8000000, -0x3, 0x1b, x1, 120, x2)
+
+inst_31:
+// rs1_val == -2,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x2; immval:0x1e
+TEST_CI_OP( c.slli, x10, 0x80000000, -0x2, 0x1e, x1, 124, x2)
+
+inst_32:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and imm_val != 0 and imm_val < xlen
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x80000000; immval:0x1d
+TEST_CI_OP( c.slli, x10, 0x0, -0x80000000, 0x1d, x1, 128, x2)
+
+inst_33:
+// rs1_val == 1073741824,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x40000000; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0x0, 0x40000000, 0x1b, x1, 132, x2)
+
+inst_34:
+// rs1_val == 536870912,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x20000000; immval:0x13
+TEST_CI_OP( c.slli, x10, 0x0, 0x20000000, 0x13, x1, 136, x2)
+
+inst_35:
+// rs1_val == 268435456,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x10000000; immval:0x1e
+TEST_CI_OP( c.slli, x10, 0x0, 0x10000000, 0x1e, x1, 140, x2)
+
+inst_36:
+// rs1_val == 134217728,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x8000000; immval:0x9
+TEST_CI_OP( c.slli, x10, 0x0, 0x8000000, 0x9, x1, 144, x2)
+
+inst_37:
+// rs1_val == 67108864,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x4000000; immval:0x2
+TEST_CI_OP( c.slli, x10, 0x10000000, 0x4000000, 0x2, x1, 148, x2)
+
+inst_38:
+// rs1_val == 33554432,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x2000000; immval:0x5
+TEST_CI_OP( c.slli, x10, 0x40000000, 0x2000000, 0x5, x1, 152, x2)
+
+inst_39:
+// rs1_val == 16777216,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x1000000; immval:0x5
+TEST_CI_OP( c.slli, x10, 0x20000000, 0x1000000, 0x5, x1, 156, x2)
+
+inst_40:
+// rs1_val == 8388608,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x800000; immval:0x6
+TEST_CI_OP( c.slli, x10, 0x20000000, 0x800000, 0x6, x1, 160, x2)
+
+inst_41:
+// rs1_val == 4194304,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x400000; immval:0xe
+TEST_CI_OP( c.slli, x10, 0x0, 0x400000, 0xe, x1, 164, x2)
+
+inst_42:
+// rs1_val == 2097152,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x200000; immval:0x7
+TEST_CI_OP( c.slli, x10, 0x10000000, 0x200000, 0x7, x1, 168, x2)
+
+inst_43:
+// rs1_val == 1048576,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x100000; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0x0, 0x100000, 0x1b, x1, 172, x2)
+
+inst_44:
+// rs1_val == 524288,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x80000; immval:0x13
+TEST_CI_OP( c.slli, x10, 0x0, 0x80000, 0x13, x1, 176, x2)
+
+inst_45:
+// rs1_val == 262144,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x40000; immval:0x9
+TEST_CI_OP( c.slli, x10, 0x8000000, 0x40000, 0x9, x1, 180, x2)
+
+inst_46:
+// rs1_val == 131072,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x20000; immval:0x12
+TEST_CI_OP( c.slli, x10, 0x0, 0x20000, 0x12, x1, 184, x2)
+
+inst_47:
+// rs1_val == 65536,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x10000; immval:0xb
+TEST_CI_OP( c.slli, x10, 0x8000000, 0x10000, 0xb, x1, 188, x2)
+
+inst_48:
+// rs1_val == 32768,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x8000; immval:0x1
+TEST_CI_OP( c.slli, x10, 0x10000, 0x8000, 0x1, x1, 192, x2)
+
+inst_49:
+// rs1_val == 16384,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x4000; immval:0x1e
+TEST_CI_OP( c.slli, x10, 0x0, 0x4000, 0x1e, x1, 196, x2)
+
+inst_50:
+// rs1_val == 8192,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x2000; immval:0x1
+TEST_CI_OP( c.slli, x10, 0x4000, 0x2000, 0x1, x1, 200, x2)
+
+inst_51:
+// rs1_val == 4096,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x1000; immval:0x9
+TEST_CI_OP( c.slli, x10, 0x200000, 0x1000, 0x9, x1, 204, x2)
+
+inst_52:
+// rs1_val == 2048,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x800; immval:0x11
+TEST_CI_OP( c.slli, x10, 0x10000000, 0x800, 0x11, x1, 208, x2)
+
+inst_53:
+// rs1_val == 1024,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x400; immval:0x1d
+TEST_CI_OP( c.slli, x10, 0x0, 0x400, 0x1d, x1, 212, x2)
+
+inst_54:
+// rs1_val == 512,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x200; immval:0xd
+TEST_CI_OP( c.slli, x10, 0x400000, 0x200, 0xd, x1, 216, x2)
+
+inst_55:
+// rs1_val == 256,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x100; immval:0x12
+TEST_CI_OP( c.slli, x10, 0x4000000, 0x100, 0x12, x1, 220, x2)
+
+inst_56:
+// rs1_val == 128,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x80; immval:0x6
+TEST_CI_OP( c.slli, x10, 0x2000, 0x80, 0x6, x1, 224, x2)
+
+inst_57:
+// rs1_val == 64,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x40; immval:0x9
+TEST_CI_OP( c.slli, x10, 0x8000, 0x40, 0x9, x1, 228, x2)
+
+inst_58:
+// rs1_val == 32,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x20; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0x0, 0x20, 0x1b, x1, 232, x2)
+
+inst_59:
+// rs1_val == 16, rs1_val == imm_val and imm_val != 0 and imm_val < xlen, imm_val == 16
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x10; immval:0x10
+TEST_CI_OP( c.slli, x10, 0x100000, 0x10, 0x10, x1, 236, x2)
+
+inst_60:
+// rs1_val == 8,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x8; immval:0x13
+TEST_CI_OP( c.slli, x10, 0x400000, 0x8, 0x13, x1, 240, x2)
+
+inst_61:
+// rs1_val == 4, rs1_val==4
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x4; immval:0x15
+TEST_CI_OP( c.slli, x10, 0x800000, 0x4, 0x15, x1, 244, x2)
+
+inst_62:
+// rs1_val == 2, rs1_val==2
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x2; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0x10000000, 0x2, 0x1b, x1, 248, x2)
+
+inst_63:
+// rs1_val == 1, rs1_val == 1 and imm_val != 0 and imm_val < xlen
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x1; immval:0x13
+TEST_CI_OP( c.slli, x10, 0x80000, 0x1, 0x13, x1, 252, x2)
+
+inst_64:
+// imm_val == 8,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x400000; immval:0x8
+TEST_CI_OP( c.slli, x10, 0x40000000, 0x400000, 0x8, x1, 256, x2)
+
+inst_65:
+// imm_val == 4,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x8001; immval:0x4
+TEST_CI_OP( c.slli, x10, 0xfff7fff0, -0x8001, 0x4, x1, 260, x2)
+
+inst_66:
+// rs1_val==46341,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0xb505; immval:0xf
+TEST_CI_OP( c.slli, x10, 0x5a828000, 0xb505, 0xf, x1, 264, x2)
+
+inst_67:
+// rs1_val==-46339,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0xb503; immval:0xa
+TEST_CI_OP( c.slli, x10, 0xfd2bf400, -0xb503, 0xa, x1, 268, x2)
+
+inst_68:
+// rs1_val==1717986919,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x66666667; immval:0x1e
+TEST_CI_OP( c.slli, x10, 0xc0000000, 0x66666667, 0x1e, x1, 272, x2)
+
+inst_69:
+// rs1_val==858993460,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x33333334; immval:0x4
+TEST_CI_OP( c.slli, x10, 0x33333340, 0x33333334, 0x4, x1, 276, x2)
+
+inst_70:
+// rs1_val==6,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x6; immval:0x3
+TEST_CI_OP( c.slli, x10, 0x30, 0x6, 0x3, x1, 280, x2)
+
+inst_71:
+// rs1_val==-1431655765,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x55555555; immval:0x17
+TEST_CI_OP( c.slli, x10, 0x55800000, -0x55555555, 0x17, x1, 284, x2)
+
+inst_72:
+// rs1_val==1431655766,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x55555556; immval:0x8
+TEST_CI_OP( c.slli, x10, 0x55555600, 0x55555556, 0x8, x1, 288, x2)
+
+inst_73:
+// rs1_val==46339,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0xb503; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0x18000000, 0xb503, 0x1b, x1, 292, x2)
+
+inst_74:
+// rs1_val==3,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x3; immval:0x1b
+TEST_CI_OP( c.slli, x10, 0x18000000, 0x3, 0x1b, x1, 296, x2)
+
+inst_75:
+// rs1_val == -1431655766, rs1_val==-1431655766
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0x55555556; immval:0x3
+TEST_CI_OP( c.slli, x10, 0x55555550, -0x55555556, 0x3, x1, 300, x2)
+
+inst_76:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x55555555; immval:0x4
+TEST_CI_OP( c.slli, x10, 0x55555550, 0x55555555, 0x4, x1, 304, x2)
+
+inst_77:
+// rs1_val == 0 and imm_val != 0 and imm_val < xlen, rs1_val==0
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x0; immval:0x15
+TEST_CI_OP( c.slli, x10, 0x0, 0x0, 0x15, x1, 308, x2)
+
+inst_78:
+// rs1_val==1717986917,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x66666665; immval:0x5
+TEST_CI_OP( c.slli, x10, 0xcccccca0, 0x66666665, 0x5, x1, 312, x2)
+
+inst_79:
+// rs1_val==858993458,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x33333332; immval:0x10
+TEST_CI_OP( c.slli, x10, 0x33320000, 0x33333332, 0x10, x1, 316, x2)
+
+inst_80:
+// rs1_val==1431655764,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x55555554; immval:0x17
+TEST_CI_OP( c.slli, x10, 0xaa000000, 0x55555554, 0x17, x1, 320, x2)
+
+inst_81:
+// rs1_val==46340,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0xb504; immval:0x6
+TEST_CI_OP( c.slli, x10, 0x2d4100, 0xb504, 0x6, x1, 324, x2)
+
+inst_82:
+// rs1_val==-46340,
+// opcode:c.slli; op1:x10; dest:x10 op1val:-0xb504; immval:0xa
+TEST_CI_OP( c.slli, x10, 0xfd2bf000, -0xb504, 0xa, x1, 328, x2)
+
+inst_83:
+// rs1_val==1717986918,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x66666666; immval:0x12
+TEST_CI_OP( c.slli, x10, 0x99980000, 0x66666666, 0x12, x1, 332, x2)
+
+inst_84:
+// rs1_val==858993459,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x33333333; immval:0x1
+TEST_CI_OP( c.slli, x10, 0x66666666, 0x33333333, 0x1, x1, 336, x2)
+
+inst_85:
+// rs1_val==5,
+// opcode:c.slli; op1:x10; dest:x10 op1val:0x5; immval:0x4
+TEST_CI_OP( c.slli, x10, 0x50, 0x5, 0x4, x1, 340, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 86*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csrai-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csrai-01.S
new file mode 100644
index 000000000..36fd20f35
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csrai-01.S
@@ -0,0 +1,495 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.srai instruction of the RISC-V C extension for the csrai covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",csrai)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1==x10, rs1_val < 0 and imm_val < xlen, rs1_val == -1431655766, rs1_val==-1431655766
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x55555556; immval:0xe
+TEST_CI_OP( c.srai, x10, 0xfffeaaaa, -0x55555556, 0xe, x1, 0, x2)
+
+inst_1:
+// rs1==x9, rs1_val == 2147483647, rs1_val > 0 and imm_val < xlen, rs1_val == (2**(xlen-1)-1) and imm_val != 0 and imm_val < xlen
+// opcode:c.srai; op1:x9; dest:x9 op1val:0x7fffffff; immval:0x9
+TEST_CI_OP( c.srai, x9, 0x3fffff, 0x7fffffff, 0x9, x1, 4, x2)
+
+inst_2:
+// rs1==x11, rs1_val == -1073741825,
+// opcode:c.srai; op1:x11; dest:x11 op1val:-0x40000001; immval:0x5
+TEST_CI_OP( c.srai, x11, 0xfdffffff, -0x40000001, 0x5, x1, 8, x2)
+
+inst_3:
+// rs1==x12, rs1_val == -536870913, imm_val == 4
+// opcode:c.srai; op1:x12; dest:x12 op1val:-0x20000001; immval:0x4
+TEST_CI_OP( c.srai, x12, 0xfdffffff, -0x20000001, 0x4, x1, 12, x2)
+
+inst_4:
+// rs1==x14, rs1_val == -268435457, imm_val == 21
+// opcode:c.srai; op1:x14; dest:x14 op1val:-0x10000001; immval:0x15
+TEST_CI_OP( c.srai, x14, 0xffffff7f, -0x10000001, 0x15, x1, 16, x2)
+
+inst_5:
+// rs1==x8, rs1_val == -134217729,
+// opcode:c.srai; op1:x8; dest:x8 op1val:-0x8000001; immval:0x13
+TEST_CI_OP( c.srai, x8, 0xfffffeff, -0x8000001, 0x13, x1, 20, x2)
+
+inst_6:
+// rs1==x13, rs1_val == -67108865,
+// opcode:c.srai; op1:x13; dest:x13 op1val:-0x4000001; immval:0xc
+TEST_CI_OP( c.srai, x13, 0xffffbfff, -0x4000001, 0xc, x1, 24, x2)
+
+inst_7:
+// rs1==x15, rs1_val == -33554433, imm_val == 29
+// opcode:c.srai; op1:x15; dest:x15 op1val:-0x2000001; immval:0x1d
+TEST_CI_OP( c.srai, x15, 0xffffffff, -0x2000001, 0x1d, x1, 28, x2)
+
+inst_8:
+// rs1_val == -16777217,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x1000001; immval:0xd
+TEST_CI_OP( c.srai, x10, 0xfffff7ff, -0x1000001, 0xd, x1, 32, x2)
+
+inst_9:
+// rs1_val == -8388609,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x800001; immval:0x3
+TEST_CI_OP( c.srai, x10, 0xffefffff, -0x800001, 0x3, x1, 36, x2)
+
+inst_10:
+// rs1_val == -4194305, imm_val == 10
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x400001; immval:0xa
+TEST_CI_OP( c.srai, x10, 0xffffefff, -0x400001, 0xa, x1, 40, x2)
+
+inst_11:
+// rs1_val == -2097153,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x200001; immval:0xd
+TEST_CI_OP( c.srai, x10, 0xfffffeff, -0x200001, 0xd, x1, 44, x2)
+
+inst_12:
+// rs1_val == -1048577,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x100001; immval:0xd
+TEST_CI_OP( c.srai, x10, 0xffffff7f, -0x100001, 0xd, x1, 48, x2)
+
+inst_13:
+// rs1_val == -524289,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x80001; immval:0x5
+TEST_CI_OP( c.srai, x10, 0xffffbfff, -0x80001, 0x5, x1, 52, x2)
+
+inst_14:
+// rs1_val == -262145,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x40001; immval:0x4
+TEST_CI_OP( c.srai, x10, 0xffffbfff, -0x40001, 0x4, x1, 56, x2)
+
+inst_15:
+// rs1_val == -131073,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x20001; immval:0x1d
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x20001, 0x1d, x1, 60, x2)
+
+inst_16:
+// rs1_val == -65537,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x10001; immval:0x15
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x10001, 0x15, x1, 64, x2)
+
+inst_17:
+// rs1_val == -32769, imm_val == 2
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x8001; immval:0x2
+TEST_CI_OP( c.srai, x10, 0xffffdfff, -0x8001, 0x2, x1, 68, x2)
+
+inst_18:
+// rs1_val == -16385,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x4001; immval:0x7
+TEST_CI_OP( c.srai, x10, 0xffffff7f, -0x4001, 0x7, x1, 72, x2)
+
+inst_19:
+// rs1_val == -8193,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x2001; immval:0x12
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x2001, 0x12, x1, 76, x2)
+
+inst_20:
+// rs1_val == -4097,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x1001; immval:0x6
+TEST_CI_OP( c.srai, x10, 0xffffffbf, -0x1001, 0x6, x1, 80, x2)
+
+inst_21:
+// rs1_val == -2049,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x801; immval:0x13
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x801, 0x13, x1, 84, x2)
+
+inst_22:
+// rs1_val == -1025,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x401; immval:0x3
+TEST_CI_OP( c.srai, x10, 0xffffff7f, -0x401, 0x3, x1, 88, x2)
+
+inst_23:
+// rs1_val == -513, imm_val == 15
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x201; immval:0xf
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x201, 0xf, x1, 92, x2)
+
+inst_24:
+// rs1_val == -257,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x101; immval:0x7
+TEST_CI_OP( c.srai, x10, 0xfffffffd, -0x101, 0x7, x1, 96, x2)
+
+inst_25:
+// rs1_val == -129,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x81; immval:0xa
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x81, 0xa, x1, 100, x2)
+
+inst_26:
+// rs1_val == -65, imm_val == 23
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x41; immval:0x17
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x41, 0x17, x1, 104, x2)
+
+inst_27:
+// rs1_val == -33, imm_val == 30
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x21; immval:0x1e
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x21, 0x1e, x1, 108, x2)
+
+inst_28:
+// rs1_val == -17,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x11; immval:0x1e
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x11, 0x1e, x1, 112, x2)
+
+inst_29:
+// rs1_val == -9,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x9; immval:0x7
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x9, 0x7, x1, 116, x2)
+
+inst_30:
+// rs1_val == -5,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x5; immval:0x9
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x5, 0x9, x1, 120, x2)
+
+inst_31:
+// rs1_val == -3,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x3; immval:0x13
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x3, 0x13, x1, 124, x2)
+
+inst_32:
+// rs1_val == -2,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x2; immval:0x17
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x2, 0x17, x1, 128, x2)
+
+inst_33:
+// imm_val == 27, rs1_val == 32
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x20; immval:0x1b
+TEST_CI_OP( c.srai, x10, 0x0, 0x20, 0x1b, x1, 132, x2)
+
+inst_34:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and imm_val != 0 and imm_val < xlen
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x80000000; immval:0x12
+TEST_CI_OP( c.srai, x10, 0xffffe000, -0x80000000, 0x12, x1, 136, x2)
+
+inst_35:
+// rs1_val == 1073741824,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x40000000; immval:0x11
+TEST_CI_OP( c.srai, x10, 0x2000, 0x40000000, 0x11, x1, 140, x2)
+
+inst_36:
+// rs1_val == 536870912,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x20000000; immval:0x1b
+TEST_CI_OP( c.srai, x10, 0x4, 0x20000000, 0x1b, x1, 144, x2)
+
+inst_37:
+// rs1_val == 268435456,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x10000000; immval:0x15
+TEST_CI_OP( c.srai, x10, 0x80, 0x10000000, 0x15, x1, 148, x2)
+
+inst_38:
+// rs1_val == 134217728,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x8000000; immval:0x12
+TEST_CI_OP( c.srai, x10, 0x200, 0x8000000, 0x12, x1, 152, x2)
+
+inst_39:
+// rs1_val == 67108864,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x4000000; immval:0x15
+TEST_CI_OP( c.srai, x10, 0x20, 0x4000000, 0x15, x1, 156, x2)
+
+inst_40:
+// rs1_val == 33554432,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x2000000; immval:0x4
+TEST_CI_OP( c.srai, x10, 0x200000, 0x2000000, 0x4, x1, 160, x2)
+
+inst_41:
+// rs1_val == 16777216,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x1000000; immval:0x1e
+TEST_CI_OP( c.srai, x10, 0x0, 0x1000000, 0x1e, x1, 164, x2)
+
+inst_42:
+// rs1_val == 8388608,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x800000; immval:0x1e
+TEST_CI_OP( c.srai, x10, 0x0, 0x800000, 0x1e, x1, 168, x2)
+
+inst_43:
+// rs1_val == 4194304,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x400000; immval:0xd
+TEST_CI_OP( c.srai, x10, 0x200, 0x400000, 0xd, x1, 172, x2)
+
+inst_44:
+// rs1_val == 2097152,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x200000; immval:0xd
+TEST_CI_OP( c.srai, x10, 0x100, 0x200000, 0xd, x1, 176, x2)
+
+inst_45:
+// rs1_val == 1048576,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x100000; immval:0x13
+TEST_CI_OP( c.srai, x10, 0x2, 0x100000, 0x13, x1, 180, x2)
+
+inst_46:
+// rs1_val == 524288,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x80000; immval:0x9
+TEST_CI_OP( c.srai, x10, 0x400, 0x80000, 0x9, x1, 184, x2)
+
+inst_47:
+// rs1_val == 262144,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x40000; immval:0x13
+TEST_CI_OP( c.srai, x10, 0x0, 0x40000, 0x13, x1, 188, x2)
+
+inst_48:
+// rs1_val == 131072,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x20000; immval:0x4
+TEST_CI_OP( c.srai, x10, 0x2000, 0x20000, 0x4, x1, 192, x2)
+
+inst_49:
+// rs1_val == 65536, imm_val == 8
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x10000; immval:0x8
+TEST_CI_OP( c.srai, x10, 0x100, 0x10000, 0x8, x1, 196, x2)
+
+inst_50:
+// rs1_val == 32768,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x8000; immval:0x5
+TEST_CI_OP( c.srai, x10, 0x400, 0x8000, 0x5, x1, 200, x2)
+
+inst_51:
+// rs1_val == 16384,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x4000; immval:0x17
+TEST_CI_OP( c.srai, x10, 0x0, 0x4000, 0x17, x1, 204, x2)
+
+inst_52:
+// rs1_val == 8192,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x2000; immval:0x5
+TEST_CI_OP( c.srai, x10, 0x100, 0x2000, 0x5, x1, 208, x2)
+
+inst_53:
+// rs1_val == 4096,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x1000; immval:0x17
+TEST_CI_OP( c.srai, x10, 0x0, 0x1000, 0x17, x1, 212, x2)
+
+inst_54:
+// rs1_val == 2048,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x800; immval:0xa
+TEST_CI_OP( c.srai, x10, 0x2, 0x800, 0xa, x1, 216, x2)
+
+inst_55:
+// rs1_val == 1024,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x400; immval:0x1e
+TEST_CI_OP( c.srai, x10, 0x0, 0x400, 0x1e, x1, 220, x2)
+
+inst_56:
+// rs1_val == 512,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x200; immval:0xb
+TEST_CI_OP( c.srai, x10, 0x0, 0x200, 0xb, x1, 224, x2)
+
+inst_57:
+// rs1_val == 256,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x100; immval:0x1f
+TEST_CI_OP( c.srai, x10, 0x0, 0x100, 0x1f, x1, 228, x2)
+
+inst_58:
+// rs1_val == 128,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x80; immval:0x3
+TEST_CI_OP( c.srai, x10, 0x10, 0x80, 0x3, x1, 232, x2)
+
+inst_59:
+// rs1_val == 64,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x40; immval:0x1b
+TEST_CI_OP( c.srai, x10, 0x0, 0x40, 0x1b, x1, 236, x2)
+
+inst_60:
+// rs1_val == 16,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x10; immval:0x6
+TEST_CI_OP( c.srai, x10, 0x0, 0x10, 0x6, x1, 240, x2)
+
+inst_61:
+// rs1_val == 8,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x8; immval:0x11
+TEST_CI_OP( c.srai, x10, 0x0, 0x8, 0x11, x1, 244, x2)
+
+inst_62:
+// rs1_val == 4, rs1_val==4
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x4; immval:0x13
+TEST_CI_OP( c.srai, x10, 0x0, 0x4, 0x13, x1, 248, x2)
+
+inst_63:
+// rs1_val == 2, rs1_val==2
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x2; immval:0x4
+TEST_CI_OP( c.srai, x10, 0x0, 0x2, 0x4, x1, 252, x2)
+
+inst_64:
+// rs1_val == 1, rs1_val == 1 and imm_val != 0 and imm_val < xlen
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x1; immval:0x1f
+TEST_CI_OP( c.srai, x10, 0x0, 0x1, 0x1f, x1, 256, x2)
+
+inst_65:
+// imm_val == 16,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x801; immval:0x10
+TEST_CI_OP( c.srai, x10, 0xffffffff, -0x801, 0x10, x1, 260, x2)
+
+inst_66:
+// imm_val == 1, rs1_val == 1431655765, rs1_val==1431655765
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x55555555; immval:0x1
+TEST_CI_OP( c.srai, x10, 0x2aaaaaaa, 0x55555555, 0x1, x1, 264, x2)
+
+inst_67:
+// rs1_val==46341,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0xb505; immval:0xd
+TEST_CI_OP( c.srai, x10, 0x5, 0xb505, 0xd, x1, 268, x2)
+
+inst_68:
+// rs1_val==-46339,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0xb503; immval:0x5
+TEST_CI_OP( c.srai, x10, 0xfffffa57, -0xb503, 0x5, x1, 272, x2)
+
+inst_69:
+// rs1_val==1717986919,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x66666667; immval:0x15
+TEST_CI_OP( c.srai, x10, 0x333, 0x66666667, 0x15, x1, 276, x2)
+
+inst_70:
+// rs1_val==858993460,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x33333334; immval:0x17
+TEST_CI_OP( c.srai, x10, 0x66, 0x33333334, 0x17, x1, 280, x2)
+
+inst_71:
+// rs1_val==6,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x6; immval:0x3
+TEST_CI_OP( c.srai, x10, 0x0, 0x6, 0x3, x1, 284, x2)
+
+inst_72:
+// rs1_val==3, rs1_val == imm_val and imm_val != 0 and imm_val < xlen
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x3; immval:0x3
+TEST_CI_OP( c.srai, x10, 0x0, 0x3, 0x3, x1, 288, x2)
+
+inst_73:
+// rs1_val == 0 and imm_val != 0 and imm_val < xlen, rs1_val==0
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x0; immval:0x12
+TEST_CI_OP( c.srai, x10, 0x0, 0x0, 0x12, x1, 292, x2)
+
+inst_74:
+// rs1_val==-1431655765,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0x55555555; immval:0x6
+TEST_CI_OP( c.srai, x10, 0xfeaaaaaa, -0x55555555, 0x6, x1, 296, x2)
+
+inst_75:
+// rs1_val==1431655766,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x55555556; immval:0x11
+TEST_CI_OP( c.srai, x10, 0x2aaa, 0x55555556, 0x11, x1, 300, x2)
+
+inst_76:
+// rs1_val==46339,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0xb503; immval:0xe
+TEST_CI_OP( c.srai, x10, 0x2, 0xb503, 0xe, x1, 304, x2)
+
+inst_77:
+// rs1_val==1717986917,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x66666665; immval:0x5
+TEST_CI_OP( c.srai, x10, 0x3333333, 0x66666665, 0x5, x1, 308, x2)
+
+inst_78:
+// rs1_val==858993458,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x33333332; immval:0x8
+TEST_CI_OP( c.srai, x10, 0x333333, 0x33333332, 0x8, x1, 312, x2)
+
+inst_79:
+// rs1_val==1431655764,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x55555554; immval:0x8
+TEST_CI_OP( c.srai, x10, 0x555555, 0x55555554, 0x8, x1, 316, x2)
+
+inst_80:
+// rs1_val==46340,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0xb504; immval:0x1f
+TEST_CI_OP( c.srai, x10, 0x0, 0xb504, 0x1f, x1, 320, x2)
+
+inst_81:
+// rs1_val==-46340,
+// opcode:c.srai; op1:x10; dest:x10 op1val:-0xb504; immval:0x8
+TEST_CI_OP( c.srai, x10, 0xffffff4a, -0xb504, 0x8, x1, 324, x2)
+
+inst_82:
+// rs1_val==1717986918,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x66666666; immval:0xd
+TEST_CI_OP( c.srai, x10, 0x33333, 0x66666666, 0xd, x1, 328, x2)
+
+inst_83:
+// rs1_val==858993459,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x33333333; immval:0x17
+TEST_CI_OP( c.srai, x10, 0x66, 0x33333333, 0x17, x1, 332, x2)
+
+inst_84:
+// rs1_val==5,
+// opcode:c.srai; op1:x10; dest:x10 op1val:0x5; immval:0x1
+TEST_CI_OP( c.srai, x10, 0x2, 0x5, 0x1, x1, 336, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 85*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csrli-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csrli-01.S
new file mode 100644
index 000000000..63505ca17
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csrli-01.S
@@ -0,0 +1,505 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.srli instruction of the RISC-V C extension for the csrli covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",csrli)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1==x15, rs1_val < 0 and imm_val < xlen, rs1_val == -2
+// opcode:c.srli; op1:x15; dest:x15 op1val:-0x2; immval:0xe
+TEST_CI_OP( c.srli, x15, 0x3ffff, -0x2, 0xe, x1, 0, x2)
+
+inst_1:
+// rs1==x8, rs1_val == 2147483647, rs1_val > 0 and imm_val < xlen, rs1_val == (2**(xlen-1)-1) and imm_val != 0 and imm_val < xlen
+// opcode:c.srli; op1:x8; dest:x8 op1val:0x7fffffff; immval:0x7
+TEST_CI_OP( c.srli, x8, 0xffffff, 0x7fffffff, 0x7, x1, 4, x2)
+
+inst_2:
+// rs1==x11, rs1_val == -1073741825, imm_val == 15
+// opcode:c.srli; op1:x11; dest:x11 op1val:-0x40000001; immval:0xf
+TEST_CI_OP( c.srli, x11, 0x17fff, -0x40000001, 0xf, x1, 8, x2)
+
+inst_3:
+// rs1==x10, rs1_val == -536870913,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x20000001; immval:0xb
+TEST_CI_OP( c.srli, x10, 0x1bffff, -0x20000001, 0xb, x1, 12, x2)
+
+inst_4:
+// rs1==x9, rs1_val == -268435457,
+// opcode:c.srli; op1:x9; dest:x9 op1val:-0x10000001; immval:0xc
+TEST_CI_OP( c.srli, x9, 0xeffff, -0x10000001, 0xc, x1, 16, x2)
+
+inst_5:
+// rs1==x13, rs1_val == -134217729, imm_val == 4
+// opcode:c.srli; op1:x13; dest:x13 op1val:-0x8000001; immval:0x4
+TEST_CI_OP( c.srli, x13, 0xf7fffff, -0x8000001, 0x4, x1, 20, x2)
+
+inst_6:
+// rs1==x12, rs1_val == -67108865,
+// opcode:c.srli; op1:x12; dest:x12 op1val:-0x4000001; immval:0x3
+TEST_CI_OP( c.srli, x12, 0x1f7fffff, -0x4000001, 0x3, x1, 24, x2)
+
+inst_7:
+// rs1==x14, rs1_val == -33554433,
+// opcode:c.srli; op1:x14; dest:x14 op1val:-0x2000001; immval:0x11
+TEST_CI_OP( c.srli, x14, 0x7eff, -0x2000001, 0x11, x1, 28, x2)
+
+inst_8:
+// rs1_val == -16777217,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x1000001; immval:0x6
+TEST_CI_OP( c.srli, x10, 0x3fbffff, -0x1000001, 0x6, x1, 32, x2)
+
+inst_9:
+// rs1_val == -8388609,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x800001; immval:0xf
+TEST_CI_OP( c.srli, x10, 0x1feff, -0x800001, 0xf, x1, 36, x2)
+
+inst_10:
+// rs1_val == -4194305, imm_val == 21
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x400001; immval:0x15
+TEST_CI_OP( c.srli, x10, 0x7fd, -0x400001, 0x15, x1, 40, x2)
+
+inst_11:
+// rs1_val == -2097153,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x200001; immval:0x3
+TEST_CI_OP( c.srli, x10, 0x1ffbffff, -0x200001, 0x3, x1, 44, x2)
+
+inst_12:
+// rs1_val == -1048577, imm_val == 2
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x100001; immval:0x2
+TEST_CI_OP( c.srli, x10, 0x3ffbffff, -0x100001, 0x2, x1, 48, x2)
+
+inst_13:
+// rs1_val == -524289, imm_val == 16
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x80001; immval:0x10
+TEST_CI_OP( c.srli, x10, 0xfff7, -0x80001, 0x10, x1, 52, x2)
+
+inst_14:
+// rs1_val == -262145,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x40001; immval:0x6
+TEST_CI_OP( c.srli, x10, 0x3ffefff, -0x40001, 0x6, x1, 56, x2)
+
+inst_15:
+// rs1_val == -131073,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x20001; immval:0x10
+TEST_CI_OP( c.srli, x10, 0xfffd, -0x20001, 0x10, x1, 60, x2)
+
+inst_16:
+// rs1_val == -65537,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x10001; immval:0x9
+TEST_CI_OP( c.srli, x10, 0x7fff7f, -0x10001, 0x9, x1, 64, x2)
+
+inst_17:
+// rs1_val == -32769,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x8001; immval:0x9
+TEST_CI_OP( c.srli, x10, 0x7fffbf, -0x8001, 0x9, x1, 68, x2)
+
+inst_18:
+// rs1_val == -16385,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x4001; immval:0xc
+TEST_CI_OP( c.srli, x10, 0xffffb, -0x4001, 0xc, x1, 72, x2)
+
+inst_19:
+// rs1_val == -8193,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x2001; immval:0xe
+TEST_CI_OP( c.srli, x10, 0x3ffff, -0x2001, 0xe, x1, 76, x2)
+
+inst_20:
+// rs1_val == -4097,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x1001; immval:0x5
+TEST_CI_OP( c.srli, x10, 0x7ffff7f, -0x1001, 0x5, x1, 80, x2)
+
+inst_21:
+// rs1_val == -2049,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x801; immval:0x15
+TEST_CI_OP( c.srli, x10, 0x7ff, -0x801, 0x15, x1, 84, x2)
+
+inst_22:
+// rs1_val == -1025, imm_val == 29
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x401; immval:0x1d
+TEST_CI_OP( c.srli, x10, 0x7, -0x401, 0x1d, x1, 88, x2)
+
+inst_23:
+// rs1_val == -513,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x201; immval:0xc
+TEST_CI_OP( c.srli, x10, 0xfffff, -0x201, 0xc, x1, 92, x2)
+
+inst_24:
+// rs1_val == -257,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x101; immval:0xc
+TEST_CI_OP( c.srli, x10, 0xfffff, -0x101, 0xc, x1, 96, x2)
+
+inst_25:
+// rs1_val == -129,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x81; immval:0x7
+TEST_CI_OP( c.srli, x10, 0x1fffffe, -0x81, 0x7, x1, 100, x2)
+
+inst_26:
+// rs1_val == -65,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x41; immval:0x1d
+TEST_CI_OP( c.srli, x10, 0x7, -0x41, 0x1d, x1, 104, x2)
+
+inst_27:
+// rs1_val == -33,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x21; immval:0xf
+TEST_CI_OP( c.srli, x10, 0x1ffff, -0x21, 0xf, x1, 108, x2)
+
+inst_28:
+// rs1_val == -17,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x11; immval:0xc
+TEST_CI_OP( c.srli, x10, 0xfffff, -0x11, 0xc, x1, 112, x2)
+
+inst_29:
+// rs1_val == -9,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x9; immval:0x7
+TEST_CI_OP( c.srli, x10, 0x1ffffff, -0x9, 0x7, x1, 116, x2)
+
+inst_30:
+// rs1_val == -5, imm_val == 30
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x5; immval:0x1e
+TEST_CI_OP( c.srli, x10, 0x3, -0x5, 0x1e, x1, 120, x2)
+
+inst_31:
+// rs1_val == -3,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x3; immval:0xb
+TEST_CI_OP( c.srli, x10, 0x1fffff, -0x3, 0xb, x1, 124, x2)
+
+inst_32:
+// imm_val == 23, rs1_val==5
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x5; immval:0x17
+TEST_CI_OP( c.srli, x10, 0x0, 0x5, 0x17, x1, 128, x2)
+
+inst_33:
+// imm_val == 27,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x81; immval:0x1b
+TEST_CI_OP( c.srli, x10, 0x1f, -0x81, 0x1b, x1, 132, x2)
+
+inst_34:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and imm_val != 0 and imm_val < xlen
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x80000000; immval:0x9
+TEST_CI_OP( c.srli, x10, 0x400000, -0x80000000, 0x9, x1, 136, x2)
+
+inst_35:
+// rs1_val == 1073741824,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x40000000; immval:0x7
+TEST_CI_OP( c.srli, x10, 0x800000, 0x40000000, 0x7, x1, 140, x2)
+
+inst_36:
+// rs1_val == 536870912,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x20000000; immval:0x6
+TEST_CI_OP( c.srli, x10, 0x800000, 0x20000000, 0x6, x1, 144, x2)
+
+inst_37:
+// rs1_val == 268435456,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x10000000; immval:0x9
+TEST_CI_OP( c.srli, x10, 0x80000, 0x10000000, 0x9, x1, 148, x2)
+
+inst_38:
+// rs1_val == 134217728,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x8000000; immval:0x1e
+TEST_CI_OP( c.srli, x10, 0x0, 0x8000000, 0x1e, x1, 152, x2)
+
+inst_39:
+// rs1_val == 67108864,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x4000000; immval:0x11
+TEST_CI_OP( c.srli, x10, 0x200, 0x4000000, 0x11, x1, 156, x2)
+
+inst_40:
+// rs1_val == 33554432,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x2000000; immval:0x15
+TEST_CI_OP( c.srli, x10, 0x10, 0x2000000, 0x15, x1, 160, x2)
+
+inst_41:
+// rs1_val == 16777216,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x1000000; immval:0x10
+TEST_CI_OP( c.srli, x10, 0x100, 0x1000000, 0x10, x1, 164, x2)
+
+inst_42:
+// rs1_val == 8388608,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x800000; immval:0x1d
+TEST_CI_OP( c.srli, x10, 0x0, 0x800000, 0x1d, x1, 168, x2)
+
+inst_43:
+// rs1_val == 4194304,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x400000; immval:0xc
+TEST_CI_OP( c.srli, x10, 0x400, 0x400000, 0xc, x1, 172, x2)
+
+inst_44:
+// rs1_val == 2097152,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x200000; immval:0xc
+TEST_CI_OP( c.srli, x10, 0x200, 0x200000, 0xc, x1, 176, x2)
+
+inst_45:
+// rs1_val == 1048576,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x100000; immval:0x17
+TEST_CI_OP( c.srli, x10, 0x0, 0x100000, 0x17, x1, 180, x2)
+
+inst_46:
+// rs1_val == 524288,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x80000; immval:0x1f
+TEST_CI_OP( c.srli, x10, 0x0, 0x80000, 0x1f, x1, 184, x2)
+
+inst_47:
+// rs1_val == 262144,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x40000; immval:0x13
+TEST_CI_OP( c.srli, x10, 0x0, 0x40000, 0x13, x1, 188, x2)
+
+inst_48:
+// rs1_val == 131072,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x20000; immval:0x1f
+TEST_CI_OP( c.srli, x10, 0x0, 0x20000, 0x1f, x1, 192, x2)
+
+inst_49:
+// rs1_val == 65536, imm_val == 8
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x10000; immval:0x8
+TEST_CI_OP( c.srli, x10, 0x100, 0x10000, 0x8, x1, 196, x2)
+
+inst_50:
+// rs1_val == 32768,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x8000; immval:0x1d
+TEST_CI_OP( c.srli, x10, 0x0, 0x8000, 0x1d, x1, 200, x2)
+
+inst_51:
+// rs1_val == 16384,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x4000; immval:0x3
+TEST_CI_OP( c.srli, x10, 0x800, 0x4000, 0x3, x1, 204, x2)
+
+inst_52:
+// rs1_val == 8192,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x2000; immval:0x1d
+TEST_CI_OP( c.srli, x10, 0x0, 0x2000, 0x1d, x1, 208, x2)
+
+inst_53:
+// rs1_val == 4096,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x1000; immval:0x17
+TEST_CI_OP( c.srli, x10, 0x0, 0x1000, 0x17, x1, 212, x2)
+
+inst_54:
+// rs1_val == 2048,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x800; immval:0x7
+TEST_CI_OP( c.srli, x10, 0x10, 0x800, 0x7, x1, 216, x2)
+
+inst_55:
+// rs1_val == 1024,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x400; immval:0x10
+TEST_CI_OP( c.srli, x10, 0x0, 0x400, 0x10, x1, 220, x2)
+
+inst_56:
+// rs1_val == 512,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x200; immval:0x1d
+TEST_CI_OP( c.srli, x10, 0x0, 0x200, 0x1d, x1, 224, x2)
+
+inst_57:
+// rs1_val == 256, imm_val == 1
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x100; immval:0x1
+TEST_CI_OP( c.srli, x10, 0x80, 0x100, 0x1, x1, 228, x2)
+
+inst_58:
+// rs1_val == 128,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x80; immval:0x7
+TEST_CI_OP( c.srli, x10, 0x1, 0x80, 0x7, x1, 232, x2)
+
+inst_59:
+// rs1_val == 64,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x40; immval:0xd
+TEST_CI_OP( c.srli, x10, 0x0, 0x40, 0xd, x1, 236, x2)
+
+inst_60:
+// rs1_val == 32,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x20; immval:0x1e
+TEST_CI_OP( c.srli, x10, 0x0, 0x20, 0x1e, x1, 240, x2)
+
+inst_61:
+// rs1_val == 16,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x10; immval:0x11
+TEST_CI_OP( c.srli, x10, 0x0, 0x10, 0x11, x1, 244, x2)
+
+inst_62:
+// rs1_val == 8,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x8; immval:0x1b
+TEST_CI_OP( c.srli, x10, 0x0, 0x8, 0x1b, x1, 248, x2)
+
+inst_63:
+// rs1_val == 4, rs1_val==4
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x4; immval:0x11
+TEST_CI_OP( c.srli, x10, 0x0, 0x4, 0x11, x1, 252, x2)
+
+inst_64:
+// rs1_val == 2, rs1_val==2
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x2; immval:0x15
+TEST_CI_OP( c.srli, x10, 0x0, 0x2, 0x15, x1, 256, x2)
+
+inst_65:
+// rs1_val == 1, rs1_val == 1 and imm_val != 0 and imm_val < xlen
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x1; immval:0x12
+TEST_CI_OP( c.srli, x10, 0x0, 0x1, 0x12, x1, 260, x2)
+
+inst_66:
+// rs1_val==46341,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0xb505; immval:0x10
+TEST_CI_OP( c.srli, x10, 0x0, 0xb505, 0x10, x1, 264, x2)
+
+inst_67:
+// rs1_val==-46339,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0xb503; immval:0x15
+TEST_CI_OP( c.srli, x10, 0x7ff, -0xb503, 0x15, x1, 268, x2)
+
+inst_68:
+// rs1_val==1717986919,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x66666667; immval:0x9
+TEST_CI_OP( c.srli, x10, 0x333333, 0x66666667, 0x9, x1, 272, x2)
+
+inst_69:
+// rs1_val==858993460,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x33333334; immval:0xf
+TEST_CI_OP( c.srli, x10, 0x6666, 0x33333334, 0xf, x1, 276, x2)
+
+inst_70:
+// rs1_val==6,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x6; immval:0x10
+TEST_CI_OP( c.srli, x10, 0x0, 0x6, 0x10, x1, 280, x2)
+
+inst_71:
+// rs1_val==-1431655765,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x55555555; immval:0x5
+TEST_CI_OP( c.srli, x10, 0x5555555, -0x55555555, 0x5, x1, 284, x2)
+
+inst_72:
+// rs1_val==1431655766,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x55555556; immval:0xf
+TEST_CI_OP( c.srli, x10, 0xaaaa, 0x55555556, 0xf, x1, 288, x2)
+
+inst_73:
+// rs1_val==46339,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0xb503; immval:0x2
+TEST_CI_OP( c.srli, x10, 0x2d40, 0xb503, 0x2, x1, 292, x2)
+
+inst_74:
+// rs1_val==0, rs1_val == 0 and imm_val != 0 and imm_val < xlen
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x0; immval:0xf
+TEST_CI_OP( c.srli, x10, 0x0, 0x0, 0xf, x1, 296, x2)
+
+inst_75:
+// rs1_val==3,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x3; immval:0x6
+TEST_CI_OP( c.srli, x10, 0x0, 0x3, 0x6, x1, 300, x2)
+
+inst_76:
+// rs1_val == -1431655766, rs1_val==-1431655766
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0x55555556; immval:0x2
+TEST_CI_OP( c.srli, x10, 0x2aaaaaaa, -0x55555556, 0x2, x1, 304, x2)
+
+inst_77:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x55555555; immval:0xb
+TEST_CI_OP( c.srli, x10, 0xaaaaa, 0x55555555, 0xb, x1, 308, x2)
+
+inst_78:
+// imm_val == 10,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x0; immval:0xa
+TEST_CI_OP( c.srli, x10, 0x0, 0x0, 0xa, x1, 312, x2)
+
+inst_79:
+// rs1_val == imm_val and imm_val != 0 and imm_val < xlen,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x4; immval:0x4
+TEST_CI_OP( c.srli, x10, 0x0, 0x4, 0x4, x1, 316, x2)
+
+inst_80:
+// rs1_val==1717986917,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x66666665; immval:0xe
+TEST_CI_OP( c.srli, x10, 0x19999, 0x66666665, 0xe, x1, 320, x2)
+
+inst_81:
+// rs1_val==858993458,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x33333332; immval:0x6
+TEST_CI_OP( c.srli, x10, 0xcccccc, 0x33333332, 0x6, x1, 324, x2)
+
+inst_82:
+// rs1_val==1431655764,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x55555554; immval:0x3
+TEST_CI_OP( c.srli, x10, 0xaaaaaaa, 0x55555554, 0x3, x1, 328, x2)
+
+inst_83:
+// rs1_val==46340,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0xb504; immval:0x11
+TEST_CI_OP( c.srli, x10, 0x0, 0xb504, 0x11, x1, 332, x2)
+
+inst_84:
+// rs1_val==-46340,
+// opcode:c.srli; op1:x10; dest:x10 op1val:-0xb504; immval:0x5
+TEST_CI_OP( c.srli, x10, 0x7fffa57, -0xb504, 0x5, x1, 336, x2)
+
+inst_85:
+// rs1_val==1717986918,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x66666666; immval:0x3
+TEST_CI_OP( c.srli, x10, 0xccccccc, 0x66666666, 0x3, x1, 340, x2)
+
+inst_86:
+// rs1_val==858993459,
+// opcode:c.srli; op1:x10; dest:x10 op1val:0x33333333; immval:0x1f
+TEST_CI_OP( c.srli, x10, 0x0, 0x33333333, 0x1f, x1, 344, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 87*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csub-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csub-01.S
new file mode 100644
index 000000000..c38bd6537
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csub-01.S
@@ -0,0 +1,2980 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.sub instruction of the RISC-V C extension for the csub covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",csub)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rs2, rs1==x10, rs2==x8, rs1_val == (-2**(xlen-1)), rs1_val == -2147483648, rs2_val < 0, rs2_val == -1431655766
+// opcode: c.sub; op1:x10; op2:x8; op1val:-0x80000000; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x8, 0xd5555556, -0x80000000, -0x55555556, x1, 0, x2)
+
+inst_1:
+// rs1 == rs2, rs1==x15, rs2==x15, rs2_val == 2147483647, rs1_val == -257, rs2_val == (2**(xlen-1)-1), rs2_val > 0
+// opcode: c.sub; op1:x15; op2:x15; op1val:-0x101; op2val:-0x101
+TEST_CR_OP( c.sub, x15, x15, 0x0, -0x101, -0x101, x1, 4, x2)
+
+inst_2:
+// rs1==x14, rs2==x10, rs2_val == -1073741825, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: c.sub; op1:x14; op2:x10; op1val:0x7fffffff; op2val:-0x40000001
+TEST_CR_OP( c.sub, x14, x10, 0xc0000000, 0x7fffffff, -0x40000001, x1, 8, x2)
+
+inst_3:
+// rs1==x11, rs2==x9, rs2_val == -536870913,
+// opcode: c.sub; op1:x11; op2:x9; op1val:-0xa; op2val:-0x20000001
+TEST_CR_OP( c.sub, x11, x9, 0x1ffffff7, -0xa, -0x20000001, x1, 12, x2)
+
+inst_4:
+// rs1==x13, rs2==x12, rs2_val == -268435457,
+// opcode: c.sub; op1:x13; op2:x12; op1val:-0xb504; op2val:-0x10000001
+TEST_CR_OP( c.sub, x13, x12, 0xfff4afd, -0xb504, -0x10000001, x1, 16, x2)
+
+inst_5:
+// rs1==x9, rs2==x11, rs2_val == -134217729,
+// opcode: c.sub; op1:x9; op2:x11; op1val:0x66666665; op2val:-0x8000001
+TEST_CR_OP( c.sub, x9, x11, 0x6e666666, 0x66666665, -0x8000001, x1, 20, x2)
+
+inst_6:
+// rs1==x8, rs2==x13, rs2_val == -67108865,
+// opcode: c.sub; op1:x8; op2:x13; op1val:-0x7; op2val:-0x4000001
+TEST_CR_OP( c.sub, x8, x13, 0x3fffffa, -0x7, -0x4000001, x1, 24, x2)
+
+inst_7:
+// rs1==x12, rs2==x14, rs2_val == -33554433, rs1_val == -268435457
+// opcode: c.sub; op1:x12; op2:x14; op1val:-0x10000001; op2val:-0x2000001
+TEST_CR_OP( c.sub, x12, x14, 0xf2000000, -0x10000001, -0x2000001, x1, 28, x2)
+
+inst_8:
+// rs2_val == -16777217, rs1_val == -2049
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x801; op2val:-0x1000001
+TEST_CR_OP( c.sub, x10, x11, 0xfff800, -0x801, -0x1000001, x1, 32, x2)
+
+inst_9:
+// rs2_val == -8388609,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x800001
+TEST_CR_OP( c.sub, x10, x11, 0x33b33333, 0x33333332, -0x800001, x1, 36, x2)
+
+inst_10:
+// rs2_val == -4194305, rs1_val == -524289
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x80001; op2val:-0x400001
+TEST_CR_OP( c.sub, x10, x11, 0x380000, -0x80001, -0x400001, x1, 40, x2)
+
+inst_11:
+// rs2_val == -2097153,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x4; op2val:-0x200001
+TEST_CR_OP( c.sub, x10, x11, 0x1ffffd, -0x4, -0x200001, x1, 44, x2)
+
+inst_12:
+// rs2_val == -1048577, rs1_val == -65
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x41; op2val:-0x100001
+TEST_CR_OP( c.sub, x10, x11, 0xfffc0, -0x41, -0x100001, x1, 48, x2)
+
+inst_13:
+// rs2_val == -524289, rs1_val == -129
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x81; op2val:-0x80001
+TEST_CR_OP( c.sub, x10, x11, 0x7ff80, -0x81, -0x80001, x1, 52, x2)
+
+inst_14:
+// rs2_val == -262145,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x8; op2val:-0x40001
+TEST_CR_OP( c.sub, x10, x11, 0x3fff9, -0x8, -0x40001, x1, 56, x2)
+
+inst_15:
+// rs2_val == -131073, rs1_val == 33554432
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2000000; op2val:-0x20001
+TEST_CR_OP( c.sub, x10, x11, 0x2020001, 0x2000000, -0x20001, x1, 60, x2)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x4; op2val:-0x10001
+TEST_CR_OP( c.sub, x10, x11, 0xfffd, -0x4, -0x10001, x1, 64, x2)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3fffffff; op2val:-0x8001
+TEST_CR_OP( c.sub, x10, x11, 0x40008000, 0x3fffffff, -0x8001, x1, 68, x2)
+
+inst_18:
+// rs2_val == -16385,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x4001
+TEST_CR_OP( c.sub, x10, x11, 0xffff8afe, -0xb503, -0x4001, x1, 72, x2)
+
+inst_19:
+// rs2_val == -8193, rs1_val == -262145
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x40001; op2val:-0x2001
+TEST_CR_OP( c.sub, x10, x11, 0xfffc2000, -0x40001, -0x2001, x1, 76, x2)
+
+inst_20:
+// rs2_val == -4097, rs1_val == 4
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:-0x1001
+TEST_CR_OP( c.sub, x10, x11, 0x1005, 0x4, -0x1001, x1, 80, x2)
+
+inst_21:
+// rs2_val == -2049, rs1_val == -16385
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x4001; op2val:-0x801
+TEST_CR_OP( c.sub, x10, x11, 0xffffc800, -0x4001, -0x801, x1, 84, x2)
+
+inst_22:
+// rs2_val == -1025, rs1_val == -2097153
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x200001; op2val:-0x401
+TEST_CR_OP( c.sub, x10, x11, 0xffe00400, -0x200001, -0x401, x1, 88, x2)
+
+inst_23:
+// rs2_val == -513, rs1_val == 16777216
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x1000000; op2val:-0x201
+TEST_CR_OP( c.sub, x10, x11, 0x1000201, 0x1000000, -0x201, x1, 92, x2)
+
+inst_24:
+// rs2_val == -257, rs1_val == 256
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x100; op2val:-0x101
+TEST_CR_OP( c.sub, x10, x11, 0x201, 0x100, -0x101, x1, 96, x2)
+
+inst_25:
+// rs2_val == -129, rs1_val == -2
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x2; op2val:-0x81
+TEST_CR_OP( c.sub, x10, x11, 0x7f, -0x2, -0x81, x1, 100, x2)
+
+inst_26:
+// rs2_val == -65, rs1_val == 64
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x40; op2val:-0x41
+TEST_CR_OP( c.sub, x10, x11, 0x81, 0x40, -0x41, x1, 104, x2)
+
+inst_27:
+// rs2_val == -33, rs1_val == -3
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x3; op2val:-0x21
+TEST_CR_OP( c.sub, x10, x11, 0x1e, -0x3, -0x21, x1, 108, x2)
+
+inst_28:
+// rs2_val == -17, rs1_val == -32769
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x8001; op2val:-0x11
+TEST_CR_OP( c.sub, x10, x11, 0xffff8010, -0x8001, -0x11, x1, 112, x2)
+
+inst_29:
+// rs2_val == -9,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x41; op2val:-0x9
+TEST_CR_OP( c.sub, x10, x11, 0xffffffc8, -0x41, -0x9, x1, 116, x2)
+
+inst_30:
+// rs2_val == -5, rs1_val == 32
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x20; op2val:-0x5
+TEST_CR_OP( c.sub, x10, x11, 0x25, 0x20, -0x5, x1, 120, x2)
+
+inst_31:
+// rs2_val == -3, rs1_val == -8193
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x2001; op2val:-0x3
+TEST_CR_OP( c.sub, x10, x11, 0xffffe002, -0x2001, -0x3, x1, 124, x2)
+
+inst_32:
+// rs2_val == -2, rs1_val == -1025
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x401; op2val:-0x2
+TEST_CR_OP( c.sub, x10, x11, 0xfffffc01, -0x401, -0x2, x1, 128, x2)
+
+inst_33:
+// rs1_val == -1073741825, rs2_val == 64
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x40000001; op2val:0x40
+TEST_CR_OP( c.sub, x10, x11, 0xbfffffbf, -0x40000001, 0x40, x1, 132, x2)
+
+inst_34:
+// rs1_val == -536870913,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x20000001; op2val:-0x6
+TEST_CR_OP( c.sub, x10, x11, 0xe0000005, -0x20000001, -0x6, x1, 136, x2)
+
+inst_35:
+// rs1_val == -134217729,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x8000001; op2val:0x7fffffff
+TEST_CR_OP( c.sub, x10, x11, 0x78000000, -0x8000001, 0x7fffffff, x1, 140, x2)
+
+inst_36:
+// rs1_val == -67108865,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x4000001; op2val:-0x21
+TEST_CR_OP( c.sub, x10, x11, 0xfc000020, -0x4000001, -0x21, x1, 144, x2)
+
+inst_37:
+// rs1_val == -33554433,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x2000001; op2val:-0x8
+TEST_CR_OP( c.sub, x10, x11, 0xfe000007, -0x2000001, -0x8, x1, 148, x2)
+
+inst_38:
+// rs1_val == -16777217,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x1000001; op2val:-0x11
+TEST_CR_OP( c.sub, x10, x11, 0xff000010, -0x1000001, -0x11, x1, 152, x2)
+
+inst_39:
+// rs1_val == -8388609, rs2_val == 2048
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x800001; op2val:0x800
+TEST_CR_OP( c.sub, x10, x11, 0xff7ff7ff, -0x800001, 0x800, x1, 156, x2)
+
+inst_40:
+// rs1_val == -4194305, rs2_val == 1073741824
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x400001; op2val:0x40000000
+TEST_CR_OP( c.sub, x10, x11, 0xbfbfffff, -0x400001, 0x40000000, x1, 160, x2)
+
+inst_41:
+// rs1_val == -1048577, rs2_val == 0
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x100001; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0xffefffff, -0x100001, 0x0, x1, 164, x2)
+
+inst_42:
+// rs1_val == -131073,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x20001; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xfffeb503, -0x20001, -0xb504, x1, 168, x2)
+
+inst_43:
+// rs1_val == -65537,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x10001; op2val:-0x101
+TEST_CR_OP( c.sub, x10, x11, 0xffff0100, -0x10001, -0x101, x1, 172, x2)
+
+inst_44:
+// rs1_val == -4097,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x1001; op2val:0x7fffffff
+TEST_CR_OP( c.sub, x10, x11, 0x7ffff000, -0x1001, 0x7fffffff, x1, 176, x2)
+
+inst_45:
+// rs1_val == -513, rs2_val == 67108864
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x201; op2val:0x4000000
+TEST_CR_OP( c.sub, x10, x11, 0xfbfffdff, -0x201, 0x4000000, x1, 180, x2)
+
+inst_46:
+// rs1_val == -33,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x21; op2val:-0x100001
+TEST_CR_OP( c.sub, x10, x11, 0xfffe0, -0x21, -0x100001, x1, 184, x2)
+
+inst_47:
+// rs1_val == -17,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x11; op2val:-0x801
+TEST_CR_OP( c.sub, x10, x11, 0x7f0, -0x11, -0x801, x1, 188, x2)
+
+inst_48:
+// rs1_val == -9,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x9; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xfffffff2, -0x9, 0x5, x1, 192, x2)
+
+inst_49:
+// rs1_val == -5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x5; op2val:-0x6
+TEST_CR_OP( c.sub, x10, x11, 0x1, -0x5, -0x6, x1, 196, x2)
+
+inst_50:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x20000001; op2val:-0x80000000
+TEST_CR_OP( c.sub, x10, x11, 0x5fffffff, -0x20000001, -0x80000000, x1, 200, x2)
+
+inst_51:
+// rs2_val == 536870912,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x3; op2val:0x20000000
+TEST_CR_OP( c.sub, x10, x11, 0xdffffffd, -0x3, 0x20000000, x1, 204, x2)
+
+inst_52:
+// rs2_val == 268435456,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x10000000
+TEST_CR_OP( c.sub, x10, x11, 0xf000b504, 0xb504, 0x10000000, x1, 208, x2)
+
+inst_53:
+// rs2_val == 134217728, rs1_val == 16384
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4000; op2val:0x8000000
+TEST_CR_OP( c.sub, x10, x11, 0xf8004000, 0x4000, 0x8000000, x1, 212, x2)
+
+inst_54:
+// rs2_val == 33554432,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x20; op2val:0x2000000
+TEST_CR_OP( c.sub, x10, x11, 0xfe000020, 0x20, 0x2000000, x1, 216, x2)
+
+inst_55:
+// rs2_val == 16777216,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x9; op2val:0x1000000
+TEST_CR_OP( c.sub, x10, x11, 0xfefffff7, -0x9, 0x1000000, x1, 220, x2)
+
+inst_56:
+// rs2_val == 8388608,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2000000; op2val:0x800000
+TEST_CR_OP( c.sub, x10, x11, 0x1800000, 0x2000000, 0x800000, x1, 224, x2)
+
+inst_57:
+// rs2_val == 4194304, rs1_val == 4194304
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x400000; op2val:0x400000
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x400000, 0x400000, x1, 228, x2)
+
+inst_58:
+// rs2_val == 2097152,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x20; op2val:0x200000
+TEST_CR_OP( c.sub, x10, x11, 0xffe00020, 0x20, 0x200000, x1, 232, x2)
+
+inst_59:
+// rs2_val == 1048576,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x100000
+TEST_CR_OP( c.sub, x10, x11, 0x66566666, 0x66666666, 0x100000, x1, 236, x2)
+
+inst_60:
+// rs2_val == 524288,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x10001; op2val:0x80000
+TEST_CR_OP( c.sub, x10, x11, 0xfff6ffff, -0x10001, 0x80000, x1, 240, x2)
+
+inst_61:
+// rs2_val == 262144,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x9; op2val:0x40000
+TEST_CR_OP( c.sub, x10, x11, 0xfffc0009, 0x9, 0x40000, x1, 244, x2)
+
+inst_62:
+// rs2_val == 131072, rs1_val == 0
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x20000
+TEST_CR_OP( c.sub, x10, x11, 0xfffe0000, 0x0, 0x20000, x1, 248, x2)
+
+inst_63:
+// rs2_val == 65536,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x9; op2val:0x10000
+TEST_CR_OP( c.sub, x10, x11, 0xffff0009, 0x9, 0x10000, x1, 252, x2)
+
+inst_64:
+// rs2_val == 32768, rs1_val == 512
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x200; op2val:0x8000
+TEST_CR_OP( c.sub, x10, x11, 0xffff8200, 0x200, 0x8000, x1, 256, x2)
+
+inst_65:
+// rs2_val == 16384, rs1_val == -1431655766
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4000
+TEST_CR_OP( c.sub, x10, x11, 0xaaaa6aaa, -0x55555556, 0x4000, x1, 260, x2)
+
+inst_66:
+// rs2_val == 8192,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x9; op2val:0x2000
+TEST_CR_OP( c.sub, x10, x11, 0xffffdff7, -0x9, 0x2000, x1, 264, x2)
+
+inst_67:
+// rs2_val == 4096,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x1; op2val:0x1000
+TEST_CR_OP( c.sub, x10, x11, 0xffffefff, -0x1, 0x1000, x1, 268, x2)
+
+inst_68:
+// rs2_val == 1024,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x400
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaa6aa, -0x55555556, 0x400, x1, 272, x2)
+
+inst_69:
+// rs2_val == 512, rs1_val == 1024
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x400; op2val:0x200
+TEST_CR_OP( c.sub, x10, x11, 0x200, 0x400, 0x200, x1, 276, x2)
+
+inst_70:
+// rs2_val == 256,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x2001; op2val:0x100
+TEST_CR_OP( c.sub, x10, x11, 0xffffdeff, -0x2001, 0x100, x1, 280, x2)
+
+inst_71:
+// rs2_val == 128,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x401; op2val:0x80
+TEST_CR_OP( c.sub, x10, x11, 0xfffffb7f, -0x401, 0x80, x1, 284, x2)
+
+inst_72:
+// rs2_val == 32,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x8001; op2val:0x20
+TEST_CR_OP( c.sub, x10, x11, 0xffff7fdf, -0x8001, 0x20, x1, 288, x2)
+
+inst_73:
+// rs2_val == 16,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x10
+TEST_CR_OP( c.sub, x10, x11, 0xfffffff0, 0x0, 0x10, x1, 292, x2)
+
+inst_74:
+// rs2_val == 8, rs1_val == 1431655765
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x8
+TEST_CR_OP( c.sub, x10, x11, 0x5555554d, 0x55555555, 0x8, x1, 296, x2)
+
+inst_75:
+// rs2_val == 4, rs1_val==-46340 and rs2_val==4
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xffff4af8, -0xb504, 0x4, x1, 300, x2)
+
+inst_76:
+// rs2_val == 2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x1000001; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xfefffffd, -0x1000001, 0x2, x1, 304, x2)
+
+inst_77:
+// rs2_val == 1, rs1_val == 268435456
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x10000000; op2val:0x1
+TEST_CR_OP( c.sub, x10, x11, 0xfffffff, 0x10000000, 0x1, x1, 308, x2)
+
+inst_78:
+// rs1_val == 1073741824,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x40000000; op2val:0x20
+TEST_CR_OP( c.sub, x10, x11, 0x3fffffe0, 0x40000000, 0x20, x1, 312, x2)
+
+inst_79:
+// rs1_val == 536870912,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x20000000; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x1ffffffe, 0x20000000, 0x2, x1, 316, x2)
+
+inst_80:
+// rs1_val == 134217728,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x8000000; op2val:0x20000
+TEST_CR_OP( c.sub, x10, x11, 0x7fe0000, 0x8000000, 0x20000, x1, 320, x2)
+
+inst_81:
+// rs1_val == 67108864,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4000000; op2val:-0x11
+TEST_CR_OP( c.sub, x10, x11, 0x4000011, 0x4000000, -0x11, x1, 324, x2)
+
+inst_82:
+// rs1_val == 8388608,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x800000; op2val:0x8000000
+TEST_CR_OP( c.sub, x10, x11, 0xf8800000, 0x800000, 0x8000000, x1, 328, x2)
+
+inst_83:
+// rs1_val == 2097152,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x200000; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x200000, 0x200000, 0x0, x1, 332, x2)
+
+inst_84:
+// rs1_val == 1048576,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x100000; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xffffc, 0x100000, 0x4, x1, 336, x2)
+
+inst_85:
+// rs1_val == 524288,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x80000; op2val:0x10000000
+TEST_CR_OP( c.sub, x10, x11, 0xf0080000, 0x80000, 0x10000000, x1, 340, x2)
+
+inst_86:
+// rs1_val == 262144,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x40000; op2val:-0x1
+TEST_CR_OP( c.sub, x10, x11, 0x40001, 0x40000, -0x1, x1, 344, x2)
+
+inst_87:
+// rs1_val == 131072,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x20000; op2val:-0x201
+TEST_CR_OP( c.sub, x10, x11, 0x20201, 0x20000, -0x201, x1, 348, x2)
+
+inst_88:
+// rs1_val == 65536,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x10000; op2val:0x20000000
+TEST_CR_OP( c.sub, x10, x11, 0xe0010000, 0x10000, 0x20000000, x1, 352, x2)
+
+inst_89:
+// rs1_val == 32768,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x8000; op2val:-0x8
+TEST_CR_OP( c.sub, x10, x11, 0x8008, 0x8000, -0x8, x1, 356, x2)
+
+inst_90:
+// rs1_val == 8192,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2000; op2val:-0x10000001
+TEST_CR_OP( c.sub, x10, x11, 0x10002001, 0x2000, -0x10000001, x1, 360, x2)
+
+inst_91:
+// rs1_val == 4096,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x1000; op2val:-0x10000001
+TEST_CR_OP( c.sub, x10, x11, 0x10001001, 0x1000, -0x10000001, x1, 364, x2)
+
+inst_92:
+// rs1_val == 2048,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x800; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x7fb, 0x800, 0x5, x1, 368, x2)
+
+inst_93:
+// rs1_val == 128,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x80; op2val:-0x8
+TEST_CR_OP( c.sub, x10, x11, 0x88, 0x80, -0x8, x1, 372, x2)
+
+inst_94:
+// rs1_val == 16,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x10; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b0d, 0x10, 0xb503, x1, 376, x2)
+
+inst_95:
+// rs1_val == 8,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x8; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x3, 0x8, 0x5, x1, 380, x2)
+
+inst_96:
+// rs1_val == 2, rs1_val==2 and rs2_val==2
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x2, 0x2, x1, 384, x2)
+
+inst_97:
+// rs1_val == 1,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x1; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x9999999b, 0x1, 0x66666666, x1, 388, x2)
+
+inst_98:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0xb505, 0xb505, x1, 392, x2)
+
+inst_99:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x16a08, 0xb505, -0xb503, x1, 396, x2)
+
+inst_100:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x999a4e9e, 0xb505, 0x66666667, x1, 400, x2)
+
+inst_101:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81d1, 0xb505, 0x33333334, x1, 404, x2)
+
+inst_102:
+// rs1_val==46341 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xb4ff, 0xb505, 0x6, x1, 408, x2)
+
+inst_103:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55560a5a, 0xb505, -0x55555555, x1, 412, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5faf, 0xb505, 0x55555556, x1, 416, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xb501, 0xb505, 0x4, x1, 420, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x2, 0xb505, 0xb503, x1, 424, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0xb505, 0xb505, 0x0, x1, 428, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x999a4ea0, 0xb505, 0x66666665, x1, 432, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81d3, 0xb505, 0x33333332, x1, 436, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fb1, 0xb505, 0x55555554, x1, 440, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xb503, 0xb505, 0x2, x1, 444, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0xb505, 0xb504, x1, 448, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x16a09, 0xb505, -0xb504, x1, 452, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x999a4e9f, 0xb505, 0x66666666, x1, 456, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81d2, 0xb505, 0x33333333, x1, 460, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xb500, 0xb505, 0x5, x1, 464, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x55560a5b, 0xb505, -0x55555556, x1, 468, x2)
+
+inst_118:
+// rs1_val==46341 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fb0, 0xb505, 0x55555555, x1, 472, x2)
+
+inst_119:
+// rs1_val==46341 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb505; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xb502, 0xb505, 0x3, x1, 476, x2)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xfffe95f8, -0xb503, 0xb505, x1, 480, x2)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x0, -0xb503, -0xb503, x1, 484, x2)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x9998e496, -0xb503, 0x66666667, x1, 488, x2)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xcccc17c9, -0xb503, 0x33333334, x1, 492, x2)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xffff4af7, -0xb503, 0x6, x1, 496, x2)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x5554a052, -0xb503, -0x55555555, x1, 500, x2)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a7, -0xb503, 0x55555556, x1, 504, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xffff4af9, -0xb503, 0x4, x1, 508, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xfffe95fa, -0xb503, 0xb503, x1, 512, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afd, -0xb503, 0x0, x1, 516, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x9998e498, -0xb503, 0x66666665, x1, 520, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xcccc17cb, -0xb503, 0x33333332, x1, 524, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a9, -0xb503, 0x55555554, x1, 528, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afb, -0xb503, 0x2, x1, 532, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xfffe95f9, -0xb503, 0xb504, x1, 536, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x1, -0xb503, -0xb504, x1, 540, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x9998e497, -0xb503, 0x66666666, x1, 544, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xcccc17ca, -0xb503, 0x33333333, x1, 548, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xffff4af8, -0xb503, 0x5, x1, 552, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x5554a053, -0xb503, -0x55555556, x1, 556, x2)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a8, -0xb503, 0x55555555, x1, 560, x2)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb503; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afa, -0xb503, 0x3, x1, 564, x2)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x6665b162, 0x66666667, 0xb505, x1, 568, x2)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x66671b6a, 0x66666667, -0xb503, x1, 572, x2)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x66666667, 0x66666667, x1, 576, x2)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x33333333, 0x66666667, 0x33333334, x1, 580, x2)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x66666661, 0x66666667, 0x6, x1, 584, x2)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xbbbbbbbc, 0x66666667, -0x55555555, x1, 588, x2)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x11111111, 0x66666667, 0x55555556, x1, 592, x2)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x66666663, 0x66666667, 0x4, x1, 596, x2)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x6665b164, 0x66666667, 0xb503, x1, 600, x2)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x66666667, 0x66666667, 0x0, x1, 604, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x2, 0x66666667, 0x66666665, x1, 608, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x33333335, 0x66666667, 0x33333332, x1, 612, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0x11111113, 0x66666667, 0x55555554, x1, 616, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x66666665, 0x66666667, 0x2, x1, 620, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x6665b163, 0x66666667, 0xb504, x1, 624, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x66671b6b, 0x66666667, -0xb504, x1, 628, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x66666667, 0x66666666, x1, 632, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x33333334, 0x66666667, 0x33333333, x1, 636, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x66666662, 0x66666667, 0x5, x1, 640, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xbbbbbbbd, 0x66666667, -0x55555556, x1, 644, x2)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x11111112, 0x66666667, 0x55555555, x1, 648, x2)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666667; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x66666664, 0x66666667, 0x3, x1, 652, x2)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x33327e2f, 0x33333334, 0xb505, x1, 656, x2)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x3333e837, 0x33333334, -0xb503, x1, 660, x2)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccd, 0x33333334, 0x66666667, x1, 664, x2)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x33333334, 0x33333334, x1, 668, x2)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x3333332e, 0x33333334, 0x6, x1, 672, x2)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x88888889, 0x33333334, -0x55555555, x1, 676, x2)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xddddddde, 0x33333334, 0x55555556, x1, 680, x2)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x33333330, 0x33333334, 0x4, x1, 684, x2)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x33327e31, 0x33333334, 0xb503, x1, 688, x2)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x33333334, 0x33333334, 0x0, x1, 692, x2)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccf, 0x33333334, 0x66666665, x1, 696, x2)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x2, 0x33333334, 0x33333332, x1, 700, x2)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xdddddde0, 0x33333334, 0x55555554, x1, 704, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x33333332, 0x33333334, 0x2, x1, 708, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x33327e30, 0x33333334, 0xb504, x1, 712, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x3333e838, 0x33333334, -0xb504, x1, 716, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0xccccccce, 0x33333334, 0x66666666, x1, 720, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x33333334, 0x33333333, x1, 724, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x3333332f, 0x33333334, 0x5, x1, 728, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x8888888a, 0x33333334, -0x55555556, x1, 732, x2)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xdddddddf, 0x33333334, 0x55555555, x1, 736, x2)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333334; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x33333331, 0x33333334, 0x3, x1, 740, x2)
+
+inst_186:
+// rs1_val==6 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b01, 0x6, 0xb505, x1, 744, x2)
+
+inst_187:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xb509, 0x6, -0xb503, x1, 748, x2)
+
+inst_188:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x9999999f, 0x6, 0x66666667, x1, 752, x2)
+
+inst_189:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd2, 0x6, 0x33333334, x1, 756, x2)
+
+inst_190:
+// rs1_val==6 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x6, 0x6, x1, 760, x2)
+
+inst_191:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x5555555b, 0x6, -0x55555555, x1, 764, x2)
+
+inst_192:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaab0, 0x6, 0x55555556, x1, 768, x2)
+
+inst_193:
+// rs1_val==6 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x2, 0x6, 0x4, x1, 772, x2)
+
+inst_194:
+// rs1_val==6 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b03, 0x6, 0xb503, x1, 776, x2)
+
+inst_195:
+// rs1_val==6 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x6, 0x6, 0x0, x1, 780, x2)
+
+inst_196:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x999999a1, 0x6, 0x66666665, x1, 784, x2)
+
+inst_197:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd4, 0x6, 0x33333332, x1, 788, x2)
+
+inst_198:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaab2, 0x6, 0x55555554, x1, 792, x2)
+
+inst_199:
+// rs1_val==6 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x4, 0x6, 0x2, x1, 796, x2)
+
+inst_200:
+// rs1_val==6 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b02, 0x6, 0xb504, x1, 800, x2)
+
+inst_201:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xb50a, 0x6, -0xb504, x1, 804, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x999999a0, 0x6, 0x66666666, x1, 808, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd3, 0x6, 0x33333333, x1, 812, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x6, 0x5, x1, 816, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x5555555c, 0x6, -0x55555556, x1, 820, x2)
+
+inst_206:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaab1, 0x6, 0x55555555, x1, 824, x2)
+
+inst_207:
+// rs1_val==6 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x6; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x3, 0x6, 0x3, x1, 828, x2)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a6, -0x55555555, 0xb505, x1, 832, x2)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fae, -0x55555555, -0xb503, x1, 836, x2)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x44444444, -0x55555555, 0x66666667, x1, 840, x2)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x77777777, -0x55555555, 0x33333334, x1, 844, x2)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa5, -0x55555555, 0x6, x1, 848, x2)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x0, -0x55555555, -0x55555555, x1, 852, x2)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x55555555, -0x55555555, 0x55555556, x1, 856, x2)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa7, -0x55555555, 0x4, x1, 860, x2)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a8, -0x55555555, 0xb503, x1, 864, x2)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaab, -0x55555555, 0x0, x1, 868, x2)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x44444446, -0x55555555, 0x66666665, x1, 872, x2)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x77777779, -0x55555555, 0x33333332, x1, 876, x2)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0x55555557, -0x55555555, 0x55555554, x1, 880, x2)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa9, -0x55555555, 0x2, x1, 884, x2)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a7, -0x55555555, 0xb504, x1, 888, x2)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5faf, -0x55555555, -0xb504, x1, 892, x2)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x44444445, -0x55555555, 0x66666666, x1, 896, x2)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x77777778, -0x55555555, 0x33333333, x1, 900, x2)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa6, -0x55555555, 0x5, x1, 904, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x1, -0x55555555, -0x55555556, x1, 908, x2)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55555556, -0x55555555, 0x55555555, x1, 912, x2)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa8, -0x55555555, 0x3, x1, 916, x2)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x5554a051, 0x55555556, 0xb505, x1, 920, x2)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x55560a59, 0x55555556, -0xb503, x1, 924, x2)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeeef, 0x55555556, 0x66666667, x1, 928, x2)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x22222222, 0x55555556, 0x33333334, x1, 932, x2)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x55555550, 0x55555556, 0x6, x1, 936, x2)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaab, 0x55555556, -0x55555555, x1, 940, x2)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x55555556, 0x55555556, x1, 944, x2)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x55555552, 0x55555556, 0x4, x1, 948, x2)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x5554a053, 0x55555556, 0xb503, x1, 952, x2)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 956, x2)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeef1, 0x55555556, 0x66666665, x1, 960, x2)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x22222224, 0x55555556, 0x33333332, x1, 964, x2)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0x2, 0x55555556, 0x55555554, x1, 968, x2)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x55555554, 0x55555556, 0x2, x1, 972, x2)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x5554a052, 0x55555556, 0xb504, x1, 976, x2)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x55560a5a, 0x55555556, -0xb504, x1, 980, x2)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeef0, 0x55555556, 0x66666666, x1, 984, x2)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x22222223, 0x55555556, 0x33333333, x1, 988, x2)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x55555551, 0x55555556, 0x5, x1, 992, x2)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaac, 0x55555556, -0x55555556, x1, 996, x2)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x55555556, 0x55555555, x1, 1000, x2)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555556; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x55555553, 0x55555556, 0x3, x1, 1004, x2)
+
+inst_252:
+// rs1_val==4 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xffff4aff, 0x4, 0xb505, x1, 1008, x2)
+
+inst_253:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xb507, 0x4, -0xb503, x1, 1012, x2)
+
+inst_254:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x9999999d, 0x4, 0x66666667, x1, 1016, x2)
+
+inst_255:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd0, 0x4, 0x33333334, x1, 1020, x2)
+
+inst_256:
+// rs1_val==4 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffe, 0x4, 0x6, x1, 1024, x2)
+
+inst_257:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55555559, 0x4, -0x55555555, x1, 1028, x2)
+
+inst_258:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaae, 0x4, 0x55555556, x1, 1032, x2)
+
+inst_259:
+// rs1_val==4 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x4, 0x4, x1, 1036, x2)
+
+inst_260:
+// rs1_val==4 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b01, 0x4, 0xb503, x1, 1040, x2)
+
+inst_261:
+// rs1_val==4 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x4, 0x4, 0x0, x1, 1044, x2)
+
+inst_262:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x9999999f, 0x4, 0x66666665, x1, 1048, x2)
+
+inst_263:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd2, 0x4, 0x33333332, x1, 1052, x2)
+
+inst_264:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaab0, 0x4, 0x55555554, x1, 1056, x2)
+
+inst_265:
+// rs1_val==4 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x2, 0x4, 0x2, x1, 1060, x2)
+
+inst_266:
+// rs1_val==4 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b00, 0x4, 0xb504, x1, 1064, x2)
+
+inst_267:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xb508, 0x4, -0xb504, x1, 1068, x2)
+
+inst_268:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x9999999e, 0x4, 0x66666666, x1, 1072, x2)
+
+inst_269:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd1, 0x4, 0x33333333, x1, 1076, x2)
+
+inst_270:
+// rs1_val==4 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x4, 0x5, x1, 1080, x2)
+
+inst_271:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x5555555a, 0x4, -0x55555556, x1, 1084, x2)
+
+inst_272:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaaf, 0x4, 0x55555555, x1, 1088, x2)
+
+inst_273:
+// rs1_val==4 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x4; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x4, 0x3, x1, 1092, x2)
+
+inst_274:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffe, 0xb503, 0xb505, x1, 1096, x2)
+
+inst_275:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x16a06, 0xb503, -0xb503, x1, 1100, x2)
+
+inst_276:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x999a4e9c, 0xb503, 0x66666667, x1, 1104, x2)
+
+inst_277:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81cf, 0xb503, 0x33333334, x1, 1108, x2)
+
+inst_278:
+// rs1_val==46339 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xb4fd, 0xb503, 0x6, x1, 1112, x2)
+
+inst_279:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55560a58, 0xb503, -0x55555555, x1, 1116, x2)
+
+inst_280:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fad, 0xb503, 0x55555556, x1, 1120, x2)
+
+inst_281:
+// rs1_val==46339 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xb4ff, 0xb503, 0x4, x1, 1124, x2)
+
+inst_282:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0xb503, 0xb503, x1, 1128, x2)
+
+inst_283:
+// rs1_val==46339 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0xb503, 0xb503, 0x0, x1, 1132, x2)
+
+inst_284:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x999a4e9e, 0xb503, 0x66666665, x1, 1136, x2)
+
+inst_285:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81d1, 0xb503, 0x33333332, x1, 1140, x2)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5faf, 0xb503, 0x55555554, x1, 1144, x2)
+
+inst_287:
+// rs1_val==46339 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xb501, 0xb503, 0x2, x1, 1148, x2)
+
+inst_288:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0xb503, 0xb504, x1, 1152, x2)
+
+inst_289:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x16a07, 0xb503, -0xb504, x1, 1156, x2)
+
+inst_290:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x999a4e9d, 0xb503, 0x66666666, x1, 1160, x2)
+
+inst_291:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81d0, 0xb503, 0x33333333, x1, 1164, x2)
+
+inst_292:
+// rs1_val==46339 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xb4fe, 0xb503, 0x5, x1, 1168, x2)
+
+inst_293:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x55560a59, 0xb503, -0x55555556, x1, 1172, x2)
+
+inst_294:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fae, 0xb503, 0x55555555, x1, 1176, x2)
+
+inst_295:
+// rs1_val==46339 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb503; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xb500, 0xb503, 0x3, x1, 1180, x2)
+
+inst_296:
+// rs1_val==0 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afb, 0x0, 0xb505, x1, 1184, x2)
+
+inst_297:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xb503, 0x0, -0xb503, x1, 1188, x2)
+
+inst_298:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x99999999, 0x0, 0x66666667, x1, 1192, x2)
+
+inst_299:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccc, 0x0, 0x33333334, x1, 1196, x2)
+
+inst_300:
+// rs1_val==0 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffa, 0x0, 0x6, x1, 1200, x2)
+
+inst_301:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55555555, 0x0, -0x55555555, x1, 1204, x2)
+
+inst_302:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaaa, 0x0, 0x55555556, x1, 1208, x2)
+
+inst_303:
+// rs1_val==0 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffc, 0x0, 0x4, x1, 1212, x2)
+
+inst_304:
+// rs1_val==0 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afd, 0x0, 0xb503, x1, 1216, x2)
+
+inst_305:
+// rs1_val==0 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x0, 0x0, x1, 1220, x2)
+
+inst_306:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x9999999b, 0x0, 0x66666665, x1, 1224, x2)
+
+inst_307:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xccccccce, 0x0, 0x33333332, x1, 1228, x2)
+
+inst_308:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaac, 0x0, 0x55555554, x1, 1232, x2)
+
+inst_309:
+// rs1_val==0 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffe, 0x0, 0x2, x1, 1236, x2)
+
+inst_310:
+// rs1_val==0 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afc, 0x0, 0xb504, x1, 1240, x2)
+
+inst_311:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xb504, 0x0, -0xb504, x1, 1244, x2)
+
+inst_312:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x9999999a, 0x0, 0x66666666, x1, 1248, x2)
+
+inst_313:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccd, 0x0, 0x33333333, x1, 1252, x2)
+
+inst_314:
+// rs1_val==0 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffb, 0x0, 0x5, x1, 1256, x2)
+
+inst_315:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x55555556, 0x0, -0x55555556, x1, 1260, x2)
+
+inst_316:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaab, 0x0, 0x55555555, x1, 1264, x2)
+
+inst_317:
+// rs1_val==0 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x0; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffd, 0x0, 0x3, x1, 1268, x2)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x6665b160, 0x66666665, 0xb505, x1, 1272, x2)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x66671b68, 0x66666665, -0xb503, x1, 1276, x2)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffe, 0x66666665, 0x66666667, x1, 1280, x2)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x33333331, 0x66666665, 0x33333334, x1, 1284, x2)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x6666665f, 0x66666665, 0x6, x1, 1288, x2)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xbbbbbbba, 0x66666665, -0x55555555, x1, 1292, x2)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x1111110f, 0x66666665, 0x55555556, x1, 1296, x2)
+
+inst_325:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x33333333, 0x33333333, 0x0, x1, 1300, x2)
+
+inst_326:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0xccccccce, 0x33333333, 0x66666665, x1, 1304, x2)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x33333333, 0x33333332, x1, 1308, x2)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xdddddddf, 0x33333333, 0x55555554, x1, 1312, x2)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x33333331, 0x33333333, 0x2, x1, 1316, x2)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x33327e2f, 0x33333333, 0xb504, x1, 1320, x2)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x3333e837, 0x33333333, -0xb504, x1, 1324, x2)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccd, 0x33333333, 0x66666666, x1, 1328, x2)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x33333333, 0x33333333, x1, 1332, x2)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x3333332e, 0x33333333, 0x5, x1, 1336, x2)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x88888889, 0x33333333, -0x55555556, x1, 1340, x2)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xddddddde, 0x33333333, 0x55555555, x1, 1344, x2)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x33333330, 0x33333333, 0x3, x1, 1348, x2)
+
+inst_338:
+// rs1_val==5 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b00, 0x5, 0xb505, x1, 1352, x2)
+
+inst_339:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xb508, 0x5, -0xb503, x1, 1356, x2)
+
+inst_340:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x9999999e, 0x5, 0x66666667, x1, 1360, x2)
+
+inst_341:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd1, 0x5, 0x33333334, x1, 1364, x2)
+
+inst_342:
+// rs1_val==5 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x5, 0x6, x1, 1368, x2)
+
+inst_343:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x5555555a, 0x5, -0x55555555, x1, 1372, x2)
+
+inst_344:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaaf, 0x5, 0x55555556, x1, 1376, x2)
+
+inst_345:
+// rs1_val==5 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x5, 0x4, x1, 1380, x2)
+
+inst_346:
+// rs1_val==5 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b02, 0x5, 0xb503, x1, 1384, x2)
+
+inst_347:
+// rs1_val==5 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x5, 0x5, 0x0, x1, 1388, x2)
+
+inst_348:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x999999a0, 0x5, 0x66666665, x1, 1392, x2)
+
+inst_349:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd3, 0x5, 0x33333332, x1, 1396, x2)
+
+inst_350:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaab1, 0x5, 0x55555554, x1, 1400, x2)
+
+inst_351:
+// rs1_val==5 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x3, 0x5, 0x2, x1, 1404, x2)
+
+inst_352:
+// rs1_val==5 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b01, 0x5, 0xb504, x1, 1408, x2)
+
+inst_353:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xb509, 0x5, -0xb504, x1, 1412, x2)
+
+inst_354:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x9999999f, 0x5, 0x66666666, x1, 1416, x2)
+
+inst_355:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd2, 0x5, 0x33333333, x1, 1420, x2)
+
+inst_356:
+// rs1_val==5 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x5, 0x5, x1, 1424, x2)
+
+inst_357:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x5555555b, 0x5, -0x55555556, x1, 1428, x2)
+
+inst_358:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaab0, 0x5, 0x55555555, x1, 1432, x2)
+
+inst_359:
+// rs1_val==5 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x5; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x2, 0x5, 0x3, x1, 1436, x2)
+
+inst_360:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a5, -0x55555556, 0xb505, x1, 1440, x2)
+
+inst_361:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fad, -0x55555556, -0xb503, x1, 1444, x2)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x44444443, -0x55555556, 0x66666667, x1, 1448, x2)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x77777776, -0x55555556, 0x33333334, x1, 1452, x2)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa4, -0x55555556, 0x6, x1, 1456, x2)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, -0x55555556, -0x55555555, x1, 1460, x2)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x55555554, -0x55555556, 0x55555556, x1, 1464, x2)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa6, -0x55555556, 0x4, x1, 1468, x2)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a7, -0x55555556, 0xb503, x1, 1472, x2)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1476, x2)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x44444445, -0x55555556, 0x66666665, x1, 1480, x2)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x77777778, -0x55555556, 0x33333332, x1, 1484, x2)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0x55555556, -0x55555556, 0x55555554, x1, 1488, x2)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa8, -0x55555556, 0x2, x1, 1492, x2)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a6, -0x55555556, 0xb504, x1, 1496, x2)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fae, -0x55555556, -0xb504, x1, 1500, x2)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x44444444, -0x55555556, 0x66666666, x1, 1504, x2)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x77777777, -0x55555556, 0x33333333, x1, 1508, x2)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa5, -0x55555556, 0x5, x1, 1512, x2)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x0, -0x55555556, -0x55555556, x1, 1516, x2)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55555555, -0x55555556, 0x55555555, x1, 1520, x2)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa7, -0x55555556, 0x3, x1, 1524, x2)
+
+inst_382:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x5554a050, 0x55555555, 0xb505, x1, 1528, x2)
+
+inst_383:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x55560a58, 0x55555555, -0xb503, x1, 1532, x2)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeeee, 0x55555555, 0x66666667, x1, 1536, x2)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x22222221, 0x55555555, 0x33333334, x1, 1540, x2)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x5555554f, 0x55555555, 0x6, x1, 1544, x2)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaaa, 0x55555555, -0x55555555, x1, 1548, x2)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x55555555, 0x55555556, x1, 1552, x2)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x55555551, 0x55555555, 0x4, x1, 1556, x2)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x5554a052, 0x55555555, 0xb503, x1, 1560, x2)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x55555555, 0x55555555, 0x0, x1, 1564, x2)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeef0, 0x55555555, 0x66666665, x1, 1568, x2)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x22222223, 0x55555555, 0x33333332, x1, 1572, x2)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x55555555, 0x55555554, x1, 1576, x2)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x55555553, 0x55555555, 0x2, x1, 1580, x2)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x5554a051, 0x55555555, 0xb504, x1, 1584, x2)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x55560a59, 0x55555555, -0xb504, x1, 1588, x2)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeeef, 0x55555555, 0x66666666, x1, 1592, x2)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x22222222, 0x55555555, 0x33333333, x1, 1596, x2)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x55555550, 0x55555555, 0x5, x1, 1600, x2)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaab, 0x55555555, -0x55555556, x1, 1604, x2)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x55555555, 0x55555555, x1, 1608, x2)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555555; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x55555552, 0x55555555, 0x3, x1, 1612, x2)
+
+inst_404:
+// rs1_val==3 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afe, 0x3, 0xb505, x1, 1616, x2)
+
+inst_405:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xb506, 0x3, -0xb503, x1, 1620, x2)
+
+inst_406:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x9999999c, 0x3, 0x66666667, x1, 1624, x2)
+
+inst_407:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccf, 0x3, 0x33333334, x1, 1628, x2)
+
+inst_408:
+// rs1_val==3 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffd, 0x3, 0x6, x1, 1632, x2)
+
+inst_409:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55555558, 0x3, -0x55555555, x1, 1636, x2)
+
+inst_410:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaad, 0x3, 0x55555556, x1, 1640, x2)
+
+inst_411:
+// rs1_val==3 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x3, 0x4, x1, 1644, x2)
+
+inst_412:
+// rs1_val==3 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xffff4b00, 0x3, 0xb503, x1, 1648, x2)
+
+inst_413:
+// rs1_val==3 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x3, 0x3, 0x0, x1, 1652, x2)
+
+inst_414:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x9999999e, 0x3, 0x66666665, x1, 1656, x2)
+
+inst_415:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd1, 0x3, 0x33333332, x1, 1660, x2)
+
+inst_416:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaaf, 0x3, 0x55555554, x1, 1664, x2)
+
+inst_417:
+// rs1_val==3 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x3, 0x2, x1, 1668, x2)
+
+inst_418:
+// rs1_val==3 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xffff4aff, 0x3, 0xb504, x1, 1672, x2)
+
+inst_419:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xb507, 0x3, -0xb504, x1, 1676, x2)
+
+inst_420:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x9999999d, 0x3, 0x66666666, x1, 1680, x2)
+
+inst_421:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd0, 0x3, 0x33333333, x1, 1684, x2)
+
+inst_422:
+// rs1_val==3 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffe, 0x3, 0x5, x1, 1688, x2)
+
+inst_423:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x55555559, 0x3, -0x55555556, x1, 1692, x2)
+
+inst_424:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaae, 0x3, 0x55555555, x1, 1696, x2)
+
+inst_425:
+// rs1_val==3 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x3; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x3, 0x3, x1, 1700, x2)
+
+inst_426:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x66666661, 0x66666665, 0x4, x1, 1704, x2)
+
+inst_427:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x6665b162, 0x66666665, 0xb503, x1, 1708, x2)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x66666665, 0x66666665, 0x0, x1, 1712, x2)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x66666665, 0x66666665, x1, 1716, x2)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x33333333, 0x66666665, 0x33333332, x1, 1720, x2)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0x11111111, 0x66666665, 0x55555554, x1, 1724, x2)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x66666663, 0x66666665, 0x2, x1, 1728, x2)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x6665b161, 0x66666665, 0xb504, x1, 1732, x2)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x66671b69, 0x66666665, -0xb504, x1, 1736, x2)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x66666665, 0x66666666, x1, 1740, x2)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x33333332, 0x66666665, 0x33333333, x1, 1744, x2)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x66666660, 0x66666665, 0x5, x1, 1748, x2)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xbbbbbbbb, 0x66666665, -0x55555556, x1, 1752, x2)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x11111110, 0x66666665, 0x55555555, x1, 1756, x2)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666665; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x66666662, 0x66666665, 0x3, x1, 1760, x2)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x33327e2d, 0x33333332, 0xb505, x1, 1764, x2)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x3333e835, 0x33333332, -0xb503, x1, 1768, x2)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccb, 0x33333332, 0x66666667, x1, 1772, x2)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffe, 0x33333332, 0x33333334, x1, 1776, x2)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x3333332c, 0x33333332, 0x6, x1, 1780, x2)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x88888887, 0x33333332, -0x55555555, x1, 1784, x2)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xdddddddc, 0x33333332, 0x55555556, x1, 1788, x2)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x3333332e, 0x33333332, 0x4, x1, 1792, x2)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x33327e2f, 0x33333332, 0xb503, x1, 1796, x2)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x33333332, 0x33333332, 0x0, x1, 1800, x2)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccd, 0x33333332, 0x66666665, x1, 1804, x2)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x33333332, 0x33333332, x1, 1808, x2)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xddddddde, 0x33333332, 0x55555554, x1, 1812, x2)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x33333330, 0x33333332, 0x2, x1, 1816, x2)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x33327e2e, 0x33333332, 0xb504, x1, 1820, x2)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x3333e836, 0x33333332, -0xb504, x1, 1824, x2)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccc, 0x33333332, 0x66666666, x1, 1828, x2)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x33333332, 0x33333333, x1, 1832, x2)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x3333332d, 0x33333332, 0x5, x1, 1836, x2)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x88888888, 0x33333332, -0x55555556, x1, 1840, x2)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xdddddddd, 0x33333332, 0x55555555, x1, 1844, x2)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333332; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x3333332f, 0x33333332, 0x3, x1, 1848, x2)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x5554a04f, 0x55555554, 0xb505, x1, 1852, x2)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x55560a57, 0x55555554, -0xb503, x1, 1856, x2)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeeed, 0x55555554, 0x66666667, x1, 1860, x2)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x22222220, 0x55555554, 0x33333334, x1, 1864, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x5555554e, 0x55555554, 0x6, x1, 1868, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaa9, 0x55555554, -0x55555555, x1, 1872, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffe, 0x55555554, 0x55555556, x1, 1876, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x55555550, 0x55555554, 0x4, x1, 1880, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x5554a051, 0x55555554, 0xb503, x1, 1884, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 1888, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeeef, 0x55555554, 0x66666665, x1, 1892, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x22222222, 0x55555554, 0x33333332, x1, 1896, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x55555554, 0x55555554, x1, 1900, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x55555552, 0x55555554, 0x2, x1, 1904, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x5554a050, 0x55555554, 0xb504, x1, 1908, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x55560a58, 0x55555554, -0xb504, x1, 1912, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0xeeeeeeee, 0x55555554, 0x66666666, x1, 1916, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x22222221, 0x55555554, 0x33333333, x1, 1920, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x5555554f, 0x55555554, 0x5, x1, 1924, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaaa, 0x55555554, -0x55555556, x1, 1928, x2)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x55555554, 0x55555555, x1, 1932, x2)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x55555554; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x55555551, 0x55555554, 0x3, x1, 1936, x2)
+
+inst_485:
+// rs1_val==2 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afd, 0x2, 0xb505, x1, 1940, x2)
+
+inst_486:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xb505, 0x2, -0xb503, x1, 1944, x2)
+
+inst_487:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x9999999b, 0x2, 0x66666667, x1, 1948, x2)
+
+inst_488:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xccccccce, 0x2, 0x33333334, x1, 1952, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffc, 0x2, 0x6, x1, 1956, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55555557, 0x2, -0x55555555, x1, 1960, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaac, 0x2, 0x55555556, x1, 1964, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffe, 0x2, 0x4, x1, 1968, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xffff4aff, 0x2, 0xb503, x1, 1972, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x2, 0x2, 0x0, x1, 1976, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x9999999d, 0x2, 0x66666665, x1, 1980, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xccccccd0, 0x2, 0x33333332, x1, 1984, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaae, 0x2, 0x55555554, x1, 1988, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afe, 0x2, 0xb504, x1, 1992, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xb506, 0x2, -0xb504, x1, 1996, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x9999999c, 0x2, 0x66666666, x1, 2000, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccf, 0x2, 0x33333333, x1, 2004, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xfffffffd, 0x2, 0x5, x1, 2008, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x55555558, 0x2, -0x55555556, x1, 2012, x2)
+
+inst_504:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaaaaaad, 0x2, 0x55555555, x1, 2016, x2)
+
+inst_505:
+// rs1_val==2 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x2; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x2, 0x3, x1, 2020, x2)
+
+inst_506:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0xb504, 0xb505, x1, 2024, x2)
+
+inst_507:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x16a07, 0xb504, -0xb503, x1, 2028, x2)
+
+inst_508:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x999a4e9d, 0xb504, 0x66666667, x1, 2032, x2)
+
+inst_509:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81d0, 0xb504, 0x33333334, x1, 2036, x2)
+
+inst_510:
+// rs1_val==46340 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xb4fe, 0xb504, 0x6, x1, 2040, x2)
+
+inst_511:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x55560a59, 0xb504, -0x55555555, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_512:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fae, 0xb504, 0x55555556, x1, 0, x2)
+
+inst_513:
+// rs1_val==46340 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0xb500, 0xb504, 0x4, x1, 4, x2)
+
+inst_514:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0xb504, 0xb503, x1, 8, x2)
+
+inst_515:
+// rs1_val==46340 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0xb504, 0xb504, 0x0, x1, 12, x2)
+
+inst_516:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x999a4e9f, 0xb504, 0x66666665, x1, 16, x2)
+
+inst_517:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81d2, 0xb504, 0x33333332, x1, 20, x2)
+
+inst_518:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5fb0, 0xb504, 0x55555554, x1, 24, x2)
+
+inst_519:
+// rs1_val==46340 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xb502, 0xb504, 0x2, x1, 28, x2)
+
+inst_520:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0xb504, 0xb504, x1, 32, x2)
+
+inst_521:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x16a08, 0xb504, -0xb504, x1, 36, x2)
+
+inst_522:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x999a4e9e, 0xb504, 0x66666666, x1, 40, x2)
+
+inst_523:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xcccd81d1, 0xb504, 0x33333333, x1, 44, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xb4ff, 0xb504, 0x5, x1, 48, x2)
+
+inst_525:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x55560a5a, 0xb504, -0x55555556, x1, 52, x2)
+
+inst_526:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaab5faf, 0xb504, 0x55555555, x1, 56, x2)
+
+inst_527:
+// rs1_val==46340 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0xb504; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xb501, 0xb504, 0x3, x1, 60, x2)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0xfffe95f7, -0xb504, 0xb505, x1, 64, x2)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, -0xb504, -0xb503, x1, 68, x2)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0x9998e495, -0xb504, 0x66666667, x1, 72, x2)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xcccc17c8, -0xb504, 0x33333334, x1, 76, x2)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0xffff4af6, -0xb504, 0x6, x1, 80, x2)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x5554a051, -0xb504, -0x55555555, x1, 84, x2)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a6, -0xb504, 0x55555556, x1, 88, x2)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0xfffe95f9, -0xb504, 0xb503, x1, 92, x2)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afc, -0xb504, 0x0, x1, 96, x2)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x9998e497, -0xb504, 0x66666665, x1, 100, x2)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0xcccc17ca, -0xb504, 0x33333332, x1, 104, x2)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a8, -0xb504, 0x55555554, x1, 108, x2)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0xffff4afa, -0xb504, 0x2, x1, 112, x2)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0xfffe95f8, -0xb504, 0xb504, x1, 116, x2)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x0, -0xb504, -0xb504, x1, 120, x2)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x9998e496, -0xb504, 0x66666666, x1, 124, x2)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0xcccc17c9, -0xb504, 0x33333333, x1, 128, x2)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0xffff4af7, -0xb504, 0x5, x1, 132, x2)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x5554a052, -0xb504, -0x55555556, x1, 136, x2)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xaaa9f5a7, -0xb504, 0x55555555, x1, 140, x2)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0xb504; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0xffff4af9, -0xb504, 0x3, x1, 144, x2)
+
+inst_549:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x6665b161, 0x66666666, 0xb505, x1, 148, x2)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x66671b69, 0x66666666, -0xb503, x1, 152, x2)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x66666666, 0x66666667, x1, 156, x2)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0x33333332, 0x66666666, 0x33333334, x1, 160, x2)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x66666660, 0x66666666, 0x6, x1, 164, x2)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0xbbbbbbbb, 0x66666666, -0x55555555, x1, 168, x2)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0x11111110, 0x66666666, 0x55555556, x1, 172, x2)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x66666662, 0x66666666, 0x4, x1, 176, x2)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x6665b163, 0x66666666, 0xb503, x1, 180, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x0
+TEST_CR_OP( c.sub, x10, x11, 0x66666666, 0x66666666, 0x0, x1, 184, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665
+TEST_CR_OP( c.sub, x10, x11, 0x1, 0x66666666, 0x66666665, x1, 188, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332
+TEST_CR_OP( c.sub, x10, x11, 0x33333334, 0x66666666, 0x33333332, x1, 192, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554
+TEST_CR_OP( c.sub, x10, x11, 0x11111112, 0x66666666, 0x55555554, x1, 196, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x2
+TEST_CR_OP( c.sub, x10, x11, 0x66666664, 0x66666666, 0x2, x1, 200, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x6665b162, 0x66666666, 0xb504, x1, 204, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504
+TEST_CR_OP( c.sub, x10, x11, 0x66671b6a, 0x66666666, -0xb504, x1, 208, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666
+TEST_CR_OP( c.sub, x10, x11, 0x0, 0x66666666, 0x66666666, x1, 212, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333
+TEST_CR_OP( c.sub, x10, x11, 0x33333333, 0x66666666, 0x33333333, x1, 216, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x5
+TEST_CR_OP( c.sub, x10, x11, 0x66666661, 0x66666666, 0x5, x1, 220, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xbbbbbbbc, 0x66666666, -0x55555556, x1, 224, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x11111111, 0x66666666, 0x55555555, x1, 228, x2)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x66666666; op2val:0x3
+TEST_CR_OP( c.sub, x10, x11, 0x66666663, 0x66666666, 0x3, x1, 232, x2)
+
+inst_571:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505
+TEST_CR_OP( c.sub, x10, x11, 0x33327e2e, 0x33333333, 0xb505, x1, 236, x2)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x3333e836, 0x33333333, -0xb503, x1, 240, x2)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667
+TEST_CR_OP( c.sub, x10, x11, 0xcccccccc, 0x33333333, 0x66666667, x1, 244, x2)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334
+TEST_CR_OP( c.sub, x10, x11, 0xffffffff, 0x33333333, 0x33333334, x1, 248, x2)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x6
+TEST_CR_OP( c.sub, x10, x11, 0x3333332d, 0x33333333, 0x6, x1, 252, x2)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555
+TEST_CR_OP( c.sub, x10, x11, 0x88888888, 0x33333333, -0x55555555, x1, 256, x2)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556
+TEST_CR_OP( c.sub, x10, x11, 0xdddddddd, 0x33333333, 0x55555556, x1, 260, x2)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0x4
+TEST_CR_OP( c.sub, x10, x11, 0x3333332f, 0x33333333, 0x4, x1, 264, x2)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: c.sub; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503
+TEST_CR_OP( c.sub, x10, x11, 0x33327e30, 0x33333333, 0xb503, x1, 268, x2)
+
+inst_580:
+// rs2_val == 2147483647, rs1_val == -257, rs2_val == (2**(xlen-1)-1), rs2_val > 0
+// opcode: c.sub; op1:x10; op2:x11; op1val:-0x101; op2val:0x7fffffff
+TEST_CR_OP( c.sub, x10, x11, 0x7fffff00, -0x101, 0x7fffffff, x1, 272, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 69*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csw-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csw-01.S
new file mode 100644
index 000000000..addb0aaa6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/csw-01.S
@@ -0,0 +1,410 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.sw instruction of the RISC-V C extension for the csw covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",csw)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rs2, rs1==x15, rs2==x14, imm_val == 0, rs2_val == -16385
+// opcode:c.sw; op1:x15; op2:x14; op2val:-0x4001; immval:0x0
+TEST_STORE(x1,x2,0,x15,x14,-0x4001,0x0,0,c.sw,0)
+
+inst_1:
+// rs1==x11, rs2==x10, rs2_val == 2147483647, rs2_val == (2**(xlen-1)-1), imm_val > 0
+// opcode:c.sw; op1:x11; op2:x10; op2val:0x7fffffff; immval:0x14
+TEST_STORE(x1,x2,0,x11,x10,0x7fffffff,0x14,4,c.sw,0)
+
+inst_2:
+// rs1==x13, rs2==x8, rs2_val == -1073741825,
+// opcode:c.sw; op1:x13; op2:x8; op2val:-0x40000001; immval:0x14
+TEST_STORE(x1,x2,0,x13,x8,-0x40000001,0x14,8,c.sw,0)
+
+inst_3:
+// rs1==x9, rs2==x13, rs2_val == -536870913,
+// opcode:c.sw; op1:x9; op2:x13; op2val:-0x20000001; immval:0x24
+TEST_STORE(x1,x2,0,x9,x13,-0x20000001,0x24,12,c.sw,0)
+
+inst_4:
+// rs1==x10, rs2==x12, rs2_val == -268435457, imm_val == 32
+// opcode:c.sw; op1:x10; op2:x12; op2val:-0x10000001; immval:0x20
+TEST_STORE(x1,x2,0,x10,x12,-0x10000001,0x20,16,c.sw,0)
+
+inst_5:
+// rs1==x14, rs2==x15, rs2_val == -134217729,
+// opcode:c.sw; op1:x14; op2:x15; op2val:-0x8000001; immval:0x4c
+TEST_STORE(x1,x2,0,x14,x15,-0x8000001,0x4c,20,c.sw,0)
+
+inst_6:
+// rs1==x8, rs2==x9, rs2_val == -67108865,
+// opcode:c.sw; op1:x8; op2:x9; op2val:-0x4000001; immval:0x48
+TEST_STORE(x1,x2,0,x8,x9,-0x4000001,0x48,24,c.sw,0)
+
+inst_7:
+// rs1==x12, rs2==x11, rs2_val == -33554433, imm_val == 84
+// opcode:c.sw; op1:x12; op2:x11; op2val:-0x2000001; immval:0x54
+TEST_STORE(x1,x2,0,x12,x11,-0x2000001,0x54,28,c.sw,0)
+
+inst_8:
+// rs2_val == -16777217,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x1000001; immval:0x7c
+TEST_STORE(x1,x2,0,x10,x11,-0x1000001,0x7c,32,c.sw,0)
+
+inst_9:
+// rs2_val == -8388609, imm_val == 4
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x800001; immval:0x4
+TEST_STORE(x1,x2,0,x10,x11,-0x800001,0x4,36,c.sw,0)
+
+inst_10:
+// rs2_val == -4194305, imm_val == 60
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x400001; immval:0x3c
+TEST_STORE(x1,x2,0,x10,x11,-0x400001,0x3c,40,c.sw,0)
+
+inst_11:
+// rs2_val == -2097153,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x200001; immval:0x30
+TEST_STORE(x1,x2,0,x10,x11,-0x200001,0x30,44,c.sw,0)
+
+inst_12:
+// rs2_val == -1048577,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x100001; immval:0x7c
+TEST_STORE(x1,x2,0,x10,x11,-0x100001,0x7c,48,c.sw,0)
+
+inst_13:
+// rs2_val == -524289,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x80001; immval:0x18
+TEST_STORE(x1,x2,0,x10,x11,-0x80001,0x18,52,c.sw,0)
+
+inst_14:
+// rs2_val == -262145, imm_val == 40
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x40001; immval:0x28
+TEST_STORE(x1,x2,0,x10,x11,-0x40001,0x28,56,c.sw,0)
+
+inst_15:
+// rs2_val == -131073,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x20001; immval:0x7c
+TEST_STORE(x1,x2,0,x10,x11,-0x20001,0x7c,60,c.sw,0)
+
+inst_16:
+// rs2_val == -65537,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x10001; immval:0x14
+TEST_STORE(x1,x2,0,x10,x11,-0x10001,0x14,64,c.sw,0)
+
+inst_17:
+// rs2_val == -32769, imm_val == 64
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x8001; immval:0x40
+TEST_STORE(x1,x2,0,x10,x11,-0x8001,0x40,68,c.sw,0)
+
+inst_18:
+// rs2_val == -8193,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x2001; immval:0x0
+TEST_STORE(x1,x2,0,x10,x11,-0x2001,0x0,72,c.sw,0)
+
+inst_19:
+// rs2_val == -4097,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x1001; immval:0x48
+TEST_STORE(x1,x2,0,x10,x11,-0x1001,0x48,76,c.sw,0)
+
+inst_20:
+// rs2_val == -2049,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x801; immval:0x24
+TEST_STORE(x1,x2,0,x10,x11,-0x801,0x24,80,c.sw,0)
+
+inst_21:
+// rs2_val == -1025,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x401; immval:0x28
+TEST_STORE(x1,x2,0,x10,x11,-0x401,0x28,84,c.sw,0)
+
+inst_22:
+// rs2_val == -513, imm_val == 120
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x201; immval:0x78
+TEST_STORE(x1,x2,0,x10,x11,-0x201,0x78,88,c.sw,0)
+
+inst_23:
+// rs2_val == -257,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x101; immval:0x24
+TEST_STORE(x1,x2,0,x10,x11,-0x101,0x24,92,c.sw,0)
+
+inst_24:
+// rs2_val == -129,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x81; immval:0x4c
+TEST_STORE(x1,x2,0,x10,x11,-0x81,0x4c,96,c.sw,0)
+
+inst_25:
+// rs2_val == -65,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x41; immval:0x14
+TEST_STORE(x1,x2,0,x10,x11,-0x41,0x14,100,c.sw,0)
+
+inst_26:
+// rs2_val == -33,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x21; immval:0x28
+TEST_STORE(x1,x2,0,x10,x11,-0x21,0x28,104,c.sw,0)
+
+inst_27:
+// rs2_val == -17,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x11; immval:0x34
+TEST_STORE(x1,x2,0,x10,x11,-0x11,0x34,108,c.sw,0)
+
+inst_28:
+// rs2_val == -9,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x9; immval:0x28
+TEST_STORE(x1,x2,0,x10,x11,-0x9,0x28,112,c.sw,0)
+
+inst_29:
+// rs2_val == -5,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x5; immval:0xc
+TEST_STORE(x1,x2,0,x10,x11,-0x5,0xc,116,c.sw,0)
+
+inst_30:
+// rs2_val == -3, imm_val == 108
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x3; immval:0x6c
+TEST_STORE(x1,x2,0,x10,x11,-0x3,0x6c,120,c.sw,0)
+
+inst_31:
+// rs2_val == -2, imm_val == 92
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x2; immval:0x5c
+TEST_STORE(x1,x2,0,x10,x11,-0x2,0x5c,124,c.sw,0)
+
+inst_32:
+// imm_val == 116, rs2_val == 32768
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x8000; immval:0x74
+TEST_STORE(x1,x2,0,x10,x11,0x8000,0x74,128,c.sw,0)
+
+inst_33:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x80000000; immval:0x7c
+TEST_STORE(x1,x2,0,x10,x11,-0x80000000,0x7c,132,c.sw,0)
+
+inst_34:
+// rs2_val == 1073741824,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x40000000; immval:0x38
+TEST_STORE(x1,x2,0,x10,x11,0x40000000,0x38,136,c.sw,0)
+
+inst_35:
+// rs2_val == 536870912,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x20000000; immval:0x7c
+TEST_STORE(x1,x2,0,x10,x11,0x20000000,0x7c,140,c.sw,0)
+
+inst_36:
+// rs2_val == 268435456,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x10000000; immval:0x1c
+TEST_STORE(x1,x2,0,x10,x11,0x10000000,0x1c,144,c.sw,0)
+
+inst_37:
+// rs2_val == 134217728,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x8000000; immval:0x5c
+TEST_STORE(x1,x2,0,x10,x11,0x8000000,0x5c,148,c.sw,0)
+
+inst_38:
+// rs2_val == 32,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x20; immval:0x2c
+TEST_STORE(x1,x2,0,x10,x11,0x20,0x2c,152,c.sw,0)
+
+inst_39:
+// rs2_val == 16,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x10; immval:0x30
+TEST_STORE(x1,x2,0,x10,x11,0x10,0x30,156,c.sw,0)
+
+inst_40:
+// rs2_val == 8,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x8; immval:0x24
+TEST_STORE(x1,x2,0,x10,x11,0x8,0x24,160,c.sw,0)
+
+inst_41:
+// rs2_val == 4,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x4; immval:0x7c
+TEST_STORE(x1,x2,0,x10,x11,0x4,0x7c,164,c.sw,0)
+
+inst_42:
+// rs2_val == 2,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x2; immval:0x34
+TEST_STORE(x1,x2,0,x10,x11,0x2,0x34,168,c.sw,0)
+
+inst_43:
+// rs2_val == 1,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x1; immval:0x54
+TEST_STORE(x1,x2,0,x10,x11,0x1,0x54,172,c.sw,0)
+
+inst_44:
+// imm_val == 16,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x100001; immval:0x10
+TEST_STORE(x1,x2,0,x10,x11,-0x100001,0x10,176,c.sw,0)
+
+inst_45:
+// imm_val == 8, rs2_val == 524288
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x80000; immval:0x8
+TEST_STORE(x1,x2,0,x10,x11,0x80000,0x8,180,c.sw,0)
+
+inst_46:
+// rs2_val == -1431655766,
+// opcode:c.sw; op1:x10; op2:x11; op2val:-0x55555556; immval:0x3c
+TEST_STORE(x1,x2,0,x10,x11,-0x55555556,0x3c,184,c.sw,0)
+
+inst_47:
+// rs2_val == 1431655765,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x55555555; immval:0x10
+TEST_STORE(x1,x2,0,x10,x11,0x55555555,0x10,188,c.sw,0)
+
+inst_48:
+// rs2_val == 0,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x0; immval:0x38
+TEST_STORE(x1,x2,0,x10,x11,0x0,0x38,192,c.sw,0)
+
+inst_49:
+// rs2_val == 67108864,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x4000000; immval:0xc
+TEST_STORE(x1,x2,0,x10,x11,0x4000000,0xc,196,c.sw,0)
+
+inst_50:
+// rs2_val == 33554432,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x2000000; immval:0x3c
+TEST_STORE(x1,x2,0,x10,x11,0x2000000,0x3c,200,c.sw,0)
+
+inst_51:
+// rs2_val == 16777216,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x1000000; immval:0x20
+TEST_STORE(x1,x2,0,x10,x11,0x1000000,0x20,204,c.sw,0)
+
+inst_52:
+// rs2_val == 8388608,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x800000; immval:0x10
+TEST_STORE(x1,x2,0,x10,x11,0x800000,0x10,208,c.sw,0)
+
+inst_53:
+// rs2_val == 4194304,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x400000; immval:0x0
+TEST_STORE(x1,x2,0,x10,x11,0x400000,0x0,212,c.sw,0)
+
+inst_54:
+// rs2_val == 2097152,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x200000; immval:0x24
+TEST_STORE(x1,x2,0,x10,x11,0x200000,0x24,216,c.sw,0)
+
+inst_55:
+// rs2_val == 1048576,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x100000; immval:0x34
+TEST_STORE(x1,x2,0,x10,x11,0x100000,0x34,220,c.sw,0)
+
+inst_56:
+// rs2_val == 262144,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x40000; immval:0x14
+TEST_STORE(x1,x2,0,x10,x11,0x40000,0x14,224,c.sw,0)
+
+inst_57:
+// rs2_val == 131072,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x20000; immval:0x20
+TEST_STORE(x1,x2,0,x10,x11,0x20000,0x20,228,c.sw,0)
+
+inst_58:
+// rs2_val == 65536,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x10000; immval:0x44
+TEST_STORE(x1,x2,0,x10,x11,0x10000,0x44,232,c.sw,0)
+
+inst_59:
+// rs2_val == 16384,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x4000; immval:0x20
+TEST_STORE(x1,x2,0,x10,x11,0x4000,0x20,236,c.sw,0)
+
+inst_60:
+// rs2_val == 8192,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x2000; immval:0x78
+TEST_STORE(x1,x2,0,x10,x11,0x2000,0x78,240,c.sw,0)
+
+inst_61:
+// rs2_val == 4096,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x1000; immval:0x7c
+TEST_STORE(x1,x2,0,x10,x11,0x1000,0x7c,244,c.sw,0)
+
+inst_62:
+// rs2_val == 2048,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x800; immval:0x6c
+TEST_STORE(x1,x2,0,x10,x11,0x800,0x6c,248,c.sw,0)
+
+inst_63:
+// rs2_val == 1024,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x400; immval:0x4c
+TEST_STORE(x1,x2,0,x10,x11,0x400,0x4c,252,c.sw,0)
+
+inst_64:
+// rs2_val == 512,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x200; immval:0x5c
+TEST_STORE(x1,x2,0,x10,x11,0x200,0x5c,256,c.sw,0)
+
+inst_65:
+// rs2_val == 256,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x100; immval:0x28
+TEST_STORE(x1,x2,0,x10,x11,0x100,0x28,260,c.sw,0)
+
+inst_66:
+// rs2_val == 128,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x80; immval:0x78
+TEST_STORE(x1,x2,0,x10,x11,0x80,0x78,264,c.sw,0)
+
+inst_67:
+// rs2_val == 64,
+// opcode:c.sw; op1:x10; op2:x11; op2val:0x40; immval:0x3c
+TEST_STORE(x1,x2,0,x10,x11,0x40,0x3c,268,c.sw,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 68*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cswsp-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cswsp-01.S
new file mode 100644
index 000000000..ce3908049
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cswsp-01.S
@@ -0,0 +1,425 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Sep 13 07:01:20 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.swsp instruction of the RISC-V C extension for the cswsp covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cswsp)
+
+RVTEST_SIGBASE( x8,signature_x8_1)
+
+inst_0:
+// rs2==x12, imm_val == 0,
+// opcode:c.swsp; op1:x2; op2:x12; op2val:0x3; immval:0x0
+TEST_STORE(x8,x9,0,x2,x12,0x3,0x0,0,c.swsp,0)
+
+inst_1:
+// rs2==x1, rs2_val == 2147483647, imm_val > 0, rs2_val == (2**(xlen-1)-1), imm_val == 236
+// opcode:c.swsp; op1:x2; op2:x1; op2val:0x7fffffff; immval:0xec
+TEST_STORE(x8,x9,0,x2,x1,0x7fffffff,0xec,4,c.swsp,0)
+
+inst_2:
+// rs2==x7, rs2_val == -1073741825,
+// opcode:c.swsp; op1:x2; op2:x7; op2val:-0x40000001; immval:0x48
+TEST_STORE(x8,x9,0,x2,x7,-0x40000001,0x48,8,c.swsp,0)
+
+inst_3:
+// rs2==x13, rs2_val == -536870913,
+// opcode:c.swsp; op1:x2; op2:x13; op2val:-0x20000001; immval:0x48
+TEST_STORE(x8,x9,0,x2,x13,-0x20000001,0x48,12,c.swsp,0)
+
+inst_4:
+// rs2==x2, rs2_val == -268435457, imm_val == 8
+// opcode:c.swsp; op1:x2; op2:x2; op2val:-0x10000001; immval:0x8
+TEST_STORE(x8,x9,0,x2,x2,-0x10000001,0x8,16,c.swsp,0)
+
+inst_5:
+// rs2==x4, rs2_val == -134217729,
+// opcode:c.swsp; op1:x2; op2:x4; op2val:-0x8000001; immval:0x28
+TEST_STORE(x8,x9,0,x2,x4,-0x8000001,0x28,20,c.swsp,0)
+
+inst_6:
+// rs2==x10, rs2_val == -67108865,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x4000001; immval:0x4c
+TEST_STORE(x8,x9,0,x2,x10,-0x4000001,0x4c,24,c.swsp,0)
+
+inst_7:
+// rs2==x15, rs2_val == -33554433,
+// opcode:c.swsp; op1:x2; op2:x15; op2val:-0x2000001; immval:0x18
+TEST_STORE(x8,x9,0,x2,x15,-0x2000001,0x18,28,c.swsp,0)
+
+inst_8:
+// rs2==x5, rs2_val == -16777217, imm_val == 244
+// opcode:c.swsp; op1:x2; op2:x5; op2val:-0x1000001; immval:0xf4
+TEST_STORE(x8,x9,0,x2,x5,-0x1000001,0xf4,32,c.swsp,0)
+
+inst_9:
+// rs2==x3, rs2_val == -8388609,
+// opcode:c.swsp; op1:x2; op2:x3; op2val:-0x800001; immval:0x4c
+TEST_STORE(x8,x9,0,x2,x3,-0x800001,0x4c,36,c.swsp,0)
+
+inst_10:
+// rs2==x6, rs2_val == -4194305,
+// opcode:c.swsp; op1:x2; op2:x6; op2val:-0x400001; immval:0x30
+TEST_STORE(x8,x9,0,x2,x6,-0x400001,0x30,40,c.swsp,0)
+
+inst_11:
+// rs2==x9, rs2_val == -2097153, imm_val == 128
+// opcode:c.swsp; op1:x2; op2:x9; op2val:-0x200001; immval:0x80
+TEST_STORE(x8,x3,0,x2,x9,-0x200001,0x80,44,c.swsp,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_12:
+// rs2==x11, rs2_val == -1048577, imm_val == 124
+// opcode:c.swsp; op1:x2; op2:x11; op2val:-0x100001; immval:0x7c
+TEST_STORE(x1,x3,0,x2,x11,-0x100001,0x7c,0,c.swsp,0)
+
+inst_13:
+// rs2==x14, rs2_val == -524289,
+// opcode:c.swsp; op1:x2; op2:x14; op2val:-0x80001; immval:0x34
+TEST_STORE(x1,x3,0,x2,x14,-0x80001,0x34,4,c.swsp,0)
+
+inst_14:
+// rs2==x8, rs2_val == -262145, imm_val == 168
+// opcode:c.swsp; op1:x2; op2:x8; op2val:-0x40001; immval:0xa8
+TEST_STORE(x1,x3,0,x2,x8,-0x40001,0xa8,8,c.swsp,0)
+
+inst_15:
+// rs2_val == -131073,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x20001; immval:0xf4
+TEST_STORE(x1,x3,0,x2,x10,-0x20001,0xf4,12,c.swsp,0)
+
+inst_16:
+// rs2_val == -65537,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x10001; immval:0x3c
+TEST_STORE(x1,x3,0,x2,x10,-0x10001,0x3c,16,c.swsp,0)
+
+inst_17:
+// rs2_val == -32769,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x8001; immval:0x1c
+TEST_STORE(x1,x3,0,x2,x10,-0x8001,0x1c,20,c.swsp,0)
+
+inst_18:
+// rs2_val == -16385, imm_val == 4
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x4001; immval:0x4
+TEST_STORE(x1,x3,0,x2,x10,-0x4001,0x4,24,c.swsp,0)
+
+inst_19:
+// rs2_val == -8193,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x2001; immval:0xa8
+TEST_STORE(x1,x3,0,x2,x10,-0x2001,0xa8,28,c.swsp,0)
+
+inst_20:
+// rs2_val == -4097, imm_val == 248
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x1001; immval:0xf8
+TEST_STORE(x1,x3,0,x2,x10,-0x1001,0xf8,32,c.swsp,0)
+
+inst_21:
+// rs2_val == -2049, imm_val == 64
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x801; immval:0x40
+TEST_STORE(x1,x3,0,x2,x10,-0x801,0x40,36,c.swsp,0)
+
+inst_22:
+// rs2_val == -1025,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x401; immval:0xc
+TEST_STORE(x1,x3,0,x2,x10,-0x401,0xc,40,c.swsp,0)
+
+inst_23:
+// rs2_val == -513,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x201; immval:0x38
+TEST_STORE(x1,x3,0,x2,x10,-0x201,0x38,44,c.swsp,0)
+
+inst_24:
+// rs2_val == -257, imm_val == 220
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x101; immval:0xdc
+TEST_STORE(x1,x3,0,x2,x10,-0x101,0xdc,48,c.swsp,0)
+
+inst_25:
+// rs2_val == -129, imm_val == 32
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x81; immval:0x20
+TEST_STORE(x1,x3,0,x2,x10,-0x81,0x20,52,c.swsp,0)
+
+inst_26:
+// rs2_val == -65,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x41; immval:0x34
+TEST_STORE(x1,x3,0,x2,x10,-0x41,0x34,56,c.swsp,0)
+
+inst_27:
+// rs2_val == -33,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x21; immval:0xf8
+TEST_STORE(x1,x3,0,x2,x10,-0x21,0xf8,60,c.swsp,0)
+
+inst_28:
+// rs2_val == -17,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x11; immval:0x4c
+TEST_STORE(x1,x3,0,x2,x10,-0x11,0x4c,64,c.swsp,0)
+
+inst_29:
+// rs2_val == -9,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x9; immval:0x30
+TEST_STORE(x1,x3,0,x2,x10,-0x9,0x30,68,c.swsp,0)
+
+inst_30:
+// rs2_val == -5,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x5; immval:0x3c
+TEST_STORE(x1,x3,0,x2,x10,-0x5,0x3c,72,c.swsp,0)
+
+inst_31:
+// rs2_val == -3,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x3; immval:0x80
+TEST_STORE(x1,x3,0,x2,x10,-0x3,0x80,76,c.swsp,0)
+
+inst_32:
+// rs2_val == -2,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x2; immval:0x24
+TEST_STORE(x1,x3,0,x2,x10,-0x2,0x24,80,c.swsp,0)
+
+inst_33:
+// imm_val == 188,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x8001; immval:0xbc
+TEST_STORE(x1,x3,0,x2,x10,-0x8001,0xbc,84,c.swsp,0)
+
+inst_34:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x80000000; immval:0x20
+TEST_STORE(x1,x3,0,x2,x10,-0x80000000,0x20,88,c.swsp,0)
+
+inst_35:
+// rs2_val == 1073741824,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x40000000; immval:0x38
+TEST_STORE(x1,x3,0,x2,x10,0x40000000,0x38,92,c.swsp,0)
+
+inst_36:
+// rs2_val == 536870912,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x20000000; immval:0x7c
+TEST_STORE(x1,x3,0,x2,x10,0x20000000,0x7c,96,c.swsp,0)
+
+inst_37:
+// rs2_val == 268435456,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x10000000; immval:0xfc
+TEST_STORE(x1,x3,0,x2,x10,0x10000000,0xfc,100,c.swsp,0)
+
+inst_38:
+// rs2_val == 134217728,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x8000000; immval:0x48
+TEST_STORE(x1,x3,0,x2,x10,0x8000000,0x48,104,c.swsp,0)
+
+inst_39:
+// rs2_val == 67108864, imm_val == 84
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x4000000; immval:0x54
+TEST_STORE(x1,x3,0,x2,x10,0x4000000,0x54,108,c.swsp,0)
+
+inst_40:
+// rs2_val == 64, imm_val == 16
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x40; immval:0x10
+TEST_STORE(x1,x3,0,x2,x10,0x40,0x10,112,c.swsp,0)
+
+inst_41:
+// rs2_val == 32,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x20; immval:0x14
+TEST_STORE(x1,x3,0,x2,x10,0x20,0x14,116,c.swsp,0)
+
+inst_42:
+// rs2_val == 16,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x10; immval:0x4c
+TEST_STORE(x1,x3,0,x2,x10,0x10,0x4c,120,c.swsp,0)
+
+inst_43:
+// rs2_val == 8,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x8; immval:0x4c
+TEST_STORE(x1,x3,0,x2,x10,0x8,0x4c,124,c.swsp,0)
+
+inst_44:
+// rs2_val == 4,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x4; immval:0xf8
+TEST_STORE(x1,x3,0,x2,x10,0x4,0xf8,128,c.swsp,0)
+
+inst_45:
+// rs2_val == 2,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x2; immval:0x2c
+TEST_STORE(x1,x3,0,x2,x10,0x2,0x2c,132,c.swsp,0)
+
+inst_46:
+// rs2_val == 1,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x1; immval:0xbc
+TEST_STORE(x1,x3,0,x2,x10,0x1,0xbc,136,c.swsp,0)
+
+inst_47:
+// rs2_val == -1431655766,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x55555556; immval:0xdc
+TEST_STORE(x1,x3,0,x2,x10,-0x55555556,0xdc,140,c.swsp,0)
+
+inst_48:
+// rs2_val == 1431655765,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x55555555; immval:0x4c
+TEST_STORE(x1,x3,0,x2,x10,0x55555555,0x4c,144,c.swsp,0)
+
+inst_49:
+// rs2_val == 0,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x0; immval:0x40
+TEST_STORE(x1,x3,0,x2,x10,0x0,0x40,148,c.swsp,0)
+
+inst_50:
+// rs2_val == 33554432,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x2000000; immval:0x4
+TEST_STORE(x1,x3,0,x2,x10,0x2000000,0x4,152,c.swsp,0)
+
+inst_51:
+// rs2_val == 16777216,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x1000000; immval:0x7c
+TEST_STORE(x1,x3,0,x2,x10,0x1000000,0x7c,156,c.swsp,0)
+
+inst_52:
+// rs2_val == 8388608,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x800000; immval:0x18
+TEST_STORE(x1,x3,0,x2,x10,0x800000,0x18,160,c.swsp,0)
+
+inst_53:
+// rs2_val == 4194304,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x400000; immval:0x40
+TEST_STORE(x1,x3,0,x2,x10,0x400000,0x40,164,c.swsp,0)
+
+inst_54:
+// rs2_val == 2097152,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x200000; immval:0x54
+TEST_STORE(x1,x3,0,x2,x10,0x200000,0x54,168,c.swsp,0)
+
+inst_55:
+// rs2_val == 1048576,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x100000; immval:0x34
+TEST_STORE(x1,x3,0,x2,x10,0x100000,0x34,172,c.swsp,0)
+
+inst_56:
+// rs2_val == 524288,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x80000; immval:0x20
+TEST_STORE(x1,x3,0,x2,x10,0x80000,0x20,176,c.swsp,0)
+
+inst_57:
+// rs2_val == 262144,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x40000; immval:0x44
+TEST_STORE(x1,x3,0,x2,x10,0x40000,0x44,180,c.swsp,0)
+
+inst_58:
+// rs2_val == 131072,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x20000; immval:0xa8
+TEST_STORE(x1,x3,0,x2,x10,0x20000,0xa8,184,c.swsp,0)
+
+inst_59:
+// rs2_val == 65536,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x10000; immval:0x3c
+TEST_STORE(x1,x3,0,x2,x10,0x10000,0x3c,188,c.swsp,0)
+
+inst_60:
+// rs2_val == 32768,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x8000; immval:0x34
+TEST_STORE(x1,x3,0,x2,x10,0x8000,0x34,192,c.swsp,0)
+
+inst_61:
+// rs2_val == 16384,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x4000; immval:0xc
+TEST_STORE(x1,x3,0,x2,x10,0x4000,0xc,196,c.swsp,0)
+
+inst_62:
+// rs2_val == 8192,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x2000; immval:0x4
+TEST_STORE(x1,x3,0,x2,x10,0x2000,0x4,200,c.swsp,0)
+
+inst_63:
+// rs2_val == 4096,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x1000; immval:0x30
+TEST_STORE(x1,x3,0,x2,x10,0x1000,0x30,204,c.swsp,0)
+
+inst_64:
+// rs2_val == 2048,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x800; immval:0x38
+TEST_STORE(x1,x3,0,x2,x10,0x800,0x38,208,c.swsp,0)
+
+inst_65:
+// rs2_val == 1024,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x400; immval:0x10
+TEST_STORE(x1,x3,0,x2,x10,0x400,0x10,212,c.swsp,0)
+
+inst_66:
+// rs2_val == 512,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x200; immval:0x3c
+TEST_STORE(x1,x3,0,x2,x10,0x200,0x3c,216,c.swsp,0)
+
+inst_67:
+// rs2_val == 256,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x100; immval:0x1c
+TEST_STORE(x1,x3,0,x2,x10,0x100,0x1c,220,c.swsp,0)
+
+inst_68:
+// rs2_val == 128,
+// opcode:c.swsp; op1:x2; op2:x10; op2val:0x80; immval:0xf8
+TEST_STORE(x1,x3,0,x2,x10,0x80,0xf8,224,c.swsp,0)
+
+inst_69:
+// rs2_val == -268435457, imm_val == 8
+// opcode:c.swsp; op1:x2; op2:x10; op2val:-0x10000001; immval:0x8
+TEST_STORE(x1,x3,0,x2,x10,-0x10000001,0x8,228,c.swsp,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x8_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_1:
+ .fill 12*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 58*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cxor-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cxor-01.S
new file mode 100644
index 000000000..d53cb36ba
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/C/src/cxor-01.S
@@ -0,0 +1,2975 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 06:39:00 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32ec.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the c.xor instruction of the RISC-V C extension for the cxor covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EC")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",cxor)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rs2, rs1==x14, rs2==x10, rs1_val == (-2**(xlen-1)), rs2_val == -32769, rs2_val < 0, rs1_val == -2147483648
+// opcode: c.xor; op1:x14; op2:x10; op1val:-0x80000000; op2val:-0x8001
+TEST_CR_OP( c.xor, x14, x10, 0x7fff7fff, -0x80000000, -0x8001, x1, 0, x2)
+
+inst_1:
+// rs1 == rs2, rs1==x8, rs2==x8, rs2_val == 2147483647, rs1_val == 64, rs2_val == (2**(xlen-1)-1), rs2_val > 0
+// opcode: c.xor; op1:x8; op2:x8; op1val:0x40; op2val:0x40
+TEST_CR_OP( c.xor, x8, x8, 0x0, 0x40, 0x40, x1, 4, x2)
+
+inst_2:
+// rs1==x10, rs2==x13, rs2_val == -1073741825, rs1_val == 1073741824
+// opcode: c.xor; op1:x10; op2:x13; op1val:0x40000000; op2val:-0x40000001
+TEST_CR_OP( c.xor, x10, x13, 0xffffffff, 0x40000000, -0x40000001, x1, 8, x2)
+
+inst_3:
+// rs1==x13, rs2==x9, rs2_val == -536870913, rs1_val == 32
+// opcode: c.xor; op1:x13; op2:x9; op1val:0x20; op2val:-0x20000001
+TEST_CR_OP( c.xor, x13, x9, 0xdfffffdf, 0x20, -0x20000001, x1, 12, x2)
+
+inst_4:
+// rs1==x12, rs2==x11, rs2_val == -268435457,
+// opcode: c.xor; op1:x12; op2:x11; op1val:-0xb504; op2val:-0x10000001
+TEST_CR_OP( c.xor, x12, x11, 0x1000b503, -0xb504, -0x10000001, x1, 16, x2)
+
+inst_5:
+// rs1==x11, rs2==x12, rs2_val == -134217729, rs1_val == -8193
+// opcode: c.xor; op1:x11; op2:x12; op1val:-0x2001; op2val:-0x8000001
+TEST_CR_OP( c.xor, x11, x12, 0x8002000, -0x2001, -0x8000001, x1, 20, x2)
+
+inst_6:
+// rs1==x9, rs2==x15, rs2_val == -67108865, rs1_val == -134217729
+// opcode: c.xor; op1:x9; op2:x15; op1val:-0x8000001; op2val:-0x4000001
+TEST_CR_OP( c.xor, x9, x15, 0xc000000, -0x8000001, -0x4000001, x1, 24, x2)
+
+inst_7:
+// rs1==x15, rs2==x14, rs2_val == -33554433, rs1_val == -2049
+// opcode: c.xor; op1:x15; op2:x14; op1val:-0x801; op2val:-0x2000001
+TEST_CR_OP( c.xor, x15, x14, 0x2000800, -0x801, -0x2000001, x1, 28, x2)
+
+inst_8:
+// rs2_val == -16777217, rs1_val == 1048576
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x100000; op2val:-0x1000001
+TEST_CR_OP( c.xor, x10, x11, 0xfeefffff, 0x100000, -0x1000001, x1, 32, x2)
+
+inst_9:
+// rs2_val == -8388609,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x800001
+TEST_CR_OP( c.xor, x10, x11, 0xaa2aaaab, 0x55555554, -0x800001, x1, 36, x2)
+
+inst_10:
+// rs2_val == -4194305, rs1_val == -262145
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x40001; op2val:-0x400001
+TEST_CR_OP( c.xor, x10, x11, 0x440000, -0x40001, -0x400001, x1, 40, x2)
+
+inst_11:
+// rs2_val == -2097153, rs1_val == 256
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x100; op2val:-0x200001
+TEST_CR_OP( c.xor, x10, x11, 0xffdffeff, 0x100, -0x200001, x1, 44, x2)
+
+inst_12:
+// rs2_val == -1048577,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x7; op2val:-0x100001
+TEST_CR_OP( c.xor, x10, x11, 0x100006, -0x7, -0x100001, x1, 48, x2)
+
+inst_13:
+// rs2_val == -524289,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:-0x80001
+TEST_CR_OP( c.xor, x10, x11, 0xfff7fff9, 0x6, -0x80001, x1, 52, x2)
+
+inst_14:
+// rs2_val == -262145, rs1_val == 134217728
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x8000000; op2val:-0x40001
+TEST_CR_OP( c.xor, x10, x11, 0xf7fbffff, 0x8000000, -0x40001, x1, 56, x2)
+
+inst_15:
+// rs2_val == -131073, rs1_val == -3
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x3; op2val:-0x20001
+TEST_CR_OP( c.xor, x10, x11, 0x20002, -0x3, -0x20001, x1, 60, x2)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x9; op2val:-0x10001
+TEST_CR_OP( c.xor, x10, x11, 0xfffefff6, 0x9, -0x10001, x1, 64, x2)
+
+inst_17:
+// rs2_val == -16385, rs1_val == -4097
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x1001; op2val:-0x4001
+TEST_CR_OP( c.xor, x10, x11, 0x5000, -0x1001, -0x4001, x1, 68, x2)
+
+inst_18:
+// rs2_val == -8193,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:-0x2001
+TEST_CR_OP( c.xor, x10, x11, 0xffffdffa, 0x5, -0x2001, x1, 72, x2)
+
+inst_19:
+// rs2_val == -4097, rs1_val == 268435456
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x10000000; op2val:-0x1001
+TEST_CR_OP( c.xor, x10, x11, 0xefffefff, 0x10000000, -0x1001, x1, 76, x2)
+
+inst_20:
+// rs2_val == -2049, rs1_val == -268435457
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x10000001; op2val:-0x801
+TEST_CR_OP( c.xor, x10, x11, 0x10000800, -0x10000001, -0x801, x1, 80, x2)
+
+inst_21:
+// rs2_val == -1025, rs1_val == 0
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:-0x401
+TEST_CR_OP( c.xor, x10, x11, 0xfffffbff, 0x0, -0x401, x1, 84, x2)
+
+inst_22:
+// rs2_val == -513, rs1_val == 4194304
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x400000; op2val:-0x201
+TEST_CR_OP( c.xor, x10, x11, 0xffbffdff, 0x400000, -0x201, x1, 88, x2)
+
+inst_23:
+// rs2_val == -257, rs1_val == -513
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x201; op2val:-0x101
+TEST_CR_OP( c.xor, x10, x11, 0x300, -0x201, -0x101, x1, 92, x2)
+
+inst_24:
+// rs2_val == -129,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xa; op2val:-0x81
+TEST_CR_OP( c.xor, x10, x11, 0x89, -0xa, -0x81, x1, 96, x2)
+
+inst_25:
+// rs2_val == -65,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:-0x41
+TEST_CR_OP( c.xor, x10, x11, 0xffffffba, 0x5, -0x41, x1, 100, x2)
+
+inst_26:
+// rs2_val == -33, rs1_val == 524288
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x80000; op2val:-0x21
+TEST_CR_OP( c.xor, x10, x11, 0xfff7ffdf, 0x80000, -0x21, x1, 104, x2)
+
+inst_27:
+// rs2_val == -17,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:-0x11
+TEST_CR_OP( c.xor, x10, x11, 0xffff4aec, 0xb503, -0x11, x1, 108, x2)
+
+inst_28:
+// rs2_val == -9, rs1_val == -67108865
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x4000001; op2val:-0x9
+TEST_CR_OP( c.xor, x10, x11, 0x4000008, -0x4000001, -0x9, x1, 112, x2)
+
+inst_29:
+// rs2_val == -5, rs1_val == -5
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x5; op2val:-0x5
+TEST_CR_OP( c.xor, x10, x11, 0x0, -0x5, -0x5, x1, 116, x2)
+
+inst_30:
+// rs2_val == -3, rs1_val == 2097152
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x200000; op2val:-0x3
+TEST_CR_OP( c.xor, x10, x11, 0xffdffffd, 0x200000, -0x3, x1, 120, x2)
+
+inst_31:
+// rs2_val == -2, rs1_val == 131072
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x20000; op2val:-0x2
+TEST_CR_OP( c.xor, x10, x11, 0xfffdfffe, 0x20000, -0x2, x1, 124, x2)
+
+inst_32:
+// rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1), rs2_val == 0
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x7fffffff; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x7fffffff, 0x7fffffff, 0x0, x1, 128, x2)
+
+inst_33:
+// rs1_val == -1073741825, rs2_val == 131072
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x40000001; op2val:0x20000
+TEST_CR_OP( c.xor, x10, x11, 0xbffdffff, -0x40000001, 0x20000, x1, 132, x2)
+
+inst_34:
+// rs1_val == -536870913, rs2_val == 1073741824
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x20000001; op2val:0x40000000
+TEST_CR_OP( c.xor, x10, x11, 0x9fffffff, -0x20000001, 0x40000000, x1, 136, x2)
+
+inst_35:
+// rs1_val == -33554433,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x2000001; op2val:0x7
+TEST_CR_OP( c.xor, x10, x11, 0xfdfffff8, -0x2000001, 0x7, x1, 140, x2)
+
+inst_36:
+// rs1_val == -16777217,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x1000001; op2val:0x7fffffff
+TEST_CR_OP( c.xor, x10, x11, 0x81000000, -0x1000001, 0x7fffffff, x1, 144, x2)
+
+inst_37:
+// rs1_val == -8388609,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x800001; op2val:-0x80001
+TEST_CR_OP( c.xor, x10, x11, 0x880000, -0x800001, -0x80001, x1, 148, x2)
+
+inst_38:
+// rs1_val == -4194305, rs2_val == 4
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x400001; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xffbffffb, -0x400001, 0x4, x1, 152, x2)
+
+inst_39:
+// rs1_val == -2097153, rs2_val == 524288
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x200001; op2val:0x80000
+TEST_CR_OP( c.xor, x10, x11, 0xffd7ffff, -0x200001, 0x80000, x1, 156, x2)
+
+inst_40:
+// rs1_val == -1048577,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x100001; op2val:-0x801
+TEST_CR_OP( c.xor, x10, x11, 0x100800, -0x100001, -0x801, x1, 160, x2)
+
+inst_41:
+// rs1_val == -524289,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x80001; op2val:-0x40000001
+TEST_CR_OP( c.xor, x10, x11, 0x40080000, -0x80001, -0x40000001, x1, 164, x2)
+
+inst_42:
+// rs1_val == -131073,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x20001; op2val:-0x2000001
+TEST_CR_OP( c.xor, x10, x11, 0x2020000, -0x20001, -0x2000001, x1, 168, x2)
+
+inst_43:
+// rs1_val == -65537,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x10001; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xfffefffb, -0x10001, 0x4, x1, 172, x2)
+
+inst_44:
+// rs1_val == -32769,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x8001; op2val:-0x7
+TEST_CR_OP( c.xor, x10, x11, 0x8006, -0x8001, -0x7, x1, 176, x2)
+
+inst_45:
+// rs1_val == -16385,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x4001; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xffff0afa, -0x4001, 0xb505, x1, 180, x2)
+
+inst_46:
+// rs1_val == -1025, rs2_val == 4194304
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x401; op2val:0x400000
+TEST_CR_OP( c.xor, x10, x11, 0xffbffbff, -0x401, 0x400000, x1, 184, x2)
+
+inst_47:
+// rs1_val == -257, rs2_val == 2048
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x101; op2val:0x800
+TEST_CR_OP( c.xor, x10, x11, 0xfffff6ff, -0x101, 0x800, x1, 188, x2)
+
+inst_48:
+// rs1_val == -129, rs2_val == 67108864
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x81; op2val:0x4000000
+TEST_CR_OP( c.xor, x10, x11, 0xfbffff7f, -0x81, 0x4000000, x1, 192, x2)
+
+inst_49:
+// rs1_val == -65,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x41; op2val:0x7fffffff
+TEST_CR_OP( c.xor, x10, x11, 0x80000040, -0x41, 0x7fffffff, x1, 196, x2)
+
+inst_50:
+// rs1_val == -33,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x21; op2val:-0x401
+TEST_CR_OP( c.xor, x10, x11, 0x420, -0x21, -0x401, x1, 200, x2)
+
+inst_51:
+// rs1_val == -17,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x11; op2val:0x7fffffff
+TEST_CR_OP( c.xor, x10, x11, 0x80000010, -0x11, 0x7fffffff, x1, 204, x2)
+
+inst_52:
+// rs1_val == -9,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x9; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x99999992, -0x9, 0x66666665, x1, 208, x2)
+
+inst_53:
+// rs1_val == -2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x2; op2val:0x9
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff7, -0x2, 0x9, x1, 212, x2)
+
+inst_54:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x80000000
+TEST_CR_OP( c.xor, x10, x11, 0xd5555556, 0x55555556, -0x80000000, x1, 216, x2)
+
+inst_55:
+// rs2_val == 536870912,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x200000; op2val:0x20000000
+TEST_CR_OP( c.xor, x10, x11, 0x20200000, 0x200000, 0x20000000, x1, 220, x2)
+
+inst_56:
+// rs2_val == 268435456, rs1_val == 4
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x10000000
+TEST_CR_OP( c.xor, x10, x11, 0x10000004, 0x4, 0x10000000, x1, 224, x2)
+
+inst_57:
+// rs2_val == 134217728,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x8000000
+TEST_CR_OP( c.xor, x10, x11, 0x3b333334, 0x33333334, 0x8000000, x1, 228, x2)
+
+inst_58:
+// rs2_val == 33554432,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x2000001; op2val:0x2000000
+TEST_CR_OP( c.xor, x10, x11, 0xffffffff, -0x2000001, 0x2000000, x1, 232, x2)
+
+inst_59:
+// rs2_val == 16777216, rs1_val == 1431655765
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x1000000
+TEST_CR_OP( c.xor, x10, x11, 0x54555555, 0x55555555, 0x1000000, x1, 236, x2)
+
+inst_60:
+// rs2_val == 8388608,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x800000
+TEST_CR_OP( c.xor, x10, x11, 0x33b33334, 0x33333334, 0x800000, x1, 240, x2)
+
+inst_61:
+// rs2_val == 2097152,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x40001; op2val:0x200000
+TEST_CR_OP( c.xor, x10, x11, 0xffdbffff, -0x40001, 0x200000, x1, 244, x2)
+
+inst_62:
+// rs2_val == 1048576,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x800001; op2val:0x100000
+TEST_CR_OP( c.xor, x10, x11, 0xff6fffff, -0x800001, 0x100000, x1, 248, x2)
+
+inst_63:
+// rs2_val == 262144, rs1_val == -1431655766
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x40000
+TEST_CR_OP( c.xor, x10, x11, 0xaaaeaaaa, -0x55555556, 0x40000, x1, 252, x2)
+
+inst_64:
+// rs2_val == 65536,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x800001; op2val:0x10000
+TEST_CR_OP( c.xor, x10, x11, 0xff7effff, -0x800001, 0x10000, x1, 256, x2)
+
+inst_65:
+// rs2_val == 32768, rs1_val == 67108864
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4000000; op2val:0x8000
+TEST_CR_OP( c.xor, x10, x11, 0x4008000, 0x4000000, 0x8000, x1, 260, x2)
+
+inst_66:
+// rs2_val == 16384,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4000000; op2val:0x4000
+TEST_CR_OP( c.xor, x10, x11, 0x4004000, 0x4000000, 0x4000, x1, 264, x2)
+
+inst_67:
+// rs2_val == 8192,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x2000
+TEST_CR_OP( c.xor, x10, x11, 0x55557555, 0x55555555, 0x2000, x1, 268, x2)
+
+inst_68:
+// rs2_val == 4096,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x100001; op2val:0x1000
+TEST_CR_OP( c.xor, x10, x11, 0xffefefff, -0x100001, 0x1000, x1, 272, x2)
+
+inst_69:
+// rs2_val == 1024, rs1_val == 65536
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x10000; op2val:0x400
+TEST_CR_OP( c.xor, x10, x11, 0x10400, 0x10000, 0x400, x1, 276, x2)
+
+inst_70:
+// rs2_val == 512,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x8000000; op2val:0x200
+TEST_CR_OP( c.xor, x10, x11, 0x8000200, 0x8000000, 0x200, x1, 280, x2)
+
+inst_71:
+// rs2_val == 256,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x80000; op2val:0x100
+TEST_CR_OP( c.xor, x10, x11, 0x80100, 0x80000, 0x100, x1, 284, x2)
+
+inst_72:
+// rs2_val == 128,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x3; op2val:0x80
+TEST_CR_OP( c.xor, x10, x11, 0xffffff7d, -0x3, 0x80, x1, 288, x2)
+
+inst_73:
+// rs2_val == 64,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x100; op2val:0x40
+TEST_CR_OP( c.xor, x10, x11, 0x140, 0x100, 0x40, x1, 292, x2)
+
+inst_74:
+// rs2_val == 32,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x20
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaa8b, -0x55555555, 0x20, x1, 296, x2)
+
+inst_75:
+// rs2_val == 16,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3fffffff; op2val:0x10
+TEST_CR_OP( c.xor, x10, x11, 0x3fffffef, 0x3fffffff, 0x10, x1, 300, x2)
+
+inst_76:
+// rs2_val == 8,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x400001; op2val:0x8
+TEST_CR_OP( c.xor, x10, x11, 0xffbffff7, -0x400001, 0x8, x1, 304, x2)
+
+inst_77:
+// rs2_val == 2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xa; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff4, -0xa, 0x2, x1, 308, x2)
+
+inst_78:
+// rs2_val == 1,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x3; op2val:0x1
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffc, -0x3, 0x1, x1, 312, x2)
+
+inst_79:
+// rs1_val == 536870912,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x20000000; op2val:-0x80000000
+TEST_CR_OP( c.xor, x10, x11, 0xa0000000, 0x20000000, -0x80000000, x1, 316, x2)
+
+inst_80:
+// rs1_val == 33554432, rs2_val == 1431655765
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2000000; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x57555555, 0x2000000, 0x55555555, x1, 320, x2)
+
+inst_81:
+// rs1_val == 16777216,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x1000000; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x32333332, 0x1000000, 0x33333332, x1, 324, x2)
+
+inst_82:
+// rs1_val == 8388608,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x800000; op2val:-0x1000001
+TEST_CR_OP( c.xor, x10, x11, 0xfe7fffff, 0x800000, -0x1000001, x1, 328, x2)
+
+inst_83:
+// rs1_val == 262144,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x40000; op2val:0x40000000
+TEST_CR_OP( c.xor, x10, x11, 0x40040000, 0x40000, 0x40000000, x1, 332, x2)
+
+inst_84:
+// rs1_val == 32768,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x8000; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x6666e666, 0x8000, 0x66666666, x1, 336, x2)
+
+inst_85:
+// rs1_val == 16384,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4000; op2val:-0x2001
+TEST_CR_OP( c.xor, x10, x11, 0xffff9fff, 0x4000, -0x2001, x1, 340, x2)
+
+inst_86:
+// rs1_val == 8192,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2000; op2val:0x8000
+TEST_CR_OP( c.xor, x10, x11, 0xa000, 0x2000, 0x8000, x1, 344, x2)
+
+inst_87:
+// rs1_val == 4096,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x1000; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xffff5afc, 0x1000, -0xb504, x1, 348, x2)
+
+inst_88:
+// rs1_val == 2048,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x800; op2val:-0x401
+TEST_CR_OP( c.xor, x10, x11, 0xfffff3ff, 0x800, -0x401, x1, 352, x2)
+
+inst_89:
+// rs1_val == 1024,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x400; op2val:0x8
+TEST_CR_OP( c.xor, x10, x11, 0x408, 0x400, 0x8, x1, 356, x2)
+
+inst_90:
+// rs1_val == 512,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x200; op2val:-0x100001
+TEST_CR_OP( c.xor, x10, x11, 0xffeffdff, 0x200, -0x100001, x1, 360, x2)
+
+inst_91:
+// rs1_val == 128,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x80; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xb584, 0x80, 0xb504, x1, 364, x2)
+
+inst_92:
+// rs1_val == 16,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x10; op2val:-0x20000001
+TEST_CR_OP( c.xor, x10, x11, 0xdfffffef, 0x10, -0x20000001, x1, 368, x2)
+
+inst_93:
+// rs1_val == 8,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x8; op2val:-0x1000001
+TEST_CR_OP( c.xor, x10, x11, 0xfefffff7, 0x8, -0x1000001, x1, 372, x2)
+
+inst_94:
+// rs1_val == 2, rs1_val==2 and rs2_val==6
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x4, 0x2, 0x6, x1, 376, x2)
+
+inst_95:
+// rs1_val == 1,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x1; op2val:-0x20001
+TEST_CR_OP( c.xor, x10, x11, 0xfffdfffe, 0x1, -0x20001, x1, 380, x2)
+
+inst_96:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0xb505, 0xb505, x1, 384, x2)
+
+inst_97:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff8, 0xb505, -0xb503, x1, 388, x2)
+
+inst_98:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x6666d362, 0xb505, 0x66666667, x1, 392, x2)
+
+inst_99:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33338631, 0xb505, 0x33333334, x1, 396, x2)
+
+inst_100:
+// rs1_val==46341 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0xb503, 0xb505, 0x6, x1, 400, x2)
+
+inst_101:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fae, 0xb505, -0x55555555, x1, 404, x2)
+
+inst_102:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x5555e053, 0xb505, 0x55555556, x1, 408, x2)
+
+inst_103:
+// rs1_val==46341 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xb501, 0xb505, 0x4, x1, 412, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0xb505, 0xb503, x1, 416, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0xb505, 0xb505, 0x0, x1, 420, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x6666d360, 0xb505, 0x66666665, x1, 424, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33338637, 0xb505, 0x33333332, x1, 428, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x5555e051, 0xb505, 0x55555554, x1, 432, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0xb507, 0xb505, 0x2, x1, 436, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0xb505, 0xb504, x1, 440, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff9, 0xb505, -0xb504, x1, 444, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x6666d363, 0xb505, 0x66666666, x1, 448, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33338636, 0xb505, 0x33333333, x1, 452, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0xb500, 0xb505, 0x5, x1, 456, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1faf, 0xb505, -0x55555556, x1, 460, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x5555e050, 0xb505, 0x55555555, x1, 464, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb505; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0xb506, 0xb505, 0x3, x1, 468, x2)
+
+inst_118:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff8, -0xb503, 0xb505, x1, 472, x2)
+
+inst_119:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x0, -0xb503, -0xb503, x1, 476, x2)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x99992c9a, -0xb503, 0x66666667, x1, 480, x2)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79c9, -0xb503, 0x33333334, x1, 484, x2)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afb, -0xb503, 0x6, x1, 488, x2)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x5555e056, -0xb503, -0x55555555, x1, 492, x2)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fab, -0xb503, 0x55555556, x1, 496, x2)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xffff4af9, -0xb503, 0x4, x1, 500, x2)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffe, -0xb503, 0xb503, x1, 504, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afd, -0xb503, 0x0, x1, 508, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x99992c98, -0xb503, 0x66666665, x1, 512, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79cf, -0xb503, 0x33333332, x1, 516, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa9, -0xb503, 0x55555554, x1, 520, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0xffff4aff, -0xb503, 0x2, x1, 524, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff9, -0xb503, 0xb504, x1, 528, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x1, -0xb503, -0xb504, x1, 532, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x99992c9b, -0xb503, 0x66666666, x1, 536, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79ce, -0xb503, 0x33333333, x1, 540, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0xffff4af8, -0xb503, 0x5, x1, 544, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x5555e057, -0xb503, -0x55555556, x1, 548, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa8, -0xb503, 0x55555555, x1, 552, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb503; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afe, -0xb503, 0x3, x1, 556, x2)
+
+inst_140:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x6666d362, 0x66666667, 0xb505, x1, 560, x2)
+
+inst_141:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x99992c9a, 0x66666667, -0xb503, x1, 564, x2)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x66666667, 0x66666667, x1, 568, x2)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x55555553, 0x66666667, 0x33333334, x1, 572, x2)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x66666661, 0x66666667, 0x6, x1, 576, x2)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccc, 0x66666667, -0x55555555, x1, 580, x2)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x66666667, 0x55555556, x1, 584, x2)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x66666663, 0x66666667, 0x4, x1, 588, x2)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x6666d364, 0x66666667, 0xb503, x1, 592, x2)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x66666667, 0x66666667, 0x0, x1, 596, x2)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x2, 0x66666667, 0x66666665, x1, 600, x2)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x55555555, 0x66666667, 0x33333332, x1, 604, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x33333333, 0x66666667, 0x55555554, x1, 608, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x66666665, 0x66666667, 0x2, x1, 612, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x6666d363, 0x66666667, 0xb504, x1, 616, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x99992c9b, 0x66666667, -0xb504, x1, 620, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x66666667, 0x66666666, x1, 624, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x55555554, 0x66666667, 0x33333333, x1, 628, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x66666662, 0x66666667, 0x5, x1, 632, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccd, 0x66666667, -0x55555556, x1, 636, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x33333332, 0x66666667, 0x55555555, x1, 640, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666667; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x66666664, 0x66666667, 0x3, x1, 644, x2)
+
+inst_162:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x33338631, 0x33333334, 0xb505, x1, 648, x2)
+
+inst_163:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79c9, 0x33333334, -0xb503, x1, 652, x2)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x55555553, 0x33333334, 0x66666667, x1, 656, x2)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x33333334, 0x33333334, x1, 660, x2)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x33333332, 0x33333334, 0x6, x1, 664, x2)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x9999999f, 0x33333334, -0x55555555, x1, 668, x2)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x66666662, 0x33333334, 0x55555556, x1, 672, x2)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x33333334, 0x4, x1, 676, x2)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x33338637, 0x33333334, 0xb503, x1, 680, x2)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x33333334, 0x33333334, 0x0, x1, 684, x2)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x55555551, 0x33333334, 0x66666665, x1, 688, x2)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0x33333334, 0x33333332, x1, 692, x2)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x66666660, 0x33333334, 0x55555554, x1, 696, x2)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x33333336, 0x33333334, 0x2, x1, 700, x2)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x33338630, 0x33333334, 0xb504, x1, 704, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79c8, 0x33333334, -0xb504, x1, 708, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x55555552, 0x33333334, 0x66666666, x1, 712, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x7, 0x33333334, 0x33333333, x1, 716, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x33333334, 0x5, x1, 720, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x9999999e, 0x33333334, -0x55555556, x1, 724, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x66666661, 0x33333334, 0x55555555, x1, 728, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333334; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x33333337, 0x33333334, 0x3, x1, 732, x2)
+
+inst_184:
+// rs1_val==6 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xb503, 0x6, 0xb505, x1, 736, x2)
+
+inst_185:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afb, 0x6, -0xb503, x1, 740, x2)
+
+inst_186:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x66666661, 0x6, 0x66666667, x1, 744, x2)
+
+inst_187:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33333332, 0x6, 0x33333334, x1, 748, x2)
+
+inst_188:
+// rs1_val==6 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x6, 0x6, x1, 752, x2)
+
+inst_189:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaad, 0x6, -0x55555555, x1, 756, x2)
+
+inst_190:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x55555550, 0x6, 0x55555556, x1, 760, x2)
+
+inst_191:
+// rs1_val==6 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x2, 0x6, 0x4, x1, 764, x2)
+
+inst_192:
+// rs1_val==6 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xb505, 0x6, 0xb503, x1, 768, x2)
+
+inst_193:
+// rs1_val==6 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0x6, 0x0, x1, 772, x2)
+
+inst_194:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x66666663, 0x6, 0x66666665, x1, 776, x2)
+
+inst_195:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33333334, 0x6, 0x33333332, x1, 780, x2)
+
+inst_196:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x55555552, 0x6, 0x55555554, x1, 784, x2)
+
+inst_197:
+// rs1_val==6 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x4, 0x6, 0x2, x1, 788, x2)
+
+inst_198:
+// rs1_val==6 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xb502, 0x6, 0xb504, x1, 792, x2)
+
+inst_199:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afa, 0x6, -0xb504, x1, 796, x2)
+
+inst_200:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x66666660, 0x6, 0x66666666, x1, 800, x2)
+
+inst_201:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33333335, 0x6, 0x33333333, x1, 804, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x3, 0x6, 0x5, x1, 808, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaac, 0x6, -0x55555556, x1, 812, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x55555553, 0x6, 0x55555555, x1, 816, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x6; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x5, 0x6, 0x3, x1, 820, x2)
+
+inst_206:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fae, -0x55555555, 0xb505, x1, 824, x2)
+
+inst_207:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x5555e056, -0x55555555, -0xb503, x1, 828, x2)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccc, -0x55555555, 0x66666667, x1, 832, x2)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x9999999f, -0x55555555, 0x33333334, x1, 836, x2)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaad, -0x55555555, 0x6, x1, 840, x2)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x0, -0x55555555, -0x55555555, x1, 844, x2)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffd, -0x55555555, 0x55555556, x1, 848, x2)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaaf, -0x55555555, 0x4, x1, 852, x2)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa8, -0x55555555, 0xb503, x1, 856, x2)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaab, -0x55555555, 0x0, x1, 860, x2)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0xccccccce, -0x55555555, 0x66666665, x1, 864, x2)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x99999999, -0x55555555, 0x33333332, x1, 868, x2)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0xffffffff, -0x55555555, 0x55555554, x1, 872, x2)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaa9, -0x55555555, 0x2, x1, 876, x2)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1faf, -0x55555555, 0xb504, x1, 880, x2)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x5555e057, -0x55555555, -0xb504, x1, 884, x2)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccd, -0x55555555, 0x66666666, x1, 888, x2)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x99999998, -0x55555555, 0x33333333, x1, 892, x2)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaae, -0x55555555, 0x5, x1, 896, x2)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x1, -0x55555555, -0x55555556, x1, 900, x2)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffe, -0x55555555, 0x55555555, x1, 904, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaa8, -0x55555555, 0x3, x1, 908, x2)
+
+inst_228:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x5555e053, 0x55555556, 0xb505, x1, 912, x2)
+
+inst_229:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fab, 0x55555556, -0xb503, x1, 916, x2)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x55555556, 0x66666667, x1, 920, x2)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x66666662, 0x55555556, 0x33333334, x1, 924, x2)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x55555550, 0x55555556, 0x6, x1, 928, x2)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffd, 0x55555556, -0x55555555, x1, 932, x2)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x55555556, 0x55555556, x1, 936, x2)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x55555552, 0x55555556, 0x4, x1, 940, x2)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x5555e055, 0x55555556, 0xb503, x1, 944, x2)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 948, x2)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x33333333, 0x55555556, 0x66666665, x1, 952, x2)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x66666664, 0x55555556, 0x33333332, x1, 956, x2)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x2, 0x55555556, 0x55555554, x1, 960, x2)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x55555554, 0x55555556, 0x2, x1, 964, x2)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x5555e052, 0x55555556, 0xb504, x1, 968, x2)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1faa, 0x55555556, -0xb504, x1, 972, x2)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x55555556, 0x66666666, x1, 976, x2)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x66666665, 0x55555556, 0x33333333, x1, 980, x2)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x55555553, 0x55555556, 0x5, x1, 984, x2)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffc, 0x55555556, -0x55555556, x1, 988, x2)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x3, 0x55555556, 0x55555555, x1, 992, x2)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555556; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x55555555, 0x55555556, 0x3, x1, 996, x2)
+
+inst_250:
+// rs1_val==4 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xb501, 0x4, 0xb505, x1, 1000, x2)
+
+inst_251:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xffff4af9, 0x4, -0xb503, x1, 1004, x2)
+
+inst_252:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x66666663, 0x4, 0x66666667, x1, 1008, x2)
+
+inst_253:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x4, 0x33333334, x1, 1012, x2)
+
+inst_254:
+// rs1_val==4 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x2, 0x4, 0x6, x1, 1016, x2)
+
+inst_255:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaaf, 0x4, -0x55555555, x1, 1020, x2)
+
+inst_256:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x55555552, 0x4, 0x55555556, x1, 1024, x2)
+
+inst_257:
+// rs1_val==4 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x4, 0x4, x1, 1028, x2)
+
+inst_258:
+// rs1_val==4 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xb507, 0x4, 0xb503, x1, 1032, x2)
+
+inst_259:
+// rs1_val==4 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x4, 0x4, 0x0, x1, 1036, x2)
+
+inst_260:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x66666661, 0x4, 0x66666665, x1, 1040, x2)
+
+inst_261:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33333336, 0x4, 0x33333332, x1, 1044, x2)
+
+inst_262:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x55555550, 0x4, 0x55555554, x1, 1048, x2)
+
+inst_263:
+// rs1_val==4 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0x4, 0x2, x1, 1052, x2)
+
+inst_264:
+// rs1_val==4 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xb500, 0x4, 0xb504, x1, 1056, x2)
+
+inst_265:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xffff4af8, 0x4, -0xb504, x1, 1060, x2)
+
+inst_266:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x66666662, 0x4, 0x66666666, x1, 1064, x2)
+
+inst_267:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33333337, 0x4, 0x33333333, x1, 1068, x2)
+
+inst_268:
+// rs1_val==4 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x4, 0x5, x1, 1072, x2)
+
+inst_269:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaae, 0x4, -0x55555556, x1, 1076, x2)
+
+inst_270:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x55555551, 0x4, 0x55555555, x1, 1080, x2)
+
+inst_271:
+// rs1_val==4 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x4; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x7, 0x4, 0x3, x1, 1084, x2)
+
+inst_272:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0xb503, 0xb505, x1, 1088, x2)
+
+inst_273:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffe, 0xb503, -0xb503, x1, 1092, x2)
+
+inst_274:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x6666d364, 0xb503, 0x66666667, x1, 1096, x2)
+
+inst_275:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33338637, 0xb503, 0x33333334, x1, 1100, x2)
+
+inst_276:
+// rs1_val==46339 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0xb505, 0xb503, 0x6, x1, 1104, x2)
+
+inst_277:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa8, 0xb503, -0x55555555, x1, 1108, x2)
+
+inst_278:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x5555e055, 0xb503, 0x55555556, x1, 1112, x2)
+
+inst_279:
+// rs1_val==46339 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xb507, 0xb503, 0x4, x1, 1116, x2)
+
+inst_280:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0xb503, 0xb503, x1, 1120, x2)
+
+inst_281:
+// rs1_val==46339 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0xb503, 0xb503, 0x0, x1, 1124, x2)
+
+inst_282:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x6666d366, 0xb503, 0x66666665, x1, 1128, x2)
+
+inst_283:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33338631, 0xb503, 0x33333332, x1, 1132, x2)
+
+inst_284:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x5555e057, 0xb503, 0x55555554, x1, 1136, x2)
+
+inst_285:
+// rs1_val==46339 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0xb501, 0xb503, 0x2, x1, 1140, x2)
+
+inst_286:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x7, 0xb503, 0xb504, x1, 1144, x2)
+
+inst_287:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xffffffff, 0xb503, -0xb504, x1, 1148, x2)
+
+inst_288:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x6666d365, 0xb503, 0x66666666, x1, 1152, x2)
+
+inst_289:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33338630, 0xb503, 0x33333333, x1, 1156, x2)
+
+inst_290:
+// rs1_val==46339 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0xb506, 0xb503, 0x5, x1, 1160, x2)
+
+inst_291:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa9, 0xb503, -0x55555556, x1, 1164, x2)
+
+inst_292:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x5555e056, 0xb503, 0x55555555, x1, 1168, x2)
+
+inst_293:
+// rs1_val==46339 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb503; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0xb500, 0xb503, 0x3, x1, 1172, x2)
+
+inst_294:
+// rs1_val==0 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xb505, 0x0, 0xb505, x1, 1176, x2)
+
+inst_295:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afd, 0x0, -0xb503, x1, 1180, x2)
+
+inst_296:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x66666667, 0x0, 0x66666667, x1, 1184, x2)
+
+inst_297:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33333334, 0x0, 0x33333334, x1, 1188, x2)
+
+inst_298:
+// rs1_val==0 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0x0, 0x6, x1, 1192, x2)
+
+inst_299:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaab, 0x0, -0x55555555, x1, 1196, x2)
+
+inst_300:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x55555556, 0x0, 0x55555556, x1, 1200, x2)
+
+inst_301:
+// rs1_val==0 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x4, 0x0, 0x4, x1, 1204, x2)
+
+inst_302:
+// rs1_val==0 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xb503, 0x0, 0xb503, x1, 1208, x2)
+
+inst_303:
+// rs1_val==0 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x0, 0x0, x1, 1212, x2)
+
+inst_304:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x66666665, 0x0, 0x66666665, x1, 1216, x2)
+
+inst_305:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33333332, 0x0, 0x33333332, x1, 1220, x2)
+
+inst_306:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x55555554, 0x0, 0x55555554, x1, 1224, x2)
+
+inst_307:
+// rs1_val==0 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x2, 0x0, 0x2, x1, 1228, x2)
+
+inst_308:
+// rs1_val==0 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xb504, 0x0, 0xb504, x1, 1232, x2)
+
+inst_309:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afc, 0x0, -0xb504, x1, 1236, x2)
+
+inst_310:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x66666666, 0x0, 0x66666666, x1, 1240, x2)
+
+inst_311:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33333333, 0x0, 0x33333333, x1, 1244, x2)
+
+inst_312:
+// rs1_val==0 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x5, 0x0, 0x5, x1, 1248, x2)
+
+inst_313:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaaa, 0x0, -0x55555556, x1, 1252, x2)
+
+inst_314:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x55555555, 0x0, 0x55555555, x1, 1256, x2)
+
+inst_315:
+// rs1_val==0 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x0; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x3, 0x0, 0x3, x1, 1260, x2)
+
+inst_316:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x6666d360, 0x66666665, 0xb505, x1, 1264, x2)
+
+inst_317:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x99992c98, 0x66666665, -0xb503, x1, 1268, x2)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x2, 0x66666665, 0x66666667, x1, 1272, x2)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x55555551, 0x66666665, 0x33333334, x1, 1276, x2)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x66666663, 0x66666665, 0x6, x1, 1280, x2)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xccccccce, 0x66666665, -0x55555555, x1, 1284, x2)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x33333333, 0x66666665, 0x55555556, x1, 1288, x2)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x66666661, 0x66666665, 0x4, x1, 1292, x2)
+
+inst_324:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x33333333, 0x33333333, 0x0, x1, 1296, x2)
+
+inst_325:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x55555556, 0x33333333, 0x66666665, x1, 1300, x2)
+
+inst_326:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x33333333, 0x33333332, x1, 1304, x2)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x66666667, 0x33333333, 0x55555554, x1, 1308, x2)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x33333333, 0x2, x1, 1312, x2)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x33338637, 0x33333333, 0xb504, x1, 1316, x2)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79cf, 0x33333333, -0xb504, x1, 1320, x2)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x55555555, 0x33333333, 0x66666666, x1, 1324, x2)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x33333333, 0x33333333, x1, 1328, x2)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x33333336, 0x33333333, 0x5, x1, 1332, x2)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x99999999, 0x33333333, -0x55555556, x1, 1336, x2)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x66666666, 0x33333333, 0x55555555, x1, 1340, x2)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x33333333, 0x3, x1, 1344, x2)
+
+inst_337:
+// rs1_val==5 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xb500, 0x5, 0xb505, x1, 1348, x2)
+
+inst_338:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xffff4af8, 0x5, -0xb503, x1, 1352, x2)
+
+inst_339:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x66666662, 0x5, 0x66666667, x1, 1356, x2)
+
+inst_340:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x5, 0x33333334, x1, 1360, x2)
+
+inst_341:
+// rs1_val==5 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x3, 0x5, 0x6, x1, 1364, x2)
+
+inst_342:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaae, 0x5, -0x55555555, x1, 1368, x2)
+
+inst_343:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x55555553, 0x5, 0x55555556, x1, 1372, x2)
+
+inst_344:
+// rs1_val==5 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x5, 0x4, x1, 1376, x2)
+
+inst_345:
+// rs1_val==5 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xb506, 0x5, 0xb503, x1, 1380, x2)
+
+inst_346:
+// rs1_val==5 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x5, 0x5, 0x0, x1, 1384, x2)
+
+inst_347:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x66666660, 0x5, 0x66666665, x1, 1388, x2)
+
+inst_348:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33333337, 0x5, 0x33333332, x1, 1392, x2)
+
+inst_349:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x55555551, 0x5, 0x55555554, x1, 1396, x2)
+
+inst_350:
+// rs1_val==5 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x7, 0x5, 0x2, x1, 1400, x2)
+
+inst_351:
+// rs1_val==5 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xb501, 0x5, 0xb504, x1, 1404, x2)
+
+inst_352:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xffff4af9, 0x5, -0xb504, x1, 1408, x2)
+
+inst_353:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x66666663, 0x5, 0x66666666, x1, 1412, x2)
+
+inst_354:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33333336, 0x5, 0x33333333, x1, 1416, x2)
+
+inst_355:
+// rs1_val==5 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x5, 0x5, x1, 1420, x2)
+
+inst_356:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaaf, 0x5, -0x55555556, x1, 1424, x2)
+
+inst_357:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x55555550, 0x5, 0x55555555, x1, 1428, x2)
+
+inst_358:
+// rs1_val==5 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x5; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0x5, 0x3, x1, 1432, x2)
+
+inst_359:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1faf, -0x55555556, 0xb505, x1, 1436, x2)
+
+inst_360:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x5555e057, -0x55555556, -0xb503, x1, 1440, x2)
+
+inst_361:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccd, -0x55555556, 0x66666667, x1, 1444, x2)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x9999999e, -0x55555556, 0x33333334, x1, 1448, x2)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaac, -0x55555556, 0x6, x1, 1452, x2)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x1, -0x55555556, -0x55555555, x1, 1456, x2)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffc, -0x55555556, 0x55555556, x1, 1460, x2)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaae, -0x55555556, 0x4, x1, 1464, x2)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa9, -0x55555556, 0xb503, x1, 1468, x2)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1472, x2)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccf, -0x55555556, 0x66666665, x1, 1476, x2)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x99999998, -0x55555556, 0x33333332, x1, 1480, x2)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffe, -0x55555556, 0x55555554, x1, 1484, x2)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaa8, -0x55555556, 0x2, x1, 1488, x2)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fae, -0x55555556, 0xb504, x1, 1492, x2)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x5555e056, -0x55555556, -0xb504, x1, 1496, x2)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccc, -0x55555556, 0x66666666, x1, 1500, x2)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x99999999, -0x55555556, 0x33333333, x1, 1504, x2)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaaf, -0x55555556, 0x5, x1, 1508, x2)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x0, -0x55555556, -0x55555556, x1, 1512, x2)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xffffffff, -0x55555556, 0x55555555, x1, 1516, x2)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaa9, -0x55555556, 0x3, x1, 1520, x2)
+
+inst_381:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x5555e050, 0x55555555, 0xb505, x1, 1524, x2)
+
+inst_382:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa8, 0x55555555, -0xb503, x1, 1528, x2)
+
+inst_383:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x33333332, 0x55555555, 0x66666667, x1, 1532, x2)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x66666661, 0x55555555, 0x33333334, x1, 1536, x2)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x55555553, 0x55555555, 0x6, x1, 1540, x2)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffe, 0x55555555, -0x55555555, x1, 1544, x2)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x3, 0x55555555, 0x55555556, x1, 1548, x2)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x55555551, 0x55555555, 0x4, x1, 1552, x2)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x5555e056, 0x55555555, 0xb503, x1, 1556, x2)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x55555555, 0x55555555, 0x0, x1, 1560, x2)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x55555555, 0x66666665, x1, 1564, x2)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x66666667, 0x55555555, 0x33333332, x1, 1568, x2)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x55555555, 0x55555554, x1, 1572, x2)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x55555557, 0x55555555, 0x2, x1, 1576, x2)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x5555e051, 0x55555555, 0xb504, x1, 1580, x2)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa9, 0x55555555, -0xb504, x1, 1584, x2)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x33333333, 0x55555555, 0x66666666, x1, 1588, x2)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x66666666, 0x55555555, 0x33333333, x1, 1592, x2)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x55555550, 0x55555555, 0x5, x1, 1596, x2)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xffffffff, 0x55555555, -0x55555556, x1, 1600, x2)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x55555555, 0x55555555, x1, 1604, x2)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555555; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x55555556, 0x55555555, 0x3, x1, 1608, x2)
+
+inst_403:
+// rs1_val==3 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xb506, 0x3, 0xb505, x1, 1612, x2)
+
+inst_404:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afe, 0x3, -0xb503, x1, 1616, x2)
+
+inst_405:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x66666664, 0x3, 0x66666667, x1, 1620, x2)
+
+inst_406:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33333337, 0x3, 0x33333334, x1, 1624, x2)
+
+inst_407:
+// rs1_val==3 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x5, 0x3, 0x6, x1, 1628, x2)
+
+inst_408:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaa8, 0x3, -0x55555555, x1, 1632, x2)
+
+inst_409:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x55555555, 0x3, 0x55555556, x1, 1636, x2)
+
+inst_410:
+// rs1_val==3 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x7, 0x3, 0x4, x1, 1640, x2)
+
+inst_411:
+// rs1_val==3 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xb500, 0x3, 0xb503, x1, 1644, x2)
+
+inst_412:
+// rs1_val==3 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x3, 0x3, 0x0, x1, 1648, x2)
+
+inst_413:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x66666666, 0x3, 0x66666665, x1, 1652, x2)
+
+inst_414:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x3, 0x33333332, x1, 1656, x2)
+
+inst_415:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x55555557, 0x3, 0x55555554, x1, 1660, x2)
+
+inst_416:
+// rs1_val==3 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x3, 0x2, x1, 1664, x2)
+
+inst_417:
+// rs1_val==3 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xb507, 0x3, 0xb504, x1, 1668, x2)
+
+inst_418:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xffff4aff, 0x3, -0xb504, x1, 1672, x2)
+
+inst_419:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x66666665, 0x3, 0x66666666, x1, 1676, x2)
+
+inst_420:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x3, 0x33333333, x1, 1680, x2)
+
+inst_421:
+// rs1_val==3 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0x3, 0x5, x1, 1684, x2)
+
+inst_422:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaa9, 0x3, -0x55555556, x1, 1688, x2)
+
+inst_423:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x55555556, 0x3, 0x55555555, x1, 1692, x2)
+
+inst_424:
+// rs1_val==3 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x3; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x3, 0x3, x1, 1696, x2)
+
+inst_425:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x6666d366, 0x66666665, 0xb503, x1, 1700, x2)
+
+inst_426:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x66666665, 0x66666665, 0x0, x1, 1704, x2)
+
+inst_427:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x66666665, 0x66666665, x1, 1708, x2)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x55555557, 0x66666665, 0x33333332, x1, 1712, x2)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x66666665, 0x55555554, x1, 1716, x2)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x66666667, 0x66666665, 0x2, x1, 1720, x2)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x6666d361, 0x66666665, 0xb504, x1, 1724, x2)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x99992c99, 0x66666665, -0xb504, x1, 1728, x2)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x3, 0x66666665, 0x66666666, x1, 1732, x2)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x55555556, 0x66666665, 0x33333333, x1, 1736, x2)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x66666660, 0x66666665, 0x5, x1, 1740, x2)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccf, 0x66666665, -0x55555556, x1, 1744, x2)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x66666665, 0x55555555, x1, 1748, x2)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666665; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x66666666, 0x66666665, 0x3, x1, 1752, x2)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x33338637, 0x33333332, 0xb505, x1, 1756, x2)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79cf, 0x33333332, -0xb503, x1, 1760, x2)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x55555555, 0x33333332, 0x66666667, x1, 1764, x2)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0x33333332, 0x33333334, x1, 1768, x2)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x33333334, 0x33333332, 0x6, x1, 1772, x2)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x99999999, 0x33333332, -0x55555555, x1, 1776, x2)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x66666664, 0x33333332, 0x55555556, x1, 1780, x2)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x33333336, 0x33333332, 0x4, x1, 1784, x2)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x33338631, 0x33333332, 0xb503, x1, 1788, x2)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x33333332, 0x33333332, 0x0, x1, 1792, x2)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x55555557, 0x33333332, 0x66666665, x1, 1796, x2)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x33333332, 0x33333332, x1, 1800, x2)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x66666666, 0x33333332, 0x55555554, x1, 1804, x2)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x33333332, 0x2, x1, 1808, x2)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x33338636, 0x33333332, 0xb504, x1, 1812, x2)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79ce, 0x33333332, -0xb504, x1, 1816, x2)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x55555554, 0x33333332, 0x66666666, x1, 1820, x2)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x33333332, 0x33333333, x1, 1824, x2)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x33333337, 0x33333332, 0x5, x1, 1828, x2)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x99999998, 0x33333332, -0x55555556, x1, 1832, x2)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x66666667, 0x33333332, 0x55555555, x1, 1836, x2)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333332; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x33333332, 0x3, x1, 1840, x2)
+
+inst_461:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x5555e051, 0x55555554, 0xb505, x1, 1844, x2)
+
+inst_462:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa9, 0x55555554, -0xb503, x1, 1848, x2)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x33333333, 0x55555554, 0x66666667, x1, 1852, x2)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x66666660, 0x55555554, 0x33333334, x1, 1856, x2)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x55555552, 0x55555554, 0x6, x1, 1860, x2)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xffffffff, 0x55555554, -0x55555555, x1, 1864, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x2, 0x55555554, 0x55555556, x1, 1868, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x55555550, 0x55555554, 0x4, x1, 1872, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x5555e057, 0x55555554, 0xb503, x1, 1876, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 1880, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x55555554, 0x66666665, x1, 1884, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x66666666, 0x55555554, 0x33333332, x1, 1888, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x55555554, 0x55555554, x1, 1892, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x55555556, 0x55555554, 0x2, x1, 1896, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x5555e050, 0x55555554, 0xb504, x1, 1900, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa8, 0x55555554, -0xb504, x1, 1904, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x33333332, 0x55555554, 0x66666666, x1, 1908, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x66666667, 0x55555554, 0x33333333, x1, 1912, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x55555551, 0x55555554, 0x5, x1, 1916, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xfffffffe, 0x55555554, -0x55555556, x1, 1920, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x55555554, 0x55555555, x1, 1924, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x55555554; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x55555557, 0x55555554, 0x3, x1, 1928, x2)
+
+inst_483:
+// rs1_val==2 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xb507, 0x2, 0xb505, x1, 1932, x2)
+
+inst_484:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xffff4aff, 0x2, -0xb503, x1, 1936, x2)
+
+inst_485:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x66666665, 0x2, 0x66666667, x1, 1940, x2)
+
+inst_486:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33333336, 0x2, 0x33333334, x1, 1944, x2)
+
+inst_487:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaa9, 0x2, -0x55555555, x1, 1948, x2)
+
+inst_488:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x55555554, 0x2, 0x55555556, x1, 1952, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x6, 0x2, 0x4, x1, 1956, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xb501, 0x2, 0xb503, x1, 1960, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x2, 0x2, 0x0, x1, 1964, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x66666667, 0x2, 0x66666665, x1, 1968, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x2, 0x33333332, x1, 1972, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x55555556, 0x2, 0x55555554, x1, 1976, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x2, 0x2, x1, 1980, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xb506, 0x2, 0xb504, x1, 1984, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afe, 0x2, -0xb504, x1, 1988, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x66666664, 0x2, 0x66666666, x1, 1992, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33333331, 0x2, 0x33333333, x1, 1996, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x7, 0x2, 0x5, x1, 2000, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaaaaa8, 0x2, -0x55555556, x1, 2004, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x55555557, 0x2, 0x55555555, x1, 2008, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x2; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x2, 0x3, x1, 2012, x2)
+
+inst_504:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0xb504, 0xb505, x1, 2016, x2)
+
+inst_505:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff9, 0xb504, -0xb503, x1, 2020, x2)
+
+inst_506:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x6666d363, 0xb504, 0x66666667, x1, 2024, x2)
+
+inst_507:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x33338630, 0xb504, 0x33333334, x1, 2028, x2)
+
+inst_508:
+// rs1_val==46340 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0xb502, 0xb504, 0x6, x1, 2032, x2)
+
+inst_509:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1faf, 0xb504, -0x55555555, x1, 2036, x2)
+
+inst_510:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x5555e052, 0xb504, 0x55555556, x1, 2040, x2)
+
+inst_511:
+// rs1_val==46340 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xb500, 0xb504, 0x4, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_512:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x7, 0xb504, 0xb503, x1, 0, x2)
+
+inst_513:
+// rs1_val==46340 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0xb504, 0xb504, 0x0, x1, 4, x2)
+
+inst_514:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x6666d361, 0xb504, 0x66666665, x1, 8, x2)
+
+inst_515:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x33338636, 0xb504, 0x33333332, x1, 12, x2)
+
+inst_516:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x5555e050, 0xb504, 0x55555554, x1, 16, x2)
+
+inst_517:
+// rs1_val==46340 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0xb506, 0xb504, 0x2, x1, 20, x2)
+
+inst_518:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0xb504, 0xb504, x1, 24, x2)
+
+inst_519:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff8, 0xb504, -0xb504, x1, 28, x2)
+
+inst_520:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x6666d362, 0xb504, 0x66666666, x1, 32, x2)
+
+inst_521:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x33338637, 0xb504, 0x33333333, x1, 36, x2)
+
+inst_522:
+// rs1_val==46340 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0xb501, 0xb504, 0x5, x1, 40, x2)
+
+inst_523:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fae, 0xb504, -0x55555556, x1, 44, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x5555e051, 0xb504, 0x55555555, x1, 48, x2)
+
+inst_525:
+// rs1_val==46340 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0xb504; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0xb507, 0xb504, 0x3, x1, 52, x2)
+
+inst_526:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff9, -0xb504, 0xb505, x1, 56, x2)
+
+inst_527:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x1, -0xb504, -0xb503, x1, 60, x2)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x99992c9b, -0xb504, 0x66666667, x1, 64, x2)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79c8, -0xb504, 0x33333334, x1, 68, x2)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afa, -0xb504, 0x6, x1, 72, x2)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x5555e057, -0xb504, -0x55555555, x1, 76, x2)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1faa, -0xb504, 0x55555556, x1, 80, x2)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0xffff4af8, -0xb504, 0x4, x1, 84, x2)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xffffffff, -0xb504, 0xb503, x1, 88, x2)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afc, -0xb504, 0x0, x1, 92, x2)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x99992c99, -0xb504, 0x66666665, x1, 96, x2)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79ce, -0xb504, 0x33333332, x1, 100, x2)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa8, -0xb504, 0x55555554, x1, 104, x2)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0xffff4afe, -0xb504, 0x2, x1, 108, x2)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0xfffffff8, -0xb504, 0xb504, x1, 112, x2)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x0, -0xb504, -0xb504, x1, 116, x2)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x99992c9a, -0xb504, 0x66666666, x1, 120, x2)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79cf, -0xb504, 0x33333333, x1, 124, x2)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0xffff4af9, -0xb504, 0x5, x1, 128, x2)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x5555e056, -0xb504, -0x55555556, x1, 132, x2)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xaaaa1fa9, -0xb504, 0x55555555, x1, 136, x2)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:-0xb504; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0xffff4aff, -0xb504, 0x3, x1, 140, x2)
+
+inst_548:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x6666d363, 0x66666666, 0xb505, x1, 144, x2)
+
+inst_549:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x99992c9b, 0x66666666, -0xb503, x1, 148, x2)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x1, 0x66666666, 0x66666667, x1, 152, x2)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x55555552, 0x66666666, 0x33333334, x1, 156, x2)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x66666660, 0x66666666, 0x6, x1, 160, x2)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccd, 0x66666666, -0x55555555, x1, 164, x2)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x33333330, 0x66666666, 0x55555556, x1, 168, x2)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x66666662, 0x66666666, 0x4, x1, 172, x2)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x6666d365, 0x66666666, 0xb503, x1, 176, x2)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x0
+TEST_CR_OP( c.xor, x10, x11, 0x66666666, 0x66666666, 0x0, x1, 180, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665
+TEST_CR_OP( c.xor, x10, x11, 0x3, 0x66666666, 0x66666665, x1, 184, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332
+TEST_CR_OP( c.xor, x10, x11, 0x55555554, 0x66666666, 0x33333332, x1, 188, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554
+TEST_CR_OP( c.xor, x10, x11, 0x33333332, 0x66666666, 0x55555554, x1, 192, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x2
+TEST_CR_OP( c.xor, x10, x11, 0x66666664, 0x66666666, 0x2, x1, 196, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x6666d362, 0x66666666, 0xb504, x1, 200, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504
+TEST_CR_OP( c.xor, x10, x11, 0x99992c9a, 0x66666666, -0xb504, x1, 204, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666
+TEST_CR_OP( c.xor, x10, x11, 0x0, 0x66666666, 0x66666666, x1, 208, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333
+TEST_CR_OP( c.xor, x10, x11, 0x55555555, 0x66666666, 0x33333333, x1, 212, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x5
+TEST_CR_OP( c.xor, x10, x11, 0x66666663, 0x66666666, 0x5, x1, 216, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0xcccccccc, 0x66666666, -0x55555556, x1, 220, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x33333333, 0x66666666, 0x55555555, x1, 224, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x66666666; op2val:0x3
+TEST_CR_OP( c.xor, x10, x11, 0x66666665, 0x66666666, 0x3, x1, 228, x2)
+
+inst_570:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505
+TEST_CR_OP( c.xor, x10, x11, 0x33338636, 0x33333333, 0xb505, x1, 232, x2)
+
+inst_571:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503
+TEST_CR_OP( c.xor, x10, x11, 0xcccc79ce, 0x33333333, -0xb503, x1, 236, x2)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667
+TEST_CR_OP( c.xor, x10, x11, 0x55555554, 0x33333333, 0x66666667, x1, 240, x2)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334
+TEST_CR_OP( c.xor, x10, x11, 0x7, 0x33333333, 0x33333334, x1, 244, x2)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x6
+TEST_CR_OP( c.xor, x10, x11, 0x33333335, 0x33333333, 0x6, x1, 248, x2)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555
+TEST_CR_OP( c.xor, x10, x11, 0x99999998, 0x33333333, -0x55555555, x1, 252, x2)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556
+TEST_CR_OP( c.xor, x10, x11, 0x66666665, 0x33333333, 0x55555556, x1, 256, x2)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0x4
+TEST_CR_OP( c.xor, x10, x11, 0x33333337, 0x33333333, 0x4, x1, 260, x2)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503
+TEST_CR_OP( c.xor, x10, x11, 0x33338630, 0x33333333, 0xb503, x1, 264, x2)
+
+inst_579:
+// rs2_val == 2147483647, rs1_val == 64, rs2_val == (2**(xlen-1)-1), rs2_val > 0
+// opcode: c.xor; op1:x10; op2:x11; op1val:0x40; op2val:0x7fffffff
+TEST_CR_OP( c.xor, x10, x11, 0x7fffffbf, 0x40, 0x7fffffff, x1, 268, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 68*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/Makefile
new file mode 100644
index 000000000..b9410d41f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32e -mabi=ilp32e -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/Makefrag
new file mode 100644
index 000000000..b7c5692a5
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/Makefrag
@@ -0,0 +1,73 @@
+# RISC-V Architecture Test RV32E Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV32E architectural tests
+
+rv32e_sc_tests = \
+ add-01 \
+ addi-01 \
+ and-01 \
+ andi-01 \
+ auipc-01 \
+ beq-01 \
+ bge-01 \
+ bgeu-01 \
+ blt-01 \
+ bltu-01 \
+ bne-01 \
+ jal-01 \
+ jalr-01 \
+ lb-align-01 \
+ lbu-align-01 \
+ lh-align-01 \
+ lhu-align-01 \
+ lui-01 \
+ lw-align-01 \
+ or-01 \
+ ori-01 \
+ sb-align-01 \
+ sh-align-01 \
+ sll-01 \
+ slli-01 \
+ slt-01 \
+ slti-01 \
+ sltiu-01 \
+ sltu-01 \
+ sra-01 \
+ srai-01 \
+ srl-01 \
+ srli-01 \
+ sub-01 \
+ sw-align-01 \
+ xor-01 \
+ xori-01
+
+
+
+rv32e_tests = $(addsuffix .elf, $(rv32e_sc_tests))
+
+target_tests += $(rv32e_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/add-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/add-01.reference_output
new file mode 100644
index 000000000..4d18d6a9c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/add-01.reference_output
@@ -0,0 +1,583 @@
+ffffb7fe
+7ffbfffe
+bfbffffe
+00000040
+00000000
+f6fffffe
+fc000006
+31333332
+ff0007ff
+ff7fffee
+ffbffffa
+fddffffe
+ffedfffe
+ffd7fffe
+fffc007f
+fdfdfffe
+aaa9aaa9
+3332b331
+ffffe002
+fffff008
+fff7f7fe
+fffffbff
+fffff5fe
+55555454
+ffffff7c
+ffdfffbe
+ffffff5e
+fffffff8
+ffffbff6
+07fffffb
+ffdffffc
+ffffbffd
+8001ffff
+26666664
+dfff7ffe
+f000001f
+f7ffff7e
+fc0fffff
+ff7ffffb
+ffefffff
+fffeeffe
+00077fff
+ffffdfff
+0003efff
+fffffcff
+ffffddfe
+ffffeefe
+ffffffae
+ffffffe6
+fdfffff6
+fffffff8
+80000006
+60000000
+e0000000
+baaaaaaa
+08000001
+59555554
+02000040
+01000003
+007ffffa
+00400010
+000fffff
+00010000
+ffff7fff
+ffff8afd
+55557555
+00011000
+00000800
+00080400
+000001fd
+fffffe7f
+00000042
+ffe0000f
+fffffff7
+fffffffb
+ffffffc1
+40000000
+80000006
+40000005
+0fff4afc
+04000006
+01fffff7
+00fffff9
+007ffffe
+003ffdff
+001ffff8
+c00fffff
+0003ff7f
+c001ffff
+01008000
+c0004000
+00042000
+aaaabaaa
+f80003ff
+00000201
+ffff00ff
+fff80007
+00016a0a
+00000002
+66671b6c
+3333e839
+0000b50b
+aaab5fb0
+55560a5b
+0000b509
+00016a08
+0000b505
+66671b6a
+3333e837
+55560a59
+0000b507
+00016a09
+00000001
+66671b6b
+3333e838
+0000b50a
+aaab5faf
+55560a5a
+0000b508
+00000002
+fffe95fa
+6665b164
+33327e31
+ffff4b03
+aaa9f5a8
+5554a053
+ffff4b01
+00000000
+ffff4afd
+6665b162
+33327e2f
+5554a051
+ffff4aff
+00000001
+fffe95f9
+6665b163
+33327e30
+ffff4b02
+aaa9f5a7
+5554a052
+ffff4b00
+66671b6c
+6665b164
+ccccccce
+9999999b
+6666666d
+11111112
+bbbbbbbd
+6666666b
+66671b6a
+66666667
+cccccccc
+99999999
+bbbbbbbb
+66666669
+66671b6b
+6665b163
+cccccccd
+9999999a
+6666666c
+11111111
+bbbbbbbc
+6666666a
+3333e839
+33327e31
+9999999b
+66666668
+3333333a
+dddddddf
+8888888a
+33333338
+3333e837
+33333334
+99999999
+66666666
+88888888
+33333336
+3333e838
+33327e30
+9999999a
+66666667
+33333339
+ddddddde
+88888889
+33333337
+0000b50b
+ffff4b03
+6666666d
+3333333a
+0000000c
+aaaaaab1
+5555555c
+0000000a
+0000b509
+00000006
+6666666b
+33333338
+5555555a
+00000008
+0000b50a
+ffff4b02
+6666666c
+33333339
+0000000b
+aaaaaab0
+5555555b
+00000009
+aaab5fb0
+aaa9f5a8
+11111112
+dddddddf
+aaaaaab1
+55555556
+00000001
+aaaaaaaf
+aaab5fae
+aaaaaaab
+11111110
+dddddddd
+ffffffff
+aaaaaaad
+aaab5faf
+aaa9f5a7
+11111111
+ddddddde
+aaaaaab0
+55555555
+00000000
+aaaaaaae
+55560a5b
+5554a053
+bbbbbbbd
+8888888a
+5555555c
+00000001
+aaaaaaac
+5555555a
+55560a59
+55555556
+bbbbbbbb
+88888888
+aaaaaaaa
+55555558
+55560a5a
+5554a052
+bbbbbbbc
+88888889
+5555555b
+00000000
+aaaaaaab
+55555559
+0000b509
+ffff4b01
+6666666b
+33333338
+0000000a
+aaaaaaaf
+5555555a
+00000008
+0000b507
+00000004
+66666669
+33333336
+55555558
+00000006
+0000b508
+ffff4b00
+6666666a
+33333337
+00000009
+aaaaaaae
+55555559
+00000007
+00016a08
+00000000
+66671b6a
+3333e837
+0000b509
+aaab5fae
+55560a59
+0000b507
+00016a06
+0000b503
+66671b68
+3333e835
+55560a57
+0000b505
+00016a07
+ffffffff
+66671b69
+3333e836
+0000b508
+aaab5fad
+55560a58
+0000b506
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaab
+55555556
+00000004
+0000b503
+00000000
+66666665
+33333332
+55555554
+00000002
+0000b504
+ffff4afc
+66666666
+33333333
+00000005
+aaaaaaaa
+55555555
+00000003
+66671b6a
+6665b162
+cccccccc
+99999999
+6666666b
+11111110
+bbbbbbbb
+66666669
+66671b68
+33333333
+99999998
+66666665
+88888887
+33333335
+3333e837
+33327e2f
+99999999
+66666666
+33333338
+dddddddd
+88888888
+33333336
+0000b50a
+ffff4b02
+6666666c
+33333339
+0000000b
+aaaaaab0
+5555555b
+00000009
+0000b508
+00000005
+6666666a
+33333337
+55555559
+00000007
+0000b509
+ffff4b01
+6666666b
+33333338
+0000000a
+aaaaaaaf
+5555555a
+00000008
+aaab5faf
+aaa9f5a7
+11111111
+ddddddde
+aaaaaab0
+55555555
+00000000
+aaaaaaae
+aaab5fad
+aaaaaaaa
+1111110f
+dddddddc
+fffffffe
+aaaaaaac
+aaab5fae
+aaa9f5a6
+11111110
+dddddddd
+aaaaaaaf
+55555554
+ffffffff
+aaaaaaad
+55560a5a
+5554a052
+bbbbbbbc
+88888889
+5555555b
+00000000
+aaaaaaab
+55555559
+55560a58
+55555555
+bbbbbbba
+88888887
+aaaaaaa9
+55555557
+55560a59
+5554a051
+bbbbbbbb
+88888888
+5555555a
+ffffffff
+aaaaaaaa
+55555558
+0000b508
+ffff4b00
+6666666a
+33333337
+00000009
+aaaaaaae
+55555559
+00000007
+0000b506
+00000003
+66666668
+33333335
+55555557
+00000005
+0000b507
+ffff4aff
+66666669
+33333336
+00000008
+aaaaaaad
+55555558
+00000006
+66666665
+ccccccca
+99999997
+bbbbbbb9
+66666667
+66671b69
+6665b161
+cccccccb
+99999998
+6666666a
+1111110f
+bbbbbbba
+66666668
+3333e837
+33327e2f
+99999999
+66666666
+33333338
+dddddddd
+88888888
+33333336
+3333e835
+33333332
+99999997
+66666664
+88888886
+33333334
+3333e836
+33327e2e
+99999998
+66666665
+33333337
+dddddddc
+88888887
+33333335
+55560a59
+5554a051
+bbbbbbbb
+88888888
+5555555a
+ffffffff
+aaaaaaaa
+55555558
+55560a57
+55555554
+bbbbbbb9
+88888886
+aaaaaaa8
+55555556
+55560a58
+5554a050
+bbbbbbba
+88888887
+55555559
+fffffffe
+aaaaaaa9
+55555557
+0000b507
+ffff4aff
+66666669
+33333336
+00000008
+aaaaaaad
+55555558
+00000006
+0000b505
+00000002
+66666667
+33333334
+55555556
+00000004
+0000b506
+ffff4afe
+66666668
+33333335
+00000007
+aaaaaaac
+55555557
+00000005
+00016a09
+00000001
+66671b6b
+3333e838
+0000b50a
+aaab5faf
+55560a5a
+0000b508
+00016a07
+0000b504
+66671b69
+3333e836
+55560a58
+0000b506
+00016a08
+00000000
+66671b6a
+3333e837
+0000b509
+aaab5fae
+55560a59
+0000b507
+00000001
+fffe95f9
+6665b163
+33327e30
+ffff4b02
+aaa9f5a7
+5554a052
+ffff4b00
+ffffffff
+ffff4afc
+6665b161
+33327e2e
+5554a050
+ffff4afe
+00000000
+fffe95f8
+6665b162
+33327e2f
+ffff4b01
+aaa9f5a6
+5554a051
+ffff4aff
+66671b6b
+6665b163
+cccccccd
+9999999a
+6666666c
+11111111
+bbbbbbbc
+6666666a
+66671b69
+66666666
+cccccccb
+99999998
+bbbbbbba
+66666668
+66671b6a
+6665b162
+cccccccc
+99999999
+6666666b
+11111110
+bbbbbbbb
+66666669
+3333e838
+33327e30
+9999999a
+66666667
+33333339
+ddddddde
+88888889
+33333337
+3333e836
+e000001f
+f0000003
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/addi-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/addi-01.reference_output
new file mode 100644
index 000000000..752d52626
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/addi-01.reference_output
@@ -0,0 +1,561 @@
+1ffff800
+80000666
+00000000
+e0000555
+efffffee
+f7fffffb
+fbffffff
+00000000
+ff000003
+ff80003f
+ffbffffa
+ffe00554
+ffefffee
+fff7fff5
+fffbfdfe
+fffe0002
+ffff0004
+ffff8005
+ffffbff7
+ffffdff9
+ffffefde
+fffff9ff
+fffffbf9
+fffffdde
+ffffff01
+ffffffac
+ffffffeb
+ffffffe1
+fffffff5
+fffffff2
+00000027
+ffffffd1
+fffffff4
+0000bd02
+ffffffff
+ffffeefe
+07ffff7f
+ffffffc3
+ffffffb6
+00000003
+fffffff9
+80000556
+3ffffc00
+10000000
+03fffff6
+0200002e
+01000667
+007fffbf
+003ffeff
+00200555
+00100000
+00080005
+000403ff
+00020000
+00010200
+00007ff9
+00004333
+00002555
+00000aaa
+00000e65
+000001bf
+000004ff
+000006e6
+00000373
+0000081f
+00000210
+00000008
+ffffffff
+00000101
+000003bf
+00000080
+00000020
+00008010
+00000000
+55555556
+0000b533
+0000b4d9
+0000bb6c
+0000b839
+0000b50b
+0000afb0
+0000ba5b
+0000b509
+0000b531
+0000b505
+0000bb6a
+0000b837
+0000ba59
+0000b507
+0000b532
+0000b4d8
+0000bb6b
+0000b838
+0000b50a
+0000afaf
+0000ba5a
+0000b508
+ffff4b2b
+ffff4ad1
+ffff5164
+ffff4e31
+ffff4b03
+ffff45a8
+ffff5053
+ffff4b01
+ffff4b29
+ffff4afd
+ffff5162
+ffff4e2f
+ffff5051
+ffff4aff
+ffff4b2a
+ffff4ad0
+ffff5163
+ffff4e30
+ffff4b02
+ffff45a7
+ffff5052
+ffff4b00
+66666695
+6666663b
+66666cce
+6666699b
+6666666d
+66666112
+66666bbd
+6666666b
+66666693
+66666667
+66666ccc
+66666999
+66666bbb
+66666669
+66666694
+6666663a
+66666ccd
+6666699a
+6666666c
+66666111
+66666bbc
+6666666a
+33333362
+33333308
+3333399b
+33333668
+3333333a
+33332ddf
+3333388a
+33333338
+33333360
+33333334
+33333999
+33333666
+33333888
+33333336
+33333361
+33333307
+3333399a
+33333667
+33333339
+33332dde
+33333889
+33333337
+00000034
+ffffffda
+0000066d
+0000033a
+0000000c
+fffffab1
+0000055c
+0000000a
+00000032
+00000006
+0000066b
+00000338
+0000055a
+00000008
+00000033
+ffffffd9
+0000066c
+00000339
+0000000b
+fffffab0
+0000055b
+00000009
+aaaaaad9
+aaaaaa7f
+aaaab112
+aaaaaddf
+aaaaaab1
+aaaaa556
+aaaab001
+aaaaaaaf
+aaaaaad7
+aaaaaaab
+aaaab110
+aaaaaddd
+aaaaafff
+aaaaaaad
+aaaaaad8
+aaaaaa7e
+aaaab111
+aaaaadde
+aaaaaab0
+aaaaa555
+aaaab000
+aaaaaaae
+55555584
+5555552a
+55555bbd
+5555588a
+5555555c
+55555001
+55555aac
+5555555a
+55555582
+55555556
+55555bbb
+55555888
+55555aaa
+55555558
+55555583
+55555529
+55555bbc
+55555889
+5555555b
+55555000
+55555aab
+55555559
+00000032
+ffffffd8
+0000066b
+00000338
+0000000a
+fffffaaf
+0000055a
+00000008
+00000030
+00000004
+00000669
+00000336
+00000558
+00000006
+00000031
+ffffffd7
+0000066a
+00000337
+00000009
+fffffaae
+00000559
+00000007
+0000b531
+0000b4d7
+0000bb6a
+0000b837
+0000b509
+0000afae
+0000ba59
+0000b507
+0000b52f
+0000b503
+0000bb68
+0000b835
+0000ba57
+0000b505
+0000b530
+0000b4d6
+0000bb69
+0000b836
+0000b508
+0000afad
+0000ba58
+0000b506
+0000002e
+ffffffd4
+00000667
+00000334
+00000006
+fffffaab
+00000556
+00000004
+0000002c
+00000000
+00000665
+00000332
+00000554
+00000002
+0000002d
+ffffffd3
+00000666
+00000333
+00000005
+fffffaaa
+00000555
+00000003
+66666693
+66666639
+66666ccc
+66666999
+6666666b
+66666110
+66666bbb
+66666669
+66666691
+66666665
+aaaaa555
+aaaab000
+aaaaaaae
+aaaaaad6
+aaaaaaaa
+aaaab10f
+aaaaaddc
+aaaaaffe
+aaaaaaac
+aaaaaad7
+aaaaaa7d
+aaaab110
+aaaaaddd
+aaaaaaaf
+aaaaa554
+aaaaafff
+aaaaaaad
+55555583
+55555529
+55555bbc
+55555889
+5555555b
+55555000
+55555aab
+55555559
+55555581
+55555555
+55555bba
+55555887
+55555aa9
+55555557
+55555582
+55555528
+55555bbb
+55555888
+5555555a
+55554fff
+55555aaa
+55555558
+00000031
+ffffffd7
+0000066a
+00000337
+00000009
+fffffaae
+00000559
+00000007
+0000002f
+00000003
+00000668
+00000335
+00000557
+00000005
+00000030
+ffffffd6
+00000669
+00000336
+00000008
+fffffaad
+00000558
+00000006
+66666cca
+66666997
+66666bb9
+66666667
+66666692
+66666638
+66666ccb
+66666998
+6666666a
+6666610f
+66666bba
+66666668
+33333360
+33333306
+33333999
+33333666
+33333338
+33332ddd
+33333888
+33333336
+3333335e
+33333332
+33333997
+33333664
+33333886
+33333334
+3333335f
+33333305
+33333998
+33333665
+33333337
+33332ddc
+33333887
+33333335
+55555582
+55555528
+55555bbb
+55555888
+5555555a
+55554fff
+55555aaa
+55555558
+55555580
+55555554
+55555bb9
+55555886
+55555aa8
+55555556
+55555581
+55555527
+55555bba
+55555887
+55555559
+55554ffe
+55555aa9
+55555557
+00000030
+ffffffd6
+00000669
+00000336
+00000008
+fffffaad
+00000558
+00000006
+0000002e
+00000002
+00000667
+00000334
+00000556
+00000004
+0000002f
+ffffffd5
+00000668
+00000335
+00000007
+fffffaac
+00000557
+00000005
+0000b532
+0000b4d8
+0000bb6b
+0000b838
+0000b50a
+0000afaf
+0000ba5a
+0000b508
+0000b530
+0000b504
+0000bb69
+0000b836
+0000ba58
+0000b506
+0000b531
+0000b4d7
+0000bb6a
+0000b837
+0000b509
+0000afae
+0000ba59
+0000b507
+ffff4b2a
+ffff4ad0
+ffff5163
+ffff4e30
+ffff4b02
+ffff45a7
+ffff5052
+ffff4b00
+ffff4b28
+ffff4afc
+ffff5161
+ffff4e2e
+ffff5050
+ffff4afe
+ffff4b29
+ffff4acf
+ffff5162
+ffff4e2f
+ffff4b01
+ffff45a6
+ffff5051
+ffff4aff
+66666694
+6666663a
+66666ccd
+6666699a
+6666666c
+66666111
+66666bbc
+6666666a
+66666692
+66666666
+66666ccb
+66666998
+66666bba
+66666668
+66666693
+66666639
+66666ccc
+66666999
+6666666b
+66666110
+66666bbb
+66666669
+33333361
+33333307
+3333399a
+33333667
+33333339
+33332dde
+33333889
+33333337
+3333335f
+33333333
+33333998
+33333665
+33333887
+33333335
+33333360
+33333306
+33333999
+33333666
+33333338
+33332ddd
+33333888
+33333336
+00000033
+ffffffd9
+0000066c
+00000339
+0000000b
+fffffab0
+0000055b
+00000009
+00000031
+00000005
+0000066a
+00000337
+00000559
+00000007
+00000032
+ffffffd8
+0000066b
+00000338
+0000000a
+fffffaaf
+0000055a
+00000008
+aaaaaad8
+aaaaaa7e
+aaaab111
+aaaaadde
+aaaaaab0
+c000003f
+fdffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/and-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/and-01.reference_output
new file mode 100644
index 000000000..e8e6b49d4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/and-01.reference_output
@@ -0,0 +1,588 @@
+00000000
+00000003
+00000100
+00040000
+00100000
+f3ffffff
+aaaaaaaa
+00400000
+00000000
+ff7fffbf
+01000000
+ffdfbfff
+ffeffbff
+00000000
+02000000
+00000000
+00000004
+55555555
+40000000
+00000004
+00000100
+aaaaa2aa
+00001000
+00000001
+00000007
+00000003
+0000b504
+00000080
+0000b505
+00100000
+00004000
+33333330
+55555554
+7f7fffff
+26666667
+00000003
+effffff8
+00200000
+fdfffeff
+fe7fffff
+ff7ffeff
+ff9fffff
+66466666
+ffef4afd
+0000b504
+fffb7fff
+55555556
+00080000
+ffff3fff
+00000002
+00000020
+ffff42fc
+fff7fdff
+f7fffeff
+55555555
+fffffddf
+00000003
+00000006
+00000001
+ffff4afc
+00000000
+00000000
+20000000
+10000000
+08000000
+04000000
+02000000
+01000000
+00000000
+00000000
+00100000
+00000000
+00020000
+00000000
+00000000
+00000000
+00002000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000080
+00000000
+00000010
+00000004
+00000000
+20000000
+00000000
+04000000
+00800000
+00200000
+00080000
+00020000
+00000000
+00002000
+00000400
+00000200
+00000040
+00000000
+00000000
+0000b505
+00000005
+00002405
+00003104
+00000004
+0000a001
+00001504
+00000004
+0000b501
+00000000
+00002405
+00003100
+00001504
+00000000
+0000b504
+00000004
+00002404
+00003101
+00000005
+0000a000
+00001505
+00000001
+00000005
+ffff4afd
+66664265
+33330234
+00000004
+aaaa0aa9
+55554054
+00000001
+00000000
+66664265
+33330230
+55554054
+00000000
+00000004
+ffff4afc
+66664264
+33330231
+00000005
+aaaa0aa8
+55554055
+00000001
+00002405
+66664265
+66666667
+22222224
+00000006
+22222223
+44444446
+00000004
+00002403
+00000000
+66666665
+22222222
+44444444
+00000002
+00002404
+66664264
+66666666
+22222223
+00000005
+22222222
+44444445
+00000003
+00003104
+33330234
+22222224
+33333334
+00000004
+22222220
+11111114
+00000004
+00003100
+00000000
+22222224
+33333330
+11111114
+00000000
+00003104
+33330234
+22222224
+33333330
+00000004
+22222220
+11111114
+00000000
+00000004
+00000004
+00000006
+00000004
+00000006
+00000002
+00000006
+00000004
+00000002
+00000000
+00000004
+00000002
+00000004
+00000002
+00000004
+00000004
+00000006
+00000002
+00000004
+00000002
+00000004
+00000002
+0000a001
+aaaa0aa9
+22222223
+22222220
+00000002
+aaaaaaab
+00000002
+00000000
+0000a003
+00000000
+22222221
+22222222
+00000000
+00000002
+0000a000
+aaaa0aa8
+22222222
+22222223
+00000001
+aaaaaaaa
+00000001
+00000003
+00001504
+55554054
+44444446
+11111114
+00000006
+00000002
+55555556
+00000004
+00001502
+00000000
+44444444
+11111112
+55555554
+00000002
+00001504
+55554054
+44444446
+11111112
+00000004
+00000002
+55555554
+00000002
+00000004
+00000004
+00000004
+00000004
+00000004
+00000000
+00000004
+00000004
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000004
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+0000b501
+00000001
+00002403
+00003100
+00000002
+0000a003
+00001502
+00000000
+0000b503
+00000000
+00002401
+00003102
+00001500
+00000002
+0000b500
+00000000
+00002402
+00003103
+00000001
+0000a002
+00001501
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00002405
+66664265
+66666665
+22222224
+00000004
+22222221
+44444444
+00000004
+00002401
+00000000
+22222221
+33333332
+11111110
+00000002
+00003100
+33330230
+22222222
+33333333
+00000001
+22222222
+11111111
+00000003
+00000005
+00000005
+00000005
+00000004
+00000004
+00000001
+00000004
+00000004
+00000001
+00000000
+00000005
+00000000
+00000004
+00000000
+00000004
+00000004
+00000004
+00000001
+00000005
+00000000
+00000005
+00000001
+0000a000
+aaaa0aa8
+22222222
+22222220
+00000002
+aaaaaaaa
+00000002
+00000000
+0000a002
+00000000
+22222220
+22222222
+00000000
+00000002
+0000a000
+aaaa0aa8
+22222222
+22222222
+00000000
+aaaaaaaa
+00000000
+00000002
+00001505
+55554055
+44444445
+11111114
+00000004
+00000001
+55555554
+00000004
+00001501
+00000000
+44444445
+11111110
+55555554
+00000000
+00001504
+55554054
+44444444
+11111111
+00000005
+00000000
+55555555
+00000001
+00000001
+00000001
+00000003
+00000000
+00000002
+00000003
+00000002
+00000000
+00000003
+00000000
+00000001
+00000002
+00000000
+00000002
+00000000
+00000000
+00000002
+00000003
+00000001
+00000002
+00000001
+00000003
+00000000
+66666665
+22222220
+44444444
+00000000
+00002404
+66664264
+66666664
+22222221
+00000005
+22222220
+44444445
+00000001
+00003100
+33330230
+22222222
+33333330
+00000002
+22222222
+11111112
+00000000
+00003102
+00000000
+22222220
+33333332
+11111110
+00000002
+00003100
+33330230
+22222222
+33333332
+00000000
+22222222
+11111110
+00000002
+00001504
+55554054
+44444444
+11111114
+00000004
+00000000
+55555554
+00000004
+00001500
+00000000
+44444444
+11111110
+55555554
+00000000
+00001504
+55554054
+44444444
+11111110
+00000004
+00000000
+55555554
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000002
+00000002
+00000000
+00000002
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000002
+00000002
+00000000
+00000002
+00000000
+00000002
+0000b504
+00000004
+00002404
+00003104
+00000004
+0000a000
+00001504
+00000004
+0000b500
+00000000
+00002404
+00003100
+00001504
+00000000
+0000b504
+00000004
+00002404
+00003100
+00000004
+0000a000
+00001504
+00000000
+00000004
+ffff4afc
+66664264
+33330234
+00000004
+aaaa0aa8
+55554054
+00000004
+00000000
+00000000
+66664264
+33330230
+55554054
+00000000
+00000004
+ffff4afc
+66664264
+33330230
+00000004
+aaaa0aa8
+55554054
+00000000
+00002404
+66664264
+66666666
+22222224
+00000006
+22222222
+44444446
+00000004
+00002402
+00000000
+66666664
+22222222
+44444444
+00000002
+00002404
+66664264
+66666666
+22222222
+00000004
+22222222
+44444444
+00000002
+00003101
+33330231
+22222223
+33333330
+00000002
+22222223
+11111112
+00000000
+00003103
+00040000
+00100000
+fff7fffd
+fffdfff6
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/andi-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/andi-01.reference_output
new file mode 100644
index 000000000..1863cd1f2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/andi-01.reference_output
@@ -0,0 +1,554 @@
+00000000
+0000002c
+00000004
+00000007
+00000040
+f7fffffb
+00000332
+00000006
+00000000
+00000002
+00000010
+ffdfffbf
+00000006
+fff7fffc
+000007ff
+00000000
+00000334
+00000003
+00000002
+00000200
+ffffeaaa
+00000008
+00000332
+00000080
+00000003
+0000002d
+ffffff93
+ffffffd3
+fffffaaa
+00000334
+00000001
+00000004
+fffffbfe
+66666465
+02000000
+00010000
+00000008
+55555546
+00080000
+00000001
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+04000000
+00000000
+00800000
+00000000
+00000000
+00000000
+00040000
+00020000
+00008000
+00004000
+00000000
+00000000
+00000800
+00000400
+00000200
+00000100
+00000000
+00000040
+00000000
+00000000
+00000004
+00000000
+00000001
+00000004
+0000b504
+00000405
+00000104
+00000004
+0000b001
+00000504
+00000004
+00000004
+00000000
+00000405
+00000100
+00000504
+00000000
+00000005
+0000b501
+00000404
+00000101
+00000005
+0000b000
+00000505
+00000001
+0000002c
+ffff4ad4
+00000265
+00000234
+00000004
+ffff4aa9
+00000054
+00000004
+0000002c
+00000000
+00000265
+00000230
+00000054
+00000000
+0000002d
+ffff4ad1
+00000264
+00000231
+00000005
+ffff4aa8
+00000055
+00000001
+00000026
+66666644
+00000667
+00000224
+00000006
+66666223
+00000446
+00000004
+00000024
+00000000
+00000665
+00000222
+00000444
+00000002
+00000025
+66666643
+00000666
+00000223
+00000005
+66666222
+00000445
+00000003
+00000024
+33333314
+00000224
+00000334
+00000004
+33333220
+00000114
+00000004
+00000024
+00000000
+00000224
+00000330
+00000114
+00000000
+00000024
+33333310
+00000224
+00000330
+00000004
+33333220
+00000114
+00000000
+00000006
+00000004
+00000006
+00000004
+00000006
+00000002
+00000006
+00000004
+00000004
+00000000
+00000004
+00000002
+00000004
+00000002
+00000004
+00000002
+00000006
+00000002
+00000004
+00000002
+00000004
+00000002
+0000002a
+aaaaaa80
+00000223
+00000220
+00000002
+aaaaaaab
+00000002
+00000000
+00000028
+00000000
+00000221
+00000222
+00000000
+00000002
+00000029
+aaaaaa83
+00000222
+00000223
+00000001
+aaaaaaaa
+00000001
+00000003
+00000006
+55555554
+00000446
+00000114
+00000006
+55555002
+00000556
+00000004
+00000004
+00000000
+00000444
+00000112
+00000554
+00000002
+00000004
+55555552
+00000446
+00000112
+00000004
+55555002
+00000554
+00000002
+00000004
+00000004
+00000004
+00000004
+00000004
+00000000
+00000004
+00000004
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000002
+0000b500
+00000403
+00000100
+00000002
+0000b003
+00000502
+00000000
+00000000
+00000000
+00000401
+00000102
+00000500
+00000002
+00000001
+0000b503
+00000402
+00000103
+00000001
+0000b002
+00000501
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000024
+66666644
+00000665
+00000224
+00000004
+66666221
+00000444
+00000004
+00000024
+00000000
+00000665
+aaaaaaaa
+00000002
+00000000
+00000028
+00000000
+00000220
+00000222
+00000000
+00000002
+00000028
+aaaaaa82
+00000222
+00000222
+00000000
+aaaaaaaa
+00000000
+00000002
+00000004
+55555554
+00000445
+00000114
+00000004
+55555001
+00000554
+00000004
+00000004
+00000000
+00000445
+00000110
+00000554
+00000000
+00000005
+55555551
+00000444
+00000111
+00000005
+55555000
+00000555
+00000001
+00000002
+00000000
+00000003
+00000000
+00000002
+00000003
+00000002
+00000000
+00000000
+00000000
+00000001
+00000002
+00000000
+00000002
+00000001
+00000003
+00000002
+00000003
+00000001
+00000002
+00000001
+00000003
+00000220
+00000444
+00000000
+00000025
+66666641
+00000664
+00000221
+00000005
+66666220
+00000445
+00000001
+00000022
+33333310
+00000222
+00000330
+00000002
+33333222
+00000112
+00000000
+00000020
+00000000
+00000220
+00000332
+00000110
+00000002
+00000020
+33333312
+00000222
+00000332
+00000000
+33333222
+00000110
+00000002
+00000004
+55555554
+00000444
+00000114
+00000004
+55555000
+00000554
+00000004
+00000004
+00000000
+00000444
+00000110
+00000554
+00000000
+00000004
+55555550
+00000444
+00000110
+00000004
+55555000
+00000554
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000002
+00000002
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000002
+00000002
+00000000
+00000002
+00000000
+00000002
+00000004
+0000b504
+00000404
+00000104
+00000004
+0000b000
+00000504
+00000004
+00000004
+00000000
+00000404
+00000100
+00000504
+00000000
+00000004
+0000b500
+00000404
+00000100
+00000004
+0000b000
+00000504
+00000000
+0000002c
+ffff4ad4
+00000264
+00000234
+00000004
+ffff4aa8
+00000054
+00000004
+0000002c
+00000000
+00000264
+00000230
+00000054
+00000000
+0000002c
+ffff4ad0
+00000264
+00000230
+00000004
+ffff4aa8
+00000054
+00000000
+00000026
+66666644
+00000666
+00000224
+00000006
+66666222
+00000446
+00000004
+00000024
+00000000
+00000664
+00000222
+00000444
+00000002
+00000024
+66666642
+00000666
+00000222
+00000004
+66666222
+00000444
+00000002
+00000022
+33333310
+00000223
+00000330
+00000002
+33333223
+00000112
+00000000
+00000020
+00000000
+00000221
+00000332
+00000110
+00000002
+00000021
+33333313
+00000222
+00000333
+00000001
+33333222
+00000111
+00000003
+00000004
+00000004
+00000005
+00000004
+00000004
+00000001
+00000004
+00000004
+00000004
+00000000
+00000005
+00000000
+00000004
+00000000
+00000005
+00000001
+00000004
+00000001
+00000005
+00000000
+00000005
+00000001
+0000002a
+aaaaaa80
+00000222
+00000220
+00000002
+00000002
+00000555
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/auipc-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/auipc-01.reference_output
new file mode 100644
index 000000000..ebf77d350
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/auipc-01.reference_output
@@ -0,0 +1,63 @@
+fffff000
+7ffff000
+bffff000
+dffff000
+effff000
+f7fff000
+fbfff000
+fdfff000
+fefff000
+00000000
+ffbff000
+ffdff000
+ffeff000
+fff7f000
+fffbf000
+fffdf000
+fffef000
+ffff7000
+ffffb000
+ffffd000
+ffffe000
+80000000
+40000000
+20000000
+10000000
+08000000
+04000000
+02000000
+01000000
+00800000
+00400000
+00200000
+00100000
+00080000
+00040000
+00020000
+00010000
+55555000
+00003000
+aaaaa000
+00000000
+00008000
+00004000
+00002000
+00001000
+002d5000
+66667000
+33334000
+00006000
+aaaab000
+55556000
+003fe000
+002d3000
+66665000
+33332000
+aaaa9000
+55554000
+003ff000
+002d4000
+66666000
+33333000
+00005000
+ff7ff000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/beq-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/beq-01.reference_output
new file mode 100644
index 000000000..92f1ee6d0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/beq-01.reference_output
@@ -0,0 +1,590 @@
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bge-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bge-01.reference_output
new file mode 100644
index 000000000..cf462405e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bge-01.reference_output
@@ -0,0 +1,586 @@
+00000001
+00000002
+00000001
+00000002
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000003
+00000002
+00000002
+00000002
+00000003
+00000001
+00000002
+00000002
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000003
+00000002
+00000002
+00000001
+00000002
+00000003
+00000003
+00000003
+00000001
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000003
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000003
+00000003
+00000002
+00000003
+00000001
+00000003
+00000003
+00000003
+00000002
+00000001
+00000003
+00000002
+00000003
+00000003
+00000001
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000003
+00000001
+00000002
+00000003
+00000001
+00000001
+00000002
+00000002
+00000002
+00000001
+00000003
+00000003
+00000002
+00000002
+00000003
+00000003
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000002
+00000001
+00000001
+00000001
+00000002
+00000001
+00000001
+00000003
+00000002
+00000003
+00000002
+00000001
+00000003
+00000003
+00000002
+00000003
+00000001
+00000001
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000001
+00000001
+00000002
+00000003
+00000002
+00000001
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000003
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000001
+00000002
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000001
+00000002
+00000003
+00000001
+00000001
+00000003
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000002
+00000001
+00000003
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000001
+00000001
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000002
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000002
+00000003
+00000002
+00000003
+00000003
+00000001
+00000002
+00000001
+00000003
+00000003
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000001
+00000002
+00000002
+00000001
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000003
+00000002
+00000003
+00000003
+00000001
+00000002
+00000003
+00000003
+00000001
+00000002
+00000003
+00000001
+00000003
+00000003
+00000003
+00000002
+00000001
+00000001
+00000003
+00000003
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000001
+00000001
+00000001
+00000003
+00000001
+00000001
+00000003
+00000001
+00000002
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000002
+00000002
+00000003
+00000003
+00000002
+00000001
+00000003
+00000001
+00000002
+00000003
+00000002
+00000003
+00000003
+00000003
+00000002
+00000002
+00000001
+00000003
+00000002
+00000003
+00000003
+00000001
+00000002
+00000003
+00000003
+00000001
+00000002
+00000001
+00000003
+00000003
+00000002
+00000003
+00000001
+00000003
+00000001
+00000003
+00000002
+00000001
+00000001
+00000003
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000003
+00000002
+00000001
+00000001
+00000001
+00000002
+00000002
+00000002
+00000003
+00000003
+00000001
+00000002
+00000002
+00000001
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000002
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000002
+00000002
+00000003
+00000003
+00000002
+00000003
+00000001
+00000002
+00000003
+00000001
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bgeu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bgeu-01.reference_output
new file mode 100644
index 000000000..14516e603
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bgeu-01.reference_output
@@ -0,0 +1,728 @@
+00000001
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000003
+00000003
+00000002
+00000003
+00000002
+00000001
+00000002
+00000001
+00000002
+00000003
+00000003
+00000002
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000001
+00000003
+00000003
+00000001
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000002
+00000003
+00000003
+00000002
+00000003
+00000001
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000003
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000001
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000002
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000002
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000003
+00000003
+00000001
+00000001
+00000002
+00000003
+00000002
+00000002
+00000003
+00000003
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000001
+00000001
+00000002
+00000003
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000002
+00000001
+00000002
+00000003
+00000003
+00000003
+00000003
+00000002
+00000001
+00000003
+00000002
+00000003
+00000001
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000001
+00000003
+00000001
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000002
+00000001
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000001
+00000001
+00000003
+00000002
+00000001
+00000001
+00000002
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000002
+00000003
+00000001
+00000002
+00000003
+00000001
+00000003
+00000001
+00000001
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000003
+00000001
+00000002
+00000003
+00000002
+00000002
+00000003
+00000003
+00000001
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000002
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000002
+00000003
+00000002
+00000001
+00000003
+00000003
+00000001
+00000002
+00000001
+00000003
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000001
+00000001
+00000003
+00000002
+00000002
+00000002
+00000002
+00000001
+00000001
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000002
+00000001
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000001
+00000002
+00000003
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000001
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000003
+00000001
+00000002
+00000001
+00000001
+00000002
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000002
+00000001
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000002
+00000003
+00000001
+00000001
+00000001
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000001
+00000001
+00000001
+00000001
+00000002
+00000003
+00000002
+00000002
+00000003
+00000001
+00000001
+00000002
+00000001
+00000003
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000001
+00000001
+00000003
+00000001
+00000001
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000001
+00000003
+00000003
+00000003
+00000002
+00000001
+00000002
+00000003
+00000001
+00000001
+00000003
+00000002
+00000001
+00000001
+00000002
+00000001
+00000003
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000001
+00000003
+00000003
+00000002
+00000001
+00000001
+00000002
+00000002
+00000002
+00000002
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/blt-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/blt-01.reference_output
new file mode 100644
index 000000000..f0e22e7c0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/blt-01.reference_output
@@ -0,0 +1,586 @@
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000001
+00000001
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000001
+00000002
+00000003
+00000003
+00000002
+00000001
+00000003
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000003
+00000001
+00000002
+00000001
+00000003
+00000003
+00000003
+00000002
+00000002
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000002
+00000002
+00000003
+00000003
+00000003
+00000002
+00000003
+00000003
+00000003
+00000001
+00000002
+00000002
+00000003
+00000002
+00000003
+00000001
+00000001
+00000001
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000001
+00000002
+00000002
+00000003
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000001
+00000003
+00000002
+00000002
+00000002
+00000003
+00000001
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000001
+00000003
+00000001
+00000002
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000002
+00000001
+00000001
+00000001
+00000002
+00000001
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000001
+00000002
+00000003
+00000003
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000001
+00000003
+00000003
+00000002
+00000003
+00000002
+00000003
+00000001
+00000002
+00000002
+00000001
+00000002
+00000003
+00000001
+00000001
+00000001
+00000003
+00000002
+00000003
+00000001
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000002
+00000003
+00000001
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000001
+00000001
+00000002
+00000003
+00000002
+00000003
+00000002
+00000003
+00000003
+00000001
+00000002
+00000003
+00000002
+00000003
+00000003
+00000003
+00000002
+00000001
+00000002
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000001
+00000003
+00000002
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000001
+00000003
+00000001
+00000002
+00000001
+00000003
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000002
+00000001
+00000003
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000001
+00000002
+00000003
+00000001
+00000001
+00000002
+00000001
+00000002
+00000003
+00000002
+00000003
+00000003
+00000001
+00000002
+00000003
+00000002
+00000003
+00000001
+00000002
+00000002
+00000001
+00000002
+00000001
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000002
+00000001
+00000001
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000001
+00000003
+00000002
+00000003
+00000003
+00000003
+00000002
+00000001
+00000003
+00000003
+00000002
+00000001
+00000002
+00000001
+00000001
+00000003
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000001
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000001
+00000003
+00000001
+00000002
+00000001
+00000001
+00000001
+00000002
+00000003
+00000003
+00000003
+00000002
+00000001
+00000002
+00000003
+00000003
+00000001
+00000002
+00000003
+00000003
+00000003
+00000002
+00000001
+00000001
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000003
+00000001
+00000001
+00000002
+00000002
+00000002
+00000001
+00000001
+00000002
+00000002
+00000003
+00000002
+00000001
+00000003
+00000003
+00000001
+00000001
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000001
+00000002
+00000003
+00000001
+00000003
+00000002
+00000003
+00000001
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000001
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bltu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bltu-01.reference_output
new file mode 100644
index 000000000..4498f93a3
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bltu-01.reference_output
@@ -0,0 +1,727 @@
+00000002
+00000003
+00000002
+00000001
+00000001
+00000001
+00000002
+00000003
+00000003
+00000002
+00000003
+00000003
+00000002
+00000001
+00000002
+00000002
+00000001
+00000003
+00000003
+00000002
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000001
+00000003
+00000003
+00000003
+00000001
+00000002
+00000002
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000002
+00000001
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000001
+00000001
+00000003
+00000003
+00000002
+00000002
+00000002
+00000001
+00000003
+00000002
+00000001
+00000001
+00000002
+00000001
+00000002
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000002
+00000002
+00000003
+00000003
+00000002
+00000003
+00000001
+00000002
+00000003
+00000002
+00000002
+00000003
+00000003
+00000001
+00000003
+00000002
+00000001
+00000002
+00000003
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000001
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000003
+00000002
+00000003
+00000002
+00000001
+00000001
+00000003
+00000002
+00000003
+00000001
+00000002
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000002
+00000001
+00000003
+00000003
+00000001
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000002
+00000001
+00000002
+00000001
+00000001
+00000001
+00000001
+00000001
+00000002
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000001
+00000002
+00000003
+00000002
+00000002
+00000001
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000001
+00000001
+00000002
+00000003
+00000002
+00000003
+00000003
+00000002
+00000003
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000002
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000002
+00000003
+00000003
+00000001
+00000002
+00000003
+00000003
+00000002
+00000001
+00000002
+00000002
+00000001
+00000003
+00000001
+00000001
+00000002
+00000001
+00000003
+00000001
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000001
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000001
+00000002
+00000003
+00000002
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000002
+00000001
+00000003
+00000003
+00000001
+00000001
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000002
+00000002
+00000001
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000001
+00000003
+00000002
+00000002
+00000002
+00000003
+00000003
+00000002
+00000001
+00000001
+00000002
+00000001
+00000002
+00000001
+00000001
+00000003
+00000002
+00000003
+00000003
+00000002
+00000003
+00000002
+00000002
+00000001
+00000003
+00000001
+00000003
+00000002
+00000001
+00000002
+00000001
+00000001
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000003
+00000002
+00000001
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000003
+00000001
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000002
+00000001
+00000002
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000002
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000002
+00000003
+00000003
+00000001
+00000003
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000001
+00000002
+00000002
+00000003
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000003
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000002
+00000002
+00000001
+00000002
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000002
+00000003
+00000001
+00000001
+00000003
+00000003
+00000002
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000002
+00000002
+00000001
+00000002
+00000002
+00000002
+00000002
+00000003
+00000002
+00000002
+00000001
+00000003
+00000003
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bne-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bne-01.reference_output
new file mode 100644
index 000000000..7f8a8e6c6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/bne-01.reference_output
@@ -0,0 +1,585 @@
+00000002
+00000001
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000001
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000002
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000002
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000002
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000002
+00000001
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000002
+00000001
+00000001
+00000003
+00000001
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000002
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000001
+00000001
+00000002
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000002
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000002
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000002
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000002
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000001
+00000002
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000001
+00000002
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000002
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000002
+00000002
+00000003
+00000001
+00000001
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000002
+00000001
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000002
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000003
+00000001
+00000001
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000002
+00000001
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000001
+00000002
+00000003
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
+00000003
+00000001
+00000003
+00000001
+00000001
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000002
+00000001
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000001
+00000003
+00000003
+00000003
+00000001
+00000001
+00000001
+00000002
+00000003
+00000001
+00000001
+00000003
+00000001
+00000001
+00000001
+00000001
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000001
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/jal-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/jal-01.reference_output
new file mode 100644
index 000000000..e23848aac
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/jal-01.reference_output
@@ -0,0 +1,16 @@
+00000025
+00000027
+0008001d
+0010001d
+00000000
+0010001d
+0010001d
+0010001d
+0010001d
+0010001d
+0010001d
+0010001d
+0010001d
+0010001d
+0010001d
+0010001d
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/jalr-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/jalr-01.reference_output
new file mode 100644
index 000000000..a05f0b1d5
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/jalr-01.reference_output
@@ -0,0 +1,27 @@
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000000
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
+00000017
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lb-align-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lb-align-01.reference_output
new file mode 100644
index 000000000..246a44924
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lb-align-01.reference_output
@@ -0,0 +1,18 @@
+fffffffe
+fffffffe
+fffffffe
+fffffffe
+ffffffca
+ffffffca
+ffffffca
+ffffffca
+ffffffbe
+ffffffbe
+fffffffe
+ffffffbe
+ffffffbe
+00000000
+ffffffba
+ffffffba
+ffffffba
+ffffffba
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lbu-align-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lbu-align-01.reference_output
new file mode 100644
index 000000000..ddd4233bb
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lbu-align-01.reference_output
@@ -0,0 +1,17 @@
+00000000
+000000fe
+000000fe
+000000fe
+000000ca
+000000ca
+000000ca
+000000ca
+000000be
+000000be
+000000fe
+000000be
+000000be
+000000ba
+000000ba
+000000ba
+000000ba
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lh-align-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lh-align-01.reference_output
new file mode 100644
index 000000000..9ec95d1d4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lh-align-01.reference_output
@@ -0,0 +1,16 @@
+ffffcafe
+ffffcafe
+ffffcafe
+ffffcafe
+ffffbabe
+ffffbabe
+ffffbabe
+ffffbabe
+00000000
+ffffcafe
+ffffcafe
+ffffcafe
+ffffcafe
+ffffcafe
+ffffcafe
+ffffcafe
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lhu-align-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lhu-align-01.reference_output
new file mode 100644
index 000000000..eabf3f883
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lhu-align-01.reference_output
@@ -0,0 +1,16 @@
+0000cafe
+0000cafe
+0000cafe
+0000cafe
+0000babe
+0000cafe
+0000babe
+0000babe
+0000babe
+0000cafe
+0000cafe
+0000cafe
+0000cafe
+00000000
+0000cafe
+0000cafe
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lui-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lui-01.reference_output
new file mode 100644
index 000000000..def191172
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lui-01.reference_output
@@ -0,0 +1,63 @@
+fffff000
+7ffff000
+bffff000
+dffff000
+effff000
+f7fff000
+fbfff000
+fdfff000
+fefff000
+ff7ff000
+ffbff000
+ffdff000
+ffeff000
+00000000
+fffbf000
+fffdf000
+fffef000
+ffff7000
+ffffb000
+ffffd000
+ffffe000
+80000000
+40000000
+20000000
+10000000
+08000000
+04000000
+02000000
+01000000
+00800000
+00400000
+00200000
+00100000
+00080000
+00040000
+00020000
+00010000
+55555000
+00003000
+aaaaa000
+00000000
+00008000
+00004000
+00002000
+00001000
+002d5000
+66667000
+33334000
+00006000
+aaaab000
+55556000
+003fe000
+002d3000
+66665000
+33332000
+aaaa9000
+55554000
+003ff000
+002d4000
+66666000
+33333000
+00005000
+fff7f000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lw-align-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lw-align-01.reference_output
new file mode 100644
index 000000000..0f578dfe8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/lw-align-01.reference_output
@@ -0,0 +1,16 @@
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+00000000
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
+babecafe
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/or-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/or-01.reference_output
new file mode 100644
index 000000000..ea67773d1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/or-01.reference_output
@@ -0,0 +1,589 @@
+ffdfffff
+7fffffff
+ffffffff
+c0000000
+00004000
+ffffffff
+ffffffff
+fdffffff
+00000000
+00000006
+ffbfffff
+ffdfffff
+ffefffff
+fff7ffff
+fffbffff
+ffffffff
+fffeffff
+ffff7fff
+ffffffff
+ffffdfff
+ffffefff
+fffff7ff
+ffffffff
+fffffdff
+fffffeff
+ffffffff
+ffffffbf
+ffffffdf
+ffffffff
+ffffffff
+fffffffb
+ffffffff
+fffffffe
+bfffffff
+ffffffff
+ffffffff
+ffffffff
+fdffffff
+ffffffff
+ff7fffff
+ffffffff
+ffefffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffff7fff
+ffffbfff
+ffffefff
+ffffffff
+fffffbff
+fffffeff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffb
+80000005
+40008000
+fffff7ff
+08000008
+aeaaaaaa
+0200b504
+ffffdfff
+fffffff9
+00400010
+ffffffff
+ffff4afd
+0004b503
+00020008
+fffffffe
+55557556
+00001002
+00000804
+80000200
+3fffffff
+00000060
+fffff7ff
+00080004
+fffffdff
+00000001
+ffffff7f
+22000000
+10000000
+24000000
+fffffffa
+01400000
+55d55555
+fffffff6
+33333334
+00100080
+00050000
+00021000
+00010006
+00002008
+fffffffd
+55555d55
+00000220
+ffffff7f
+02000001
+0000b505
+fffffffd
+6666f767
+3333b735
+0000b507
+aaaabfaf
+5555f557
+0000b505
+0000b507
+0000b505
+6666f765
+3333b737
+5555f555
+0000b507
+0000b505
+fffffffd
+6666f767
+3333b737
+0000b505
+aaaabfaf
+5555f555
+0000b507
+fffffffd
+ffff4afd
+ffff6eff
+ffff7bfd
+ffff4aff
+ffffeaff
+ffff5fff
+ffff4afd
+ffffffff
+ffff4afd
+ffff6efd
+ffff7bff
+ffff5ffd
+ffff4aff
+fffffffd
+ffff4afd
+ffff6eff
+ffff7bff
+ffff4afd
+ffffeaff
+ffff5ffd
+ffff4aff
+6666f767
+ffff6eff
+66666667
+77777777
+66666667
+eeeeeeef
+77777777
+66666667
+6666f767
+66666667
+66666667
+77777777
+77777777
+66666667
+6666f767
+ffff6eff
+66666667
+77777777
+66666667
+eeeeeeef
+77777777
+66666667
+3333b735
+ffff7bfd
+77777777
+33333334
+33333336
+bbbbbbbf
+77777776
+33333334
+3333b737
+33333334
+77777775
+33333336
+77777774
+33333336
+3333b734
+ffff7bfc
+77777776
+33333337
+33333335
+bbbbbbbe
+77777775
+33333337
+0000b507
+ffff4aff
+66666667
+33333336
+00000006
+aaaaaaaf
+55555556
+00000006
+0000b507
+00000006
+66666667
+33333336
+55555556
+00000006
+0000b506
+ffff4afe
+66666666
+33333337
+00000007
+aaaaaaae
+55555557
+00000007
+aaaabfaf
+ffffeaff
+eeeeeeef
+bbbbbbbf
+aaaaaaaf
+aaaaaaab
+ffffffff
+aaaaaaaf
+aaaabfab
+aaaaaaab
+eeeeeeef
+bbbbbbbb
+ffffffff
+aaaaaaab
+aaaabfaf
+ffffeaff
+eeeeeeef
+bbbbbbbb
+aaaaaaaf
+aaaaaaab
+ffffffff
+aaaaaaab
+5555f557
+ffff5fff
+77777777
+77777776
+55555556
+ffffffff
+55555556
+55555556
+5555f557
+55555556
+77777777
+77777776
+55555556
+55555556
+5555f556
+ffff5ffe
+77777776
+77777777
+55555557
+fffffffe
+55555557
+55555557
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaaf
+55555556
+00000004
+0000b507
+00000004
+66666665
+33333336
+55555554
+00000006
+0000b504
+ffff4afc
+66666666
+33333337
+00000005
+aaaaaaae
+55555555
+00000007
+0000b507
+ffffffff
+6666f767
+3333b737
+0000b507
+aaaabfab
+5555f557
+0000b507
+0000b503
+0000b503
+6666f767
+3333b733
+5555f557
+0000b503
+0000b507
+ffffffff
+6666f767
+3333b733
+0000b507
+aaaabfab
+5555f557
+0000b503
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaab
+55555556
+00000004
+0000b503
+00000000
+66666665
+33333332
+55555554
+00000002
+0000b504
+ffff4afc
+66666666
+33333333
+00000005
+aaaaaaaa
+55555555
+00000003
+6666f765
+ffff6efd
+66666667
+77777775
+66666667
+eeeeeeef
+77777777
+66666665
+6666f767
+66666665
+33333333
+77777777
+33333333
+77777777
+33333333
+3333b737
+ffff7bff
+77777777
+33333333
+33333337
+bbbbbbbb
+77777777
+33333333
+0000b505
+ffff4afd
+66666667
+33333335
+00000007
+aaaaaaaf
+55555557
+00000005
+0000b507
+00000005
+66666665
+33333337
+55555555
+00000007
+0000b505
+ffff4afd
+66666667
+33333337
+00000005
+aaaaaaaf
+55555555
+00000007
+aaaabfaf
+ffffeaff
+eeeeeeef
+bbbbbbbe
+aaaaaaae
+aaaaaaab
+fffffffe
+aaaaaaae
+aaaabfab
+aaaaaaaa
+eeeeeeef
+bbbbbbba
+fffffffe
+aaaaaaaa
+aaaabfae
+ffffeafe
+eeeeeeee
+bbbbbbbb
+aaaaaaaf
+aaaaaaaa
+ffffffff
+aaaaaaab
+5555f555
+ffff5ffd
+77777777
+77777775
+55555557
+ffffffff
+55555557
+55555555
+5555f557
+55555555
+77777775
+77777777
+55555555
+55555557
+5555f555
+ffff5ffd
+77777777
+77777777
+55555555
+ffffffff
+55555555
+55555557
+0000b507
+ffff4aff
+66666667
+33333337
+00000007
+aaaaaaab
+55555557
+00000007
+0000b503
+00000003
+66666667
+33333333
+55555557
+00000003
+0000b507
+ffff4aff
+66666667
+33333333
+00000007
+aaaaaaab
+55555557
+00000003
+66666665
+77777777
+77777775
+66666667
+6666f765
+ffff6efd
+66666667
+77777777
+66666665
+eeeeeeef
+77777775
+66666667
+3333b737
+ffff7bff
+77777777
+33333336
+33333336
+bbbbbbbb
+77777776
+33333336
+3333b733
+33333332
+77777777
+33333332
+77777776
+33333332
+3333b736
+ffff7bfe
+77777776
+33333333
+33333337
+bbbbbbba
+77777777
+33333333
+5555f555
+ffff5ffd
+77777777
+77777774
+55555556
+ffffffff
+55555556
+55555554
+5555f557
+55555554
+77777775
+77777776
+55555554
+55555556
+5555f554
+ffff5ffc
+77777776
+77777777
+55555555
+fffffffe
+55555555
+55555557
+0000b507
+ffff4aff
+66666667
+33333336
+00000006
+aaaaaaab
+55555556
+00000006
+0000b503
+00000002
+66666667
+33333332
+55555556
+00000002
+0000b506
+ffff4afe
+66666666
+33333333
+00000007
+aaaaaaaa
+55555557
+00000003
+0000b505
+fffffffd
+6666f767
+3333b734
+0000b506
+aaaabfaf
+5555f556
+0000b504
+0000b507
+0000b504
+6666f765
+3333b736
+5555f554
+0000b506
+0000b504
+fffffffc
+6666f766
+3333b737
+0000b505
+aaaabfae
+5555f555
+0000b507
+fffffffd
+ffff4afd
+ffff6eff
+ffff7bfc
+ffff4afe
+ffffeaff
+ffff5ffe
+ffff4afc
+ffffffff
+ffff4afc
+ffff6efd
+ffff7bfe
+ffff5ffc
+ffff4afe
+fffffffc
+ffff4afc
+ffff6efe
+ffff7bff
+ffff4afd
+ffffeafe
+ffff5ffd
+ffff4aff
+6666f767
+ffff6eff
+66666667
+77777776
+66666666
+eeeeeeef
+77777776
+66666666
+6666f767
+66666666
+66666667
+77777776
+77777776
+66666666
+6666f766
+ffff6efe
+66666666
+77777777
+66666667
+eeeeeeee
+77777777
+66666667
+3333b737
+ffff7bff
+77777777
+33333337
+33333337
+bbbbbbbb
+77777777
+33333337
+3333b733
+dfffffff
+efffffff
+feffffff
+ff7fffff
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/ori-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/ori-01.reference_output
new file mode 100644
index 000000000..f97d23397
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/ori-01.reference_output
@@ -0,0 +1,557 @@
+fffff800
+00000000
+bfffffff
+dfffffff
+efffffff
+f7ffffff
+fbffffff
+fdffffff
+feffffff
+ffffffff
+ffffffff
+ffdfffff
+ffffffff
+ffffffff
+fffbffff
+fffdffff
+fffeffff
+ffff7fff
+ffffbfff
+ffffffff
+ffffffff
+fffff7ff
+ffffffff
+fffffdff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffff7
+fffffffb
+ffffffff
+ffffffff
+000027ff
+fffffbff
+fffffdff
+ffffffff
+ffffffff
+ffffffff
+80000000
+fffffffe
+20000555
+fffffaaa
+ffffffff
+04000332
+02000556
+fffffbff
+fffffeff
+00400000
+ffffffdf
+fffffbff
+00040556
+00010001
+00008200
+ffffffd4
+fffffff8
+fffffff8
+ffffffd3
+ffffffd4
+00000102
+00000080
+00000046
+fffffff4
+00000555
+fffffffe
+000003ff
+00000002
+00000001
+20000100
+00000044
+33333334
+33333333
+fffffff8
+0000b52f
+ffffffd5
+0000b767
+0000b735
+0000b507
+ffffffaf
+0000b557
+0000b505
+0000b52d
+0000b505
+0000b765
+0000b737
+0000b555
+0000b507
+0000b52d
+ffffffd7
+0000b767
+0000b737
+0000b505
+ffffffaf
+0000b555
+0000b507
+ffff4aff
+fffffffd
+ffff4eff
+ffff4bfd
+ffff4aff
+fffffaff
+ffff4fff
+ffff4afd
+ffff4afd
+ffff4afd
+ffff4efd
+ffff4bff
+ffff4ffd
+ffff4aff
+ffff4afd
+ffffffff
+ffff4eff
+ffff4bff
+ffff4afd
+fffffaff
+ffff4ffd
+ffff4aff
+6666666f
+fffffff7
+66666667
+66666777
+66666667
+fffffeef
+66666777
+66666667
+6666666f
+66666667
+66666667
+66666777
+66666777
+66666667
+6666666f
+fffffff7
+66666667
+66666777
+66666667
+fffffeef
+66666777
+66666667
+3333333e
+fffffff4
+33333777
+33333334
+33333336
+fffffbbf
+33333776
+33333334
+3333333c
+33333334
+33333775
+33333336
+33333774
+33333336
+3333333d
+fffffff7
+33333776
+33333337
+33333335
+fffffbbe
+33333775
+33333337
+0000002e
+ffffffd6
+00000667
+00000336
+00000006
+fffffaaf
+00000556
+00000006
+0000002e
+00000006
+00000667
+00000336
+00000556
+00000006
+0000002f
+ffffffd7
+00000666
+00000337
+00000007
+fffffaae
+00000557
+00000007
+aaaaaaaf
+ffffffff
+aaaaaeef
+aaaaabbf
+aaaaaaaf
+fffffaab
+aaaaafff
+aaaaaaaf
+aaaaaaaf
+aaaaaaab
+aaaaaeef
+aaaaabbb
+aaaaafff
+aaaaaaab
+aaaaaaaf
+fffffffb
+aaaaaeef
+aaaaabbb
+aaaaaaaf
+fffffaab
+aaaaafff
+aaaaaaab
+5555557e
+ffffffd6
+55555777
+55555776
+55555556
+ffffffff
+55555556
+55555556
+5555557e
+55555556
+55555777
+55555776
+55555556
+55555556
+5555557f
+ffffffd7
+55555776
+55555777
+55555557
+fffffffe
+55555557
+55555557
+0000002e
+ffffffd4
+00000667
+00000334
+00000006
+fffffaaf
+00000556
+00000004
+0000002c
+00000004
+00000665
+00000336
+00000554
+00000006
+0000002d
+ffffffd7
+00000666
+00000337
+00000005
+fffffaae
+00000555
+00000007
+0000b52f
+ffffffd7
+0000b767
+0000b737
+0000b507
+ffffffab
+0000b557
+0000b507
+0000b52f
+0000b503
+0000b767
+0000b733
+0000b557
+0000b503
+0000b52f
+ffffffd3
+0000b767
+0000b733
+0000b507
+ffffffab
+0000b557
+0000b503
+0000002e
+ffffffd4
+00000667
+00000334
+00000006
+fffffaab
+00000556
+00000004
+0000002c
+00000000
+00000665
+00000332
+00000554
+00000002
+0000002d
+ffffffd3
+00000666
+00000333
+00000005
+fffffaaa
+00000555
+00000003
+6666666f
+fffffff5
+66666667
+66666775
+66666667
+fffffeef
+66666777
+66666665
+6666666d
+fffffaab
+aaaaaffe
+aaaaaaae
+aaaaaaae
+aaaaaaaa
+aaaaaeef
+aaaaabba
+aaaaaffe
+aaaaaaaa
+aaaaaaaf
+fffffffb
+aaaaaeee
+aaaaabbb
+aaaaaaaf
+fffffaaa
+aaaaafff
+aaaaaaab
+5555557f
+ffffffd5
+55555777
+55555775
+55555557
+ffffffff
+55555557
+55555555
+5555557d
+55555555
+55555775
+55555777
+55555555
+55555557
+5555557d
+ffffffd7
+55555777
+55555777
+55555555
+ffffffff
+55555555
+55555557
+0000002f
+ffffffd7
+00000667
+00000337
+00000007
+fffffaab
+00000557
+00000007
+0000002f
+00000003
+00000667
+00000333
+00000557
+00000003
+0000002f
+ffffffd3
+00000667
+00000333
+00000007
+fffffaab
+00000557
+00000003
+66666665
+66666665
+66666777
+66666775
+66666667
+6666666d
+fffffff7
+66666667
+66666777
+66666665
+fffffeef
+66666775
+66666667
+3333333e
+fffffff6
+33333777
+33333336
+33333336
+fffffbbb
+33333776
+33333336
+3333333e
+33333332
+33333777
+33333332
+33333776
+33333332
+3333333f
+fffffff3
+33333776
+33333333
+33333337
+fffffbba
+33333777
+33333333
+5555557e
+ffffffd4
+55555777
+55555774
+55555556
+ffffffff
+55555556
+55555554
+5555557c
+55555554
+55555775
+55555776
+55555554
+55555556
+5555557d
+ffffffd7
+55555776
+55555777
+55555555
+fffffffe
+55555555
+55555557
+0000002e
+ffffffd6
+00000667
+00000336
+00000006
+fffffaab
+00000556
+00000006
+0000002e
+00000002
+00000667
+00000332
+00000556
+0000002f
+ffffffd3
+00000666
+00000333
+00000007
+fffffaaa
+00000557
+00000003
+0000b52e
+ffffffd4
+0000b767
+0000b734
+0000b506
+ffffffaf
+0000b556
+0000b504
+0000b52c
+0000b504
+0000b765
+0000b736
+0000b554
+0000b506
+0000b52d
+ffffffd7
+0000b766
+0000b737
+0000b505
+ffffffae
+0000b555
+0000b507
+ffff4afe
+fffffffc
+ffff4eff
+ffff4bfc
+ffff4afe
+fffffaff
+ffff4ffe
+ffff4afc
+ffff4afc
+ffff4afc
+ffff4efd
+ffff4bfe
+ffff4ffc
+ffff4afe
+ffff4afd
+ffffffff
+ffff4efe
+ffff4bff
+ffff4afd
+fffffafe
+ffff4ffd
+ffff4aff
+6666666e
+fffffff6
+66666667
+66666776
+66666666
+fffffeef
+66666776
+66666666
+6666666e
+66666666
+66666667
+66666776
+66666776
+66666666
+6666666f
+fffffff7
+66666666
+66666777
+66666667
+fffffeee
+66666777
+66666667
+3333333f
+fffffff7
+33333777
+33333337
+33333337
+fffffbbb
+33333777
+33333337
+3333333f
+33333333
+33333777
+33333333
+33333777
+33333333
+3333333f
+fffffff3
+33333777
+33333333
+33333337
+fffffbbb
+33333777
+33333333
+0000002f
+ffffffd5
+00000667
+00000335
+00000007
+fffffaaf
+00000557
+00000005
+0000002d
+00000005
+00000665
+00000337
+00000555
+00000007
+0000002d
+ffffffd7
+00000667
+00000337
+00000005
+fffffaaf
+00000555
+00000007
+aaaaaaae
+fffffffe
+aaaaaeef
+aaaaabbe
+aaaaaaae
+7fffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sb-align-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sb-align-01.reference_output
new file mode 100644
index 000000000..cd1d694f9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sb-align-01.reference_output
@@ -0,0 +1,78 @@
+deadbe00
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbeff
+deadbe7f
+deadbebf
+deadbedf
+deadbeef
+deadbef7
+deadbefb
+deadbefd
+deadbefe
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe01
+deadbeaa
+deadbe55
+deadfbef
+deadffef
+dead08ef
+deadf8ef
+de00beef
+debfbeef
+def8beef
+de09beef
+10adbeef
+ffadbeef
+00adbeef
+deadbe40
+00adbeef
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe00
+deadbe80
+deadbe20
+deadbe04
+deadbe02
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sh-align-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sh-align-01.reference_output
new file mode 100644
index 000000000..fcfc68eca
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sh-align-01.reference_output
@@ -0,0 +1,71 @@
+dead0001
+deadffff
+deadffff
+deadffff
+deadffff
+deadffff
+deadffff
+deadffff
+deadffff
+deadffff
+deadffff
+deadffff
+deadffff
+dead0000
+deadffff
+deadffff
+deadffff
+dead7fff
+deadbfff
+deaddfff
+deadefff
+deadf7ff
+deadfbff
+deadfdff
+deadfeff
+deadff7f
+deadffbf
+deadffdf
+deadffef
+deadfff7
+deadfffb
+deadfffd
+deadfffe
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+deadaaaa
+dead5555
+ffffbeef
+0800beef
+0003beef
+fffabeef
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+dead0000
+dead8000
+dead4000
+dead2000
+dead1000
+dead0400
+dead0200
+dead0100
+dead0080
+dead0040
+dead0020
+dead0010
+dead0008
+dead0004
+dead0002
+deadffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sll-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sll-01.reference_output
new file mode 100644
index 000000000..bce59d089
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sll-01.reference_output
@@ -0,0 +1,88 @@
+c0000000
+fff78000
+7f800000
+c0000000
+00000000
+c0000000
+fffffe00
+fffe0000
+bffffffe
+ffffc000
+c0000000
+ff800000
+ffffff00
+ffffe000
+ffe00000
+fffff800
+fffff800
+ffbffffc
+effffe00
+ffff8000
+f7fffc00
+fffbfffc
+fff7fff0
+ffffbfff
+fbffe000
+c0000000
+f7ff0000
+ffff7fe0
+ffffbfe0
+ff7f0000
+ffdf0000
+fff70000
+fffd8000
+ffffffd0
+fffffff8
+00000000
+00000000
+00000000
+20000000
+00000000
+80000000
+10000000
+00000000
+08000000
+00400000
+00000000
+00000000
+04000000
+00000000
+00000000
+00000000
+08000000
+00000000
+00200000
+00400000
+00200000
+08000000
+00000000
+00008000
+00000000
+00010000
+00008000
+08000000
+00000000
+10000000
+80000000
+a8280000
+ff4afd00
+9999999c
+66666680
+000c0000
+55560000
+aab00000
+0000b503
+00060000
+aaaa0000
+55540000
+00000000
+00000008
+66666500
+cccc8000
+55555554
+d4100000
+ccc00000
+ccccccc0
+00001400
+e0000000
+80000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slli-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slli-01.reference_output
new file mode 100644
index 000000000..242ca0707
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slli-01.reference_output
@@ -0,0 +1,89 @@
+80000000
+f8000000
+ffffff80
+bffffffe
+fffc0000
+f7ffffff
+00000000
+ffff8000
+fff80000
+ffff0000
+80000000
+f8000000
+fffff000
+effffe00
+fffbffff
+00000000
+f7fff800
+fffe0000
+f8000000
+bffe0000
+e0000000
+fdffc000
+ff800000
+ff7fc000
+fdfe0000
+ffdfc000
+ffefc000
+ffffdf00
+fffffbc0
+ffffff70
+fffb0000
+fffffa00
+ffffff00
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00400000
+08000000
+00000000
+00000000
+00000000
+00000000
+40000000
+08000000
+00004000
+00002000
+00002000
+00000000
+00400000
+00001000
+20000000
+00000000
+00001000
+00010000
+00000010
+00400000
+00000040
+00001000
+00004000
+fffffdfc
+5a828000
+7e800000
+38000000
+99a00000
+00003000
+aaac0000
+80000000
+000c0000
+aaaa0000
+aaaaaa80
+ffbffc00
+002d40c0
+cccca000
+66666664
+80000000
+6a080000
+57e00000
+c0000000
+cccccc00
+28000000
+ffffff80
+ffff0000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slt-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slt-01.reference_output
new file mode 100644
index 000000000..211acb80a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slt-01.reference_output
@@ -0,0 +1,581 @@
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slti-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slti-01.reference_output
new file mode 100644
index 000000000..65bf06a2b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/slti-01.reference_output
@@ -0,0 +1,561 @@
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sltiu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sltiu-01.reference_output
new file mode 100644
index 000000000..8bef9035d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sltiu-01.reference_output
@@ -0,0 +1,697 @@
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sltu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sltu-01.reference_output
new file mode 100644
index 000000000..95fdde41a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sltu-01.reference_output
@@ -0,0 +1,722 @@
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
+00000001
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sra-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sra-01.reference_output
new file mode 100644
index 000000000..76d4a21d6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sra-01.reference_output
@@ -0,0 +1,90 @@
+aaaaaaaa
+ffffffef
+00000000
+ffffffff
+fff55555
+00000000
+000003ff
+dfffffff
+ffbfffff
+fff7ffff
+f7ffffff
+fffffff7
+00000000
+fffffbff
+ffffffbf
+ffffffff
+ffffffbf
+fffbffff
+fffffdff
+ffffffff
+fffffffe
+ffffffff
+ffffefff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffd
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+fffff000
+00000008
+00100000
+00020000
+00000010
+00004000
+00000100
+00000080
+00800000
+00000800
+00001000
+00080000
+00000200
+00000000
+00000040
+00000040
+00000000
+00000000
+00000000
+00000008
+00000020
+00000000
+00000000
+00000010
+00000002
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffff4a
+00006666
+000ccccc
+00000000
+000002aa
+00000000
+00000000
+00000aaa
+0000016a
+0000000c
+00000199
+00aaaaaa
+00000001
+ffffffff
+00000001
+00000001
+00000000
+fffffffd
+00000000
+fffeffff
+fffeffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srai-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srai-01.reference_output
new file mode 100644
index 000000000..d0482c92b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srai-01.reference_output
@@ -0,0 +1,87 @@
+00000000
+0007ffff
+ff7fffff
+efffffff
+ffffffbf
+fffeffff
+ff7fffff
+00000000
+ffffffff
+ffffdfff
+ffffbfff
+ffffdfff
+ffffefff
+fffffbff
+ffffffff
+ffffefff
+fffffeff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffff7f
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+fffffff5
+00000000
+e0000000
+10000000
+02000000
+00004000
+00000040
+00004000
+00010000
+00000400
+00001000
+00000020
+00020000
+00000000
+00000000
+00000002
+00000100
+00000001
+00000020
+00000000
+00000100
+00000020
+00000000
+00000000
+00000000
+00000020
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000016
+fffffffe
+00666666
+00033333
+00000000
+fff55555
+00000000
+00000001
+00000000
+00000002
+15555555
+00005a81
+00006666
+00000ccc
+0000000a
+00000000
+ffffffff
+00019999
+00000ccc
+ffffffff
+ffffffbf
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srl-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srl-01.reference_output
new file mode 100644
index 000000000..1ff02aae6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srl-01.reference_output
@@ -0,0 +1,89 @@
+fffffff7
+fffffffa
+000001ff
+00000001
+00000001
+00000002
+0000000f
+00001bff
+00000000
+00001eff
+0000001f
+03f7ffff
+0003fdff
+00ffbfff
+00000000
+00000007
+0fffbfff
+00fffdff
+00000003
+00000007
+003fffef
+0003ffff
+00000001
+00000003
+00007fff
+00000007
+0007ffff
+007fffff
+000007ff
+0003ffff
+fffffffb
+00000001
+07ffffff
+00000008
+00002d41
+08000000
+00000100
+01000000
+00080000
+00000400
+00001000
+00000080
+00004000
+00000010
+00000800
+00002000
+00000040
+00000002
+00000008
+00000000
+00000001
+00000001
+00000020
+00000040
+00000000
+00000000
+00000040
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+03fffd2b
+00019999
+00199999
+00000000
+0002aaaa
+55555556
+00000005
+00000000
+0aaaaaaa
+00aaaaaa
+00000000
+0000000c
+00001999
+00000aaa
+00000000
+0ffff4af
+0000000c
+00000199
+00000000
+0000001f
+00000007
+0003bfff
+0ffdffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srli-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srli-01.reference_output
new file mode 100644
index 000000000..8cd9ce217
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/srli-01.reference_output
@@ -0,0 +1,88 @@
+00000001
+007fffff
+00000000
+037fffff
+003bffff
+3dffffff
+00003eff
+0000fdff
+7f7fffff
+00007fbf
+0001ff7f
+01ffbfff
+00000000
+000007ff
+0000fffb
+00007ffe
+001fffdf
+00003fff
+ffffbfff
+00001fff
+003ffffb
+000007ff
+03ffffef
+00001fff
+00fffffe
+00ffffff
+3ffffff7
+00003fff
+3ffffffd
+03ffffff
+0001ffff
+000fffff
+00000000
+00000006
+00000000
+00200000
+40000000
+00001000
+00000800
+00010000
+00000000
+00000040
+00000800
+00010000
+00010000
+00020000
+00000800
+00000100
+00000002
+00010000
+00000000
+00000100
+00000200
+00000000
+00000008
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000005
+01fffe95
+000ccccc
+0000cccc
+00000000
+55555555
+00005555
+00000000
+00000000
+00000000
+2aaaaaaa
+000aaaaa
+00000000
+00000333
+00cccccc
+01555555
+00000000
+00ffff4a
+00333333
+00000000
+00000000
+0000017f
+000ffeff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sub-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sub-01.reference_output
new file mode 100644
index 000000000..69e62adb8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sub-01.reference_output
@@ -0,0 +1,584 @@
+01c00000
+ffbfffff
+3ffffffb
+00000000
+00000000
+07fffffc
+04000001
+01fffc00
+01000011
+00800081
+00400003
+00200005
+000ffe00
+00000000
+00040001
+ffe20000
+0000fffc
+00008041
+f0004000
+33335333
+20001001
+ffc00800
+00000421
+fffc0200
+ffe00100
+ffff4b7e
+55555597
+00000023
+aaaaaabc
+00010009
+00040005
+0000b508
+ffff4aff
+d5555555
+bbffffff
+bfffffff
+f8008000
+fbffffff
+cbcccccb
+ccbccccb
+ff77ffff
+fffdfff9
+ffff0080
+fffecafc
+ffffbff7
+ffffe003
+fffbefff
+1ffff800
+07ffff00
+fffff77f
+0000ffc0
+0007ffe0
+001ffff0
+07fffff8
+ffffdffd
+2aaaaaab
+bfff7fff
+f2000000
+a2aaaaab
+fdffdfff
+feffffef
+ffe00010
+33233333
+fef7ffff
+00060000
+07ff0000
+001f8000
+f7ffbfff
+1ffff000
+3ffffc00
+ffff7dff
+55555454
+333332b3
+ffffffc4
+fffffbdf
+fffffff2
+ffbffffb
+00000000
+1fffffff
+7ffffc00
+0ffffffe
+00000000
+01040001
+08800001
+99d9999a
+80100000
+02020001
+00008000
+00003ffb
+ffff6afb
+00000f80
+80000800
+ff800400
+00000204
+e0000100
+ffffc008
+00020002
+00000000
+00016a08
+999a4e9e
+cccd81d1
+0000b4ff
+55560a5a
+aaab5faf
+0000b501
+00000002
+0000b505
+999a4ea0
+cccd81d3
+aaab5fb1
+0000b503
+00000001
+00016a09
+999a4e9f
+cccd81d2
+0000b500
+55560a5b
+aaab5fb0
+0000b502
+fffe95f8
+00000000
+9998e496
+cccc17c9
+ffff4af7
+5554a052
+aaa9f5a7
+ffff4af9
+fffe95fa
+ffff4afd
+9998e498
+cccc17cb
+aaa9f5a9
+ffff4afb
+fffe95f9
+00000001
+9998e497
+cccc17ca
+ffff4af8
+5554a053
+aaa9f5a8
+ffff4afa
+6665b162
+66671b6a
+00000000
+33333333
+66666661
+bbbbbbbc
+11111111
+66666663
+6665b164
+66666667
+00000002
+33333335
+11111113
+66666665
+6665b163
+66671b6b
+00000001
+33333334
+66666662
+bbbbbbbd
+11111112
+66666664
+33327e2f
+3333e837
+cccccccd
+00000000
+3333332e
+88888889
+ddddddde
+33333330
+33327e31
+33333334
+cccccccf
+00000002
+dddddde0
+33333332
+33327e30
+3333e838
+ccccccce
+00000001
+3333332f
+8888888a
+dddddddf
+33333331
+ffff4b01
+0000b509
+9999999f
+ccccccd2
+00000000
+5555555b
+aaaaaab0
+00000002
+ffff4b03
+00000006
+999999a1
+ccccccd4
+aaaaaab2
+00000004
+ffff4b02
+0000b50a
+999999a0
+ccccccd3
+00000001
+5555555c
+aaaaaab1
+00000003
+aaa9f5a6
+aaab5fae
+44444444
+77777777
+aaaaaaa5
+00000000
+55555555
+aaaaaaa7
+aaa9f5a8
+aaaaaaab
+44444446
+77777779
+55555557
+aaaaaaa9
+aaa9f5a7
+aaab5faf
+44444445
+77777778
+aaaaaaa6
+00000001
+55555556
+aaaaaaa8
+5554a051
+55560a59
+eeeeeeef
+22222222
+55555550
+aaaaaaab
+00000000
+55555552
+5554a053
+55555556
+eeeeeef1
+22222224
+00000002
+55555554
+5554a052
+55560a5a
+eeeeeef0
+22222223
+55555551
+aaaaaaac
+00000001
+55555553
+ffff4aff
+0000b507
+9999999d
+ccccccd0
+fffffffe
+55555559
+aaaaaaae
+00000000
+ffff4b01
+00000004
+9999999f
+ccccccd2
+aaaaaab0
+00000002
+ffff4b00
+0000b508
+9999999e
+ccccccd1
+ffffffff
+5555555a
+aaaaaaaf
+00000001
+fffffffe
+00016a06
+999a4e9c
+cccd81cf
+0000b4fd
+55560a58
+aaab5fad
+0000b4ff
+00000000
+0000b503
+999a4e9e
+cccd81d1
+aaab5faf
+0000b501
+ffffffff
+00016a07
+999a4e9d
+cccd81d0
+0000b4fe
+55560a59
+aaab5fae
+0000b500
+ffff4afb
+0000b503
+99999999
+cccccccc
+fffffffa
+55555555
+aaaaaaaa
+fffffffc
+ffff4afd
+00000000
+9999999b
+ccccccce
+aaaaaaac
+fffffffe
+ffff4afc
+0000b504
+9999999a
+cccccccd
+fffffffb
+55555556
+aaaaaaab
+fffffffd
+6665b160
+66671b68
+fffffffe
+33333331
+6666665f
+bbbbbbba
+1111110f
+66666661
+6665b162
+66666665
+33333333
+ccccccce
+00000001
+dddddddf
+33333331
+33327e2f
+3333e837
+cccccccd
+00000000
+3333332e
+88888889
+ddddddde
+33333330
+ffff4b00
+0000b508
+9999999e
+ccccccd1
+ffffffff
+5555555a
+aaaaaaaf
+00000001
+ffff4b02
+00000005
+999999a0
+ccccccd3
+aaaaaab1
+00000003
+ffff4b01
+0000b509
+9999999f
+ccccccd2
+00000000
+5555555b
+aaaaaab0
+00000002
+aaa9f5a5
+aaab5fad
+44444443
+77777776
+aaaaaaa4
+ffffffff
+55555554
+aaaaaaa6
+aaa9f5a7
+aaaaaaaa
+44444445
+77777778
+55555556
+aaaaaaa8
+aaa9f5a6
+aaab5fae
+44444444
+77777777
+aaaaaaa5
+00000000
+55555555
+aaaaaaa7
+5554a050
+55560a58
+eeeeeeee
+22222221
+5555554f
+aaaaaaaa
+ffffffff
+55555551
+5554a052
+55555555
+eeeeeef0
+22222223
+00000001
+55555553
+5554a051
+55560a59
+eeeeeeef
+22222222
+55555550
+aaaaaaab
+00000000
+55555552
+ffff4afe
+0000b506
+9999999c
+cccccccf
+fffffffd
+55555558
+aaaaaaad
+ffffffff
+ffff4b00
+00000003
+9999999e
+ccccccd1
+aaaaaaaf
+00000001
+ffff4aff
+0000b507
+9999999d
+ccccccd0
+fffffffe
+55555559
+aaaaaaae
+00000000
+00000000
+33333333
+11111111
+66666663
+6665b161
+66671b69
+ffffffff
+33333332
+66666660
+bbbbbbbb
+11111110
+66666662
+33327e2d
+3333e835
+cccccccb
+fffffffe
+3333332c
+88888887
+dddddddc
+3333332e
+33327e2f
+33333332
+cccccccd
+00000000
+ddddddde
+33333330
+33327e2e
+3333e836
+cccccccc
+ffffffff
+3333332d
+88888888
+dddddddd
+3333332f
+5554a04f
+55560a57
+eeeeeeed
+22222220
+5555554e
+aaaaaaa9
+fffffffe
+55555550
+5554a051
+55555554
+eeeeeeef
+22222222
+00000000
+55555552
+5554a050
+55560a58
+eeeeeeee
+22222221
+5555554f
+aaaaaaaa
+ffffffff
+55555551
+ffff4afd
+0000b505
+9999999b
+ccccccce
+fffffffc
+55555557
+aaaaaaac
+fffffffe
+ffff4aff
+00000002
+9999999d
+ccccccd0
+aaaaaaae
+ffff4afe
+0000b506
+9999999c
+cccccccf
+fffffffd
+55555558
+aaaaaaad
+ffffffff
+ffffffff
+00016a07
+999a4e9d
+cccd81d0
+0000b4fe
+55560a59
+aaab5fae
+0000b500
+00000001
+0000b504
+999a4e9f
+cccd81d2
+aaab5fb0
+0000b502
+00000000
+00016a08
+999a4e9e
+cccd81d1
+0000b4ff
+55560a5a
+aaab5faf
+0000b501
+fffe95f7
+ffffffff
+9998e495
+cccc17c8
+ffff4af6
+5554a051
+aaa9f5a6
+ffff4af8
+fffe95f9
+ffff4afc
+9998e497
+cccc17ca
+aaa9f5a8
+ffff4afa
+fffe95f8
+00000000
+9998e496
+cccc17c9
+ffff4af7
+5554a052
+aaa9f5a7
+ffff4af9
+6665b161
+66671b69
+ffffffff
+33333332
+66666660
+bbbbbbbb
+11111110
+66666662
+6665b163
+66666666
+00000001
+33333334
+11111112
+66666664
+6665b162
+66671b6a
+00000000
+33333333
+66666661
+bbbbbbbc
+11111111
+66666663
+33327e2e
+3333e836
+cccccccc
+ffffffff
+3333332d
+88888888
+dddddddd
+3333332f
+33327e30
+7fc00000
+1f800000
+0e000000
+0007ffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sw-align-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sw-align-01.reference_output
new file mode 100644
index 000000000..3fff83574
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/sw-align-01.reference_output
@@ -0,0 +1,68 @@
+04000000
+7fffffff
+00000000
+dfffffff
+efffffff
+f7ffffff
+fbffffff
+fdffffff
+feffffff
+ff7fffff
+ffbfffff
+ffdfffff
+ffefffff
+fff7ffff
+fffbffff
+fffdffff
+fffeffff
+ffff7fff
+ffffbfff
+ffffdfff
+ffffefff
+fffff7ff
+fffffbff
+fffffdff
+fffffeff
+ffffff7f
+ffffffbf
+ffffffdf
+ffffffef
+fffffff7
+fffffffb
+fffffffd
+fffffffe
+80000000
+40000000
+20000000
+00000001
+aaaaaaaa
+55555555
+00000000
+10000000
+08000000
+02000000
+01000000
+00800000
+00400000
+00200000
+00100000
+00080000
+00040000
+00020000
+00010000
+00008000
+00004000
+00002000
+00001000
+00000800
+00000400
+00000200
+00000100
+00000080
+00000040
+00000020
+00000010
+00000008
+00000004
+00000002
+bfffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/xor-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/xor-01.reference_output
new file mode 100644
index 000000000..dcd028b8d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/xor-01.reference_output
@@ -0,0 +1,583 @@
+ffedffff
+80100000
+00000000
+00000000
+00000000
+91999998
+04000040
+fdff7fff
+feff4afc
+00800010
+ffbbffff
+ffffffff
+ffffffff
+fffbffff
+00020007
+fffefffd
+00048000
+ffffbffd
+ffffdffa
+04001000
+fffff7fd
+fffffbfd
+fffffdfc
+ffff7eff
+40000080
+08000040
+ffffffd8
+ffffffec
+fffffff7
+00000001
+aaaaaaa8
+fffffffe
+2aaaaaaa
+dfdfffff
+1000b503
+fdfffffd
+01000005
+00800020
+00400002
+55755555
+3ff7ffff
+ffedffff
+ffffcafb
+00004005
+ffffdbff
+01001000
+fffff7f6
+fefffbff
+fbfffdff
+effffeff
+fffdff7f
+ffffffdf
+ccccccc4
+dffffffb
+ffff4afe
+00400001
+80000009
+80000000
+08000007
+02000004
+33b33333
+fdbfffff
+00080100
+33373333
+fffeffff
+ffffcafc
+00004020
+ffffdff6
+33332333
+33333b34
+00000a00
+00000100
+00020080
+aaaaaaeb
+ffffffcf
+fffffdef
+01000008
+08000004
+00400001
+7fff4afd
+afffffff
+dfffffdf
+10020000
+04000000
+fdfff7ff
+0080b503
+00100003
+66676667
+ffffafff
+55554555
+08000200
+00000086
+fffffbbf
+ffffffeb
+ffffffe7
+00000000
+fffffff8
+6666d362
+33338631
+0000b503
+aaaa1fae
+5555e053
+0000b501
+00000006
+0000b505
+6666d360
+33338637
+5555e051
+0000b507
+00000001
+fffffff9
+6666d363
+33338636
+0000b500
+aaaa1faf
+5555e050
+0000b506
+fffffff8
+00000000
+99992c9a
+cccc79c9
+ffff4afb
+5555e056
+aaaa1fab
+ffff4af9
+fffffffe
+ffff4afd
+99992c98
+cccc79cf
+aaaa1fa9
+ffff4aff
+fffffff9
+00000001
+99992c9b
+cccc79ce
+ffff4af8
+5555e057
+aaaa1fa8
+ffff4afe
+6666d362
+99992c9a
+00000000
+55555553
+66666661
+cccccccc
+33333331
+66666663
+6666d364
+66666667
+00000002
+55555555
+33333333
+66666665
+6666d363
+99992c9b
+00000001
+55555554
+66666662
+cccccccd
+33333332
+66666664
+33338631
+cccc79c9
+55555553
+00000000
+33333332
+9999999f
+66666662
+33333330
+33338637
+33333334
+55555551
+00000006
+66666660
+33333336
+33338630
+cccc79c8
+55555552
+00000007
+33333331
+9999999e
+66666661
+33333337
+0000b503
+ffff4afb
+66666661
+33333332
+00000000
+aaaaaaad
+55555550
+00000002
+0000b505
+00000006
+66666663
+33333334
+55555552
+00000004
+0000b502
+ffff4afa
+66666660
+33333335
+00000003
+aaaaaaac
+55555553
+00000005
+aaaa1fae
+5555e056
+cccccccc
+9999999f
+aaaaaaad
+00000000
+fffffffd
+aaaaaaaf
+aaaa1fa8
+aaaaaaab
+ccccccce
+99999999
+ffffffff
+aaaaaaa9
+aaaa1faf
+5555e057
+cccccccd
+99999998
+aaaaaaae
+00000001
+fffffffe
+aaaaaaa8
+5555e053
+aaaa1fab
+33333331
+66666662
+55555550
+fffffffd
+00000000
+55555552
+5555e055
+55555556
+33333333
+66666664
+00000002
+55555554
+5555e052
+aaaa1faa
+33333330
+66666665
+55555553
+fffffffc
+00000003
+55555555
+0000b501
+ffff4af9
+66666663
+33333330
+00000002
+aaaaaaaf
+55555552
+00000000
+0000b507
+00000004
+66666661
+33333336
+55555550
+00000006
+0000b500
+ffff4af8
+66666662
+33333337
+00000001
+aaaaaaae
+55555551
+00000007
+00000006
+fffffffe
+6666d364
+33338637
+0000b505
+aaaa1fa8
+5555e055
+0000b507
+00000000
+0000b503
+6666d366
+33338631
+5555e057
+0000b501
+00000007
+ffffffff
+6666d365
+33338630
+0000b506
+aaaa1fa9
+5555e056
+0000b500
+0000b505
+ffff4afd
+66666667
+33333334
+00000006
+aaaaaaab
+55555556
+00000004
+0000b503
+00000000
+66666665
+33333332
+55555554
+00000002
+0000b504
+ffff4afc
+66666666
+33333333
+00000005
+aaaaaaaa
+55555555
+00000003
+6666d360
+99992c98
+00000002
+55555551
+66666663
+ccccccce
+33333333
+66666661
+6666d366
+66666665
+33333333
+55555556
+00000001
+66666667
+33333331
+33338637
+cccc79cf
+55555555
+00000000
+33333336
+99999999
+66666666
+33333330
+0000b500
+ffff4af8
+66666662
+33333331
+00000003
+aaaaaaae
+55555553
+00000001
+0000b506
+00000005
+66666660
+33333337
+55555551
+00000007
+0000b501
+ffff4af9
+66666663
+33333336
+00000000
+aaaaaaaf
+55555550
+00000006
+aaaa1faf
+5555e057
+cccccccd
+9999999e
+aaaaaaac
+00000001
+fffffffc
+aaaaaaae
+aaaa1fa9
+aaaaaaaa
+cccccccf
+99999998
+fffffffe
+aaaaaaa8
+aaaa1fae
+5555e056
+cccccccc
+99999999
+aaaaaaaf
+00000000
+ffffffff
+aaaaaaa9
+5555e050
+aaaa1fa8
+33333332
+66666661
+55555553
+fffffffe
+00000003
+55555551
+5555e056
+55555555
+33333330
+66666667
+00000001
+55555557
+5555e051
+aaaa1fa9
+33333333
+66666666
+55555550
+ffffffff
+00000000
+55555556
+0000b506
+ffff4afe
+66666664
+33333337
+00000005
+aaaaaaa8
+55555555
+00000007
+0000b500
+00000003
+66666666
+33333331
+55555557
+00000001
+0000b507
+ffff4aff
+66666665
+33333330
+00000006
+aaaaaaa9
+55555556
+00000000
+00000000
+55555557
+33333331
+66666667
+6666d361
+99992c99
+00000003
+55555556
+66666660
+cccccccf
+33333330
+66666666
+33338637
+cccc79cf
+55555555
+00000006
+33333334
+99999999
+66666664
+33333336
+33338631
+33333332
+55555557
+00000000
+66666666
+33333330
+33338636
+cccc79ce
+55555554
+00000001
+33333337
+99999998
+66666667
+33333331
+5555e051
+aaaa1fa9
+33333333
+66666660
+55555552
+ffffffff
+00000002
+55555550
+5555e057
+55555554
+33333331
+66666666
+00000000
+55555556
+5555e050
+aaaa1fa8
+33333332
+66666667
+55555551
+fffffffe
+00000001
+55555557
+0000b507
+ffff4aff
+66666665
+33333336
+00000004
+aaaaaaa9
+55555554
+00000006
+0000b501
+00000002
+66666667
+33333330
+55555556
+00000000
+0000b506
+ffff4afe
+66666664
+33333331
+00000007
+aaaaaaa8
+55555557
+00000001
+00000001
+fffffff9
+6666d363
+33338630
+0000b502
+aaaa1faf
+5555e052
+0000b500
+00000007
+0000b504
+6666d361
+33338636
+5555e050
+0000b506
+00000000
+fffffff8
+6666d362
+33338637
+0000b501
+aaaa1fae
+5555e051
+0000b507
+fffffff9
+00000001
+99992c9b
+cccc79c8
+ffff4afa
+5555e057
+aaaa1faa
+ffff4af8
+ffffffff
+ffff4afc
+99992c99
+cccc79ce
+aaaa1fa8
+ffff4afe
+fffffff8
+00000000
+99992c9a
+cccc79cf
+ffff4af9
+5555e056
+aaaa1fa9
+ffff4aff
+6666d363
+99992c9b
+00000001
+55555552
+66666660
+cccccccd
+33333330
+66666662
+6666d365
+66666666
+00000003
+55555554
+33333332
+66666664
+6666d362
+99992c9a
+00000000
+55555555
+66666663
+cccccccc
+33333333
+66666665
+33338636
+cccc79ce
+55555554
+00000007
+33333335
+99999998
+66666665
+33333337
+33338630
+bffffbff
+dfffdfff
+effffffe
+00050000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/xori-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/xori-01.reference_output
new file mode 100644
index 000000000..72862a594
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/references/xori-01.reference_output
@@ -0,0 +1,559 @@
+000207ff
+80000555
+40000100
+dffffffd
+effffff9
+0800002b
+fbffffef
+fdfffccc
+fefffffa
+00800040
+ffbffff8
+00200009
+ffeff99a
+00080003
+fffbffd1
+00000200
+00000000
+00004000
+00002003
+ffffefd1
+fffff2ab
+fffffbf9
+00000205
+00000000
+00000480
+ffffffbe
+ffffffdc
+00000012
+fffffaa2
+fffffaaf
+fffffaab
+ffffffd2
+66666199
+00001200
+00020080
+00100020
+00000011
+00100008
+00002004
+fffbfffe
+7ffffff8
+40000040
+20000001
+10000006
+080003ff
+04000005
+fdffffd3
+01000003
+0080002e
+ffbffffd
+ffdfffd4
+00100554
+fff7fdff
+fffdfffe
+00010003
+000087ff
+ffffbfbf
+00002007
+00001004
+00000c00
+00000267
+00000204
+fffffef8
+ffffff7e
+00000040
+00000020
+00000015
+0000000b
+ffffffd7
+00000556
+ffffffee
+3ffffeff
+aaaaaa2a
+00000021
+fffffff1
+0000b52b
+ffff4ad1
+0000b362
+0000b631
+0000b503
+ffff4fae
+0000b053
+0000b501
+0000b529
+0000b505
+0000b360
+0000b637
+0000b051
+0000b507
+0000b528
+ffff4ad6
+0000b363
+0000b636
+0000b500
+ffff4faf
+0000b050
+0000b506
+ffff4ad3
+0000b529
+ffff4c9a
+ffff49c9
+ffff4afb
+0000b056
+ffff4fab
+ffff4af9
+ffff4ad1
+ffff4afd
+ffff4c98
+ffff49cf
+ffff4fa9
+ffff4aff
+ffff4ad0
+0000b52e
+ffff4c9b
+ffff49ce
+ffff4af8
+0000b057
+ffff4fa8
+ffff4afe
+66666649
+999999b3
+66666000
+66666553
+66666661
+99999ccc
+66666331
+66666663
+6666664b
+66666667
+66666002
+66666555
+66666333
+66666665
+6666664a
+999999b4
+66666001
+66666554
+66666662
+99999ccd
+66666332
+66666664
+3333331a
+cccccce0
+33333553
+33333000
+33333332
+ccccc99f
+33333662
+33333330
+33333318
+33333334
+33333551
+33333006
+33333660
+33333336
+33333319
+cccccce7
+33333552
+33333007
+33333331
+ccccc99e
+33333661
+33333337
+00000028
+ffffffd2
+00000661
+00000332
+00000000
+fffffaad
+00000550
+00000002
+0000002a
+00000006
+00000663
+00000334
+00000552
+00000004
+0000002b
+ffffffd5
+00000660
+00000335
+00000003
+fffffaac
+00000553
+00000005
+aaaaaa85
+5555557f
+aaaaaccc
+aaaaa99f
+aaaaaaad
+55555000
+aaaaaffd
+aaaaaaaf
+aaaaaa87
+aaaaaaab
+aaaaacce
+aaaaa999
+aaaaafff
+aaaaaaa9
+aaaaaa86
+55555578
+aaaaaccd
+aaaaa998
+aaaaaaae
+55555001
+aaaaaffe
+aaaaaaa8
+55555578
+aaaaaa82
+55555331
+55555662
+55555550
+aaaaaffd
+55555000
+55555552
+5555557a
+55555556
+55555333
+55555664
+55555002
+55555554
+5555557b
+aaaaaa85
+55555330
+55555665
+55555553
+aaaaaffc
+55555003
+55555555
+0000002a
+ffffffd0
+00000663
+00000330
+00000002
+fffffaaf
+00000552
+00000000
+00000028
+00000004
+00000661
+00000336
+00000550
+00000006
+00000029
+00000662
+00000337
+00000001
+fffffaae
+00000551
+00000007
+0000b52d
+ffff4ad7
+0000b364
+0000b637
+0000b505
+ffff4fa8
+0000b055
+0000b507
+0000b52f
+0000b503
+0000b366
+0000b631
+0000b057
+0000b501
+0000b52e
+ffff4ad0
+0000b365
+0000b630
+0000b506
+ffff4fa9
+0000b056
+0000b500
+0000002e
+ffffffd4
+00000667
+00000334
+00000006
+fffffaab
+00000556
+00000004
+0000002c
+00000000
+00000665
+00000332
+00000554
+00000002
+0000002d
+ffffffd3
+00000666
+00000333
+00000005
+fffffaaa
+00000555
+00000003
+6666664b
+999999b1
+66666002
+66666551
+66666663
+99999cce
+66666333
+66666661
+66666649
+55555001
+aaaaaffc
+aaaaaaae
+aaaaaa86
+aaaaaaaa
+aaaaaccf
+aaaaa998
+aaaaaffe
+aaaaaaa8
+aaaaaa87
+55555579
+aaaaaccc
+aaaaa999
+aaaaaaaf
+55555000
+aaaaafff
+aaaaaaa9
+5555557b
+aaaaaa81
+55555332
+55555661
+55555553
+aaaaaffe
+55555003
+55555551
+55555579
+55555555
+55555330
+55555667
+55555001
+55555557
+55555578
+aaaaaa86
+55555333
+55555666
+55555550
+aaaaafff
+55555000
+55555556
+0000002d
+ffffffd7
+00000664
+00000337
+00000005
+fffffaa8
+00000555
+00000007
+0000002f
+00000003
+00000666
+00000331
+00000557
+00000001
+0000002e
+ffffffd0
+00000665
+00000330
+00000006
+fffffaa9
+00000556
+00000000
+66666665
+66666000
+66666557
+66666331
+66666667
+66666648
+999999b6
+66666003
+66666556
+66666660
+99999ccf
+66666330
+66666666
+3333331c
+cccccce6
+33333555
+33333006
+33333334
+ccccc999
+33333664
+33333336
+3333331e
+33333332
+33333557
+33333000
+33333666
+33333330
+3333331f
+cccccce1
+33333554
+33333001
+33333337
+ccccc998
+33333667
+33333331
+5555557a
+aaaaaa80
+55555333
+55555660
+55555552
+aaaaafff
+55555002
+55555550
+55555578
+55555554
+55555331
+55555666
+55555000
+55555556
+55555579
+aaaaaa87
+55555332
+55555667
+55555551
+aaaaaffe
+55555001
+55555557
+0000002c
+ffffffd6
+00000665
+00000336
+00000004
+fffffaa9
+00000554
+00000006
+0000002e
+00000002
+00000667
+00000330
+00000000
+0000002f
+ffffffd1
+00000664
+00000331
+00000007
+fffffaa8
+00000557
+00000001
+0000b52a
+ffff4ad0
+0000b363
+0000b630
+0000b502
+ffff4faf
+0000b052
+0000b500
+0000b528
+0000b504
+0000b361
+0000b636
+0000b050
+0000b506
+0000b529
+ffff4ad7
+0000b362
+0000b637
+0000b501
+ffff4fae
+0000b051
+0000b507
+ffff4ad2
+0000b528
+ffff4c9b
+ffff49c8
+ffff4afa
+0000b057
+ffff4faa
+ffff4af8
+ffff4ad0
+ffff4afc
+ffff4c99
+ffff49ce
+ffff4fa8
+ffff4afe
+ffff4ad1
+0000b52f
+ffff4c9a
+ffff49cf
+ffff4af9
+0000b056
+ffff4fa9
+ffff4aff
+66666648
+999999b2
+66666001
+66666552
+66666660
+99999ccd
+66666330
+66666662
+6666664a
+66666666
+66666003
+66666554
+66666332
+66666664
+6666664b
+999999b5
+66666000
+66666555
+66666663
+99999ccc
+66666333
+66666665
+3333331d
+cccccce7
+33333554
+33333007
+33333335
+ccccc998
+33333665
+33333337
+3333331f
+33333333
+33333556
+33333001
+33333667
+33333331
+3333331e
+cccccce0
+33333555
+33333000
+33333336
+ccccc999
+33333666
+33333330
+0000002b
+ffffffd1
+00000662
+00000331
+00000003
+fffffaae
+00000553
+00000001
+00000029
+00000005
+00000660
+00000337
+00000551
+00000007
+00000028
+ffffffd6
+00000663
+00000336
+00000000
+fffffaaf
+00000550
+00000006
+aaaaaa84
+5555557e
+aaaaaccd
+aaaaa99e
+aaaaaaac
+fffefdff
+ffff7fff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/add-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/add-01.S
new file mode 100644
index 000000000..9336eccf9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/add-01.S
@@ -0,0 +1,3000 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the add instruction of the RISC-V E extension for the add covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",add)
+
+RVTEST_SIGBASE( x10,signature_x10_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x7, rs2==x9, rd==x5, rs1_val != rs2_val, rs1_val < 0 and rs2_val < 0, rs2_val == -16385, rs1_val == -2049
+// opcode: add ; op1:x7; op2:x9; dest:x5; op1val:-0x801; op2val:-0x4001
+TEST_RR_OP(add, x5, x7, x9, 0xffffb7fe, -0x801, -0x4001, x10, 0, x11)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x12, rs2==x3, rd==x12, rs2_val == 2147483647, rs1_val < 0 and rs2_val > 0, rs1_val == -262145, rs2_val == (2**(xlen-1)-1)
+// opcode: add ; op1:x12; op2:x3; dest:x12; op1val:-0x40001; op2val:0x7fffffff
+TEST_RR_OP(add, x12, x12, x3, 0x7ffbfffe, -0x40001, 0x7fffffff, x10, 4, x11)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x6, rs2==x1, rd==x1, rs2_val == -1073741825, rs1_val == -4194305
+// opcode: add ; op1:x6; op2:x1; dest:x1; op1val:-0x400001; op2val:-0x40000001
+TEST_RR_OP(add, x1, x6, x1, 0xbfbffffe, -0x400001, -0x40000001, x10, 8, x11)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x2, rs2==x2, rd==x7, rs2_val == -536870913, rs1_val == 32, rs1_val > 0 and rs2_val < 0
+// opcode: add ; op1:x2; op2:x2; dest:x7; op1val:0x20; op2val:0x20
+TEST_RR_OP(add, x7, x2, x2, 0x40, 0x20, 0x20, x10, 12, x11)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x0, rs2==x0, rd==x0, rs2_val == -268435457, rs1_val == 4
+// opcode: add ; op1:x0; op2:x0; dest:x0; op1val:0x0; op2val:0x0
+TEST_RR_OP(add, x0, x0, x0, 0, 0x0, 0x0, x10, 16, x11)
+
+inst_5:
+// rs1==x8, rs2==x4, rd==x14, rs2_val == -134217729, rs1_val == -16777217
+// opcode: add ; op1:x8; op2:x4; dest:x14; op1val:-0x1000001; op2val:-0x8000001
+TEST_RR_OP(add, x14, x8, x4, 0xf6fffffe, -0x1000001, -0x8000001, x10, 20, x11)
+
+inst_6:
+// rs1==x4, rs2==x5, rd==x15, rs2_val == -67108865,
+// opcode: add ; op1:x4; op2:x5; dest:x15; op1val:0x7; op2val:-0x4000001
+TEST_RR_OP(add, x15, x4, x5, 0xfc000006, 0x7, -0x4000001, x10, 24, x1)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_7:
+// rs1==x14, rs2==x11, rd==x6, rs2_val == -33554433,
+// opcode: add ; op1:x14; op2:x11; dest:x6; op1val:0x33333333; op2val:-0x2000001
+TEST_RR_OP(add, x6, x14, x11, 0x31333332, 0x33333333, -0x2000001, x4, 0, x1)
+
+inst_8:
+// rs1==x3, rs2==x10, rd==x2, rs2_val == -16777217, rs1_val == 2048
+// opcode: add ; op1:x3; op2:x10; dest:x2; op1val:0x800; op2val:-0x1000001
+TEST_RR_OP(add, x2, x3, x10, 0xff0007ff, 0x800, -0x1000001, x4, 4, x1)
+
+inst_9:
+// rs1==x13, rs2==x6, rd==x9, rs2_val == -8388609, rs1_val == -17
+// opcode: add ; op1:x13; op2:x6; dest:x9; op1val:-0x11; op2val:-0x800001
+TEST_RR_OP(add, x9, x13, x6, 0xff7fffee, -0x11, -0x800001, x4, 8, x1)
+
+inst_10:
+// rs1==x15, rs2==x14, rd==x13, rs2_val == -4194305, rs1_val == -5
+// opcode: add ; op1:x15; op2:x14; dest:x13; op1val:-0x5; op2val:-0x400001
+TEST_RR_OP(add, x13, x15, x14, 0xffbffffa, -0x5, -0x400001, x4, 12, x1)
+
+inst_11:
+// rs1==x11, rs2==x12, rd==x3, rs2_val == -2097153, rs1_val == -33554433
+// opcode: add ; op1:x11; op2:x12; dest:x3; op1val:-0x2000001; op2val:-0x200001
+TEST_RR_OP(add, x3, x11, x12, 0xfddffffe, -0x2000001, -0x200001, x4, 16, x1)
+
+inst_12:
+// rs1==x5, rs2==x15, rd==x11, rs2_val == -1048577, rs1_val == -131073
+// opcode: add ; op1:x5; op2:x15; dest:x11; op1val:-0x20001; op2val:-0x100001
+TEST_RR_OP(add, x11, x5, x15, 0xffedfffe, -0x20001, -0x100001, x4, 20, x2)
+
+inst_13:
+// rs1==x1, rs2==x13, rd==x10, rs2_val == -524289, rs1_val == -2097153
+// opcode: add ; op1:x1; op2:x13; dest:x10; op1val:-0x200001; op2val:-0x80001
+TEST_RR_OP(add, x10, x1, x13, 0xffd7fffe, -0x200001, -0x80001, x4, 24, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_14:
+// rs1==x10, rs2==x8, rd==x4, rs2_val == -262145, rs1_val == 128
+// opcode: add ; op1:x10; op2:x8; dest:x4; op1val:0x80; op2val:-0x40001
+TEST_RR_OP(add, x4, x10, x8, 0xfffc007f, 0x80, -0x40001, x1, 0, x2)
+
+inst_15:
+// rs1==x9, rs2==x7, rd==x8, rs2_val == -131073,
+// opcode: add ; op1:x9; op2:x7; dest:x8; op1val:-0x2000001; op2val:-0x20001
+TEST_RR_OP(add, x8, x9, x7, 0xfdfdfffe, -0x2000001, -0x20001, x1, 4, x2)
+
+inst_16:
+// rs2_val == -65537, rs1_val == -1431655766
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x10001
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9aaa9, -0x55555556, -0x10001, x1, 8, x2)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x8001
+TEST_RR_OP(add, x12, x10, x11, 0x3332b331, 0x33333332, -0x8001, x1, 12, x2)
+
+inst_18:
+// rs2_val == -8193,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x2001
+TEST_RR_OP(add, x12, x10, x11, 0xffffe002, 0x3, -0x2001, x1, 16, x2)
+
+inst_19:
+// rs2_val == -4097,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x9; op2val:-0x1001
+TEST_RR_OP(add, x12, x10, x11, 0xfffff008, 0x9, -0x1001, x1, 20, x2)
+
+inst_20:
+// rs2_val == -2049, rs1_val == -524289
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:-0x801
+TEST_RR_OP(add, x12, x10, x11, 0xfff7f7fe, -0x80001, -0x801, x1, 24, x2)
+
+inst_21:
+// rs2_val == -1025, rs1_val == 0
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x401
+TEST_RR_OP(add, x12, x10, x11, 0xfffffbff, 0x0, -0x401, x1, 28, x2)
+
+inst_22:
+// rs2_val == -513,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:-0x201
+TEST_RR_OP(add, x12, x10, x11, 0xfffff5fe, -0x801, -0x201, x1, 32, x2)
+
+inst_23:
+// rs2_val == -257, rs1_val == 1431655765
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x101
+TEST_RR_OP(add, x12, x10, x11, 0x55555454, 0x55555555, -0x101, x1, 36, x2)
+
+inst_24:
+// rs2_val == -129, rs1_val == -3
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x81
+TEST_RR_OP(add, x12, x10, x11, 0xffffff7c, -0x3, -0x81, x1, 40, x2)
+
+inst_25:
+// rs2_val == -65,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x41
+TEST_RR_OP(add, x12, x10, x11, 0xffdfffbe, -0x200001, -0x41, x1, 44, x2)
+
+inst_26:
+// rs2_val == -33, rs1_val == -129
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:-0x21
+TEST_RR_OP(add, x12, x10, x11, 0xffffff5e, -0x81, -0x21, x1, 48, x2)
+
+inst_27:
+// rs2_val == -17,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x9; op2val:-0x11
+TEST_RR_OP(add, x12, x10, x11, 0xfffffff8, 0x9, -0x11, x1, 52, x2)
+
+inst_28:
+// rs2_val == -9, rs1_val == -16385
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:-0x9
+TEST_RR_OP(add, x12, x10, x11, 0xffffbff6, -0x4001, -0x9, x1, 56, x2)
+
+inst_29:
+// rs2_val == -5, rs1_val == 134217728
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:-0x5
+TEST_RR_OP(add, x12, x10, x11, 0x7fffffb, 0x8000000, -0x5, x1, 60, x2)
+
+inst_30:
+// rs2_val == -3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x3
+TEST_RR_OP(add, x12, x10, x11, 0xffdffffc, -0x200001, -0x3, x1, 64, x2)
+
+inst_31:
+// rs2_val == -2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:-0x2
+TEST_RR_OP(add, x12, x10, x11, 0xffffbffd, -0x4001, -0x2, x1, 68, x2)
+
+inst_32:
+// rs1_val == 2147483647, rs1_val > 0 and rs2_val > 0, rs1_val == (2**(xlen-1)-1), rs2_val == 131072
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x20000
+TEST_RR_OP(add, x12, x10, x11, 0x8001ffff, 0x7fffffff, 0x20000, x1, 72, x2)
+
+inst_33:
+// rs1_val == -1073741825,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x26666664, -0x40000001, 0x66666665, x1, 76, x2)
+
+inst_34:
+// rs1_val == -536870913,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:-0x8001
+TEST_RR_OP(add, x12, x10, x11, 0xdfff7ffe, -0x20000001, -0x8001, x1, 80, x2)
+
+inst_35:
+// rs1_val == -268435457, rs2_val == 32
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:0x20
+TEST_RR_OP(add, x12, x10, x11, 0xf000001f, -0x10000001, 0x20, x1, 84, x2)
+
+inst_36:
+// rs1_val == -134217729,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x81
+TEST_RR_OP(add, x12, x10, x11, 0xf7ffff7e, -0x8000001, -0x81, x1, 88, x2)
+
+inst_37:
+// rs1_val == -67108865, rs2_val == 1048576
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x100000
+TEST_RR_OP(add, x12, x10, x11, 0xfc0fffff, -0x4000001, 0x100000, x1, 92, x2)
+
+inst_38:
+// rs1_val == -8388609,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:-0x4
+TEST_RR_OP(add, x12, x10, x11, 0xff7ffffb, -0x800001, -0x4, x1, 96, x2)
+
+inst_39:
+// rs1_val == -1048577, rs2_val == 0
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xffefffff, -0x100001, 0x0, x1, 100, x2)
+
+inst_40:
+// rs1_val == -65537,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x1001
+TEST_RR_OP(add, x12, x10, x11, 0xfffeeffe, -0x10001, -0x1001, x1, 104, x2)
+
+inst_41:
+// rs1_val == -32769, rs2_val == 524288
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x80000
+TEST_RR_OP(add, x12, x10, x11, 0x77fff, -0x8001, 0x80000, x1, 108, x2)
+
+inst_42:
+// rs1_val == -8193,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xffffdfff, -0x2001, 0x0, x1, 112, x2)
+
+inst_43:
+// rs1_val == -4097, rs2_val == 262144
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0x40000
+TEST_RR_OP(add, x12, x10, x11, 0x3efff, -0x1001, 0x40000, x1, 116, x2)
+
+inst_44:
+// rs1_val == -1025, rs2_val == 256
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x100
+TEST_RR_OP(add, x12, x10, x11, 0xfffffcff, -0x401, 0x100, x1, 120, x2)
+
+inst_45:
+// rs1_val == -513,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:-0x2001
+TEST_RR_OP(add, x12, x10, x11, 0xffffddfe, -0x201, -0x2001, x1, 124, x2)
+
+inst_46:
+// rs1_val == -257,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:-0x1001
+TEST_RR_OP(add, x12, x10, x11, 0xffffeefe, -0x101, -0x1001, x1, 128, x2)
+
+inst_47:
+// rs1_val == -65,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:-0x11
+TEST_RR_OP(add, x12, x10, x11, 0xffffffae, -0x41, -0x11, x1, 132, x2)
+
+inst_48:
+// rs1_val == -33,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x7
+TEST_RR_OP(add, x12, x10, x11, 0xffffffe6, -0x21, 0x7, x1, 136, x2)
+
+inst_49:
+// rs1_val == -9,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:-0x2000001
+TEST_RR_OP(add, x12, x10, x11, 0xfdfffff6, -0x9, -0x2000001, x1, 140, x2)
+
+inst_50:
+// rs1_val == -2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:-0x6
+TEST_RR_OP(add, x12, x10, x11, 0xfffffff8, -0x2, -0x6, x1, 144, x2)
+
+inst_51:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x80000000
+TEST_RR_OP(add, x12, x10, x11, 0x80000006, 0x6, -0x80000000, x1, 148, x2)
+
+inst_52:
+// rs2_val == 1073741824, rs1_val == 536870912
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x40000000
+TEST_RR_OP(add, x12, x10, x11, 0x60000000, 0x20000000, 0x40000000, x1, 152, x2)
+
+inst_53:
+// rs2_val == 536870912,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x40000000; op2val:0x20000000
+TEST_RR_OP(add, x12, x10, x11, 0xe0000000, -0x40000000, 0x20000000, x1, 156, x2)
+
+inst_54:
+// rs2_val == 268435456,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x10000000
+TEST_RR_OP(add, x12, x10, x11, 0xbaaaaaaa, -0x55555556, 0x10000000, x1, 160, x2)
+
+inst_55:
+// rs2_val == 134217728, rs1_val == 1
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x8000000
+TEST_RR_OP(add, x12, x10, x11, 0x8000001, 0x1, 0x8000000, x1, 164, x2)
+
+inst_56:
+// rs2_val == 67108864,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4000000
+TEST_RR_OP(add, x12, x10, x11, 0x59555554, 0x55555554, 0x4000000, x1, 168, x2)
+
+inst_57:
+// rs2_val == 33554432, rs1_val == 64
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0x2000000
+TEST_RR_OP(add, x12, x10, x11, 0x2000040, 0x40, 0x2000000, x1, 172, x2)
+
+inst_58:
+// rs2_val == 16777216,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x1000000
+TEST_RR_OP(add, x12, x10, x11, 0x1000003, 0x3, 0x1000000, x1, 176, x2)
+
+inst_59:
+// rs2_val == 8388608,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x6; op2val:0x800000
+TEST_RR_OP(add, x12, x10, x11, 0x7ffffa, -0x6, 0x800000, x1, 180, x2)
+
+inst_60:
+// rs2_val == 4194304, rs1_val == 16
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x400000
+TEST_RR_OP(add, x12, x10, x11, 0x400010, 0x10, 0x400000, x1, 184, x2)
+
+inst_61:
+// rs2_val == 2097152,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x200000
+TEST_RR_OP(add, x12, x10, x11, 0xfffff, -0x100001, 0x200000, x1, 188, x2)
+
+inst_62:
+// rs2_val == 65536,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x10000
+TEST_RR_OP(add, x12, x10, x11, 0x10000, 0x0, 0x10000, x1, 192, x2)
+
+inst_63:
+// rs2_val == 32768,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:0x8000
+TEST_RR_OP(add, x12, x10, x11, 0xffff7fff, -0x10001, 0x8000, x1, 196, x2)
+
+inst_64:
+// rs2_val == 16384,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4000
+TEST_RR_OP(add, x12, x10, x11, 0xffff8afd, -0xb503, 0x4000, x1, 200, x2)
+
+inst_65:
+// rs2_val == 8192,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2000
+TEST_RR_OP(add, x12, x10, x11, 0x55557555, 0x55555555, 0x2000, x1, 204, x2)
+
+inst_66:
+// rs2_val == 4096, rs1_val == 65536
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x1000
+TEST_RR_OP(add, x12, x10, x11, 0x11000, 0x10000, 0x1000, x1, 208, x2)
+
+inst_67:
+// rs2_val == 2048,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x800
+TEST_RR_OP(add, x12, x10, x11, 0x800, 0x0, 0x800, x1, 212, x2)
+
+inst_68:
+// rs2_val == 1024, rs1_val == 524288
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x400
+TEST_RR_OP(add, x12, x10, x11, 0x80400, 0x80000, 0x400, x1, 216, x2)
+
+inst_69:
+// rs2_val == 512,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:0x200
+TEST_RR_OP(add, x12, x10, x11, 0x1fd, -0x3, 0x200, x1, 220, x2)
+
+inst_70:
+// rs2_val == 128,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x80
+TEST_RR_OP(add, x12, x10, x11, 0xfffffe7f, -0x201, 0x80, x1, 224, x2)
+
+inst_71:
+// rs2_val == 64, rs1_val == 2
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x40
+TEST_RR_OP(add, x12, x10, x11, 0x42, 0x2, 0x40, x1, 228, x2)
+
+inst_72:
+// rs2_val == 16,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0x10
+TEST_RR_OP(add, x12, x10, x11, 0xffe0000f, -0x200001, 0x10, x1, 232, x2)
+
+inst_73:
+// rs2_val == 8,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x8
+TEST_RR_OP(add, x12, x10, x11, 0xfffffff7, -0x11, 0x8, x1, 236, x2)
+
+inst_74:
+// rs2_val == 4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffb, -0x9, 0x4, x1, 240, x2)
+
+inst_75:
+// rs2_val == 2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xffffffc1, -0x41, 0x2, x1, 244, x2)
+
+inst_76:
+// rs2_val == 1,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3fffffff; op2val:0x1
+TEST_RR_OP(add, x12, x10, x11, 0x40000000, 0x3fffffff, 0x1, x1, 248, x2)
+
+inst_77:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x80000006, -0x80000000, 0x6, x1, 252, x2)
+
+inst_78:
+// rs1_val == 1073741824,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x40000005, 0x40000000, 0x5, x1, 256, x2)
+
+inst_79:
+// rs1_val == 268435456,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xfff4afc, 0x10000000, -0xb504, x1, 260, x2)
+
+inst_80:
+// rs1_val == 67108864,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x4000006, 0x4000000, 0x6, x1, 264, x2)
+
+inst_81:
+// rs1_val == 33554432,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:-0x9
+TEST_RR_OP(add, x12, x10, x11, 0x1fffff7, 0x2000000, -0x9, x1, 268, x2)
+
+inst_82:
+// rs1_val == 16777216,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:-0x7
+TEST_RR_OP(add, x12, x10, x11, 0xfffff9, 0x1000000, -0x7, x1, 272, x2)
+
+inst_83:
+// rs1_val == 8388608,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:-0x2
+TEST_RR_OP(add, x12, x10, x11, 0x7ffffe, 0x800000, -0x2, x1, 276, x2)
+
+inst_84:
+// rs1_val == 4194304,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:-0x201
+TEST_RR_OP(add, x12, x10, x11, 0x3ffdff, 0x400000, -0x201, x1, 280, x2)
+
+inst_85:
+// rs1_val == 2097152,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:-0x8
+TEST_RR_OP(add, x12, x10, x11, 0x1ffff8, 0x200000, -0x8, x1, 284, x2)
+
+inst_86:
+// rs1_val == 1048576,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:-0x40000001
+TEST_RR_OP(add, x12, x10, x11, 0xc00fffff, 0x100000, -0x40000001, x1, 288, x2)
+
+inst_87:
+// rs1_val == 262144,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:-0x81
+TEST_RR_OP(add, x12, x10, x11, 0x3ff7f, 0x40000, -0x81, x1, 292, x2)
+
+inst_88:
+// rs1_val == 131072,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:-0x40000001
+TEST_RR_OP(add, x12, x10, x11, 0xc001ffff, 0x20000, -0x40000001, x1, 296, x2)
+
+inst_89:
+// rs1_val == 32768,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x1000000
+TEST_RR_OP(add, x12, x10, x11, 0x1008000, 0x8000, 0x1000000, x1, 300, x2)
+
+inst_90:
+// rs1_val == 16384,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:-0x40000000
+TEST_RR_OP(add, x12, x10, x11, 0xc0004000, 0x4000, -0x40000000, x1, 304, x2)
+
+inst_91:
+// rs1_val == 8192,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x40000
+TEST_RR_OP(add, x12, x10, x11, 0x42000, 0x2000, 0x40000, x1, 308, x2)
+
+inst_92:
+// rs1_val == 4096, rs2_val == -1431655766
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaabaaa, 0x1000, -0x55555556, x1, 312, x2)
+
+inst_93:
+// rs1_val == 1024,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:-0x8000001
+TEST_RR_OP(add, x12, x10, x11, 0xf80003ff, 0x400, -0x8000001, x1, 316, x2)
+
+inst_94:
+// rs1_val == 512,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x1
+TEST_RR_OP(add, x12, x10, x11, 0x201, 0x200, 0x1, x1, 320, x2)
+
+inst_95:
+// rs1_val == 256,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:-0x10001
+TEST_RR_OP(add, x12, x10, x11, 0xffff00ff, 0x100, -0x10001, x1, 324, x2)
+
+inst_96:
+// rs1_val == 8,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:-0x80001
+TEST_RR_OP(add, x12, x10, x11, 0xfff80007, 0x8, -0x80001, x1, 328, x2)
+
+inst_97:
+// rs1_val==46341 and rs2_val==46341, rs1_val == rs2_val
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x16a0a, 0xb505, 0xb505, x1, 332, x2)
+
+inst_98:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x2, 0xb505, -0xb503, x1, 336, x2)
+
+inst_99:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6c, 0xb505, 0x66666667, x1, 340, x2)
+
+inst_100:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333e839, 0xb505, 0x33333334, x1, 344, x2)
+
+inst_101:
+// rs1_val==46341 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xb50b, 0xb505, 0x6, x1, 348, x2)
+
+inst_102:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5fb0, 0xb505, -0x55555555, x1, 352, x2)
+
+inst_103:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x55560a5b, 0xb505, 0x55555556, x1, 356, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xb509, 0xb505, 0x4, x1, 360, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x16a08, 0xb505, 0xb503, x1, 364, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xb505, 0xb505, 0x0, x1, 368, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6a, 0xb505, 0x66666665, x1, 372, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333e837, 0xb505, 0x33333332, x1, 376, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x55560a59, 0xb505, 0x55555554, x1, 380, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xb507, 0xb505, 0x2, x1, 384, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x16a09, 0xb505, 0xb504, x1, 388, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x1, 0xb505, -0xb504, x1, 392, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6b, 0xb505, 0x66666666, x1, 396, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333e838, 0xb505, 0x33333333, x1, 400, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xb50a, 0xb505, 0x5, x1, 404, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5faf, 0xb505, -0x55555556, x1, 408, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55560a5a, 0xb505, 0x55555555, x1, 412, x2)
+
+inst_118:
+// rs1_val==46341 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xb508, 0xb505, 0x3, x1, 416, x2)
+
+inst_119:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x2, -0xb503, 0xb505, x1, 420, x2)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xfffe95fa, -0xb503, -0xb503, x1, 424, x2)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x6665b164, -0xb503, 0x66666667, x1, 428, x2)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x33327e31, -0xb503, 0x33333334, x1, 432, x2)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b03, -0xb503, 0x6, x1, 436, x2)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9f5a8, -0xb503, -0x55555555, x1, 440, x2)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x5554a053, -0xb503, 0x55555556, x1, 444, x2)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b01, -0xb503, 0x4, x1, 448, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x0, -0xb503, 0xb503, x1, 452, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xffff4afd, -0xb503, 0x0, x1, 456, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x6665b162, -0xb503, 0x66666665, x1, 460, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x33327e2f, -0xb503, 0x33333332, x1, 464, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x5554a051, -0xb503, 0x55555554, x1, 468, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xffff4aff, -0xb503, 0x2, x1, 472, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x1, -0xb503, 0xb504, x1, 476, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xfffe95f9, -0xb503, -0xb504, x1, 480, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x6665b163, -0xb503, 0x66666666, x1, 484, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x33327e30, -0xb503, 0x33333333, x1, 488, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b02, -0xb503, 0x5, x1, 492, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9f5a7, -0xb503, -0x55555556, x1, 496, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x5554a052, -0xb503, 0x55555555, x1, 500, x2)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b00, -0xb503, 0x3, x1, 504, x2)
+
+inst_141:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6c, 0x66666667, 0xb505, x1, 508, x2)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x6665b164, 0x66666667, -0xb503, x1, 512, x2)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0xccccccce, 0x66666667, 0x66666667, x1, 516, x2)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x9999999b, 0x66666667, 0x33333334, x1, 520, x2)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x6666666d, 0x66666667, 0x6, x1, 524, x2)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x11111112, 0x66666667, -0x55555555, x1, 528, x2)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbd, 0x66666667, 0x55555556, x1, 532, x2)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x6666666b, 0x66666667, 0x4, x1, 536, x2)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6a, 0x66666667, 0xb503, x1, 540, x2)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x66666667, 0x66666667, 0x0, x1, 544, x2)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccc, 0x66666667, 0x66666665, x1, 548, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x99999999, 0x66666667, 0x33333332, x1, 552, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbb, 0x66666667, 0x55555554, x1, 556, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x66666669, 0x66666667, 0x2, x1, 560, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6b, 0x66666667, 0xb504, x1, 564, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x6665b163, 0x66666667, -0xb504, x1, 568, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccd, 0x66666667, 0x66666666, x1, 572, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x9999999a, 0x66666667, 0x33333333, x1, 576, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x6666666c, 0x66666667, 0x5, x1, 580, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x11111111, 0x66666667, -0x55555556, x1, 584, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbc, 0x66666667, 0x55555555, x1, 588, x2)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x6666666a, 0x66666667, 0x3, x1, 592, x2)
+
+inst_163:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x3333e839, 0x33333334, 0xb505, x1, 596, x2)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x33327e31, 0x33333334, -0xb503, x1, 600, x2)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x9999999b, 0x33333334, 0x66666667, x1, 604, x2)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x66666668, 0x33333334, 0x33333334, x1, 608, x2)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x3333333a, 0x33333334, 0x6, x1, 612, x2)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddf, 0x33333334, -0x55555555, x1, 616, x2)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x8888888a, 0x33333334, 0x55555556, x1, 620, x2)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x33333338, 0x33333334, 0x4, x1, 624, x2)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x3333e837, 0x33333334, 0xb503, x1, 628, x2)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x33333334, 0x33333334, 0x0, x1, 632, x2)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x99999999, 0x33333334, 0x66666665, x1, 636, x2)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x66666666, 0x33333334, 0x33333332, x1, 640, x2)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x88888888, 0x33333334, 0x55555554, x1, 644, x2)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x33333336, 0x33333334, 0x2, x1, 648, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x3333e838, 0x33333334, 0xb504, x1, 652, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x33327e30, 0x33333334, -0xb504, x1, 656, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x9999999a, 0x33333334, 0x66666666, x1, 660, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x66666667, 0x33333334, 0x33333333, x1, 664, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x33333339, 0x33333334, 0x5, x1, 668, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xddddddde, 0x33333334, -0x55555556, x1, 672, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x88888889, 0x33333334, 0x55555555, x1, 676, x2)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x33333337, 0x33333334, 0x3, x1, 680, x2)
+
+inst_185:
+// rs1_val==6 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0xb50b, 0x6, 0xb505, x1, 684, x2)
+
+inst_186:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b03, 0x6, -0xb503, x1, 688, x2)
+
+inst_187:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x6666666d, 0x6, 0x66666667, x1, 692, x2)
+
+inst_188:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333333a, 0x6, 0x33333334, x1, 696, x2)
+
+inst_189:
+// rs1_val==6 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xc, 0x6, 0x6, x1, 700, x2)
+
+inst_190:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaab1, 0x6, -0x55555555, x1, 704, x2)
+
+inst_191:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x5555555c, 0x6, 0x55555556, x1, 708, x2)
+
+inst_192:
+// rs1_val==6 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xa, 0x6, 0x4, x1, 712, x2)
+
+inst_193:
+// rs1_val==6 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xb509, 0x6, 0xb503, x1, 716, x2)
+
+inst_194:
+// rs1_val==6 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x6, 0x0, x1, 720, x2)
+
+inst_195:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x6666666b, 0x6, 0x66666665, x1, 724, x2)
+
+inst_196:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333338, 0x6, 0x33333332, x1, 728, x2)
+
+inst_197:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x5555555a, 0x6, 0x55555554, x1, 732, x2)
+
+inst_198:
+// rs1_val==6 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x6, 0x2, x1, 736, x2)
+
+inst_199:
+// rs1_val==6 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xb50a, 0x6, 0xb504, x1, 740, x2)
+
+inst_200:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b02, 0x6, -0xb504, x1, 744, x2)
+
+inst_201:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x6666666c, 0x6, 0x66666666, x1, 748, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333339, 0x6, 0x33333333, x1, 752, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xb, 0x6, 0x5, x1, 756, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaab0, 0x6, -0x55555556, x1, 760, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x5555555b, 0x6, 0x55555555, x1, 764, x2)
+
+inst_206:
+// rs1_val==6 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x9, 0x6, 0x3, x1, 768, x2)
+
+inst_207:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5fb0, -0x55555555, 0xb505, x1, 772, x2)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9f5a8, -0x55555555, -0xb503, x1, 776, x2)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x11111112, -0x55555555, 0x66666667, x1, 780, x2)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddf, -0x55555555, 0x33333334, x1, 784, x2)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaab1, -0x55555555, 0x6, x1, 788, x2)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55555556, -0x55555555, -0x55555555, x1, 792, x2)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x1, -0x55555555, 0x55555556, x1, 796, x2)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaf, -0x55555555, 0x4, x1, 800, x2)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5fae, -0x55555555, 0xb503, x1, 804, x2)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab, -0x55555555, 0x0, x1, 808, x2)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x11111110, -0x55555555, 0x66666665, x1, 812, x2)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddd, -0x55555555, 0x33333332, x1, 816, x2)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff, -0x55555555, 0x55555554, x1, 820, x2)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaad, -0x55555555, 0x2, x1, 824, x2)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5faf, -0x55555555, 0xb504, x1, 828, x2)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9f5a7, -0x55555555, -0xb504, x1, 832, x2)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x11111111, -0x55555555, 0x66666666, x1, 836, x2)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0xddddddde, -0x55555555, 0x33333333, x1, 840, x2)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaab0, -0x55555555, 0x5, x1, 844, x2)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x55555555, -0x55555555, -0x55555556, x1, 848, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x0, -0x55555555, 0x55555555, x1, 852, x2)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaae, -0x55555555, 0x3, x1, 856, x2)
+
+inst_229:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x55560a5b, 0x55555556, 0xb505, x1, 860, x2)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x5554a053, 0x55555556, -0xb503, x1, 864, x2)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbd, 0x55555556, 0x66666667, x1, 868, x2)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x8888888a, 0x55555556, 0x33333334, x1, 872, x2)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x5555555c, 0x55555556, 0x6, x1, 876, x2)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x1, 0x55555556, -0x55555555, x1, 880, x2)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaac, 0x55555556, 0x55555556, x1, 884, x2)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x5555555a, 0x55555556, 0x4, x1, 888, x2)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x55560a59, 0x55555556, 0xb503, x1, 892, x2)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 896, x2)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbb, 0x55555556, 0x66666665, x1, 900, x2)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x88888888, 0x55555556, 0x33333332, x1, 904, x2)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaa, 0x55555556, 0x55555554, x1, 908, x2)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x55555558, 0x55555556, 0x2, x1, 912, x2)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x55560a5a, 0x55555556, 0xb504, x1, 916, x2)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x5554a052, 0x55555556, -0xb504, x1, 920, x2)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbc, 0x55555556, 0x66666666, x1, 924, x2)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x88888889, 0x55555556, 0x33333333, x1, 928, x2)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x5555555b, 0x55555556, 0x5, x1, 932, x2)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0x55555556, -0x55555556, x1, 936, x2)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab, 0x55555556, 0x55555555, x1, 940, x2)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x55555559, 0x55555556, 0x3, x1, 944, x2)
+
+inst_251:
+// rs1_val==4 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0xb509, 0x4, 0xb505, x1, 948, x2)
+
+inst_252:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b01, 0x4, -0xb503, x1, 952, x2)
+
+inst_253:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x6666666b, 0x4, 0x66666667, x1, 956, x2)
+
+inst_254:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x33333338, 0x4, 0x33333334, x1, 960, x2)
+
+inst_255:
+// rs1_val==4 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xa, 0x4, 0x6, x1, 964, x2)
+
+inst_256:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaf, 0x4, -0x55555555, x1, 968, x2)
+
+inst_257:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x5555555a, 0x4, 0x55555556, x1, 972, x2)
+
+inst_258:
+// rs1_val==4 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x4, 0x4, x1, 976, x2)
+
+inst_259:
+// rs1_val==4 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xb507, 0x4, 0xb503, x1, 980, x2)
+
+inst_260:
+// rs1_val==4 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x4, 0x4, 0x0, x1, 984, x2)
+
+inst_261:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x66666669, 0x4, 0x66666665, x1, 988, x2)
+
+inst_262:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333336, 0x4, 0x33333332, x1, 992, x2)
+
+inst_263:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x55555558, 0x4, 0x55555554, x1, 996, x2)
+
+inst_264:
+// rs1_val==4 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x4, 0x2, x1, 1000, x2)
+
+inst_265:
+// rs1_val==4 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xb508, 0x4, 0xb504, x1, 1004, x2)
+
+inst_266:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b00, 0x4, -0xb504, x1, 1008, x2)
+
+inst_267:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x6666666a, 0x4, 0x66666666, x1, 1012, x2)
+
+inst_268:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333337, 0x4, 0x33333333, x1, 1016, x2)
+
+inst_269:
+// rs1_val==4 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x9, 0x4, 0x5, x1, 1020, x2)
+
+inst_270:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaae, 0x4, -0x55555556, x1, 1024, x2)
+
+inst_271:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55555559, 0x4, 0x55555555, x1, 1028, x2)
+
+inst_272:
+// rs1_val==4 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x7, 0x4, 0x3, x1, 1032, x2)
+
+inst_273:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x16a08, 0xb503, 0xb505, x1, 1036, x2)
+
+inst_274:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0xb503, -0xb503, x1, 1040, x2)
+
+inst_275:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6a, 0xb503, 0x66666667, x1, 1044, x2)
+
+inst_276:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333e837, 0xb503, 0x33333334, x1, 1048, x2)
+
+inst_277:
+// rs1_val==46339 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xb509, 0xb503, 0x6, x1, 1052, x2)
+
+inst_278:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5fae, 0xb503, -0x55555555, x1, 1056, x2)
+
+inst_279:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x55560a59, 0xb503, 0x55555556, x1, 1060, x2)
+
+inst_280:
+// rs1_val==46339 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xb507, 0xb503, 0x4, x1, 1064, x2)
+
+inst_281:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x16a06, 0xb503, 0xb503, x1, 1068, x2)
+
+inst_282:
+// rs1_val==46339 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xb503, 0xb503, 0x0, x1, 1072, x2)
+
+inst_283:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x66671b68, 0xb503, 0x66666665, x1, 1076, x2)
+
+inst_284:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333e835, 0xb503, 0x33333332, x1, 1080, x2)
+
+inst_285:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x55560a57, 0xb503, 0x55555554, x1, 1084, x2)
+
+inst_286:
+// rs1_val==46339 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xb505, 0xb503, 0x2, x1, 1088, x2)
+
+inst_287:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x16a07, 0xb503, 0xb504, x1, 1092, x2)
+
+inst_288:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff, 0xb503, -0xb504, x1, 1096, x2)
+
+inst_289:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x66671b69, 0xb503, 0x66666666, x1, 1100, x2)
+
+inst_290:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333e836, 0xb503, 0x33333333, x1, 1104, x2)
+
+inst_291:
+// rs1_val==46339 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xb508, 0xb503, 0x5, x1, 1108, x2)
+
+inst_292:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5fad, 0xb503, -0x55555556, x1, 1112, x2)
+
+inst_293:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55560a58, 0xb503, 0x55555555, x1, 1116, x2)
+
+inst_294:
+// rs1_val==46339 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xb506, 0xb503, 0x3, x1, 1120, x2)
+
+inst_295:
+// rs1_val==0 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0xb505, 0x0, 0xb505, x1, 1124, x2)
+
+inst_296:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xffff4afd, 0x0, -0xb503, x1, 1128, x2)
+
+inst_297:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x66666667, 0x0, 0x66666667, x1, 1132, x2)
+
+inst_298:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x33333334, 0x0, 0x33333334, x1, 1136, x2)
+
+inst_299:
+// rs1_val==0 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x0, 0x6, x1, 1140, x2)
+
+inst_300:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab, 0x0, -0x55555555, x1, 1144, x2)
+
+inst_301:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x55555556, 0x0, 0x55555556, x1, 1148, x2)
+
+inst_302:
+// rs1_val==0 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x4, 0x0, 0x4, x1, 1152, x2)
+
+inst_303:
+// rs1_val==0 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xb503, 0x0, 0xb503, x1, 1156, x2)
+
+inst_304:
+// rs1_val==0 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1160, x2)
+
+inst_305:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x66666665, 0x0, 0x66666665, x1, 1164, x2)
+
+inst_306:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333332, 0x0, 0x33333332, x1, 1168, x2)
+
+inst_307:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x55555554, 0x0, 0x55555554, x1, 1172, x2)
+
+inst_308:
+// rs1_val==0 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x2, 0x0, 0x2, x1, 1176, x2)
+
+inst_309:
+// rs1_val==0 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xb504, 0x0, 0xb504, x1, 1180, x2)
+
+inst_310:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xffff4afc, 0x0, -0xb504, x1, 1184, x2)
+
+inst_311:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x66666666, 0x0, 0x66666666, x1, 1188, x2)
+
+inst_312:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333333, 0x0, 0x33333333, x1, 1192, x2)
+
+inst_313:
+// rs1_val==0 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x5, 0x0, 0x5, x1, 1196, x2)
+
+inst_314:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaa, 0x0, -0x55555556, x1, 1200, x2)
+
+inst_315:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55555555, 0x0, 0x55555555, x1, 1204, x2)
+
+inst_316:
+// rs1_val==0 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x3, 0x0, 0x3, x1, 1208, x2)
+
+inst_317:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6a, 0x66666665, 0xb505, x1, 1212, x2)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x6665b162, 0x66666665, -0xb503, x1, 1216, x2)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccc, 0x66666665, 0x66666667, x1, 1220, x2)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x99999999, 0x66666665, 0x33333334, x1, 1224, x2)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x6666666b, 0x66666665, 0x6, x1, 1228, x2)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x11111110, 0x66666665, -0x55555555, x1, 1232, x2)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbb, 0x66666665, 0x55555556, x1, 1236, x2)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x66666669, 0x66666665, 0x4, x1, 1240, x2)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x66671b68, 0x66666665, 0xb503, x1, 1244, x2)
+
+inst_326:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x33333333, 0x33333333, 0x0, x1, 1248, x2)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x99999998, 0x33333333, 0x66666665, x1, 1252, x2)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x66666665, 0x33333333, 0x33333332, x1, 1256, x2)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x88888887, 0x33333333, 0x55555554, x1, 1260, x2)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x33333335, 0x33333333, 0x2, x1, 1264, x2)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x3333e837, 0x33333333, 0xb504, x1, 1268, x2)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x33327e2f, 0x33333333, -0xb504, x1, 1272, x2)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x99999999, 0x33333333, 0x66666666, x1, 1276, x2)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x66666666, 0x33333333, 0x33333333, x1, 1280, x2)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x33333338, 0x33333333, 0x5, x1, 1284, x2)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddd, 0x33333333, -0x55555556, x1, 1288, x2)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x88888888, 0x33333333, 0x55555555, x1, 1292, x2)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x33333336, 0x33333333, 0x3, x1, 1296, x2)
+
+inst_339:
+// rs1_val==5 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0xb50a, 0x5, 0xb505, x1, 1300, x2)
+
+inst_340:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b02, 0x5, -0xb503, x1, 1304, x2)
+
+inst_341:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x6666666c, 0x5, 0x66666667, x1, 1308, x2)
+
+inst_342:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x33333339, 0x5, 0x33333334, x1, 1312, x2)
+
+inst_343:
+// rs1_val==5 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xb, 0x5, 0x6, x1, 1316, x2)
+
+inst_344:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaab0, 0x5, -0x55555555, x1, 1320, x2)
+
+inst_345:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x5555555b, 0x5, 0x55555556, x1, 1324, x2)
+
+inst_346:
+// rs1_val==5 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x9, 0x5, 0x4, x1, 1328, x2)
+
+inst_347:
+// rs1_val==5 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xb508, 0x5, 0xb503, x1, 1332, x2)
+
+inst_348:
+// rs1_val==5 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x5, 0x5, 0x0, x1, 1336, x2)
+
+inst_349:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x6666666a, 0x5, 0x66666665, x1, 1340, x2)
+
+inst_350:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333337, 0x5, 0x33333332, x1, 1344, x2)
+
+inst_351:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x55555559, 0x5, 0x55555554, x1, 1348, x2)
+
+inst_352:
+// rs1_val==5 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x7, 0x5, 0x2, x1, 1352, x2)
+
+inst_353:
+// rs1_val==5 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xb509, 0x5, 0xb504, x1, 1356, x2)
+
+inst_354:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b01, 0x5, -0xb504, x1, 1360, x2)
+
+inst_355:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x6666666b, 0x5, 0x66666666, x1, 1364, x2)
+
+inst_356:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333338, 0x5, 0x33333333, x1, 1368, x2)
+
+inst_357:
+// rs1_val==5 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xa, 0x5, 0x5, x1, 1372, x2)
+
+inst_358:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaf, 0x5, -0x55555556, x1, 1376, x2)
+
+inst_359:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x5555555a, 0x5, 0x55555555, x1, 1380, x2)
+
+inst_360:
+// rs1_val==5 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x5, 0x3, x1, 1384, x2)
+
+inst_361:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5faf, -0x55555556, 0xb505, x1, 1388, x2)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9f5a7, -0x55555556, -0xb503, x1, 1392, x2)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x11111111, -0x55555556, 0x66666667, x1, 1396, x2)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0xddddddde, -0x55555556, 0x33333334, x1, 1400, x2)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaab0, -0x55555556, 0x6, x1, 1404, x2)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55555555, -0x55555556, -0x55555555, x1, 1408, x2)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x0, -0x55555556, 0x55555556, x1, 1412, x2)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaae, -0x55555556, 0x4, x1, 1416, x2)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5fad, -0x55555556, 0xb503, x1, 1420, x2)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1424, x2)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x1111110f, -0x55555556, 0x66666665, x1, 1428, x2)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddc, -0x55555556, 0x33333332, x1, 1432, x2)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffe, -0x55555556, 0x55555554, x1, 1436, x2)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaac, -0x55555556, 0x2, x1, 1440, x2)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5fae, -0x55555556, 0xb504, x1, 1444, x2)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9f5a6, -0x55555556, -0xb504, x1, 1448, x2)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x11111110, -0x55555556, 0x66666666, x1, 1452, x2)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddd, -0x55555556, 0x33333333, x1, 1456, x2)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaf, -0x55555556, 0x5, x1, 1460, x2)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x55555554, -0x55555556, -0x55555556, x1, 1464, x2)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff, -0x55555556, 0x55555555, x1, 1468, x2)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaad, -0x55555556, 0x3, x1, 1472, x2)
+
+inst_383:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x55560a5a, 0x55555555, 0xb505, x1, 1476, x2)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x5554a052, 0x55555555, -0xb503, x1, 1480, x2)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbc, 0x55555555, 0x66666667, x1, 1484, x2)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x88888889, 0x55555555, 0x33333334, x1, 1488, x2)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x5555555b, 0x55555555, 0x6, x1, 1492, x2)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0x55555555, -0x55555555, x1, 1496, x2)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab, 0x55555555, 0x55555556, x1, 1500, x2)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x55555559, 0x55555555, 0x4, x1, 1504, x2)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x55560a58, 0x55555555, 0xb503, x1, 1508, x2)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x55555555, 0x55555555, 0x0, x1, 1512, x2)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbba, 0x55555555, 0x66666665, x1, 1516, x2)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x88888887, 0x55555555, 0x33333332, x1, 1520, x2)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9, 0x55555555, 0x55555554, x1, 1524, x2)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x55555557, 0x55555555, 0x2, x1, 1528, x2)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x55560a59, 0x55555555, 0xb504, x1, 1532, x2)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x5554a051, 0x55555555, -0xb504, x1, 1536, x2)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbb, 0x55555555, 0x66666666, x1, 1540, x2)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x88888888, 0x55555555, 0x33333333, x1, 1544, x2)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x5555555a, 0x55555555, 0x5, x1, 1548, x2)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff, 0x55555555, -0x55555556, x1, 1552, x2)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaa, 0x55555555, 0x55555555, x1, 1556, x2)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x55555558, 0x55555555, 0x3, x1, 1560, x2)
+
+inst_405:
+// rs1_val==3 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0xb508, 0x3, 0xb505, x1, 1564, x2)
+
+inst_406:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b00, 0x3, -0xb503, x1, 1568, x2)
+
+inst_407:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x6666666a, 0x3, 0x66666667, x1, 1572, x2)
+
+inst_408:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x33333337, 0x3, 0x33333334, x1, 1576, x2)
+
+inst_409:
+// rs1_val==3 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x9, 0x3, 0x6, x1, 1580, x2)
+
+inst_410:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaae, 0x3, -0x55555555, x1, 1584, x2)
+
+inst_411:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x55555559, 0x3, 0x55555556, x1, 1588, x2)
+
+inst_412:
+// rs1_val==3 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x7, 0x3, 0x4, x1, 1592, x2)
+
+inst_413:
+// rs1_val==3 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xb506, 0x3, 0xb503, x1, 1596, x2)
+
+inst_414:
+// rs1_val==3 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x3, 0x3, 0x0, x1, 1600, x2)
+
+inst_415:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x66666668, 0x3, 0x66666665, x1, 1604, x2)
+
+inst_416:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333335, 0x3, 0x33333332, x1, 1608, x2)
+
+inst_417:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x55555557, 0x3, 0x55555554, x1, 1612, x2)
+
+inst_418:
+// rs1_val==3 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x5, 0x3, 0x2, x1, 1616, x2)
+
+inst_419:
+// rs1_val==3 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xb507, 0x3, 0xb504, x1, 1620, x2)
+
+inst_420:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xffff4aff, 0x3, -0xb504, x1, 1624, x2)
+
+inst_421:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x66666669, 0x3, 0x66666666, x1, 1628, x2)
+
+inst_422:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333336, 0x3, 0x33333333, x1, 1632, x2)
+
+inst_423:
+// rs1_val==3 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x3, 0x5, x1, 1636, x2)
+
+inst_424:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaad, 0x3, -0x55555556, x1, 1640, x2)
+
+inst_425:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55555558, 0x3, 0x55555555, x1, 1644, x2)
+
+inst_426:
+// rs1_val==3 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x3, 0x3, x1, 1648, x2)
+
+inst_427:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x66666665, 0x66666665, 0x0, x1, 1652, x2)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0xccccccca, 0x66666665, 0x66666665, x1, 1656, x2)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x99999997, 0x66666665, 0x33333332, x1, 1660, x2)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbb9, 0x66666665, 0x55555554, x1, 1664, x2)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x66666667, 0x66666665, 0x2, x1, 1668, x2)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x66671b69, 0x66666665, 0xb504, x1, 1672, x2)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x6665b161, 0x66666665, -0xb504, x1, 1676, x2)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccb, 0x66666665, 0x66666666, x1, 1680, x2)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x99999998, 0x66666665, 0x33333333, x1, 1684, x2)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x6666666a, 0x66666665, 0x5, x1, 1688, x2)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x1111110f, 0x66666665, -0x55555556, x1, 1692, x2)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbba, 0x66666665, 0x55555555, x1, 1696, x2)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x66666668, 0x66666665, 0x3, x1, 1700, x2)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x3333e837, 0x33333332, 0xb505, x1, 1704, x2)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x33327e2f, 0x33333332, -0xb503, x1, 1708, x2)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x99999999, 0x33333332, 0x66666667, x1, 1712, x2)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x66666666, 0x33333332, 0x33333334, x1, 1716, x2)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x33333338, 0x33333332, 0x6, x1, 1720, x2)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddd, 0x33333332, -0x55555555, x1, 1724, x2)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x88888888, 0x33333332, 0x55555556, x1, 1728, x2)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x33333336, 0x33333332, 0x4, x1, 1732, x2)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x3333e835, 0x33333332, 0xb503, x1, 1736, x2)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x33333332, 0x33333332, 0x0, x1, 1740, x2)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x99999997, 0x33333332, 0x66666665, x1, 1744, x2)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x66666664, 0x33333332, 0x33333332, x1, 1748, x2)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x88888886, 0x33333332, 0x55555554, x1, 1752, x2)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x33333334, 0x33333332, 0x2, x1, 1756, x2)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x3333e836, 0x33333332, 0xb504, x1, 1760, x2)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x33327e2e, 0x33333332, -0xb504, x1, 1764, x2)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x99999998, 0x33333332, 0x66666666, x1, 1768, x2)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x66666665, 0x33333332, 0x33333333, x1, 1772, x2)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x33333337, 0x33333332, 0x5, x1, 1776, x2)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddc, 0x33333332, -0x55555556, x1, 1780, x2)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x88888887, 0x33333332, 0x55555555, x1, 1784, x2)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x33333335, 0x33333332, 0x3, x1, 1788, x2)
+
+inst_462:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x55560a59, 0x55555554, 0xb505, x1, 1792, x2)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x5554a051, 0x55555554, -0xb503, x1, 1796, x2)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbb, 0x55555554, 0x66666667, x1, 1800, x2)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x88888888, 0x55555554, 0x33333334, x1, 1804, x2)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x5555555a, 0x55555554, 0x6, x1, 1808, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff, 0x55555554, -0x55555555, x1, 1812, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaa, 0x55555554, 0x55555556, x1, 1816, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x55555558, 0x55555554, 0x4, x1, 1820, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x55560a57, 0x55555554, 0xb503, x1, 1824, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 1828, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbb9, 0x55555554, 0x66666665, x1, 1832, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x88888886, 0x55555554, 0x33333332, x1, 1836, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa8, 0x55555554, 0x55555554, x1, 1840, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x55555556, 0x55555554, 0x2, x1, 1844, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x55560a58, 0x55555554, 0xb504, x1, 1848, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x5554a050, 0x55555554, -0xb504, x1, 1852, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbba, 0x55555554, 0x66666666, x1, 1856, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x88888887, 0x55555554, 0x33333333, x1, 1860, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x55555559, 0x55555554, 0x5, x1, 1864, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffe, 0x55555554, -0x55555556, x1, 1868, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9, 0x55555554, 0x55555555, x1, 1872, x2)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x55555557, 0x55555554, 0x3, x1, 1876, x2)
+
+inst_484:
+// rs1_val==2 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0xb507, 0x2, 0xb505, x1, 1880, x2)
+
+inst_485:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xffff4aff, 0x2, -0xb503, x1, 1884, x2)
+
+inst_486:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x66666669, 0x2, 0x66666667, x1, 1888, x2)
+
+inst_487:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x33333336, 0x2, 0x33333334, x1, 1892, x2)
+
+inst_488:
+// rs1_val==2 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x2, 0x6, x1, 1896, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaad, 0x2, -0x55555555, x1, 1900, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x55555558, 0x2, 0x55555556, x1, 1904, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x2, 0x4, x1, 1908, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xb505, 0x2, 0xb503, x1, 1912, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x2, 0x2, 0x0, x1, 1916, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x66666667, 0x2, 0x66666665, x1, 1920, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333334, 0x2, 0x33333332, x1, 1924, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x55555556, 0x2, 0x55555554, x1, 1928, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x4, 0x2, 0x2, x1, 1932, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xb506, 0x2, 0xb504, x1, 1936, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xffff4afe, 0x2, -0xb504, x1, 1940, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x66666668, 0x2, 0x66666666, x1, 1944, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333335, 0x2, 0x33333333, x1, 1948, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x7, 0x2, 0x5, x1, 1952, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaac, 0x2, -0x55555556, x1, 1956, x2)
+
+inst_504:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55555557, 0x2, 0x55555555, x1, 1960, x2)
+
+inst_505:
+// rs1_val==2 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x5, 0x2, 0x3, x1, 1964, x2)
+
+inst_506:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x16a09, 0xb504, 0xb505, x1, 1968, x2)
+
+inst_507:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x1, 0xb504, -0xb503, x1, 1972, x2)
+
+inst_508:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6b, 0xb504, 0x66666667, x1, 1976, x2)
+
+inst_509:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333e838, 0xb504, 0x33333334, x1, 1980, x2)
+
+inst_510:
+// rs1_val==46340 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xb50a, 0xb504, 0x6, x1, 1984, x2)
+
+inst_511:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5faf, 0xb504, -0x55555555, x1, 1988, x2)
+
+inst_512:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x55560a5a, 0xb504, 0x55555556, x1, 1992, x2)
+
+inst_513:
+// rs1_val==46340 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xb508, 0xb504, 0x4, x1, 1996, x2)
+
+inst_514:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x16a07, 0xb504, 0xb503, x1, 2000, x2)
+
+inst_515:
+// rs1_val==46340 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xb504, 0xb504, 0x0, x1, 2004, x2)
+
+inst_516:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x66671b69, 0xb504, 0x66666665, x1, 2008, x2)
+
+inst_517:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333e836, 0xb504, 0x33333332, x1, 2012, x2)
+
+inst_518:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x55560a58, 0xb504, 0x55555554, x1, 2016, x2)
+
+inst_519:
+// rs1_val==46340 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xb506, 0xb504, 0x2, x1, 2020, x2)
+
+inst_520:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x16a08, 0xb504, 0xb504, x1, 2024, x2)
+
+inst_521:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0xb504, -0xb504, x1, 2028, x2)
+
+inst_522:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6a, 0xb504, 0x66666666, x1, 2032, x2)
+
+inst_523:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333e837, 0xb504, 0x33333333, x1, 2036, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xb509, 0xb504, 0x5, x1, 2040, x2)
+
+inst_525:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaab5fae, 0xb504, -0x55555556, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_526:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x55560a59, 0xb504, 0x55555555, x1, 0, x2)
+
+inst_527:
+// rs1_val==46340 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xb507, 0xb504, 0x3, x1, 4, x2)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x1, -0xb504, 0xb505, x1, 8, x2)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xfffe95f9, -0xb504, -0xb503, x1, 12, x2)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x6665b163, -0xb504, 0x66666667, x1, 16, x2)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x33327e30, -0xb504, 0x33333334, x1, 20, x2)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b02, -0xb504, 0x6, x1, 24, x2)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9f5a7, -0xb504, -0x55555555, x1, 28, x2)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x5554a052, -0xb504, 0x55555556, x1, 32, x2)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b00, -0xb504, 0x4, x1, 36, x2)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff, -0xb504, 0xb503, x1, 40, x2)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xffff4afc, -0xb504, 0x0, x1, 44, x2)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0x6665b161, -0xb504, 0x66666665, x1, 48, x2)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x33327e2e, -0xb504, 0x33333332, x1, 52, x2)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0x5554a050, -0xb504, 0x55555554, x1, 56, x2)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xffff4afe, -0xb504, 0x2, x1, 60, x2)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x0, -0xb504, 0xb504, x1, 64, x2)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0xfffe95f8, -0xb504, -0xb504, x1, 68, x2)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0x6665b162, -0xb504, 0x66666666, x1, 72, x2)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x33327e2f, -0xb504, 0x33333333, x1, 76, x2)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xffff4b01, -0xb504, 0x5, x1, 80, x2)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaa9f5a6, -0xb504, -0x55555556, x1, 84, x2)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x5554a051, -0xb504, 0x55555555, x1, 88, x2)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xffff4aff, -0xb504, 0x3, x1, 92, x2)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6b, 0x66666666, 0xb505, x1, 96, x2)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x6665b163, 0x66666666, -0xb503, x1, 100, x2)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccd, 0x66666666, 0x66666667, x1, 104, x2)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x9999999a, 0x66666666, 0x33333334, x1, 108, x2)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x6666666c, 0x66666666, 0x6, x1, 112, x2)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0x11111111, 0x66666666, -0x55555555, x1, 116, x2)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbc, 0x66666666, 0x55555556, x1, 120, x2)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x6666666a, 0x66666666, 0x4, x1, 124, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x66671b69, 0x66666666, 0xb503, x1, 128, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x66666666, 0x66666666, 0x0, x1, 132, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccb, 0x66666666, 0x66666665, x1, 136, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(add, x12, x10, x11, 0x99999998, 0x66666666, 0x33333332, x1, 140, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbba, 0x66666666, 0x55555554, x1, 144, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x66666668, 0x66666666, 0x2, x1, 148, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x66671b6a, 0x66666666, 0xb504, x1, 152, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(add, x12, x10, x11, 0x6665b162, 0x66666666, -0xb504, x1, 156, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccc, 0x66666666, 0x66666666, x1, 160, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(add, x12, x10, x11, 0x99999999, 0x66666666, 0x33333333, x1, 164, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x6666666b, 0x66666666, 0x5, x1, 168, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x11111110, 0x66666666, -0x55555556, x1, 172, x2)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbb, 0x66666666, 0x55555555, x1, 176, x2)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x66666669, 0x66666666, 0x3, x1, 180, x2)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(add, x12, x10, x11, 0x3333e838, 0x33333333, 0xb505, x1, 184, x2)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x33327e30, 0x33333333, -0xb503, x1, 188, x2)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(add, x12, x10, x11, 0x9999999a, 0x33333333, 0x66666667, x1, 192, x2)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(add, x12, x10, x11, 0x66666667, 0x33333333, 0x33333334, x1, 196, x2)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x33333339, 0x33333333, 0x6, x1, 200, x2)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(add, x12, x10, x11, 0xddddddde, 0x33333333, -0x55555555, x1, 204, x2)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(add, x12, x10, x11, 0x88888889, 0x33333333, 0x55555556, x1, 208, x2)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x33333337, 0x33333333, 0x4, x1, 212, x2)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(add, x12, x10, x11, 0x3333e836, 0x33333333, 0xb503, x1, 216, x2)
+
+inst_581:
+// rs2_val == -536870913, rs1_val == 32, rs1_val > 0 and rs2_val < 0
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:-0x20000001
+TEST_RR_OP(add, x12, x10, x11, 0xe000001f, 0x20, -0x20000001, x1, 220, x2)
+
+inst_582:
+// rs2_val == -268435457, rs1_val == 4
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x10000001
+TEST_RR_OP(add, x12, x10, x11, 0xf0000003, 0x4, -0x10000001, x1, 224, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x10_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x10_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 57*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/addi-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/addi-01.S
new file mode 100644
index 000000000..839748400
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/addi-01.S
@@ -0,0 +1,2890 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the addi instruction of the RISC-V E extension for the addi covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",addi)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs1 != rd, rs1==x6, rd==x5, imm_val == (-2**(12-1)), rs1_val > 0 and imm_val < 0, rs1_val != imm_val, imm_val == -2048, rs1_val == 536870912
+// opcode: addi ; op1:x6; dest:x5; op1val:0x20000000; immval:-0x800
+TEST_IMM_OP( addi, x5, x6, 0x1ffff800, 0x20000000, -0x800, x4, 0, x8)
+
+inst_1:
+// rs1 == rd, rs1==x10, rd==x10, rs1_val == 2147483647, rs1_val > 0 and imm_val > 0, rs1_val == (2**(xlen-1)-1)
+// opcode: addi ; op1:x10; dest:x10; op1val:0x7fffffff; immval:0x667
+TEST_IMM_OP( addi, x10, x10, 0x80000666, 0x7fffffff, 0x667, x4, 4, x8)
+
+inst_2:
+// rs1==x14, rd==x0, rs1_val == -1073741825, imm_val == 64, rs1_val < 0 and imm_val > 0
+// opcode: addi ; op1:x14; dest:x0; op1val:-0x40000001; immval:0x40
+TEST_IMM_OP( addi, x0, x14, 0, -0x40000001, 0x40, x4, 8, x8)
+
+inst_3:
+// rs1==x2, rd==x11, rs1_val == -536870913,
+// opcode: addi ; op1:x2; dest:x11; op1val:-0x20000001; immval:0x556
+TEST_IMM_OP( addi, x11, x2, 0xe0000555, -0x20000001, 0x556, x4, 12, x8)
+
+inst_4:
+// rs1==x15, rd==x6, rs1_val == -268435457, imm_val == -17, rs1_val < 0 and imm_val < 0
+// opcode: addi ; op1:x15; dest:x6; op1val:-0x10000001; immval:-0x11
+TEST_IMM_OP( addi, x6, x15, 0xefffffee, -0x10000001, -0x11, x4, 16, x8)
+
+inst_5:
+// rs1==x13, rd==x1, rs1_val == -134217729,
+// opcode: addi ; op1:x13; dest:x1; op1val:-0x8000001; immval:-0x4
+TEST_IMM_OP( addi, x1, x13, 0xf7fffffb, -0x8000001, -0x4, x4, 20, x8)
+
+inst_6:
+// rs1==x5, rd==x3, rs1_val == -67108865, imm_val == 0
+// opcode: addi ; op1:x5; dest:x3; op1val:-0x4000001; immval:0x0
+TEST_IMM_OP( addi, x3, x5, 0xfbffffff, -0x4000001, 0x0, x4, 24, x8)
+
+inst_7:
+// rs1==x0, rd==x15, rs1_val == -33554433,
+// opcode: addi ; op1:x0; dest:x15; op1val:0x0; immval:0x0
+TEST_IMM_OP( addi, x15, x0, 0x0, 0x0, 0x0, x4, 28, x8)
+
+inst_8:
+// rs1==x12, rd==x7, rs1_val == -16777217, imm_val == 4
+// opcode: addi ; op1:x12; dest:x7; op1val:-0x1000001; immval:0x4
+TEST_IMM_OP( addi, x7, x12, 0xff000003, -0x1000001, 0x4, x4, 32, x8)
+RVTEST_SIGBASE( x5,signature_x5_0)
+
+inst_9:
+// rs1==x1, rd==x8, rs1_val == -8388609,
+// opcode: addi ; op1:x1; dest:x8; op1val:-0x800001; immval:0x40
+TEST_IMM_OP( addi, x8, x1, 0xff80003f, -0x800001, 0x40, x5, 0, x6)
+
+inst_10:
+// rs1==x11, rd==x4, rs1_val == -4194305, imm_val == -5
+// opcode: addi ; op1:x11; dest:x4; op1val:-0x400001; immval:-0x5
+TEST_IMM_OP( addi, x4, x11, 0xffbffffa, -0x400001, -0x5, x5, 4, x6)
+
+inst_11:
+// rs1==x7, rd==x13, rs1_val == -2097153, imm_val == 1365
+// opcode: addi ; op1:x7; dest:x13; op1val:-0x200001; immval:0x555
+TEST_IMM_OP( addi, x13, x7, 0xffe00554, -0x200001, 0x555, x5, 8, x6)
+
+inst_12:
+// rs1==x3, rd==x14, rs1_val == -1048577,
+// opcode: addi ; op1:x3; dest:x14; op1val:-0x100001; immval:-0x11
+TEST_IMM_OP( addi, x14, x3, 0xffefffee, -0x100001, -0x11, x5, 12, x6)
+
+inst_13:
+// rs1==x4, rd==x2, rs1_val == -524289,
+// opcode: addi ; op1:x4; dest:x2; op1val:-0x80001; immval:-0xa
+TEST_IMM_OP( addi, x2, x4, 0xfff7fff5, -0x80001, -0xa, x5, 16, x6)
+
+inst_14:
+// rs1==x8, rd==x9, rs1_val == -262145, imm_val == -513
+// opcode: addi ; op1:x8; dest:x9; op1val:-0x40001; immval:-0x201
+TEST_IMM_OP( addi, x9, x8, 0xfffbfdfe, -0x40001, -0x201, x5, 20, x6)
+
+inst_15:
+// rs1==x9, rd==x12, rs1_val == -131073,
+// opcode: addi ; op1:x9; dest:x12; op1val:-0x20001; immval:0x3
+TEST_IMM_OP( addi, x12, x9, 0xfffe0002, -0x20001, 0x3, x5, 24, x6)
+
+inst_16:
+// rs1_val == -65537,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x10001; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xffff0004, -0x10001, 0x5, x5, 28, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_17:
+// rs1_val == -32769,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x8001; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xffff8005, -0x8001, 0x6, x1, 0, x2)
+
+inst_18:
+// rs1_val == -16385,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x4001; immval:-0x8
+TEST_IMM_OP( addi, x11, x10, 0xffffbff7, -0x4001, -0x8, x1, 4, x2)
+
+inst_19:
+// rs1_val == -8193,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x2001; immval:-0x6
+TEST_IMM_OP( addi, x11, x10, 0xffffdff9, -0x2001, -0x6, x1, 8, x2)
+
+inst_20:
+// rs1_val == -4097, imm_val == -33
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x1001; immval:-0x21
+TEST_IMM_OP( addi, x11, x10, 0xffffefde, -0x1001, -0x21, x1, 12, x2)
+
+inst_21:
+// rs1_val == -2049, imm_val == 512
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x801; immval:0x200
+TEST_IMM_OP( addi, x11, x10, 0xfffff9ff, -0x801, 0x200, x1, 16, x2)
+
+inst_22:
+// rs1_val == -1025,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x401; immval:-0x6
+TEST_IMM_OP( addi, x11, x10, 0xfffffbf9, -0x401, -0x6, x1, 20, x2)
+
+inst_23:
+// rs1_val == -513,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x201; immval:-0x21
+TEST_IMM_OP( addi, x11, x10, 0xfffffdde, -0x201, -0x21, x1, 24, x2)
+
+inst_24:
+// rs1_val == -257, imm_val == 2
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x101; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xffffff01, -0x101, 0x2, x1, 28, x2)
+
+inst_25:
+// rs1_val == -129,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x81; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffffffac, -0x81, 0x2d, x1, 32, x2)
+
+inst_26:
+// rs1_val == -65,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x41; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffffffeb, -0x41, 0x2c, x1, 36, x2)
+
+inst_27:
+// rs1_val == -33,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x21; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xffffffe1, -0x21, 0x2, x1, 40, x2)
+
+inst_28:
+// rs1_val == -17,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x11; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xfffffff5, -0x11, 0x6, x1, 44, x2)
+
+inst_29:
+// rs1_val == -9,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x9; immval:-0x5
+TEST_IMM_OP( addi, x11, x10, 0xfffffff2, -0x9, -0x5, x1, 48, x2)
+
+inst_30:
+// rs1_val == -5,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x5; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x27, -0x5, 0x2c, x1, 52, x2)
+
+inst_31:
+// rs1_val == -3,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x3; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffffffd1, -0x3, -0x2c, x1, 56, x2)
+
+inst_32:
+// rs1_val == -2,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x2; immval:-0xa
+TEST_IMM_OP( addi, x11, x10, 0xfffffff4, -0x2, -0xa, x1, 60, x2)
+
+inst_33:
+// imm_val == 2047, imm_val == (2**(12-1)-1)
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x7ff
+TEST_IMM_OP( addi, x11, x10, 0xbd02, 0xb503, 0x7ff, x1, 64, x2)
+
+inst_34:
+// imm_val == -1025, rs1_val == 1024
+// opcode: addi ; op1:x10; dest:x11; op1val:0x400; immval:-0x401
+TEST_IMM_OP( addi, x11, x10, 0xffffffff, 0x400, -0x401, x1, 68, x2)
+
+inst_35:
+// imm_val == -257,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x1001; immval:-0x101
+TEST_IMM_OP( addi, x11, x10, 0xffffeefe, -0x1001, -0x101, x1, 72, x2)
+
+inst_36:
+// imm_val == -129, rs1_val == 134217728
+// opcode: addi ; op1:x10; dest:x11; op1val:0x8000000; immval:-0x81
+TEST_IMM_OP( addi, x11, x10, 0x7ffff7f, 0x8000000, -0x81, x1, 76, x2)
+
+inst_37:
+// imm_val == -65, rs1_val == 4
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:-0x41
+TEST_IMM_OP( addi, x11, x10, 0xffffffc3, 0x4, -0x41, x1, 80, x2)
+
+inst_38:
+// imm_val == -9,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x41; immval:-0x9
+TEST_IMM_OP( addi, x11, x10, 0xffffffb6, -0x41, -0x9, x1, 84, x2)
+
+inst_39:
+// imm_val == -3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:-0x3
+TEST_IMM_OP( addi, x11, x10, 0x3, 0x6, -0x3, x1, 88, x2)
+
+inst_40:
+// imm_val == -2,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x5; immval:-0x2
+TEST_IMM_OP( addi, x11, x10, 0xfffffff9, -0x5, -0x2, x1, 92, x2)
+
+inst_41:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x80000000; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x80000556, -0x80000000, 0x556, x1, 96, x2)
+
+inst_42:
+// rs1_val == 1073741824,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x40000000; immval:-0x400
+TEST_IMM_OP( addi, x11, x10, 0x3ffffc00, 0x40000000, -0x400, x1, 100, x2)
+
+inst_43:
+// rs1_val == 268435456,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x10000000; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x10000000, 0x10000000, 0x0, x1, 104, x2)
+
+inst_44:
+// rs1_val == 67108864,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4000000; immval:-0xa
+TEST_IMM_OP( addi, x11, x10, 0x3fffff6, 0x4000000, -0xa, x1, 108, x2)
+
+inst_45:
+// rs1_val == 33554432,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2000000; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x200002e, 0x2000000, 0x2e, x1, 112, x2)
+
+inst_46:
+// rs1_val == 16777216,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x1000000; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x1000667, 0x1000000, 0x667, x1, 116, x2)
+
+inst_47:
+// rs1_val == 8388608,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x800000; immval:-0x41
+TEST_IMM_OP( addi, x11, x10, 0x7fffbf, 0x800000, -0x41, x1, 120, x2)
+
+inst_48:
+// rs1_val == 4194304,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x400000; immval:-0x101
+TEST_IMM_OP( addi, x11, x10, 0x3ffeff, 0x400000, -0x101, x1, 124, x2)
+
+inst_49:
+// rs1_val == 2097152,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x200000; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x200555, 0x200000, 0x555, x1, 128, x2)
+
+inst_50:
+// rs1_val == 1048576,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x100000; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x100000, 0x100000, 0x0, x1, 132, x2)
+
+inst_51:
+// rs1_val == 524288,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x80000; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x80005, 0x80000, 0x5, x1, 136, x2)
+
+inst_52:
+// rs1_val == 262144,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x40000; immval:0x3ff
+TEST_IMM_OP( addi, x11, x10, 0x403ff, 0x40000, 0x3ff, x1, 140, x2)
+
+inst_53:
+// rs1_val == 131072,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x20000; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x20000, 0x20000, 0x0, x1, 144, x2)
+
+inst_54:
+// rs1_val == 65536,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x10000; immval:0x200
+TEST_IMM_OP( addi, x11, x10, 0x10200, 0x10000, 0x200, x1, 148, x2)
+
+inst_55:
+// rs1_val == 32768,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x8000; immval:-0x7
+TEST_IMM_OP( addi, x11, x10, 0x7ff9, 0x8000, -0x7, x1, 152, x2)
+
+inst_56:
+// rs1_val == 16384,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4000; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x4333, 0x4000, 0x333, x1, 156, x2)
+
+inst_57:
+// rs1_val == 8192,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2000; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x2555, 0x2000, 0x555, x1, 160, x2)
+
+inst_58:
+// rs1_val == 4096, imm_val == -1366
+// opcode: addi ; op1:x10; dest:x11; op1val:0x1000; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xaaa, 0x1000, -0x556, x1, 164, x2)
+
+inst_59:
+// rs1_val == 2048,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x800; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0xe65, 0x800, 0x665, x1, 168, x2)
+
+inst_60:
+// rs1_val == 512,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x200; immval:-0x41
+TEST_IMM_OP( addi, x11, x10, 0x1bf, 0x200, -0x41, x1, 172, x2)
+
+inst_61:
+// rs1_val == 256,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x100; immval:0x3ff
+TEST_IMM_OP( addi, x11, x10, 0x4ff, 0x100, 0x3ff, x1, 176, x2)
+
+inst_62:
+// rs1_val == 128,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x80; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x6e6, 0x80, 0x666, x1, 180, x2)
+
+inst_63:
+// rs1_val == 64,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x40; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x373, 0x40, 0x333, x1, 184, x2)
+
+inst_64:
+// rs1_val == 32,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x20; immval:0x7ff
+TEST_IMM_OP( addi, x11, x10, 0x81f, 0x20, 0x7ff, x1, 188, x2)
+
+inst_65:
+// rs1_val == 16,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x10; immval:0x200
+TEST_IMM_OP( addi, x11, x10, 0x210, 0x10, 0x200, x1, 192, x2)
+
+inst_66:
+// rs1_val == 8,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x8; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x8, 0x8, 0x0, x1, 196, x2)
+
+inst_67:
+// rs1_val == 2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:-0x3
+TEST_IMM_OP( addi, x11, x10, 0xffffffff, 0x2, -0x3, x1, 200, x2)
+
+inst_68:
+// rs1_val == 1, imm_val == 256
+// opcode: addi ; op1:x10; dest:x11; op1val:0x1; immval:0x100
+TEST_IMM_OP( addi, x11, x10, 0x101, 0x1, 0x100, x1, 204, x2)
+
+inst_69:
+// imm_val == 1024,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x41; immval:0x400
+TEST_IMM_OP( addi, x11, x10, 0x3bf, -0x41, 0x400, x1, 208, x2)
+
+inst_70:
+// imm_val == 128, rs1_val == 0
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x80
+TEST_IMM_OP( addi, x11, x10, 0x80, 0x0, 0x80, x1, 212, x2)
+
+inst_71:
+// imm_val == 32,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x20
+TEST_IMM_OP( addi, x11, x10, 0x20, 0x0, 0x20, x1, 216, x2)
+
+inst_72:
+// imm_val == 16,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x8000; immval:0x10
+TEST_IMM_OP( addi, x11, x10, 0x8010, 0x8000, 0x10, x1, 220, x2)
+
+inst_73:
+// imm_val == 8,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x8; immval:0x8
+TEST_IMM_OP( addi, x11, x10, 0x0, -0x8, 0x8, x1, 224, x2)
+
+inst_74:
+// imm_val == 1, rs1_val == 1431655765
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x1
+TEST_IMM_OP( addi, x11, x10, 0x55555556, 0x55555555, 0x1, x1, 228, x2)
+
+inst_75:
+// rs1_val==46341 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0xb533, 0xb505, 0x2e, x1, 232, x2)
+
+inst_76:
+// rs1_val==46341 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xb4d9, 0xb505, -0x2c, x1, 236, x2)
+
+inst_77:
+// rs1_val==46341 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0xbb6c, 0xb505, 0x667, x1, 240, x2)
+
+inst_78:
+// rs1_val==46341 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0xb839, 0xb505, 0x334, x1, 244, x2)
+
+inst_79:
+// rs1_val==46341 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xb50b, 0xb505, 0x6, x1, 248, x2)
+
+inst_80:
+// rs1_val==46341 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xafb0, 0xb505, -0x555, x1, 252, x2)
+
+inst_81:
+// rs1_val==46341 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0xba5b, 0xb505, 0x556, x1, 256, x2)
+
+inst_82:
+// rs1_val==46341 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0xb509, 0xb505, 0x4, x1, 260, x2)
+
+inst_83:
+// rs1_val==46341 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0xb531, 0xb505, 0x2c, x1, 264, x2)
+
+inst_84:
+// rs1_val==46341 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0xb505, 0xb505, 0x0, x1, 268, x2)
+
+inst_85:
+// rs1_val==46341 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0xbb6a, 0xb505, 0x665, x1, 272, x2)
+
+inst_86:
+// rs1_val==46341 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0xb837, 0xb505, 0x332, x1, 276, x2)
+
+inst_87:
+// rs1_val==46341 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0xba59, 0xb505, 0x554, x1, 280, x2)
+
+inst_88:
+// rs1_val==46341 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xb507, 0xb505, 0x2, x1, 284, x2)
+
+inst_89:
+// rs1_val==46341 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0xb532, 0xb505, 0x2d, x1, 288, x2)
+
+inst_90:
+// rs1_val==46341 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xb4d8, 0xb505, -0x2d, x1, 292, x2)
+
+inst_91:
+// rs1_val==46341 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0xbb6b, 0xb505, 0x666, x1, 296, x2)
+
+inst_92:
+// rs1_val==46341 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0xb838, 0xb505, 0x333, x1, 300, x2)
+
+inst_93:
+// rs1_val==46341 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xb50a, 0xb505, 0x5, x1, 304, x2)
+
+inst_94:
+// rs1_val==46341 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xafaf, 0xb505, -0x556, x1, 308, x2)
+
+inst_95:
+// rs1_val==46341 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0xba5a, 0xb505, 0x555, x1, 312, x2)
+
+inst_96:
+// rs1_val==46341 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb505; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0xb508, 0xb505, 0x3, x1, 316, x2)
+
+inst_97:
+// rs1_val==-46339 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0xffff4b2b, -0xb503, 0x2e, x1, 320, x2)
+
+inst_98:
+// rs1_val==-46339 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffff4ad1, -0xb503, -0x2c, x1, 324, x2)
+
+inst_99:
+// rs1_val==-46339 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0xffff5164, -0xb503, 0x667, x1, 328, x2)
+
+inst_100:
+// rs1_val==-46339 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0xffff4e31, -0xb503, 0x334, x1, 332, x2)
+
+inst_101:
+// rs1_val==-46339 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xffff4b03, -0xb503, 0x6, x1, 336, x2)
+
+inst_102:
+// rs1_val==-46339 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xffff45a8, -0xb503, -0x555, x1, 340, x2)
+
+inst_103:
+// rs1_val==-46339 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0xffff5053, -0xb503, 0x556, x1, 344, x2)
+
+inst_104:
+// rs1_val==-46339 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0xffff4b01, -0xb503, 0x4, x1, 348, x2)
+
+inst_105:
+// rs1_val==-46339 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffff4b29, -0xb503, 0x2c, x1, 352, x2)
+
+inst_106:
+// rs1_val==-46339 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0xffff4afd, -0xb503, 0x0, x1, 356, x2)
+
+inst_107:
+// rs1_val==-46339 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0xffff5162, -0xb503, 0x665, x1, 360, x2)
+
+inst_108:
+// rs1_val==-46339 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0xffff4e2f, -0xb503, 0x332, x1, 364, x2)
+
+inst_109:
+// rs1_val==-46339 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0xffff5051, -0xb503, 0x554, x1, 368, x2)
+
+inst_110:
+// rs1_val==-46339 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xffff4aff, -0xb503, 0x2, x1, 372, x2)
+
+inst_111:
+// rs1_val==-46339 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffff4b2a, -0xb503, 0x2d, x1, 376, x2)
+
+inst_112:
+// rs1_val==-46339 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffff4ad0, -0xb503, -0x2d, x1, 380, x2)
+
+inst_113:
+// rs1_val==-46339 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0xffff5163, -0xb503, 0x666, x1, 384, x2)
+
+inst_114:
+// rs1_val==-46339 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0xffff4e30, -0xb503, 0x333, x1, 388, x2)
+
+inst_115:
+// rs1_val==-46339 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xffff4b02, -0xb503, 0x5, x1, 392, x2)
+
+inst_116:
+// rs1_val==-46339 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xffff45a7, -0xb503, -0x556, x1, 396, x2)
+
+inst_117:
+// rs1_val==-46339 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0xffff5052, -0xb503, 0x555, x1, 400, x2)
+
+inst_118:
+// rs1_val==-46339 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0xffff4b00, -0xb503, 0x3, x1, 404, x2)
+
+inst_119:
+// rs1_val==1717986919 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x66666695, 0x66666667, 0x2e, x1, 408, x2)
+
+inst_120:
+// rs1_val==1717986919 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x6666663b, 0x66666667, -0x2c, x1, 412, x2)
+
+inst_121:
+// rs1_val==1717986919 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x66666cce, 0x66666667, 0x667, x1, 416, x2)
+
+inst_122:
+// rs1_val==1717986919 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x6666699b, 0x66666667, 0x334, x1, 420, x2)
+
+inst_123:
+// rs1_val==1717986919 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x6666666d, 0x66666667, 0x6, x1, 424, x2)
+
+inst_124:
+// rs1_val==1717986919 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x66666112, 0x66666667, -0x555, x1, 428, x2)
+
+inst_125:
+// rs1_val==1717986919 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x66666bbd, 0x66666667, 0x556, x1, 432, x2)
+
+inst_126:
+// rs1_val==1717986919 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x6666666b, 0x66666667, 0x4, x1, 436, x2)
+
+inst_127:
+// rs1_val==1717986919 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x66666693, 0x66666667, 0x2c, x1, 440, x2)
+
+inst_128:
+// rs1_val==1717986919 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x66666667, 0x66666667, 0x0, x1, 444, x2)
+
+inst_129:
+// rs1_val==1717986919 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x66666ccc, 0x66666667, 0x665, x1, 448, x2)
+
+inst_130:
+// rs1_val==1717986919 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x66666999, 0x66666667, 0x332, x1, 452, x2)
+
+inst_131:
+// rs1_val==1717986919 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x66666bbb, 0x66666667, 0x554, x1, 456, x2)
+
+inst_132:
+// rs1_val==1717986919 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x66666669, 0x66666667, 0x2, x1, 460, x2)
+
+inst_133:
+// rs1_val==1717986919 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x66666694, 0x66666667, 0x2d, x1, 464, x2)
+
+inst_134:
+// rs1_val==1717986919 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x6666663a, 0x66666667, -0x2d, x1, 468, x2)
+
+inst_135:
+// rs1_val==1717986919 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x66666ccd, 0x66666667, 0x666, x1, 472, x2)
+
+inst_136:
+// rs1_val==1717986919 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x6666699a, 0x66666667, 0x333, x1, 476, x2)
+
+inst_137:
+// rs1_val==1717986919 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x6666666c, 0x66666667, 0x5, x1, 480, x2)
+
+inst_138:
+// rs1_val==1717986919 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x66666111, 0x66666667, -0x556, x1, 484, x2)
+
+inst_139:
+// rs1_val==1717986919 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x66666bbc, 0x66666667, 0x555, x1, 488, x2)
+
+inst_140:
+// rs1_val==1717986919 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x6666666a, 0x66666667, 0x3, x1, 492, x2)
+
+inst_141:
+// rs1_val==858993460 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x33333362, 0x33333334, 0x2e, x1, 496, x2)
+
+inst_142:
+// rs1_val==858993460 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x33333308, 0x33333334, -0x2c, x1, 500, x2)
+
+inst_143:
+// rs1_val==858993460 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x3333399b, 0x33333334, 0x667, x1, 504, x2)
+
+inst_144:
+// rs1_val==858993460 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x33333668, 0x33333334, 0x334, x1, 508, x2)
+
+inst_145:
+// rs1_val==858993460 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x3333333a, 0x33333334, 0x6, x1, 512, x2)
+
+inst_146:
+// rs1_val==858993460 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x33332ddf, 0x33333334, -0x555, x1, 516, x2)
+
+inst_147:
+// rs1_val==858993460 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x3333388a, 0x33333334, 0x556, x1, 520, x2)
+
+inst_148:
+// rs1_val==858993460 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x33333338, 0x33333334, 0x4, x1, 524, x2)
+
+inst_149:
+// rs1_val==858993460 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x33333360, 0x33333334, 0x2c, x1, 528, x2)
+
+inst_150:
+// rs1_val==858993460 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x33333334, 0x33333334, 0x0, x1, 532, x2)
+
+inst_151:
+// rs1_val==858993460 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x33333999, 0x33333334, 0x665, x1, 536, x2)
+
+inst_152:
+// rs1_val==858993460 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x33333666, 0x33333334, 0x332, x1, 540, x2)
+
+inst_153:
+// rs1_val==858993460 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x33333888, 0x33333334, 0x554, x1, 544, x2)
+
+inst_154:
+// rs1_val==858993460 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x33333336, 0x33333334, 0x2, x1, 548, x2)
+
+inst_155:
+// rs1_val==858993460 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x33333361, 0x33333334, 0x2d, x1, 552, x2)
+
+inst_156:
+// rs1_val==858993460 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x33333307, 0x33333334, -0x2d, x1, 556, x2)
+
+inst_157:
+// rs1_val==858993460 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x3333399a, 0x33333334, 0x666, x1, 560, x2)
+
+inst_158:
+// rs1_val==858993460 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x33333667, 0x33333334, 0x333, x1, 564, x2)
+
+inst_159:
+// rs1_val==858993460 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x33333339, 0x33333334, 0x5, x1, 568, x2)
+
+inst_160:
+// rs1_val==858993460 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x33332dde, 0x33333334, -0x556, x1, 572, x2)
+
+inst_161:
+// rs1_val==858993460 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x33333889, 0x33333334, 0x555, x1, 576, x2)
+
+inst_162:
+// rs1_val==858993460 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x33333337, 0x33333334, 0x3, x1, 580, x2)
+
+inst_163:
+// rs1_val==6 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x34, 0x6, 0x2e, x1, 584, x2)
+
+inst_164:
+// rs1_val==6 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffffffda, 0x6, -0x2c, x1, 588, x2)
+
+inst_165:
+// rs1_val==6 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x66d, 0x6, 0x667, x1, 592, x2)
+
+inst_166:
+// rs1_val==6 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x33a, 0x6, 0x334, x1, 596, x2)
+
+inst_167:
+// rs1_val==6 and imm_val==6, rs1_val == imm_val
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xc, 0x6, 0x6, x1, 600, x2)
+
+inst_168:
+// rs1_val==6 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xfffffab1, 0x6, -0x555, x1, 604, x2)
+
+inst_169:
+// rs1_val==6 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x55c, 0x6, 0x556, x1, 608, x2)
+
+inst_170:
+// rs1_val==6 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0xa, 0x6, 0x4, x1, 612, x2)
+
+inst_171:
+// rs1_val==6 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x32, 0x6, 0x2c, x1, 616, x2)
+
+inst_172:
+// rs1_val==6 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x6, 0x6, 0x0, x1, 620, x2)
+
+inst_173:
+// rs1_val==6 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x66b, 0x6, 0x665, x1, 624, x2)
+
+inst_174:
+// rs1_val==6 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x338, 0x6, 0x332, x1, 628, x2)
+
+inst_175:
+// rs1_val==6 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x55a, 0x6, 0x554, x1, 632, x2)
+
+inst_176:
+// rs1_val==6 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x8, 0x6, 0x2, x1, 636, x2)
+
+inst_177:
+// rs1_val==6 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x33, 0x6, 0x2d, x1, 640, x2)
+
+inst_178:
+// rs1_val==6 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffffffd9, 0x6, -0x2d, x1, 644, x2)
+
+inst_179:
+// rs1_val==6 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x66c, 0x6, 0x666, x1, 648, x2)
+
+inst_180:
+// rs1_val==6 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x339, 0x6, 0x333, x1, 652, x2)
+
+inst_181:
+// rs1_val==6 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xb, 0x6, 0x5, x1, 656, x2)
+
+inst_182:
+// rs1_val==6 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xfffffab0, 0x6, -0x556, x1, 660, x2)
+
+inst_183:
+// rs1_val==6 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x55b, 0x6, 0x555, x1, 664, x2)
+
+inst_184:
+// rs1_val==6 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x6; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x9, 0x6, 0x3, x1, 668, x2)
+
+inst_185:
+// rs1_val==-1431655765 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaad9, -0x55555555, 0x2e, x1, 672, x2)
+
+inst_186:
+// rs1_val==-1431655765 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaa7f, -0x55555555, -0x2c, x1, 676, x2)
+
+inst_187:
+// rs1_val==-1431655765 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0xaaaab112, -0x55555555, 0x667, x1, 680, x2)
+
+inst_188:
+// rs1_val==-1431655765 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaddf, -0x55555555, 0x334, x1, 684, x2)
+
+inst_189:
+// rs1_val==-1431655765 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaab1, -0x55555555, 0x6, x1, 688, x2)
+
+inst_190:
+// rs1_val==-1431655765 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xaaaaa556, -0x55555555, -0x555, x1, 692, x2)
+
+inst_191:
+// rs1_val==-1431655765 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0xaaaab001, -0x55555555, 0x556, x1, 696, x2)
+
+inst_192:
+// rs1_val==-1431655765 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaaf, -0x55555555, 0x4, x1, 700, x2)
+
+inst_193:
+// rs1_val==-1431655765 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaad7, -0x55555555, 0x2c, x1, 704, x2)
+
+inst_194:
+// rs1_val==-1431655765 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaab, -0x55555555, 0x0, x1, 708, x2)
+
+inst_195:
+// rs1_val==-1431655765 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0xaaaab110, -0x55555555, 0x665, x1, 712, x2)
+
+inst_196:
+// rs1_val==-1431655765 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaddd, -0x55555555, 0x332, x1, 716, x2)
+
+inst_197:
+// rs1_val==-1431655765 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0xaaaaafff, -0x55555555, 0x554, x1, 720, x2)
+
+inst_198:
+// rs1_val==-1431655765 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaad, -0x55555555, 0x2, x1, 724, x2)
+
+inst_199:
+// rs1_val==-1431655765 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaad8, -0x55555555, 0x2d, x1, 728, x2)
+
+inst_200:
+// rs1_val==-1431655765 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaa7e, -0x55555555, -0x2d, x1, 732, x2)
+
+inst_201:
+// rs1_val==-1431655765 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0xaaaab111, -0x55555555, 0x666, x1, 736, x2)
+
+inst_202:
+// rs1_val==-1431655765 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0xaaaaadde, -0x55555555, 0x333, x1, 740, x2)
+
+inst_203:
+// rs1_val==-1431655765 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaab0, -0x55555555, 0x5, x1, 744, x2)
+
+inst_204:
+// rs1_val==-1431655765 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xaaaaa555, -0x55555555, -0x556, x1, 748, x2)
+
+inst_205:
+// rs1_val==-1431655765 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0xaaaab000, -0x55555555, 0x555, x1, 752, x2)
+
+inst_206:
+// rs1_val==-1431655765 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaae, -0x55555555, 0x3, x1, 756, x2)
+
+inst_207:
+// rs1_val==1431655766 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x55555584, 0x55555556, 0x2e, x1, 760, x2)
+
+inst_208:
+// rs1_val==1431655766 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x5555552a, 0x55555556, -0x2c, x1, 764, x2)
+
+inst_209:
+// rs1_val==1431655766 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x55555bbd, 0x55555556, 0x667, x1, 768, x2)
+
+inst_210:
+// rs1_val==1431655766 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x5555588a, 0x55555556, 0x334, x1, 772, x2)
+
+inst_211:
+// rs1_val==1431655766 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x5555555c, 0x55555556, 0x6, x1, 776, x2)
+
+inst_212:
+// rs1_val==1431655766 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x55555001, 0x55555556, -0x555, x1, 780, x2)
+
+inst_213:
+// rs1_val==1431655766 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x55555aac, 0x55555556, 0x556, x1, 784, x2)
+
+inst_214:
+// rs1_val==1431655766 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x5555555a, 0x55555556, 0x4, x1, 788, x2)
+
+inst_215:
+// rs1_val==1431655766 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x55555582, 0x55555556, 0x2c, x1, 792, x2)
+
+inst_216:
+// rs1_val==1431655766 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x55555556, 0x55555556, 0x0, x1, 796, x2)
+
+inst_217:
+// rs1_val==1431655766 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x55555bbb, 0x55555556, 0x665, x1, 800, x2)
+
+inst_218:
+// rs1_val==1431655766 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x55555888, 0x55555556, 0x332, x1, 804, x2)
+
+inst_219:
+// rs1_val==1431655766 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x55555aaa, 0x55555556, 0x554, x1, 808, x2)
+
+inst_220:
+// rs1_val==1431655766 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x55555558, 0x55555556, 0x2, x1, 812, x2)
+
+inst_221:
+// rs1_val==1431655766 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x55555583, 0x55555556, 0x2d, x1, 816, x2)
+
+inst_222:
+// rs1_val==1431655766 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x55555529, 0x55555556, -0x2d, x1, 820, x2)
+
+inst_223:
+// rs1_val==1431655766 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x55555bbc, 0x55555556, 0x666, x1, 824, x2)
+
+inst_224:
+// rs1_val==1431655766 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x55555889, 0x55555556, 0x333, x1, 828, x2)
+
+inst_225:
+// rs1_val==1431655766 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x5555555b, 0x55555556, 0x5, x1, 832, x2)
+
+inst_226:
+// rs1_val==1431655766 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x55555000, 0x55555556, -0x556, x1, 836, x2)
+
+inst_227:
+// rs1_val==1431655766 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x55555aab, 0x55555556, 0x555, x1, 840, x2)
+
+inst_228:
+// rs1_val==1431655766 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x55555559, 0x55555556, 0x3, x1, 844, x2)
+
+inst_229:
+// rs1_val==4 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x32, 0x4, 0x2e, x1, 848, x2)
+
+inst_230:
+// rs1_val==4 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffffffd8, 0x4, -0x2c, x1, 852, x2)
+
+inst_231:
+// rs1_val==4 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x66b, 0x4, 0x667, x1, 856, x2)
+
+inst_232:
+// rs1_val==4 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x338, 0x4, 0x334, x1, 860, x2)
+
+inst_233:
+// rs1_val==4 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xa, 0x4, 0x6, x1, 864, x2)
+
+inst_234:
+// rs1_val==4 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xfffffaaf, 0x4, -0x555, x1, 868, x2)
+
+inst_235:
+// rs1_val==4 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x55a, 0x4, 0x556, x1, 872, x2)
+
+inst_236:
+// rs1_val==4 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x8, 0x4, 0x4, x1, 876, x2)
+
+inst_237:
+// rs1_val==4 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x30, 0x4, 0x2c, x1, 880, x2)
+
+inst_238:
+// rs1_val==4 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x4, 0x4, 0x0, x1, 884, x2)
+
+inst_239:
+// rs1_val==4 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x669, 0x4, 0x665, x1, 888, x2)
+
+inst_240:
+// rs1_val==4 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x336, 0x4, 0x332, x1, 892, x2)
+
+inst_241:
+// rs1_val==4 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x558, 0x4, 0x554, x1, 896, x2)
+
+inst_242:
+// rs1_val==4 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x6, 0x4, 0x2, x1, 900, x2)
+
+inst_243:
+// rs1_val==4 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x31, 0x4, 0x2d, x1, 904, x2)
+
+inst_244:
+// rs1_val==4 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffffffd7, 0x4, -0x2d, x1, 908, x2)
+
+inst_245:
+// rs1_val==4 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x66a, 0x4, 0x666, x1, 912, x2)
+
+inst_246:
+// rs1_val==4 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x337, 0x4, 0x333, x1, 916, x2)
+
+inst_247:
+// rs1_val==4 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x9, 0x4, 0x5, x1, 920, x2)
+
+inst_248:
+// rs1_val==4 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xfffffaae, 0x4, -0x556, x1, 924, x2)
+
+inst_249:
+// rs1_val==4 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x559, 0x4, 0x555, x1, 928, x2)
+
+inst_250:
+// rs1_val==4 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x4; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x7, 0x4, 0x3, x1, 932, x2)
+
+inst_251:
+// rs1_val==46339 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0xb531, 0xb503, 0x2e, x1, 936, x2)
+
+inst_252:
+// rs1_val==46339 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xb4d7, 0xb503, -0x2c, x1, 940, x2)
+
+inst_253:
+// rs1_val==46339 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0xbb6a, 0xb503, 0x667, x1, 944, x2)
+
+inst_254:
+// rs1_val==46339 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0xb837, 0xb503, 0x334, x1, 948, x2)
+
+inst_255:
+// rs1_val==46339 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xb509, 0xb503, 0x6, x1, 952, x2)
+
+inst_256:
+// rs1_val==46339 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xafae, 0xb503, -0x555, x1, 956, x2)
+
+inst_257:
+// rs1_val==46339 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0xba59, 0xb503, 0x556, x1, 960, x2)
+
+inst_258:
+// rs1_val==46339 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0xb507, 0xb503, 0x4, x1, 964, x2)
+
+inst_259:
+// rs1_val==46339 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0xb52f, 0xb503, 0x2c, x1, 968, x2)
+
+inst_260:
+// rs1_val==46339 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0xb503, 0xb503, 0x0, x1, 972, x2)
+
+inst_261:
+// rs1_val==46339 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0xbb68, 0xb503, 0x665, x1, 976, x2)
+
+inst_262:
+// rs1_val==46339 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0xb835, 0xb503, 0x332, x1, 980, x2)
+
+inst_263:
+// rs1_val==46339 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0xba57, 0xb503, 0x554, x1, 984, x2)
+
+inst_264:
+// rs1_val==46339 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xb505, 0xb503, 0x2, x1, 988, x2)
+
+inst_265:
+// rs1_val==46339 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0xb530, 0xb503, 0x2d, x1, 992, x2)
+
+inst_266:
+// rs1_val==46339 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xb4d6, 0xb503, -0x2d, x1, 996, x2)
+
+inst_267:
+// rs1_val==46339 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0xbb69, 0xb503, 0x666, x1, 1000, x2)
+
+inst_268:
+// rs1_val==46339 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0xb836, 0xb503, 0x333, x1, 1004, x2)
+
+inst_269:
+// rs1_val==46339 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xb508, 0xb503, 0x5, x1, 1008, x2)
+
+inst_270:
+// rs1_val==46339 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xafad, 0xb503, -0x556, x1, 1012, x2)
+
+inst_271:
+// rs1_val==46339 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0xba58, 0xb503, 0x555, x1, 1016, x2)
+
+inst_272:
+// rs1_val==46339 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb503; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0xb506, 0xb503, 0x3, x1, 1020, x2)
+
+inst_273:
+// rs1_val==0 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x2e, 0x0, 0x2e, x1, 1024, x2)
+
+inst_274:
+// rs1_val==0 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffffffd4, 0x0, -0x2c, x1, 1028, x2)
+
+inst_275:
+// rs1_val==0 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x667, 0x0, 0x667, x1, 1032, x2)
+
+inst_276:
+// rs1_val==0 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x334, 0x0, 0x334, x1, 1036, x2)
+
+inst_277:
+// rs1_val==0 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x6, 0x0, 0x6, x1, 1040, x2)
+
+inst_278:
+// rs1_val==0 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xfffffaab, 0x0, -0x555, x1, 1044, x2)
+
+inst_279:
+// rs1_val==0 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x556, 0x0, 0x556, x1, 1048, x2)
+
+inst_280:
+// rs1_val==0 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x4, 0x0, 0x4, x1, 1052, x2)
+
+inst_281:
+// rs1_val==0 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x2c, 0x0, 0x2c, x1, 1056, x2)
+
+inst_282:
+// rs1_val==0 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x0, 0x0, 0x0, x1, 1060, x2)
+
+inst_283:
+// rs1_val==0 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x665, 0x0, 0x665, x1, 1064, x2)
+
+inst_284:
+// rs1_val==0 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x332, 0x0, 0x332, x1, 1068, x2)
+
+inst_285:
+// rs1_val==0 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x554, 0x0, 0x554, x1, 1072, x2)
+
+inst_286:
+// rs1_val==0 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x2, 0x0, 0x2, x1, 1076, x2)
+
+inst_287:
+// rs1_val==0 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x2d, 0x0, 0x2d, x1, 1080, x2)
+
+inst_288:
+// rs1_val==0 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffffffd3, 0x0, -0x2d, x1, 1084, x2)
+
+inst_289:
+// rs1_val==0 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x666, 0x0, 0x666, x1, 1088, x2)
+
+inst_290:
+// rs1_val==0 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x333, 0x0, 0x333, x1, 1092, x2)
+
+inst_291:
+// rs1_val==0 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x5, 0x0, 0x5, x1, 1096, x2)
+
+inst_292:
+// rs1_val==0 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xfffffaaa, 0x0, -0x556, x1, 1100, x2)
+
+inst_293:
+// rs1_val==0 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x555, 0x0, 0x555, x1, 1104, x2)
+
+inst_294:
+// rs1_val==0 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x0; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x3, 0x0, 0x3, x1, 1108, x2)
+
+inst_295:
+// rs1_val==1717986917 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x66666693, 0x66666665, 0x2e, x1, 1112, x2)
+
+inst_296:
+// rs1_val==1717986917 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x66666639, 0x66666665, -0x2c, x1, 1116, x2)
+
+inst_297:
+// rs1_val==1717986917 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x66666ccc, 0x66666665, 0x667, x1, 1120, x2)
+
+inst_298:
+// rs1_val==1717986917 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x66666999, 0x66666665, 0x334, x1, 1124, x2)
+
+inst_299:
+// rs1_val==1717986917 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x6666666b, 0x66666665, 0x6, x1, 1128, x2)
+
+inst_300:
+// rs1_val==1717986917 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x66666110, 0x66666665, -0x555, x1, 1132, x2)
+
+inst_301:
+// rs1_val==1717986917 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x66666bbb, 0x66666665, 0x556, x1, 1136, x2)
+
+inst_302:
+// rs1_val==1717986917 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x66666669, 0x66666665, 0x4, x1, 1140, x2)
+
+inst_303:
+// rs1_val==1717986917 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x66666691, 0x66666665, 0x2c, x1, 1144, x2)
+
+inst_304:
+// rs1_val==1717986917 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x66666665, 0x66666665, 0x0, x1, 1148, x2)
+
+inst_305:
+// rs1_val==-1431655766 and imm_val==-1365, rs1_val == -1431655766
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xaaaaa555, -0x55555556, -0x555, x1, 1152, x2)
+
+inst_306:
+// rs1_val==-1431655766 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0xaaaab000, -0x55555556, 0x556, x1, 1156, x2)
+
+inst_307:
+// rs1_val==-1431655766 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaae, -0x55555556, 0x4, x1, 1160, x2)
+
+inst_308:
+// rs1_val==-1431655766 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaad6, -0x55555556, 0x2c, x1, 1164, x2)
+
+inst_309:
+// rs1_val==-1431655766 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1168, x2)
+
+inst_310:
+// rs1_val==-1431655766 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0xaaaab10f, -0x55555556, 0x665, x1, 1172, x2)
+
+inst_311:
+// rs1_val==-1431655766 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaddc, -0x55555556, 0x332, x1, 1176, x2)
+
+inst_312:
+// rs1_val==-1431655766 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaffe, -0x55555556, 0x554, x1, 1180, x2)
+
+inst_313:
+// rs1_val==-1431655766 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaac, -0x55555556, 0x2, x1, 1184, x2)
+
+inst_314:
+// rs1_val==-1431655766 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaad7, -0x55555556, 0x2d, x1, 1188, x2)
+
+inst_315:
+// rs1_val==-1431655766 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaa7d, -0x55555556, -0x2d, x1, 1192, x2)
+
+inst_316:
+// rs1_val==-1431655766 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0xaaaab110, -0x55555556, 0x666, x1, 1196, x2)
+
+inst_317:
+// rs1_val==-1431655766 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaddd, -0x55555556, 0x333, x1, 1200, x2)
+
+inst_318:
+// rs1_val==-1431655766 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaaf, -0x55555556, 0x5, x1, 1204, x2)
+
+inst_319:
+// rs1_val==-1431655766 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xaaaaa554, -0x55555556, -0x556, x1, 1208, x2)
+
+inst_320:
+// rs1_val==-1431655766 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0xaaaaafff, -0x55555556, 0x555, x1, 1212, x2)
+
+inst_321:
+// rs1_val==-1431655766 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaaad, -0x55555556, 0x3, x1, 1216, x2)
+
+inst_322:
+// rs1_val==1431655765 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x55555583, 0x55555555, 0x2e, x1, 1220, x2)
+
+inst_323:
+// rs1_val==1431655765 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x55555529, 0x55555555, -0x2c, x1, 1224, x2)
+
+inst_324:
+// rs1_val==1431655765 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x55555bbc, 0x55555555, 0x667, x1, 1228, x2)
+
+inst_325:
+// rs1_val==1431655765 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x55555889, 0x55555555, 0x334, x1, 1232, x2)
+
+inst_326:
+// rs1_val==1431655765 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x5555555b, 0x55555555, 0x6, x1, 1236, x2)
+
+inst_327:
+// rs1_val==1431655765 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x55555000, 0x55555555, -0x555, x1, 1240, x2)
+
+inst_328:
+// rs1_val==1431655765 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x55555aab, 0x55555555, 0x556, x1, 1244, x2)
+
+inst_329:
+// rs1_val==1431655765 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x55555559, 0x55555555, 0x4, x1, 1248, x2)
+
+inst_330:
+// rs1_val==1431655765 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x55555581, 0x55555555, 0x2c, x1, 1252, x2)
+
+inst_331:
+// rs1_val==1431655765 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x55555555, 0x55555555, 0x0, x1, 1256, x2)
+
+inst_332:
+// rs1_val==1431655765 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x55555bba, 0x55555555, 0x665, x1, 1260, x2)
+
+inst_333:
+// rs1_val==1431655765 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x55555887, 0x55555555, 0x332, x1, 1264, x2)
+
+inst_334:
+// rs1_val==1431655765 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x55555aa9, 0x55555555, 0x554, x1, 1268, x2)
+
+inst_335:
+// rs1_val==1431655765 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x55555557, 0x55555555, 0x2, x1, 1272, x2)
+
+inst_336:
+// rs1_val==1431655765 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x55555582, 0x55555555, 0x2d, x1, 1276, x2)
+
+inst_337:
+// rs1_val==1431655765 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x55555528, 0x55555555, -0x2d, x1, 1280, x2)
+
+inst_338:
+// rs1_val==1431655765 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x55555bbb, 0x55555555, 0x666, x1, 1284, x2)
+
+inst_339:
+// rs1_val==1431655765 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x55555888, 0x55555555, 0x333, x1, 1288, x2)
+
+inst_340:
+// rs1_val==1431655765 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x5555555a, 0x55555555, 0x5, x1, 1292, x2)
+
+inst_341:
+// rs1_val==1431655765 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x55554fff, 0x55555555, -0x556, x1, 1296, x2)
+
+inst_342:
+// rs1_val==1431655765 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x55555aaa, 0x55555555, 0x555, x1, 1300, x2)
+
+inst_343:
+// rs1_val==1431655765 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x55555558, 0x55555555, 0x3, x1, 1304, x2)
+
+inst_344:
+// rs1_val==3 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x31, 0x3, 0x2e, x1, 1308, x2)
+
+inst_345:
+// rs1_val==3 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffffffd7, 0x3, -0x2c, x1, 1312, x2)
+
+inst_346:
+// rs1_val==3 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x66a, 0x3, 0x667, x1, 1316, x2)
+
+inst_347:
+// rs1_val==3 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x337, 0x3, 0x334, x1, 1320, x2)
+
+inst_348:
+// rs1_val==3 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x9, 0x3, 0x6, x1, 1324, x2)
+
+inst_349:
+// rs1_val==3 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xfffffaae, 0x3, -0x555, x1, 1328, x2)
+
+inst_350:
+// rs1_val==3 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x559, 0x3, 0x556, x1, 1332, x2)
+
+inst_351:
+// rs1_val==3 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x7, 0x3, 0x4, x1, 1336, x2)
+
+inst_352:
+// rs1_val==3 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x2f, 0x3, 0x2c, x1, 1340, x2)
+
+inst_353:
+// rs1_val==3 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x3, 0x3, 0x0, x1, 1344, x2)
+
+inst_354:
+// rs1_val==3 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x668, 0x3, 0x665, x1, 1348, x2)
+
+inst_355:
+// rs1_val==3 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x335, 0x3, 0x332, x1, 1352, x2)
+
+inst_356:
+// rs1_val==3 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x557, 0x3, 0x554, x1, 1356, x2)
+
+inst_357:
+// rs1_val==3 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x5, 0x3, 0x2, x1, 1360, x2)
+
+inst_358:
+// rs1_val==3 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x30, 0x3, 0x2d, x1, 1364, x2)
+
+inst_359:
+// rs1_val==3 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffffffd6, 0x3, -0x2d, x1, 1368, x2)
+
+inst_360:
+// rs1_val==3 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x669, 0x3, 0x666, x1, 1372, x2)
+
+inst_361:
+// rs1_val==3 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x336, 0x3, 0x333, x1, 1376, x2)
+
+inst_362:
+// rs1_val==3 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x8, 0x3, 0x5, x1, 1380, x2)
+
+inst_363:
+// rs1_val==3 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xfffffaad, 0x3, -0x556, x1, 1384, x2)
+
+inst_364:
+// rs1_val==3 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x558, 0x3, 0x555, x1, 1388, x2)
+
+inst_365:
+// rs1_val==3 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x3; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x6, 0x3, 0x3, x1, 1392, x2)
+
+inst_366:
+// rs1_val==1717986917 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x66666cca, 0x66666665, 0x665, x1, 1396, x2)
+
+inst_367:
+// rs1_val==1717986917 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x66666997, 0x66666665, 0x332, x1, 1400, x2)
+
+inst_368:
+// rs1_val==1717986917 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x66666bb9, 0x66666665, 0x554, x1, 1404, x2)
+
+inst_369:
+// rs1_val==1717986917 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x66666667, 0x66666665, 0x2, x1, 1408, x2)
+
+inst_370:
+// rs1_val==1717986917 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x66666692, 0x66666665, 0x2d, x1, 1412, x2)
+
+inst_371:
+// rs1_val==1717986917 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x66666638, 0x66666665, -0x2d, x1, 1416, x2)
+
+inst_372:
+// rs1_val==1717986917 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x66666ccb, 0x66666665, 0x666, x1, 1420, x2)
+
+inst_373:
+// rs1_val==1717986917 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x66666998, 0x66666665, 0x333, x1, 1424, x2)
+
+inst_374:
+// rs1_val==1717986917 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x6666666a, 0x66666665, 0x5, x1, 1428, x2)
+
+inst_375:
+// rs1_val==1717986917 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x6666610f, 0x66666665, -0x556, x1, 1432, x2)
+
+inst_376:
+// rs1_val==1717986917 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x66666bba, 0x66666665, 0x555, x1, 1436, x2)
+
+inst_377:
+// rs1_val==1717986917 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x66666668, 0x66666665, 0x3, x1, 1440, x2)
+
+inst_378:
+// rs1_val==858993458 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x33333360, 0x33333332, 0x2e, x1, 1444, x2)
+
+inst_379:
+// rs1_val==858993458 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x33333306, 0x33333332, -0x2c, x1, 1448, x2)
+
+inst_380:
+// rs1_val==858993458 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x33333999, 0x33333332, 0x667, x1, 1452, x2)
+
+inst_381:
+// rs1_val==858993458 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x33333666, 0x33333332, 0x334, x1, 1456, x2)
+
+inst_382:
+// rs1_val==858993458 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x33333338, 0x33333332, 0x6, x1, 1460, x2)
+
+inst_383:
+// rs1_val==858993458 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x33332ddd, 0x33333332, -0x555, x1, 1464, x2)
+
+inst_384:
+// rs1_val==858993458 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x33333888, 0x33333332, 0x556, x1, 1468, x2)
+
+inst_385:
+// rs1_val==858993458 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x33333336, 0x33333332, 0x4, x1, 1472, x2)
+
+inst_386:
+// rs1_val==858993458 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x3333335e, 0x33333332, 0x2c, x1, 1476, x2)
+
+inst_387:
+// rs1_val==858993458 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x33333332, 0x33333332, 0x0, x1, 1480, x2)
+
+inst_388:
+// rs1_val==858993458 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x33333997, 0x33333332, 0x665, x1, 1484, x2)
+
+inst_389:
+// rs1_val==858993458 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x33333664, 0x33333332, 0x332, x1, 1488, x2)
+
+inst_390:
+// rs1_val==858993458 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x33333886, 0x33333332, 0x554, x1, 1492, x2)
+
+inst_391:
+// rs1_val==858993458 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x33333334, 0x33333332, 0x2, x1, 1496, x2)
+
+inst_392:
+// rs1_val==858993458 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x3333335f, 0x33333332, 0x2d, x1, 1500, x2)
+
+inst_393:
+// rs1_val==858993458 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x33333305, 0x33333332, -0x2d, x1, 1504, x2)
+
+inst_394:
+// rs1_val==858993458 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x33333998, 0x33333332, 0x666, x1, 1508, x2)
+
+inst_395:
+// rs1_val==858993458 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x33333665, 0x33333332, 0x333, x1, 1512, x2)
+
+inst_396:
+// rs1_val==858993458 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x33333337, 0x33333332, 0x5, x1, 1516, x2)
+
+inst_397:
+// rs1_val==858993458 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x33332ddc, 0x33333332, -0x556, x1, 1520, x2)
+
+inst_398:
+// rs1_val==858993458 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x33333887, 0x33333332, 0x555, x1, 1524, x2)
+
+inst_399:
+// rs1_val==858993458 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x33333335, 0x33333332, 0x3, x1, 1528, x2)
+
+inst_400:
+// rs1_val==1431655764 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x55555582, 0x55555554, 0x2e, x1, 1532, x2)
+
+inst_401:
+// rs1_val==1431655764 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x55555528, 0x55555554, -0x2c, x1, 1536, x2)
+
+inst_402:
+// rs1_val==1431655764 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x55555bbb, 0x55555554, 0x667, x1, 1540, x2)
+
+inst_403:
+// rs1_val==1431655764 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x55555888, 0x55555554, 0x334, x1, 1544, x2)
+
+inst_404:
+// rs1_val==1431655764 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x5555555a, 0x55555554, 0x6, x1, 1548, x2)
+
+inst_405:
+// rs1_val==1431655764 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x55554fff, 0x55555554, -0x555, x1, 1552, x2)
+
+inst_406:
+// rs1_val==1431655764 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x55555aaa, 0x55555554, 0x556, x1, 1556, x2)
+
+inst_407:
+// rs1_val==1431655764 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x55555558, 0x55555554, 0x4, x1, 1560, x2)
+
+inst_408:
+// rs1_val==1431655764 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x55555580, 0x55555554, 0x2c, x1, 1564, x2)
+
+inst_409:
+// rs1_val==1431655764 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x55555554, 0x55555554, 0x0, x1, 1568, x2)
+
+inst_410:
+// rs1_val==1431655764 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x55555bb9, 0x55555554, 0x665, x1, 1572, x2)
+
+inst_411:
+// rs1_val==1431655764 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x55555886, 0x55555554, 0x332, x1, 1576, x2)
+
+inst_412:
+// rs1_val==1431655764 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x55555aa8, 0x55555554, 0x554, x1, 1580, x2)
+
+inst_413:
+// rs1_val==1431655764 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x55555556, 0x55555554, 0x2, x1, 1584, x2)
+
+inst_414:
+// rs1_val==1431655764 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x55555581, 0x55555554, 0x2d, x1, 1588, x2)
+
+inst_415:
+// rs1_val==1431655764 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x55555527, 0x55555554, -0x2d, x1, 1592, x2)
+
+inst_416:
+// rs1_val==1431655764 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x55555bba, 0x55555554, 0x666, x1, 1596, x2)
+
+inst_417:
+// rs1_val==1431655764 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x55555887, 0x55555554, 0x333, x1, 1600, x2)
+
+inst_418:
+// rs1_val==1431655764 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x55555559, 0x55555554, 0x5, x1, 1604, x2)
+
+inst_419:
+// rs1_val==1431655764 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x55554ffe, 0x55555554, -0x556, x1, 1608, x2)
+
+inst_420:
+// rs1_val==1431655764 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x55555aa9, 0x55555554, 0x555, x1, 1612, x2)
+
+inst_421:
+// rs1_val==1431655764 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x55555557, 0x55555554, 0x3, x1, 1616, x2)
+
+inst_422:
+// rs1_val==2 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x30, 0x2, 0x2e, x1, 1620, x2)
+
+inst_423:
+// rs1_val==2 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffffffd6, 0x2, -0x2c, x1, 1624, x2)
+
+inst_424:
+// rs1_val==2 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x669, 0x2, 0x667, x1, 1628, x2)
+
+inst_425:
+// rs1_val==2 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x336, 0x2, 0x334, x1, 1632, x2)
+
+inst_426:
+// rs1_val==2 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x8, 0x2, 0x6, x1, 1636, x2)
+
+inst_427:
+// rs1_val==2 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xfffffaad, 0x2, -0x555, x1, 1640, x2)
+
+inst_428:
+// rs1_val==2 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x558, 0x2, 0x556, x1, 1644, x2)
+
+inst_429:
+// rs1_val==2 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x6, 0x2, 0x4, x1, 1648, x2)
+
+inst_430:
+// rs1_val==2 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x2e, 0x2, 0x2c, x1, 1652, x2)
+
+inst_431:
+// rs1_val==2 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x2, 0x2, 0x0, x1, 1656, x2)
+
+inst_432:
+// rs1_val==2 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x667, 0x2, 0x665, x1, 1660, x2)
+
+inst_433:
+// rs1_val==2 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x334, 0x2, 0x332, x1, 1664, x2)
+
+inst_434:
+// rs1_val==2 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x556, 0x2, 0x554, x1, 1668, x2)
+
+inst_435:
+// rs1_val==2 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x4, 0x2, 0x2, x1, 1672, x2)
+
+inst_436:
+// rs1_val==2 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x2f, 0x2, 0x2d, x1, 1676, x2)
+
+inst_437:
+// rs1_val==2 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffffffd5, 0x2, -0x2d, x1, 1680, x2)
+
+inst_438:
+// rs1_val==2 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x668, 0x2, 0x666, x1, 1684, x2)
+
+inst_439:
+// rs1_val==2 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x335, 0x2, 0x333, x1, 1688, x2)
+
+inst_440:
+// rs1_val==2 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x7, 0x2, 0x5, x1, 1692, x2)
+
+inst_441:
+// rs1_val==2 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xfffffaac, 0x2, -0x556, x1, 1696, x2)
+
+inst_442:
+// rs1_val==2 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x557, 0x2, 0x555, x1, 1700, x2)
+
+inst_443:
+// rs1_val==2 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x2; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x5, 0x2, 0x3, x1, 1704, x2)
+
+inst_444:
+// rs1_val==46340 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0xb532, 0xb504, 0x2e, x1, 1708, x2)
+
+inst_445:
+// rs1_val==46340 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xb4d8, 0xb504, -0x2c, x1, 1712, x2)
+
+inst_446:
+// rs1_val==46340 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0xbb6b, 0xb504, 0x667, x1, 1716, x2)
+
+inst_447:
+// rs1_val==46340 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0xb838, 0xb504, 0x334, x1, 1720, x2)
+
+inst_448:
+// rs1_val==46340 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xb50a, 0xb504, 0x6, x1, 1724, x2)
+
+inst_449:
+// rs1_val==46340 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xafaf, 0xb504, -0x555, x1, 1728, x2)
+
+inst_450:
+// rs1_val==46340 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0xba5a, 0xb504, 0x556, x1, 1732, x2)
+
+inst_451:
+// rs1_val==46340 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0xb508, 0xb504, 0x4, x1, 1736, x2)
+
+inst_452:
+// rs1_val==46340 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0xb530, 0xb504, 0x2c, x1, 1740, x2)
+
+inst_453:
+// rs1_val==46340 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0xb504, 0xb504, 0x0, x1, 1744, x2)
+
+inst_454:
+// rs1_val==46340 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0xbb69, 0xb504, 0x665, x1, 1748, x2)
+
+inst_455:
+// rs1_val==46340 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0xb836, 0xb504, 0x332, x1, 1752, x2)
+
+inst_456:
+// rs1_val==46340 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0xba58, 0xb504, 0x554, x1, 1756, x2)
+
+inst_457:
+// rs1_val==46340 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xb506, 0xb504, 0x2, x1, 1760, x2)
+
+inst_458:
+// rs1_val==46340 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0xb531, 0xb504, 0x2d, x1, 1764, x2)
+
+inst_459:
+// rs1_val==46340 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xb4d7, 0xb504, -0x2d, x1, 1768, x2)
+
+inst_460:
+// rs1_val==46340 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0xbb6a, 0xb504, 0x666, x1, 1772, x2)
+
+inst_461:
+// rs1_val==46340 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0xb837, 0xb504, 0x333, x1, 1776, x2)
+
+inst_462:
+// rs1_val==46340 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xb509, 0xb504, 0x5, x1, 1780, x2)
+
+inst_463:
+// rs1_val==46340 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xafae, 0xb504, -0x556, x1, 1784, x2)
+
+inst_464:
+// rs1_val==46340 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0xba59, 0xb504, 0x555, x1, 1788, x2)
+
+inst_465:
+// rs1_val==46340 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0xb504; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0xb507, 0xb504, 0x3, x1, 1792, x2)
+
+inst_466:
+// rs1_val==-46340 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0xffff4b2a, -0xb504, 0x2e, x1, 1796, x2)
+
+inst_467:
+// rs1_val==-46340 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffff4ad0, -0xb504, -0x2c, x1, 1800, x2)
+
+inst_468:
+// rs1_val==-46340 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0xffff5163, -0xb504, 0x667, x1, 1804, x2)
+
+inst_469:
+// rs1_val==-46340 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0xffff4e30, -0xb504, 0x334, x1, 1808, x2)
+
+inst_470:
+// rs1_val==-46340 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xffff4b02, -0xb504, 0x6, x1, 1812, x2)
+
+inst_471:
+// rs1_val==-46340 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xffff45a7, -0xb504, -0x555, x1, 1816, x2)
+
+inst_472:
+// rs1_val==-46340 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0xffff5052, -0xb504, 0x556, x1, 1820, x2)
+
+inst_473:
+// rs1_val==-46340 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0xffff4b00, -0xb504, 0x4, x1, 1824, x2)
+
+inst_474:
+// rs1_val==-46340 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffff4b28, -0xb504, 0x2c, x1, 1828, x2)
+
+inst_475:
+// rs1_val==-46340 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0xffff4afc, -0xb504, 0x0, x1, 1832, x2)
+
+inst_476:
+// rs1_val==-46340 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0xffff5161, -0xb504, 0x665, x1, 1836, x2)
+
+inst_477:
+// rs1_val==-46340 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0xffff4e2e, -0xb504, 0x332, x1, 1840, x2)
+
+inst_478:
+// rs1_val==-46340 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0xffff5050, -0xb504, 0x554, x1, 1844, x2)
+
+inst_479:
+// rs1_val==-46340 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0xffff4afe, -0xb504, 0x2, x1, 1848, x2)
+
+inst_480:
+// rs1_val==-46340 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffff4b29, -0xb504, 0x2d, x1, 1852, x2)
+
+inst_481:
+// rs1_val==-46340 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffff4acf, -0xb504, -0x2d, x1, 1856, x2)
+
+inst_482:
+// rs1_val==-46340 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0xffff5162, -0xb504, 0x666, x1, 1860, x2)
+
+inst_483:
+// rs1_val==-46340 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0xffff4e2f, -0xb504, 0x333, x1, 1864, x2)
+
+inst_484:
+// rs1_val==-46340 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xffff4b01, -0xb504, 0x5, x1, 1868, x2)
+
+inst_485:
+// rs1_val==-46340 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xffff45a6, -0xb504, -0x556, x1, 1872, x2)
+
+inst_486:
+// rs1_val==-46340 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0xffff5051, -0xb504, 0x555, x1, 1876, x2)
+
+inst_487:
+// rs1_val==-46340 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0xffff4aff, -0xb504, 0x3, x1, 1880, x2)
+
+inst_488:
+// rs1_val==1717986918 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x66666694, 0x66666666, 0x2e, x1, 1884, x2)
+
+inst_489:
+// rs1_val==1717986918 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x6666663a, 0x66666666, -0x2c, x1, 1888, x2)
+
+inst_490:
+// rs1_val==1717986918 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x66666ccd, 0x66666666, 0x667, x1, 1892, x2)
+
+inst_491:
+// rs1_val==1717986918 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x6666699a, 0x66666666, 0x334, x1, 1896, x2)
+
+inst_492:
+// rs1_val==1717986918 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x6666666c, 0x66666666, 0x6, x1, 1900, x2)
+
+inst_493:
+// rs1_val==1717986918 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x66666111, 0x66666666, -0x555, x1, 1904, x2)
+
+inst_494:
+// rs1_val==1717986918 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x66666bbc, 0x66666666, 0x556, x1, 1908, x2)
+
+inst_495:
+// rs1_val==1717986918 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x6666666a, 0x66666666, 0x4, x1, 1912, x2)
+
+inst_496:
+// rs1_val==1717986918 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x66666692, 0x66666666, 0x2c, x1, 1916, x2)
+
+inst_497:
+// rs1_val==1717986918 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x66666666, 0x66666666, 0x0, x1, 1920, x2)
+
+inst_498:
+// rs1_val==1717986918 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x66666ccb, 0x66666666, 0x665, x1, 1924, x2)
+
+inst_499:
+// rs1_val==1717986918 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x66666998, 0x66666666, 0x332, x1, 1928, x2)
+
+inst_500:
+// rs1_val==1717986918 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x66666bba, 0x66666666, 0x554, x1, 1932, x2)
+
+inst_501:
+// rs1_val==1717986918 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x66666668, 0x66666666, 0x2, x1, 1936, x2)
+
+inst_502:
+// rs1_val==1717986918 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x66666693, 0x66666666, 0x2d, x1, 1940, x2)
+
+inst_503:
+// rs1_val==1717986918 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x66666639, 0x66666666, -0x2d, x1, 1944, x2)
+
+inst_504:
+// rs1_val==1717986918 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x66666ccc, 0x66666666, 0x666, x1, 1948, x2)
+
+inst_505:
+// rs1_val==1717986918 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x66666999, 0x66666666, 0x333, x1, 1952, x2)
+
+inst_506:
+// rs1_val==1717986918 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x6666666b, 0x66666666, 0x5, x1, 1956, x2)
+
+inst_507:
+// rs1_val==1717986918 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x66666110, 0x66666666, -0x556, x1, 1960, x2)
+
+inst_508:
+// rs1_val==1717986918 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x66666bbb, 0x66666666, 0x555, x1, 1964, x2)
+
+inst_509:
+// rs1_val==1717986918 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x66666669, 0x66666666, 0x3, x1, 1968, x2)
+
+inst_510:
+// rs1_val==858993459 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x33333361, 0x33333333, 0x2e, x1, 1972, x2)
+
+inst_511:
+// rs1_val==858993459 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0x33333307, 0x33333333, -0x2c, x1, 1976, x2)
+
+inst_512:
+// rs1_val==858993459 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x3333399a, 0x33333333, 0x667, x1, 1980, x2)
+
+inst_513:
+// rs1_val==858993459 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x33333667, 0x33333333, 0x334, x1, 1984, x2)
+
+inst_514:
+// rs1_val==858993459 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0x33333339, 0x33333333, 0x6, x1, 1988, x2)
+
+inst_515:
+// rs1_val==858993459 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0x33332dde, 0x33333333, -0x555, x1, 1992, x2)
+
+inst_516:
+// rs1_val==858993459 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x33333889, 0x33333333, 0x556, x1, 1996, x2)
+
+inst_517:
+// rs1_val==858993459 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x33333337, 0x33333333, 0x4, x1, 2000, x2)
+
+inst_518:
+// rs1_val==858993459 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x3333335f, 0x33333333, 0x2c, x1, 2004, x2)
+
+inst_519:
+// rs1_val==858993459 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x33333333, 0x33333333, 0x0, x1, 2008, x2)
+
+inst_520:
+// rs1_val==858993459 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x33333998, 0x33333333, 0x665, x1, 2012, x2)
+
+inst_521:
+// rs1_val==858993459 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x33333665, 0x33333333, 0x332, x1, 2016, x2)
+
+inst_522:
+// rs1_val==858993459 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x33333887, 0x33333333, 0x554, x1, 2020, x2)
+
+inst_523:
+// rs1_val==858993459 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x33333335, 0x33333333, 0x2, x1, 2024, x2)
+
+inst_524:
+// rs1_val==858993459 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x33333360, 0x33333333, 0x2d, x1, 2028, x2)
+
+inst_525:
+// rs1_val==858993459 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0x33333306, 0x33333333, -0x2d, x1, 2032, x2)
+
+inst_526:
+// rs1_val==858993459 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x33333999, 0x33333333, 0x666, x1, 2036, x2)
+
+inst_527:
+// rs1_val==858993459 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x33333666, 0x33333333, 0x333, x1, 2040, x2)
+
+inst_528:
+// rs1_val==858993459 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0x33333338, 0x33333333, 0x5, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_529:
+// rs1_val==858993459 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0x33332ddd, 0x33333333, -0x556, x1, 0, x2)
+
+inst_530:
+// rs1_val==858993459 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x33333888, 0x33333333, 0x555, x1, 4, x2)
+
+inst_531:
+// rs1_val==858993459 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x33333336, 0x33333333, 0x3, x1, 8, x2)
+
+inst_532:
+// rs1_val==5 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0x33, 0x5, 0x2e, x1, 12, x2)
+
+inst_533:
+// rs1_val==5 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xffffffd9, 0x5, -0x2c, x1, 16, x2)
+
+inst_534:
+// rs1_val==5 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0x66c, 0x5, 0x667, x1, 20, x2)
+
+inst_535:
+// rs1_val==5 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0x339, 0x5, 0x334, x1, 24, x2)
+
+inst_536:
+// rs1_val==5 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xb, 0x5, 0x6, x1, 28, x2)
+
+inst_537:
+// rs1_val==5 and imm_val==-1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:-0x555
+TEST_IMM_OP( addi, x11, x10, 0xfffffab0, 0x5, -0x555, x1, 32, x2)
+
+inst_538:
+// rs1_val==5 and imm_val==1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x556
+TEST_IMM_OP( addi, x11, x10, 0x55b, 0x5, 0x556, x1, 36, x2)
+
+inst_539:
+// rs1_val==5 and imm_val==4,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x4
+TEST_IMM_OP( addi, x11, x10, 0x9, 0x5, 0x4, x1, 40, x2)
+
+inst_540:
+// rs1_val==5 and imm_val==44,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x2c
+TEST_IMM_OP( addi, x11, x10, 0x31, 0x5, 0x2c, x1, 44, x2)
+
+inst_541:
+// rs1_val==5 and imm_val==0,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0x5, 0x5, 0x0, x1, 48, x2)
+
+inst_542:
+// rs1_val==5 and imm_val==1637,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x665
+TEST_IMM_OP( addi, x11, x10, 0x66a, 0x5, 0x665, x1, 52, x2)
+
+inst_543:
+// rs1_val==5 and imm_val==818,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x332
+TEST_IMM_OP( addi, x11, x10, 0x337, 0x5, 0x332, x1, 56, x2)
+
+inst_544:
+// rs1_val==5 and imm_val==1364,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x554
+TEST_IMM_OP( addi, x11, x10, 0x559, 0x5, 0x554, x1, 60, x2)
+
+inst_545:
+// rs1_val==5 and imm_val==2,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x2
+TEST_IMM_OP( addi, x11, x10, 0x7, 0x5, 0x2, x1, 64, x2)
+
+inst_546:
+// rs1_val==5 and imm_val==45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x2d
+TEST_IMM_OP( addi, x11, x10, 0x32, 0x5, 0x2d, x1, 68, x2)
+
+inst_547:
+// rs1_val==5 and imm_val==-45,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:-0x2d
+TEST_IMM_OP( addi, x11, x10, 0xffffffd8, 0x5, -0x2d, x1, 72, x2)
+
+inst_548:
+// rs1_val==5 and imm_val==1638,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x666
+TEST_IMM_OP( addi, x11, x10, 0x66b, 0x5, 0x666, x1, 76, x2)
+
+inst_549:
+// rs1_val==5 and imm_val==819,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x333
+TEST_IMM_OP( addi, x11, x10, 0x338, 0x5, 0x333, x1, 80, x2)
+
+inst_550:
+// rs1_val==5 and imm_val==5,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x5
+TEST_IMM_OP( addi, x11, x10, 0xa, 0x5, 0x5, x1, 84, x2)
+
+inst_551:
+// rs1_val==5 and imm_val==-1366,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:-0x556
+TEST_IMM_OP( addi, x11, x10, 0xfffffaaf, 0x5, -0x556, x1, 88, x2)
+
+inst_552:
+// rs1_val==5 and imm_val==1365,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x555
+TEST_IMM_OP( addi, x11, x10, 0x55a, 0x5, 0x555, x1, 92, x2)
+
+inst_553:
+// rs1_val==5 and imm_val==3,
+// opcode: addi ; op1:x10; dest:x11; op1val:0x5; immval:0x3
+TEST_IMM_OP( addi, x11, x10, 0x8, 0x5, 0x3, x1, 96, x2)
+
+inst_554:
+// rs1_val==-1431655766 and imm_val==46,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2e
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaad8, -0x55555556, 0x2e, x1, 100, x2)
+
+inst_555:
+// rs1_val==-1431655766 and imm_val==-44,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2c
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaa7e, -0x55555556, -0x2c, x1, 104, x2)
+
+inst_556:
+// rs1_val==-1431655766 and imm_val==1639,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x667
+TEST_IMM_OP( addi, x11, x10, 0xaaaab111, -0x55555556, 0x667, x1, 108, x2)
+
+inst_557:
+// rs1_val==-1431655766 and imm_val==820,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x334
+TEST_IMM_OP( addi, x11, x10, 0xaaaaadde, -0x55555556, 0x334, x1, 112, x2)
+
+inst_558:
+// rs1_val==-1431655766 and imm_val==6,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x6
+TEST_IMM_OP( addi, x11, x10, 0xaaaaaab0, -0x55555556, 0x6, x1, 116, x2)
+
+inst_559:
+// rs1_val == -1073741825, imm_val == 64, rs1_val < 0 and imm_val > 0
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x40000001; immval:0x40
+TEST_IMM_OP( addi, x11, x10, 0xc000003f, -0x40000001, 0x40, x1, 120, x2)
+
+inst_560:
+// rs1_val == -33554433,
+// opcode: addi ; op1:x10; dest:x11; op1val:-0x2000001; immval:0x0
+TEST_IMM_OP( addi, x11, x10, 0xfdffffff, -0x2000001, 0x0, x1, 124, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/and-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/and-01.S
new file mode 100644
index 000000000..41d5e406f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/and-01.S
@@ -0,0 +1,3025 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the and instruction of the RISC-V E extension for the and covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",and)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x11, rs2==x3, rd==x10, rs1_val != rs2_val, rs1_val > 0 and rs2_val > 0, rs1_val == 16, rs2_val == 8
+// opcode: and ; op1:x11; op2:x3; dest:x10; op1val:0x10; op2val:0x8
+TEST_RR_OP(and, x10, x11, x3, 0x0, 0x10, 0x8, x1, 0, x7)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x13, rs2==x11, rd==x13, rs2_val == 2147483647, rs2_val == (2**(xlen-1)-1)
+// opcode: and ; op1:x13; op2:x11; dest:x13; op1val:0x3; op2val:0x7fffffff
+TEST_RR_OP(and, x13, x13, x11, 0x3, 0x3, 0x7fffffff, x1, 4, x7)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x12, rs2==x6, rd==x6, rs2_val == -1073741825, rs1_val == 256, rs1_val > 0 and rs2_val < 0
+// opcode: and ; op1:x12; op2:x6; dest:x6; op1val:0x100; op2val:-0x40000001
+TEST_RR_OP(and, x6, x12, x6, 0x100, 0x100, -0x40000001, x1, 8, x7)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x8, rs2==x8, rd==x5, rs2_val == -536870913, rs1_val == 262144
+// opcode: and ; op1:x8; op2:x8; dest:x5; op1val:0x40000; op2val:0x40000
+TEST_RR_OP(and, x5, x8, x8, 0x40000, 0x40000, 0x40000, x1, 12, x7)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x4, rs2==x4, rd==x4, rs2_val == -268435457, rs1_val == 1048576
+// opcode: and ; op1:x4; op2:x4; dest:x4; op1val:0x100000; op2val:0x100000
+TEST_RR_OP(and, x4, x4, x4, 0x100000, 0x100000, 0x100000, x1, 16, x7)
+
+inst_5:
+// rs1==x15, rs2==x2, rd==x12, rs2_val == -134217729, rs1_val < 0 and rs2_val < 0, rs1_val == -67108865
+// opcode: and ; op1:x15; op2:x2; dest:x12; op1val:-0x4000001; op2val:-0x8000001
+TEST_RR_OP(and, x12, x15, x2, 0xf3ffffff, -0x4000001, -0x8000001, x1, 20, x7)
+
+inst_6:
+// rs1==x6, rs2==x15, rd==x8, rs2_val == -67108865, rs1_val == -1431655766
+// opcode: and ; op1:x6; op2:x15; dest:x8; op1val:-0x55555556; op2val:-0x4000001
+TEST_RR_OP(and, x8, x6, x15, 0xaaaaaaaa, -0x55555556, -0x4000001, x1, 24, x3)
+
+inst_7:
+// rs1==x10, rs2==x5, rd==x9, rs2_val == -33554433, rs1_val == 4194304
+// opcode: and ; op1:x10; op2:x5; dest:x9; op1val:0x400000; op2val:-0x2000001
+TEST_RR_OP(and, x9, x10, x5, 0x400000, 0x400000, -0x2000001, x1, 28, x3)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_8:
+// rs1==x2, rs2==x0, rd==x1, rs2_val == -16777217,
+// opcode: and ; op1:x2; op2:x0; dest:x1; op1val:0x40000; op2val:0x0
+TEST_RR_OP(and, x1, x2, x0, 0x0, 0x40000, 0x0, x4, 0, x3)
+
+inst_9:
+// rs1==x5, rs2==x1, rd==x15, rs2_val == -8388609, rs1_val == -65
+// opcode: and ; op1:x5; op2:x1; dest:x15; op1val:-0x41; op2val:-0x800001
+TEST_RR_OP(and, x15, x5, x1, 0xff7fffbf, -0x41, -0x800001, x4, 4, x3)
+
+inst_10:
+// rs1==x7, rs2==x10, rd==x2, rs2_val == -4194305, rs1_val == 16777216
+// opcode: and ; op1:x7; op2:x10; dest:x2; op1val:0x1000000; op2val:-0x400001
+TEST_RR_OP(and, x2, x7, x10, 0x1000000, 0x1000000, -0x400001, x4, 8, x3)
+
+inst_11:
+// rs1==x1, rs2==x9, rd==x14, rs2_val == -2097153, rs1_val == -16385
+// opcode: and ; op1:x1; op2:x9; dest:x14; op1val:-0x4001; op2val:-0x200001
+TEST_RR_OP(and, x14, x1, x9, 0xffdfbfff, -0x4001, -0x200001, x4, 12, x3)
+
+inst_12:
+// rs1==x14, rs2==x13, rd==x7, rs2_val == -1048577, rs1_val == -1025
+// opcode: and ; op1:x14; op2:x13; dest:x7; op1val:-0x401; op2val:-0x100001
+TEST_RR_OP(and, x7, x14, x13, 0xffeffbff, -0x401, -0x100001, x4, 16, x3)
+
+inst_13:
+// rs1==x3, rs2==x14, rd==x0, rs2_val == -524289, rs1_val == -3
+// opcode: and ; op1:x3; op2:x14; dest:x0; op1val:-0x3; op2val:-0x80001
+TEST_RR_OP(and, x0, x3, x14, 0, -0x3, -0x80001, x4, 20, x2)
+
+inst_14:
+// rs1==x9, rs2==x7, rd==x11, rs2_val == -262145, rs1_val == 33554432
+// opcode: and ; op1:x9; op2:x7; dest:x11; op1val:0x2000000; op2val:-0x40001
+TEST_RR_OP(and, x11, x9, x7, 0x2000000, 0x2000000, -0x40001, x4, 24, x2)
+
+inst_15:
+// rs1==x0, rs2==x12, rd==x3, rs2_val == -131073,
+// opcode: and ; op1:x0; op2:x12; dest:x3; op1val:0x0; op2val:-0x20001
+TEST_RR_OP(and, x3, x0, x12, 0x0, 0x0, -0x20001, x4, 28, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_16:
+// rs2_val == -65537, rs1_val == 4
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x10001
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, -0x10001, x1, 0, x2)
+
+inst_17:
+// rs2_val == -32769, rs1_val == 1431655765
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x8001
+TEST_RR_OP(and, x12, x10, x11, 0x55555555, 0x55555555, -0x8001, x1, 4, x2)
+
+inst_18:
+// rs2_val == -16385, rs1_val == 1073741824
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:-0x4001
+TEST_RR_OP(and, x12, x10, x11, 0x40000000, 0x40000000, -0x4001, x1, 8, x2)
+
+inst_19:
+// rs2_val == -8193,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x2001
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, -0x2001, x1, 12, x2)
+
+inst_20:
+// rs2_val == -4097,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:-0x1001
+TEST_RR_OP(and, x12, x10, x11, 0x100, 0x100, -0x1001, x1, 16, x2)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x801
+TEST_RR_OP(and, x12, x10, x11, 0xaaaaa2aa, -0x55555556, -0x801, x1, 20, x2)
+
+inst_22:
+// rs2_val == -1025, rs1_val == 4096
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:-0x401
+TEST_RR_OP(and, x12, x10, x11, 0x1000, 0x1000, -0x401, x1, 24, x2)
+
+inst_23:
+// rs2_val == -513, rs1_val == 1
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:-0x201
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x1, -0x201, x1, 28, x2)
+
+inst_24:
+// rs2_val == -257,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:-0x101
+TEST_RR_OP(and, x12, x10, x11, 0x7, 0x7, -0x101, x1, 32, x2)
+
+inst_25:
+// rs2_val == -129,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x81
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0x3, -0x81, x1, 36, x2)
+
+inst_26:
+// rs2_val == -65,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x41
+TEST_RR_OP(and, x12, x10, x11, 0xb504, 0xb504, -0x41, x1, 40, x2)
+
+inst_27:
+// rs2_val == -33, rs1_val == 128
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:-0x21
+TEST_RR_OP(and, x12, x10, x11, 0x80, 0x80, -0x21, x1, 44, x2)
+
+inst_28:
+// rs2_val == -17,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x11
+TEST_RR_OP(and, x12, x10, x11, 0xb505, 0xb505, -0x11, x1, 48, x2)
+
+inst_29:
+// rs2_val == -9,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:-0x9
+TEST_RR_OP(and, x12, x10, x11, 0x100000, 0x100000, -0x9, x1, 52, x2)
+
+inst_30:
+// rs2_val == -5, rs1_val == 16384
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:-0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4000, 0x4000, -0x5, x1, 56, x2)
+
+inst_31:
+// rs2_val == -3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x3
+TEST_RR_OP(and, x12, x10, x11, 0x33333330, 0x33333332, -0x3, x1, 60, x2)
+
+inst_32:
+// rs2_val == -2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x2
+TEST_RR_OP(and, x12, x10, x11, 0x55555554, 0x55555554, -0x2, x1, 64, x2)
+
+inst_33:
+// rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:-0x800001
+TEST_RR_OP(and, x12, x10, x11, 0x7f7fffff, 0x7fffffff, -0x800001, x1, 68, x2)
+
+inst_34:
+// rs1_val == -1073741825, rs1_val < 0 and rs2_val > 0
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x26666667, -0x40000001, 0x66666667, x1, 72, x2)
+
+inst_35:
+// rs1_val == -536870913,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x3, -0x20000001, 0x3, x1, 76, x2)
+
+inst_36:
+// rs1_val == -268435457,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:-0x8
+TEST_RR_OP(and, x12, x10, x11, 0xeffffff8, -0x10000001, -0x8, x1, 80, x2)
+
+inst_37:
+// rs1_val == -134217729, rs2_val == 2097152
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:0x200000
+TEST_RR_OP(and, x12, x10, x11, 0x200000, -0x8000001, 0x200000, x1, 84, x2)
+
+inst_38:
+// rs1_val == -33554433,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:-0x101
+TEST_RR_OP(and, x12, x10, x11, 0xfdfffeff, -0x2000001, -0x101, x1, 88, x2)
+
+inst_39:
+// rs1_val == -16777217,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:-0x800001
+TEST_RR_OP(and, x12, x10, x11, 0xfe7fffff, -0x1000001, -0x800001, x1, 92, x2)
+
+inst_40:
+// rs1_val == -8388609,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:-0x101
+TEST_RR_OP(and, x12, x10, x11, 0xff7ffeff, -0x800001, -0x101, x1, 96, x2)
+
+inst_41:
+// rs1_val == -4194305,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:-0x200001
+TEST_RR_OP(and, x12, x10, x11, 0xff9fffff, -0x400001, -0x200001, x1, 100, x2)
+
+inst_42:
+// rs1_val == -2097153,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x66466666, -0x200001, 0x66666666, x1, 104, x2)
+
+inst_43:
+// rs1_val == -1048577,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xffef4afd, -0x100001, -0xb503, x1, 108, x2)
+
+inst_44:
+// rs1_val == -524289,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xb504, -0x80001, 0xb504, x1, 112, x2)
+
+inst_45:
+// rs1_val == -262145,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:-0x8001
+TEST_RR_OP(and, x12, x10, x11, 0xfffb7fff, -0x40001, -0x8001, x1, 116, x2)
+
+inst_46:
+// rs1_val == -131073,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x55555556, -0x20001, 0x55555556, x1, 120, x2)
+
+inst_47:
+// rs1_val == -65537, rs2_val == 524288
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:0x80000
+TEST_RR_OP(and, x12, x10, x11, 0x80000, -0x10001, 0x80000, x1, 124, x2)
+
+inst_48:
+// rs1_val == -32769,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:-0x4001
+TEST_RR_OP(and, x12, x10, x11, 0xffff3fff, -0x8001, -0x4001, x1, 128, x2)
+
+inst_49:
+// rs1_val == -8193, rs2_val == 2
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, -0x2001, 0x2, x1, 132, x2)
+
+inst_50:
+// rs1_val == -4097, rs2_val == 32
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0x20
+TEST_RR_OP(and, x12, x10, x11, 0x20, -0x1001, 0x20, x1, 136, x2)
+
+inst_51:
+// rs1_val == -2049,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xffff42fc, -0x801, -0xb504, x1, 140, x2)
+
+inst_52:
+// rs1_val == -513,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:-0x80001
+TEST_RR_OP(and, x12, x10, x11, 0xfff7fdff, -0x201, -0x80001, x1, 144, x2)
+
+inst_53:
+// rs1_val == -257,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:-0x8000001
+TEST_RR_OP(and, x12, x10, x11, 0xf7fffeff, -0x101, -0x8000001, x1, 148, x2)
+
+inst_54:
+// rs1_val == -129, rs2_val == 1431655765
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x55555555, -0x81, 0x55555555, x1, 152, x2)
+
+inst_55:
+// rs1_val == -33,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:-0x201
+TEST_RR_OP(and, x12, x10, x11, 0xfffffddf, -0x21, -0x201, x1, 156, x2)
+
+inst_56:
+// rs1_val == -17,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x3, -0x11, 0x3, x1, 160, x2)
+
+inst_57:
+// rs1_val == -9,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x6, -0x9, 0x6, x1, 164, x2)
+
+inst_58:
+// rs1_val == -5, rs2_val == 1
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x1
+TEST_RR_OP(and, x12, x10, x11, 0x1, -0x5, 0x1, x1, 168, x2)
+
+inst_59:
+// rs1_val == -2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xffff4afc, -0x2, -0xb503, x1, 172, x2)
+
+inst_60:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1)), rs1_val == 2
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x80000000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, -0x80000000, x1, 176, x2)
+
+inst_61:
+// rs2_val == 1073741824, rs1_val == 2048
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x40000000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x800, 0x40000000, x1, 180, x2)
+
+inst_62:
+// rs2_val == 536870912,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x20000000
+TEST_RR_OP(and, x12, x10, x11, 0x20000000, -0x4000001, 0x20000000, x1, 184, x2)
+
+inst_63:
+// rs2_val == 268435456,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x10000000
+TEST_RR_OP(and, x12, x10, x11, 0x10000000, -0x100001, 0x10000000, x1, 188, x2)
+
+inst_64:
+// rs2_val == 134217728,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x8000000
+TEST_RR_OP(and, x12, x10, x11, 0x8000000, -0xb503, 0x8000000, x1, 192, x2)
+
+inst_65:
+// rs2_val == 67108864,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x1; op2val:0x4000000
+TEST_RR_OP(and, x12, x10, x11, 0x4000000, -0x1, 0x4000000, x1, 196, x2)
+
+inst_66:
+// rs2_val == 33554432,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2000000
+TEST_RR_OP(and, x12, x10, x11, 0x2000000, -0x55555555, 0x2000000, x1, 200, x2)
+
+inst_67:
+// rs2_val == 16777216,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:0x1000000
+TEST_RR_OP(and, x12, x10, x11, 0x1000000, -0x10000001, 0x1000000, x1, 204, x2)
+
+inst_68:
+// rs2_val == 8388608, rs1_val == 268435456
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x800000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x10000000, 0x800000, x1, 208, x2)
+
+inst_69:
+// rs2_val == 4194304,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x400000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x800, 0x400000, x1, 212, x2)
+
+inst_70:
+// rs2_val == 1048576,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x100000
+TEST_RR_OP(and, x12, x10, x11, 0x100000, 0x55555555, 0x100000, x1, 216, x2)
+
+inst_71:
+// rs2_val == 262144,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x9; op2val:0x40000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x9, 0x40000, x1, 220, x2)
+
+inst_72:
+// rs2_val == 131072,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x20000
+TEST_RR_OP(and, x12, x10, x11, 0x20000, -0x55555555, 0x20000, x1, 224, x2)
+
+inst_73:
+// rs2_val == 65536,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x10000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x800, 0x10000, x1, 228, x2)
+
+inst_74:
+// rs2_val == 32768, rs1_val == 65536
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x8000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x10000, 0x8000, x1, 232, x2)
+
+inst_75:
+// rs2_val == 16384,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x3, 0x4000, x1, 236, x2)
+
+inst_76:
+// rs2_val == 8192,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xa; op2val:0x2000
+TEST_RR_OP(and, x12, x10, x11, 0x2000, -0xa, 0x2000, x1, 240, x2)
+
+inst_77:
+// rs2_val == 4096,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x1000
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555556, 0x1000, x1, 244, x2)
+
+inst_78:
+// rs2_val == 2048,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x800
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x5, 0x800, x1, 248, x2)
+
+inst_79:
+// rs2_val == 1024,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x400
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0xb503, 0x400, x1, 252, x2)
+
+inst_80:
+// rs2_val == 512,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x200
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x5, 0x200, x1, 256, x2)
+
+inst_81:
+// rs2_val == 256,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x100
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0xb503, 0x100, x1, 260, x2)
+
+inst_82:
+// rs2_val == 128,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:0x80
+TEST_RR_OP(and, x12, x10, x11, 0x80, -0x20000001, 0x80, x1, 264, x2)
+
+inst_83:
+// rs2_val == 64,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x40
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333332, 0x40, x1, 268, x2)
+
+inst_84:
+// rs2_val == 16,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x7; op2val:0x10
+TEST_RR_OP(and, x12, x10, x11, 0x10, -0x7, 0x10, x1, 272, x2)
+
+inst_85:
+// rs2_val == 4, rs1_val==-46339 and rs2_val==4
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, -0xb503, 0x4, x1, 276, x2)
+
+inst_86:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x80000000, 0x33333334, x1, 280, x2)
+
+inst_87:
+// rs1_val == 536870912,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x20000000, 0x20000000, -0xb504, x1, 284, x2)
+
+inst_88:
+// rs1_val == 134217728,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x8000000, 0xb504, x1, 288, x2)
+
+inst_89:
+// rs1_val == 67108864,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4000000, 0x4000000, -0xb504, x1, 292, x2)
+
+inst_90:
+// rs1_val == 8388608,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x3fffffff
+TEST_RR_OP(and, x12, x10, x11, 0x800000, 0x800000, 0x3fffffff, x1, 296, x2)
+
+inst_91:
+// rs1_val == 2097152,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:-0x9
+TEST_RR_OP(and, x12, x10, x11, 0x200000, 0x200000, -0x9, x1, 300, x2)
+
+inst_92:
+// rs1_val == 524288,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x7fffffff
+TEST_RR_OP(and, x12, x10, x11, 0x80000, 0x80000, 0x7fffffff, x1, 304, x2)
+
+inst_93:
+// rs1_val == 131072,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:-0x4
+TEST_RR_OP(and, x12, x10, x11, 0x20000, 0x20000, -0x4, x1, 308, x2)
+
+inst_94:
+// rs1_val == 32768,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x10000000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x8000, 0x10000000, x1, 312, x2)
+
+inst_95:
+// rs1_val == 8192,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:-0x1000001
+TEST_RR_OP(and, x12, x10, x11, 0x2000, 0x2000, -0x1000001, x1, 316, x2)
+
+inst_96:
+// rs1_val == 1024, rs1_val == rs2_val
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x400
+TEST_RR_OP(and, x12, x10, x11, 0x400, 0x400, 0x400, x1, 320, x2)
+
+inst_97:
+// rs1_val == 512,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:-0x20000001
+TEST_RR_OP(and, x12, x10, x11, 0x200, 0x200, -0x20000001, x1, 324, x2)
+
+inst_98:
+// rs1_val == 64,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:-0x40000001
+TEST_RR_OP(and, x12, x10, x11, 0x40, 0x40, -0x40000001, x1, 328, x2)
+
+inst_99:
+// rs1_val == 32,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x2000000
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x20, 0x2000000, x1, 332, x2)
+
+inst_100:
+// rs1_val == 8,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x8, 0x66666667, x1, 336, x2)
+
+inst_101:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0xb505, 0xb505, 0xb505, x1, 340, x2)
+
+inst_102:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0xb505, -0xb503, x1, 344, x2)
+
+inst_103:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x2405, 0xb505, 0x66666667, x1, 348, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x3104, 0xb505, 0x33333334, x1, 352, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0xb505, 0x6, x1, 356, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0xa001, 0xb505, -0x55555555, x1, 360, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0xb505, 0x55555556, x1, 364, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0xb505, 0x4, x1, 368, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xb501, 0xb505, 0xb503, x1, 372, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==0, rs2_val == 0
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0xb505, 0x0, x1, 376, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x2405, 0xb505, 0x66666665, x1, 380, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x3100, 0xb505, 0x33333332, x1, 384, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0xb505, 0x55555554, x1, 388, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0xb505, 0x2, x1, 392, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xb504, 0xb505, 0xb504, x1, 396, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0xb505, -0xb504, x1, 400, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x2404, 0xb505, 0x66666666, x1, 404, x2)
+
+inst_118:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x3101, 0xb505, 0x33333333, x1, 408, x2)
+
+inst_119:
+// rs1_val==46341 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0xb505, 0x5, x1, 412, x2)
+
+inst_120:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0xa000, 0xb505, -0x55555556, x1, 416, x2)
+
+inst_121:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x1505, 0xb505, 0x55555555, x1, 420, x2)
+
+inst_122:
+// rs1_val==46341 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0xb505, 0x3, x1, 424, x2)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x5, -0xb503, 0xb505, x1, 428, x2)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xffff4afd, -0xb503, -0xb503, x1, 432, x2)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x66664265, -0xb503, 0x66666667, x1, 436, x2)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x33330234, -0xb503, 0x33333334, x1, 440, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, -0xb503, 0x6, x1, 444, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0xaaaa0aa9, -0xb503, -0x55555555, x1, 448, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, -0xb503, 0x55555556, x1, 452, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x1, -0xb503, 0xb503, x1, 456, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0xb503, 0x0, x1, 460, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x66664265, -0xb503, 0x66666665, x1, 464, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x33330230, -0xb503, 0x33333332, x1, 468, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, -0xb503, 0x55555554, x1, 472, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0xb503, 0x2, x1, 476, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, -0xb503, 0xb504, x1, 480, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xffff4afc, -0xb503, -0xb504, x1, 484, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x66664264, -0xb503, 0x66666666, x1, 488, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x33330231, -0xb503, 0x33333333, x1, 492, x2)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x5, -0xb503, 0x5, x1, 496, x2)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0xaaaa0aa8, -0xb503, -0x55555556, x1, 500, x2)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x55554055, -0xb503, 0x55555555, x1, 504, x2)
+
+inst_143:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x1, -0xb503, 0x3, x1, 508, x2)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x2405, 0x66666667, 0xb505, x1, 512, x2)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x66664265, 0x66666667, -0xb503, x1, 516, x2)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x66666667, 0x66666667, 0x66666667, x1, 520, x2)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x22222224, 0x66666667, 0x33333334, x1, 524, x2)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x6, 0x66666667, 0x6, x1, 528, x2)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x22222223, 0x66666667, -0x55555555, x1, 532, x2)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x44444446, 0x66666667, 0x55555556, x1, 536, x2)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x66666667, 0x4, x1, 540, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x2403, 0x66666667, 0xb503, x1, 544, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x66666667, 0x0, x1, 548, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x66666665, 0x66666667, 0x66666665, x1, 552, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x66666667, 0x33333332, x1, 556, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x66666667, 0x55555554, x1, 560, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x66666667, 0x2, x1, 564, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x2404, 0x66666667, 0xb504, x1, 568, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x66664264, 0x66666667, -0xb504, x1, 572, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x66666666, 0x66666667, 0x66666666, x1, 576, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x22222223, 0x66666667, 0x33333333, x1, 580, x2)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x66666667, 0x5, x1, 584, x2)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x66666667, -0x55555556, x1, 588, x2)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x44444445, 0x66666667, 0x55555555, x1, 592, x2)
+
+inst_165:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0x66666667, 0x3, x1, 596, x2)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x3104, 0x33333334, 0xb505, x1, 600, x2)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x33330234, 0x33333334, -0xb503, x1, 604, x2)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x22222224, 0x33333334, 0x66666667, x1, 608, x2)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x33333334, 0x33333334, 0x33333334, x1, 612, x2)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x33333334, 0x6, x1, 616, x2)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x22222220, 0x33333334, -0x55555555, x1, 620, x2)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x11111114, 0x33333334, 0x55555556, x1, 624, x2)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x33333334, 0x4, x1, 628, x2)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x3100, 0x33333334, 0xb503, x1, 632, x2)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333334, 0x0, x1, 636, x2)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x22222224, 0x33333334, 0x66666665, x1, 640, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x33333330, 0x33333334, 0x33333332, x1, 644, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x11111114, 0x33333334, 0x55555554, x1, 648, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333334, 0x2, x1, 652, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x3104, 0x33333334, 0xb504, x1, 656, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x33330234, 0x33333334, -0xb504, x1, 660, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x22222224, 0x33333334, 0x66666666, x1, 664, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x33333330, 0x33333334, 0x33333333, x1, 668, x2)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x33333334, 0x5, x1, 672, x2)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x22222220, 0x33333334, -0x55555556, x1, 676, x2)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x11111114, 0x33333334, 0x55555555, x1, 680, x2)
+
+inst_187:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333334, 0x3, x1, 684, x2)
+
+inst_188:
+// rs1_val==6 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, 0xb505, x1, 688, x2)
+
+inst_189:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, -0xb503, x1, 692, x2)
+
+inst_190:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x6, 0x6, 0x66666667, x1, 696, x2)
+
+inst_191:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, 0x33333334, x1, 700, x2)
+
+inst_192:
+// rs1_val==6 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x6, 0x6, 0x6, x1, 704, x2)
+
+inst_193:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x6, -0x55555555, x1, 708, x2)
+
+inst_194:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x6, 0x6, 0x55555556, x1, 712, x2)
+
+inst_195:
+// rs1_val==6 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, 0x4, x1, 716, x2)
+
+inst_196:
+// rs1_val==6 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x6, 0xb503, x1, 720, x2)
+
+inst_197:
+// rs1_val==6 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x6, 0x0, x1, 724, x2)
+
+inst_198:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, 0x66666665, x1, 728, x2)
+
+inst_199:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x6, 0x33333332, x1, 732, x2)
+
+inst_200:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, 0x55555554, x1, 736, x2)
+
+inst_201:
+// rs1_val==6 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x6, 0x2, x1, 740, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, 0xb504, x1, 744, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, -0xb504, x1, 748, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x6, 0x6, 0x66666666, x1, 752, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x6, 0x33333333, x1, 756, x2)
+
+inst_206:
+// rs1_val==6 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, 0x5, x1, 760, x2)
+
+inst_207:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x6, -0x55555556, x1, 764, x2)
+
+inst_208:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x6, 0x55555555, x1, 768, x2)
+
+inst_209:
+// rs1_val==6 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x6, 0x3, x1, 772, x2)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0xa001, -0x55555555, 0xb505, x1, 776, x2)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xaaaa0aa9, -0x55555555, -0xb503, x1, 780, x2)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x22222223, -0x55555555, 0x66666667, x1, 784, x2)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x22222220, -0x55555555, 0x33333334, x1, 788, x2)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x2, -0x55555555, 0x6, x1, 792, x2)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0xaaaaaaab, -0x55555555, -0x55555555, x1, 796, x2)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x2, -0x55555555, 0x55555556, x1, 800, x2)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555555, 0x4, x1, 804, x2)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xa003, -0x55555555, 0xb503, x1, 808, x2)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555555, 0x0, x1, 812, x2)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x22222221, -0x55555555, 0x66666665, x1, 816, x2)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, -0x55555555, 0x33333332, x1, 820, x2)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555555, 0x55555554, x1, 824, x2)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, -0x55555555, 0x2, x1, 828, x2)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xa000, -0x55555555, 0xb504, x1, 832, x2)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xaaaa0aa8, -0x55555555, -0xb504, x1, 836, x2)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, -0x55555555, 0x66666666, x1, 840, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x22222223, -0x55555555, 0x33333333, x1, 844, x2)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x1, -0x55555555, 0x5, x1, 848, x2)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0xaaaaaaaa, -0x55555555, -0x55555556, x1, 852, x2)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x1, -0x55555555, 0x55555555, x1, 856, x2)
+
+inst_231:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x3, -0x55555555, 0x3, x1, 860, x2)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0x55555556, 0xb505, x1, 864, x2)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, 0x55555556, -0xb503, x1, 868, x2)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x44444446, 0x55555556, 0x66666667, x1, 872, x2)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x11111114, 0x55555556, 0x33333334, x1, 876, x2)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x6, 0x55555556, 0x6, x1, 880, x2)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x55555556, -0x55555555, x1, 884, x2)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x55555556, 0x55555556, 0x55555556, x1, 888, x2)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x55555556, 0x4, x1, 892, x2)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x1502, 0x55555556, 0xb503, x1, 896, x2)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555556, 0x0, x1, 900, x2)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x55555556, 0x66666665, x1, 904, x2)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x11111112, 0x55555556, 0x33333332, x1, 908, x2)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x55555554, 0x55555556, 0x55555554, x1, 912, x2)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x55555556, 0x2, x1, 916, x2)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0x55555556, 0xb504, x1, 920, x2)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, 0x55555556, -0xb504, x1, 924, x2)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x44444446, 0x55555556, 0x66666666, x1, 928, x2)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x11111112, 0x55555556, 0x33333333, x1, 932, x2)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x55555556, 0x5, x1, 936, x2)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x55555556, -0x55555556, x1, 940, x2)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x55555554, 0x55555556, 0x55555555, x1, 944, x2)
+
+inst_253:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x55555556, 0x3, x1, 948, x2)
+
+inst_254:
+// rs1_val==4 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0xb505, x1, 952, x2)
+
+inst_255:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, -0xb503, x1, 956, x2)
+
+inst_256:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x66666667, x1, 960, x2)
+
+inst_257:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x33333334, x1, 964, x2)
+
+inst_258:
+// rs1_val==4 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x6, x1, 968, x2)
+
+inst_259:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x4, -0x55555555, x1, 972, x2)
+
+inst_260:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x55555556, x1, 976, x2)
+
+inst_261:
+// rs1_val==4 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x4, x1, 980, x2)
+
+inst_262:
+// rs1_val==4 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x4, 0xb503, x1, 984, x2)
+
+inst_263:
+// rs1_val==4 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x4, 0x0, x1, 988, x2)
+
+inst_264:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x66666665, x1, 992, x2)
+
+inst_265:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x4, 0x33333332, x1, 996, x2)
+
+inst_266:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x55555554, x1, 1000, x2)
+
+inst_267:
+// rs1_val==4 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x4, 0x2, x1, 1004, x2)
+
+inst_268:
+// rs1_val==4 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0xb504, x1, 1008, x2)
+
+inst_269:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, -0xb504, x1, 1012, x2)
+
+inst_270:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x66666666, x1, 1016, x2)
+
+inst_271:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x4, 0x33333333, x1, 1020, x2)
+
+inst_272:
+// rs1_val==4 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x5, x1, 1024, x2)
+
+inst_273:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x4, -0x55555556, x1, 1028, x2)
+
+inst_274:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x4, 0x55555555, x1, 1032, x2)
+
+inst_275:
+// rs1_val==4 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x4, 0x3, x1, 1036, x2)
+
+inst_276:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0xb501, 0xb503, 0xb505, x1, 1040, x2)
+
+inst_277:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0xb503, -0xb503, x1, 1044, x2)
+
+inst_278:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x2403, 0xb503, 0x66666667, x1, 1048, x2)
+
+inst_279:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x3100, 0xb503, 0x33333334, x1, 1052, x2)
+
+inst_280:
+// rs1_val==46339 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0xb503, 0x6, x1, 1056, x2)
+
+inst_281:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0xa003, 0xb503, -0x55555555, x1, 1060, x2)
+
+inst_282:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x1502, 0xb503, 0x55555556, x1, 1064, x2)
+
+inst_283:
+// rs1_val==46339 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0xb503, 0x4, x1, 1068, x2)
+
+inst_284:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xb503, 0xb503, 0xb503, x1, 1072, x2)
+
+inst_285:
+// rs1_val==46339 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0xb503, 0x0, x1, 1076, x2)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x2401, 0xb503, 0x66666665, x1, 1080, x2)
+
+inst_287:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x3102, 0xb503, 0x33333332, x1, 1084, x2)
+
+inst_288:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x1500, 0xb503, 0x55555554, x1, 1088, x2)
+
+inst_289:
+// rs1_val==46339 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0xb503, 0x2, x1, 1092, x2)
+
+inst_290:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xb500, 0xb503, 0xb504, x1, 1096, x2)
+
+inst_291:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0xb503, -0xb504, x1, 1100, x2)
+
+inst_292:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x2402, 0xb503, 0x66666666, x1, 1104, x2)
+
+inst_293:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x3103, 0xb503, 0x33333333, x1, 1108, x2)
+
+inst_294:
+// rs1_val==46339 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0xb503, 0x5, x1, 1112, x2)
+
+inst_295:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0xa002, 0xb503, -0x55555556, x1, 1116, x2)
+
+inst_296:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x1501, 0xb503, 0x55555555, x1, 1120, x2)
+
+inst_297:
+// rs1_val==46339 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0xb503, 0x3, x1, 1124, x2)
+
+inst_298:
+// rs1_val==0 and rs2_val==46341, rs1_val == 0
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0xb505, x1, 1128, x2)
+
+inst_299:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, -0xb503, x1, 1132, x2)
+
+inst_300:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x66666667, x1, 1136, x2)
+
+inst_301:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x33333334, x1, 1140, x2)
+
+inst_302:
+// rs1_val==0 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x6, x1, 1144, x2)
+
+inst_303:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, -0x55555555, x1, 1148, x2)
+
+inst_304:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x55555556, x1, 1152, x2)
+
+inst_305:
+// rs1_val==0 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x4, x1, 1156, x2)
+
+inst_306:
+// rs1_val==0 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0xb503, x1, 1160, x2)
+
+inst_307:
+// rs1_val==0 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1164, x2)
+
+inst_308:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x66666665, x1, 1168, x2)
+
+inst_309:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x33333332, x1, 1172, x2)
+
+inst_310:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x55555554, x1, 1176, x2)
+
+inst_311:
+// rs1_val==0 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x2, x1, 1180, x2)
+
+inst_312:
+// rs1_val==0 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0xb504, x1, 1184, x2)
+
+inst_313:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, -0xb504, x1, 1188, x2)
+
+inst_314:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x66666666, x1, 1192, x2)
+
+inst_315:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x33333333, x1, 1196, x2)
+
+inst_316:
+// rs1_val==0 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x5, x1, 1200, x2)
+
+inst_317:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, -0x55555556, x1, 1204, x2)
+
+inst_318:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x55555555, x1, 1208, x2)
+
+inst_319:
+// rs1_val==0 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x0, 0x3, x1, 1212, x2)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x2405, 0x66666665, 0xb505, x1, 1216, x2)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x66664265, 0x66666665, -0xb503, x1, 1220, x2)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x66666665, 0x66666665, 0x66666667, x1, 1224, x2)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x22222224, 0x66666665, 0x33333334, x1, 1228, x2)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x66666665, 0x6, x1, 1232, x2)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x22222221, 0x66666665, -0x55555555, x1, 1236, x2)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x66666665, 0x55555556, x1, 1240, x2)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x66666665, 0x4, x1, 1244, x2)
+
+inst_328:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x2401, 0x66666665, 0xb503, x1, 1248, x2)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333333, 0x0, x1, 1252, x2)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x22222221, 0x33333333, 0x66666665, x1, 1256, x2)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x33333332, 0x33333333, 0x33333332, x1, 1260, x2)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x11111110, 0x33333333, 0x55555554, x1, 1264, x2)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x33333333, 0x2, x1, 1268, x2)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x3100, 0x33333333, 0xb504, x1, 1272, x2)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x33330230, 0x33333333, -0xb504, x1, 1276, x2)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x33333333, 0x66666666, x1, 1280, x2)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x33333333, 0x33333333, 0x33333333, x1, 1284, x2)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x33333333, 0x5, x1, 1288, x2)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x33333333, -0x55555556, x1, 1292, x2)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x11111111, 0x33333333, 0x55555555, x1, 1296, x2)
+
+inst_341:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0x33333333, 0x3, x1, 1300, x2)
+
+inst_342:
+// rs1_val==5 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x5, 0xb505, x1, 1304, x2)
+
+inst_343:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x5, -0xb503, x1, 1308, x2)
+
+inst_344:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x5, 0x66666667, x1, 1312, x2)
+
+inst_345:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x5, 0x33333334, x1, 1316, x2)
+
+inst_346:
+// rs1_val==5 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x5, 0x6, x1, 1320, x2)
+
+inst_347:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x5, -0x55555555, x1, 1324, x2)
+
+inst_348:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x5, 0x55555556, x1, 1328, x2)
+
+inst_349:
+// rs1_val==5 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x5, 0x4, x1, 1332, x2)
+
+inst_350:
+// rs1_val==5 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x5, 0xb503, x1, 1336, x2)
+
+inst_351:
+// rs1_val==5 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x5, 0x0, x1, 1340, x2)
+
+inst_352:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x5, 0x66666665, x1, 1344, x2)
+
+inst_353:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x5, 0x33333332, x1, 1348, x2)
+
+inst_354:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x5, 0x55555554, x1, 1352, x2)
+
+inst_355:
+// rs1_val==5 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x5, 0x2, x1, 1356, x2)
+
+inst_356:
+// rs1_val==5 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x5, 0xb504, x1, 1360, x2)
+
+inst_357:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x5, -0xb504, x1, 1364, x2)
+
+inst_358:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x5, 0x66666666, x1, 1368, x2)
+
+inst_359:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x5, 0x33333333, x1, 1372, x2)
+
+inst_360:
+// rs1_val==5 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x5, 0x5, x1, 1376, x2)
+
+inst_361:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x5, -0x55555556, x1, 1380, x2)
+
+inst_362:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x5, 0x55555555, x1, 1384, x2)
+
+inst_363:
+// rs1_val==5 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x5, 0x3, x1, 1388, x2)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0xa000, -0x55555556, 0xb505, x1, 1392, x2)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xaaaa0aa8, -0x55555556, -0xb503, x1, 1396, x2)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, -0x55555556, 0x66666667, x1, 1400, x2)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x22222220, -0x55555556, 0x33333334, x1, 1404, x2)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x2, -0x55555556, 0x6, x1, 1408, x2)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0xaaaaaaaa, -0x55555556, -0x55555555, x1, 1412, x2)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x2, -0x55555556, 0x55555556, x1, 1416, x2)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555556, 0x4, x1, 1420, x2)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xa002, -0x55555556, 0xb503, x1, 1424, x2)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555556, 0x0, x1, 1428, x2)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x22222220, -0x55555556, 0x66666665, x1, 1432, x2)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, -0x55555556, 0x33333332, x1, 1436, x2)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555556, 0x55555554, x1, 1440, x2)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, -0x55555556, 0x2, x1, 1444, x2)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xa000, -0x55555556, 0xb504, x1, 1448, x2)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xaaaa0aa8, -0x55555556, -0xb504, x1, 1452, x2)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, -0x55555556, 0x66666666, x1, 1456, x2)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, -0x55555556, 0x33333333, x1, 1460, x2)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555556, 0x5, x1, 1464, x2)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0xaaaaaaaa, -0x55555556, -0x55555556, x1, 1468, x2)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0x55555556, 0x55555555, x1, 1472, x2)
+
+inst_385:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x2, -0x55555556, 0x3, x1, 1476, x2)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x1505, 0x55555555, 0xb505, x1, 1480, x2)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x55554055, 0x55555555, -0xb503, x1, 1484, x2)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x44444445, 0x55555555, 0x66666667, x1, 1488, x2)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x11111114, 0x55555555, 0x33333334, x1, 1492, x2)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x55555555, 0x6, x1, 1496, x2)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x55555555, -0x55555555, x1, 1500, x2)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x55555554, 0x55555555, 0x55555556, x1, 1504, x2)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x55555555, 0x4, x1, 1508, x2)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x1501, 0x55555555, 0xb503, x1, 1512, x2)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555555, 0x0, x1, 1516, x2)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x44444445, 0x55555555, 0x66666665, x1, 1520, x2)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x11111110, 0x55555555, 0x33333332, x1, 1524, x2)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x55555554, 0x55555555, 0x55555554, x1, 1528, x2)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555555, 0x2, x1, 1532, x2)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0x55555555, 0xb504, x1, 1536, x2)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, 0x55555555, -0xb504, x1, 1540, x2)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x55555555, 0x66666666, x1, 1544, x2)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x11111111, 0x55555555, 0x33333333, x1, 1548, x2)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x55555555, 0x5, x1, 1552, x2)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555555, -0x55555556, x1, 1556, x2)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x55555555, 0x55555555, 0x55555555, x1, 1560, x2)
+
+inst_407:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x55555555, 0x3, x1, 1564, x2)
+
+inst_408:
+// rs1_val==3 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x3, 0xb505, x1, 1568, x2)
+
+inst_409:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x3, -0xb503, x1, 1572, x2)
+
+inst_410:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0x3, 0x66666667, x1, 1576, x2)
+
+inst_411:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x3, 0x33333334, x1, 1580, x2)
+
+inst_412:
+// rs1_val==3 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x3, 0x6, x1, 1584, x2)
+
+inst_413:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0x3, -0x55555555, x1, 1588, x2)
+
+inst_414:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x3, 0x55555556, x1, 1592, x2)
+
+inst_415:
+// rs1_val==3 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x3, 0x4, x1, 1596, x2)
+
+inst_416:
+// rs1_val==3 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0x3, 0xb503, x1, 1600, x2)
+
+inst_417:
+// rs1_val==3 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x3, 0x0, x1, 1604, x2)
+
+inst_418:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x3, 0x66666665, x1, 1608, x2)
+
+inst_419:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x3, 0x33333332, x1, 1612, x2)
+
+inst_420:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x3, 0x55555554, x1, 1616, x2)
+
+inst_421:
+// rs1_val==3 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x3, 0x2, x1, 1620, x2)
+
+inst_422:
+// rs1_val==3 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x3, 0xb504, x1, 1624, x2)
+
+inst_423:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x3, -0xb504, x1, 1628, x2)
+
+inst_424:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x3, 0x66666666, x1, 1632, x2)
+
+inst_425:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0x3, 0x33333333, x1, 1636, x2)
+
+inst_426:
+// rs1_val==3 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x3, 0x5, x1, 1640, x2)
+
+inst_427:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x3, -0x55555556, x1, 1644, x2)
+
+inst_428:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x3, 0x55555555, x1, 1648, x2)
+
+inst_429:
+// rs1_val==3 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x3, 0x3, 0x3, x1, 1652, x2)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x66666665, 0x0, x1, 1656, x2)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x66666665, 0x66666665, 0x66666665, x1, 1660, x2)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x22222220, 0x66666665, 0x33333332, x1, 1664, x2)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x66666665, 0x55555554, x1, 1668, x2)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x66666665, 0x2, x1, 1672, x2)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x2404, 0x66666665, 0xb504, x1, 1676, x2)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x66664264, 0x66666665, -0xb504, x1, 1680, x2)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x66666664, 0x66666665, 0x66666666, x1, 1684, x2)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x22222221, 0x66666665, 0x33333333, x1, 1688, x2)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x5, 0x66666665, 0x5, x1, 1692, x2)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x22222220, 0x66666665, -0x55555556, x1, 1696, x2)
+
+inst_441:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x44444445, 0x66666665, 0x55555555, x1, 1700, x2)
+
+inst_442:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x1, 0x66666665, 0x3, x1, 1704, x2)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x3100, 0x33333332, 0xb505, x1, 1708, x2)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x33330230, 0x33333332, -0xb503, x1, 1712, x2)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x33333332, 0x66666667, x1, 1716, x2)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x33333330, 0x33333332, 0x33333334, x1, 1720, x2)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x33333332, 0x6, x1, 1724, x2)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x33333332, -0x55555555, x1, 1728, x2)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x11111112, 0x33333332, 0x55555556, x1, 1732, x2)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333332, 0x4, x1, 1736, x2)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x3102, 0x33333332, 0xb503, x1, 1740, x2)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333332, 0x0, x1, 1744, x2)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x22222220, 0x33333332, 0x66666665, x1, 1748, x2)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x33333332, 0x33333332, 0x33333332, x1, 1752, x2)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x11111110, 0x33333332, 0x55555554, x1, 1756, x2)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x33333332, 0x2, x1, 1760, x2)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x3100, 0x33333332, 0xb504, x1, 1764, x2)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x33330230, 0x33333332, -0xb504, x1, 1768, x2)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x33333332, 0x66666666, x1, 1772, x2)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x33333332, 0x33333332, 0x33333333, x1, 1776, x2)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333332, 0x5, x1, 1780, x2)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x33333332, -0x55555556, x1, 1784, x2)
+
+inst_463:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x11111110, 0x33333332, 0x55555555, x1, 1788, x2)
+
+inst_464:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x33333332, 0x3, x1, 1792, x2)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0x55555554, 0xb505, x1, 1796, x2)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, 0x55555554, -0xb503, x1, 1800, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x55555554, 0x66666667, x1, 1804, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x11111114, 0x55555554, 0x33333334, x1, 1808, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x55555554, 0x6, x1, 1812, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555554, -0x55555555, x1, 1816, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x55555554, 0x55555554, 0x55555556, x1, 1820, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x55555554, 0x4, x1, 1824, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x1500, 0x55555554, 0xb503, x1, 1828, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555554, 0x0, x1, 1832, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x55555554, 0x66666665, x1, 1836, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x11111110, 0x55555554, 0x33333332, x1, 1840, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x55555554, 0x55555554, 0x55555554, x1, 1844, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555554, 0x2, x1, 1848, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0x55555554, 0xb504, x1, 1852, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, 0x55555554, -0xb504, x1, 1856, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x55555554, 0x66666666, x1, 1860, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x11111110, 0x55555554, 0x33333333, x1, 1864, x2)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x55555554, 0x5, x1, 1868, x2)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555554, -0x55555556, x1, 1872, x2)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x55555554, 0x55555554, 0x55555555, x1, 1876, x2)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x55555554, 0x3, x1, 1880, x2)
+
+inst_487:
+// rs1_val==2 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0xb505, x1, 1884, x2)
+
+inst_488:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, -0xb503, x1, 1888, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0x66666667, x1, 1892, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0x33333334, x1, 1896, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0x6, x1, 1900, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, -0x55555555, x1, 1904, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0x55555556, x1, 1908, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0x4, x1, 1912, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0xb503, x1, 1916, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0x0, x1, 1920, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0x66666665, x1, 1924, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0x33333332, x1, 1928, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0x55555554, x1, 1932, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0x2, x1, 1936, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0xb504, x1, 1940, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, -0xb504, x1, 1944, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0x66666666, x1, 1948, x2)
+
+inst_504:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0x33333333, x1, 1952, x2)
+
+inst_505:
+// rs1_val==2 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0x5, x1, 1956, x2)
+
+inst_506:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, -0x55555556, x1, 1960, x2)
+
+inst_507:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x2, 0x55555555, x1, 1964, x2)
+
+inst_508:
+// rs1_val==2 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x2, 0x3, x1, 1968, x2)
+
+inst_509:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0xb504, 0xb504, 0xb505, x1, 1972, x2)
+
+inst_510:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0xb504, -0xb503, x1, 1976, x2)
+
+inst_511:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x2404, 0xb504, 0x66666667, x1, 1980, x2)
+
+inst_512:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x3104, 0xb504, 0x33333334, x1, 1984, x2)
+
+inst_513:
+// rs1_val==46340 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0xb504, 0x6, x1, 1988, x2)
+
+inst_514:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0xa000, 0xb504, -0x55555555, x1, 1992, x2)
+
+inst_515:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0xb504, 0x55555556, x1, 1996, x2)
+
+inst_516:
+// rs1_val==46340 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0xb504, 0x4, x1, 2000, x2)
+
+inst_517:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xb500, 0xb504, 0xb503, x1, 2004, x2)
+
+inst_518:
+// rs1_val==46340 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0xb504, 0x0, x1, 2008, x2)
+
+inst_519:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x2404, 0xb504, 0x66666665, x1, 2012, x2)
+
+inst_520:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x3100, 0xb504, 0x33333332, x1, 2016, x2)
+
+inst_521:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0xb504, 0x55555554, x1, 2020, x2)
+
+inst_522:
+// rs1_val==46340 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0xb504, 0x2, x1, 2024, x2)
+
+inst_523:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xb504, 0xb504, 0xb504, x1, 2028, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0xb504, -0xb504, x1, 2032, x2)
+
+inst_525:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x2404, 0xb504, 0x66666666, x1, 2036, x2)
+
+inst_526:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x3100, 0xb504, 0x33333333, x1, 2040, x2)
+
+inst_527:
+// rs1_val==46340 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0xb504, 0x5, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_3)
+
+inst_528:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0xa000, 0xb504, -0x55555556, x1, 0, x2)
+
+inst_529:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x1504, 0xb504, 0x55555555, x1, 4, x2)
+
+inst_530:
+// rs1_val==46340 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0xb504, 0x3, x1, 8, x2)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x4, -0xb504, 0xb505, x1, 12, x2)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0xffff4afc, -0xb504, -0xb503, x1, 16, x2)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x66664264, -0xb504, 0x66666667, x1, 20, x2)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x33330234, -0xb504, 0x33333334, x1, 24, x2)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x4, -0xb504, 0x6, x1, 28, x2)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0xaaaa0aa8, -0xb504, -0x55555555, x1, 32, x2)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, -0xb504, 0x55555556, x1, 36, x2)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, -0xb504, 0x4, x1, 40, x2)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0xb504, 0xb503, x1, 44, x2)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0xb504, 0x0, x1, 48, x2)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x66664264, -0xb504, 0x66666665, x1, 52, x2)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x33330230, -0xb504, 0x33333332, x1, 56, x2)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, -0xb504, 0x55555554, x1, 60, x2)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0xb504, 0x2, x1, 64, x2)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x4, -0xb504, 0xb504, x1, 68, x2)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0xffff4afc, -0xb504, -0xb504, x1, 72, x2)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x66664264, -0xb504, 0x66666666, x1, 76, x2)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x33330230, -0xb504, 0x33333333, x1, 80, x2)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4, -0xb504, 0x5, x1, 84, x2)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0xaaaa0aa8, -0xb504, -0x55555556, x1, 88, x2)
+
+inst_551:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x55554054, -0xb504, 0x55555555, x1, 92, x2)
+
+inst_552:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x0, -0xb504, 0x3, x1, 96, x2)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x2404, 0x66666666, 0xb505, x1, 100, x2)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x66664264, 0x66666666, -0xb503, x1, 104, x2)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x66666666, 0x66666666, 0x66666667, x1, 108, x2)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x22222224, 0x66666666, 0x33333334, x1, 112, x2)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x6, 0x66666666, 0x6, x1, 116, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x66666666, -0x55555555, x1, 120, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x44444446, 0x66666666, 0x55555556, x1, 124, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x66666666, 0x4, x1, 128, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x2402, 0x66666666, 0xb503, x1, 132, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x66666666, 0x0, x1, 136, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(and, x12, x10, x11, 0x66666664, 0x66666666, 0x66666665, x1, 140, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x66666666, 0x33333332, x1, 144, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x66666666, 0x55555554, x1, 148, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x66666666, 0x2, x1, 152, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x2404, 0x66666666, 0xb504, x1, 156, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(and, x12, x10, x11, 0x66664264, 0x66666666, -0xb504, x1, 160, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(and, x12, x10, x11, 0x66666666, 0x66666666, 0x66666666, x1, 164, x2)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x66666666, 0x33333333, x1, 168, x2)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(and, x12, x10, x11, 0x4, 0x66666666, 0x5, x1, 172, x2)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x22222222, 0x66666666, -0x55555556, x1, 176, x2)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x44444444, 0x66666666, 0x55555555, x1, 180, x2)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x66666666, 0x3, x1, 184, x2)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(and, x12, x10, x11, 0x3101, 0x33333333, 0xb505, x1, 188, x2)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x33330231, 0x33333333, -0xb503, x1, 192, x2)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(and, x12, x10, x11, 0x22222223, 0x33333333, 0x66666667, x1, 196, x2)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(and, x12, x10, x11, 0x33333330, 0x33333333, 0x33333334, x1, 200, x2)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(and, x12, x10, x11, 0x2, 0x33333333, 0x6, x1, 204, x2)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(and, x12, x10, x11, 0x22222223, 0x33333333, -0x55555555, x1, 208, x2)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(and, x12, x10, x11, 0x11111112, 0x33333333, 0x55555556, x1, 212, x2)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(and, x12, x10, x11, 0x0, 0x33333333, 0x4, x1, 216, x2)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(and, x12, x10, x11, 0x3103, 0x33333333, 0xb503, x1, 220, x2)
+
+inst_584:
+// rs2_val == -536870913, rs1_val == 262144
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:-0x20000001
+TEST_RR_OP(and, x12, x10, x11, 0x40000, 0x40000, -0x20000001, x1, 224, x2)
+
+inst_585:
+// rs2_val == -268435457, rs1_val == 1048576
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:-0x10000001
+TEST_RR_OP(and, x12, x10, x11, 0x100000, 0x100000, -0x10000001, x1, 228, x2)
+
+inst_586:
+// rs2_val == -524289, rs1_val == -3
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x80001
+TEST_RR_OP(and, x12, x10, x11, 0xfff7fffd, -0x3, -0x80001, x1, 232, x2)
+
+inst_587:
+// rs2_val == -131073,
+// opcode: and ; op1:x10; op2:x11; dest:x12; op1val:-0xa; op2val:-0x20001
+TEST_RR_OP(and, x12, x10, x11, 0xfffdfff6, -0xa, -0x20001, x1, 236, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_3:
+ .fill 60*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/andi-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/andi-01.S
new file mode 100644
index 000000000..3dcd009d2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/andi-01.S
@@ -0,0 +1,2850 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the andi instruction of the RISC-V E extension for the andi covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",andi)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rd, rs1==x14, rd==x11, imm_val == (-2**(12-1)), rs1_val == 8, rs1_val > 0 and imm_val < 0, rs1_val != imm_val, imm_val == -2048
+// opcode: andi ; op1:x14; dest:x11; op1val:0x8; immval:-0x800
+TEST_IMM_OP( andi, x11, x14, 0x0, 0x8, -0x800, x1, 0, x8)
+
+inst_1:
+// rs1 == rd, rs1==x2, rd==x2, rs1_val == 2147483647, rs1_val > 0 and imm_val > 0, rs1_val == (2**(xlen-1)-1)
+// opcode: andi ; op1:x2; dest:x2; op1val:0x7fffffff; immval:0x2c
+TEST_IMM_OP( andi, x2, x2, 0x2c, 0x7fffffff, 0x2c, x1, 4, x8)
+
+inst_2:
+// rs1==x10, rd==x5, rs1_val == -1073741825, rs1_val < 0 and imm_val > 0, imm_val == 4
+// opcode: andi ; op1:x10; dest:x5; op1val:-0x40000001; immval:0x4
+TEST_IMM_OP( andi, x5, x10, 0x4, -0x40000001, 0x4, x1, 8, x8)
+
+inst_3:
+// rs1==x9, rd==x14, rs1_val == -536870913,
+// opcode: andi ; op1:x9; dest:x14; op1val:-0x20000001; immval:0x7
+TEST_IMM_OP( andi, x14, x9, 0x7, -0x20000001, 0x7, x1, 12, x8)
+
+inst_4:
+// rs1==x12, rd==x3, rs1_val == -268435457, imm_val == 64
+// opcode: andi ; op1:x12; dest:x3; op1val:-0x10000001; immval:0x40
+TEST_IMM_OP( andi, x3, x12, 0x40, -0x10000001, 0x40, x1, 16, x8)
+
+inst_5:
+// rs1==x4, rd==x7, rs1_val == -134217729, imm_val == -5, rs1_val < 0 and imm_val < 0
+// opcode: andi ; op1:x4; dest:x7; op1val:-0x8000001; immval:-0x5
+TEST_IMM_OP( andi, x7, x4, 0xf7fffffb, -0x8000001, -0x5, x1, 20, x8)
+
+inst_6:
+// rs1==x6, rd==x9, rs1_val == -67108865,
+// opcode: andi ; op1:x6; dest:x9; op1val:-0x4000001; immval:0x332
+TEST_IMM_OP( andi, x9, x6, 0x332, -0x4000001, 0x332, x1, 24, x8)
+
+inst_7:
+// rs1==x7, rd==x15, rs1_val == -33554433,
+// opcode: andi ; op1:x7; dest:x15; op1val:-0x2000001; immval:0x6
+TEST_IMM_OP( andi, x15, x7, 0x6, -0x2000001, 0x6, x1, 28, x9)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_8:
+// rs1==x15, rd==x0, rs1_val == -16777217, imm_val == 2
+// opcode: andi ; op1:x15; dest:x0; op1val:-0x1000001; immval:0x2
+TEST_IMM_OP( andi, x0, x15, 0, -0x1000001, 0x2, x2, 0, x9)
+
+inst_9:
+// rs1==x3, rd==x6, rs1_val == -8388609,
+// opcode: andi ; op1:x3; dest:x6; op1val:-0x800001; immval:0x2
+TEST_IMM_OP( andi, x6, x3, 0x2, -0x800001, 0x2, x2, 4, x9)
+
+inst_10:
+// rs1==x8, rd==x10, rs1_val == -4194305, imm_val == 16
+// opcode: andi ; op1:x8; dest:x10; op1val:-0x400001; immval:0x10
+TEST_IMM_OP( andi, x10, x8, 0x10, -0x400001, 0x10, x2, 8, x9)
+
+inst_11:
+// rs1==x5, rd==x4, rs1_val == -2097153, imm_val == -65
+// opcode: andi ; op1:x5; dest:x4; op1val:-0x200001; immval:-0x41
+TEST_IMM_OP( andi, x4, x5, 0xffdfffbf, -0x200001, -0x41, x2, 12, x9)
+
+inst_12:
+// rs1==x13, rd==x1, rs1_val == -1048577,
+// opcode: andi ; op1:x13; dest:x1; op1val:-0x100001; immval:0x6
+TEST_IMM_OP( andi, x1, x13, 0x6, -0x100001, 0x6, x2, 16, x9)
+
+inst_13:
+// rs1==x1, rd==x8, rs1_val == -524289,
+// opcode: andi ; op1:x1; dest:x8; op1val:-0x80001; immval:-0x4
+TEST_IMM_OP( andi, x8, x1, 0xfff7fffc, -0x80001, -0x4, x2, 20, x9)
+
+inst_14:
+// rs1==x11, rd==x12, rs1_val == -262145, imm_val == (2**(12-1)-1), imm_val == 2047
+// opcode: andi ; op1:x11; dest:x12; op1val:-0x40001; immval:0x7ff
+TEST_IMM_OP( andi, x12, x11, 0x7ff, -0x40001, 0x7ff, x2, 24, x9)
+
+inst_15:
+// rs1==x0, rd==x13, rs1_val == -131073, imm_val == 1365
+// opcode: andi ; op1:x0; dest:x13; op1val:0x0; immval:0x555
+TEST_IMM_OP( andi, x13, x0, 0x0, 0x0, 0x555, x2, 28, x1)
+
+inst_16:
+// rs1_val == -65537,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x10001; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x334, -0x10001, 0x334, x2, 32, x1)
+
+inst_17:
+// rs1_val == -32769,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x8001; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x3, -0x8001, 0x3, x2, 36, x1)
+
+inst_18:
+// rs1_val == -16385,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x4001; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x4001, 0x2, x2, 40, x1)
+
+inst_19:
+// rs1_val == -8193, imm_val == 512
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x2001; immval:0x200
+TEST_IMM_OP( andi, x11, x10, 0x200, -0x2001, 0x200, x2, 44, x1)
+
+inst_20:
+// rs1_val == -4097, imm_val == -1366
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x1001; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xffffeaaa, -0x1001, -0x556, x2, 48, x1)
+
+inst_21:
+// rs1_val == -2049, imm_val == 8
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x801; immval:0x8
+TEST_IMM_OP( andi, x11, x10, 0x8, -0x801, 0x8, x2, 52, x1)
+
+inst_22:
+// rs1_val == -1025,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x401; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x332, -0x401, 0x332, x2, 56, x1)
+
+inst_23:
+// rs1_val == -513, imm_val == 128
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x201; immval:0x80
+TEST_IMM_OP( andi, x11, x10, 0x80, -0x201, 0x80, x2, 60, x1)
+
+inst_24:
+// rs1_val == -257,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x101; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x3, -0x101, 0x3, x2, 64, x1)
+
+inst_25:
+// rs1_val == -129,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x81; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x2d, -0x81, 0x2d, x2, 68, x1)
+
+inst_26:
+// rs1_val == -65,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x41; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xffffff93, -0x41, -0x2d, x2, 72, x1)
+
+inst_27:
+// rs1_val == -33,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x21; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xffffffd3, -0x21, -0x2d, x2, 76, x1)
+
+inst_28:
+// rs1_val == -17,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x11; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xfffffaaa, -0x11, -0x556, x2, 80, x1)
+
+inst_29:
+// rs1_val == -9,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x9; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x334, -0x9, 0x334, x2, 84, x1)
+
+inst_30:
+// rs1_val == -5,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x5; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x1, -0x5, 0x5, x2, 88, x1)
+
+inst_31:
+// rs1_val == -3,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x3; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, -0x3, 0x4, x2, 92, x1)
+
+inst_32:
+// rs1_val == -2, imm_val == -1025
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x2; immval:-0x401
+TEST_IMM_OP( andi, x11, x10, 0xfffffbfe, -0x2, -0x401, x2, 96, x1)
+
+inst_33:
+// imm_val == -513,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x201
+TEST_IMM_OP( andi, x11, x10, 0x66666465, 0x66666665, -0x201, x2, 100, x1)
+
+inst_34:
+// imm_val == -257, rs1_val == 33554432
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2000000; immval:-0x101
+TEST_IMM_OP( andi, x11, x10, 0x2000000, 0x2000000, -0x101, x2, 104, x1)
+
+inst_35:
+// imm_val == -129, rs1_val == 65536
+// opcode: andi ; op1:x10; dest:x11; op1val:0x10000; immval:-0x81
+TEST_IMM_OP( andi, x11, x10, 0x10000, 0x10000, -0x81, x2, 108, x1)
+
+inst_36:
+// imm_val == -33,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x8; immval:-0x21
+TEST_IMM_OP( andi, x11, x10, 0x8, 0x8, -0x21, x2, 112, x1)
+
+inst_37:
+// imm_val == -17,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x11
+TEST_IMM_OP( andi, x11, x10, 0x55555546, 0x55555556, -0x11, x2, 116, x1)
+
+inst_38:
+// imm_val == -9, rs1_val == 524288
+// opcode: andi ; op1:x10; dest:x11; op1val:0x80000; immval:-0x9
+TEST_IMM_OP( andi, x11, x10, 0x80000, 0x80000, -0x9, x2, 120, x1)
+
+inst_39:
+// imm_val == -3, rs1_val == 1
+// opcode: andi ; op1:x10; dest:x11; op1val:0x1; immval:-0x3
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x1, -0x3, x2, 124, x1)
+
+inst_40:
+// imm_val == -2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:-0x2
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, -0x2, x2, 128, x1)
+
+inst_41:
+// rs1_val == -2147483648, imm_val == 0, rs1_val == (-2**(xlen-1))
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x80000000; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x80000000, 0x0, x2, 132, x1)
+
+inst_42:
+// rs1_val == 1073741824,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x40000000; immval:0x7ff
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x40000000, 0x7ff, x2, 136, x1)
+
+inst_43:
+// rs1_val == 536870912,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x20000000; immval:0x7ff
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x20000000, 0x7ff, x2, 140, x1)
+
+inst_44:
+// rs1_val == 268435456,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x10000000; immval:0x7
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x10000000, 0x7, x2, 144, x1)
+
+inst_45:
+// rs1_val == 134217728,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x8000000; immval:0x200
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x8000000, 0x200, x2, 148, x1)
+
+inst_46:
+// rs1_val == 67108864,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4000000; immval:-0x201
+TEST_IMM_OP( andi, x11, x10, 0x4000000, 0x4000000, -0x201, x2, 152, x1)
+
+inst_47:
+// rs1_val == 16777216,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x1000000; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x1000000, 0x2, x2, 156, x1)
+
+inst_48:
+// rs1_val == 8388608,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x800000; immval:-0x401
+TEST_IMM_OP( andi, x11, x10, 0x800000, 0x800000, -0x401, x2, 160, x1)
+
+inst_49:
+// rs1_val == 4194304,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x400000; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x400000, 0x0, x2, 164, x1)
+
+inst_50:
+// rs1_val == 2097152,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x200000; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x200000, 0x0, x2, 168, x1)
+
+inst_51:
+// rs1_val == 1048576,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x100000; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x100000, 0x4, x2, 172, x1)
+
+inst_52:
+// rs1_val == 262144,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x40000; immval:-0x7
+TEST_IMM_OP( andi, x11, x10, 0x40000, 0x40000, -0x7, x2, 176, x1)
+
+inst_53:
+// rs1_val == 131072,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x20000; immval:-0x5
+TEST_IMM_OP( andi, x11, x10, 0x20000, 0x20000, -0x5, x2, 180, x1)
+
+inst_54:
+// rs1_val == 32768,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x8000; immval:-0x81
+TEST_IMM_OP( andi, x11, x10, 0x8000, 0x8000, -0x81, x2, 184, x1)
+
+inst_55:
+// rs1_val == 16384,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4000; immval:-0x7
+TEST_IMM_OP( andi, x11, x10, 0x4000, 0x4000, -0x7, x2, 188, x1)
+
+inst_56:
+// rs1_val == 8192,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2000; immval:0x7ff
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2000, 0x7ff, x2, 192, x1)
+
+inst_57:
+// rs1_val == 4096, imm_val == 32
+// opcode: andi ; op1:x10; dest:x11; op1val:0x1000; immval:0x20
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x1000, 0x20, x2, 196, x1)
+
+inst_58:
+// rs1_val == 2048,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x800; immval:-0x41
+TEST_IMM_OP( andi, x11, x10, 0x800, 0x800, -0x41, x2, 200, x1)
+
+inst_59:
+// rs1_val == 1024,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x400; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x400, 0x400, 0x666, x2, 204, x1)
+
+inst_60:
+// rs1_val == 512,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x200; immval:-0x3
+TEST_IMM_OP( andi, x11, x10, 0x200, 0x200, -0x3, x2, 208, x1)
+
+inst_61:
+// rs1_val == 256,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x100; immval:-0x6
+TEST_IMM_OP( andi, x11, x10, 0x100, 0x100, -0x6, x2, 212, x1)
+
+inst_62:
+// rs1_val == 128,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x80; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x80, 0x554, x2, 216, x1)
+
+inst_63:
+// rs1_val == 64,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x40; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x40, 0x40, 0x556, x2, 220, x1)
+
+inst_64:
+// rs1_val == 32, imm_val == 1024
+// opcode: andi ; op1:x10; dest:x11; op1val:0x20; immval:0x400
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x20, 0x400, x2, 224, x1)
+
+inst_65:
+// rs1_val == 16, imm_val == 256
+// opcode: andi ; op1:x10; dest:x11; op1val:0x10; immval:0x100
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x10, 0x100, x2, 228, x1)
+
+inst_66:
+// rs1_val == 4, rs1_val==4 and imm_val==1638
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x666, x2, 232, x1)
+
+inst_67:
+// rs1_val == 2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x10
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x10, x2, 236, x1)
+
+inst_68:
+// imm_val == 1,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x1
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x66666665, 0x1, x2, 240, x1)
+
+inst_69:
+// rs1_val==46341 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb505, 0x2e, x2, 244, x1)
+
+inst_70:
+// rs1_val==46341 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0xb504, 0xb505, -0x2c, x2, 248, x1)
+
+inst_71:
+// rs1_val==46341 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x405, 0xb505, 0x667, x2, 252, x1)
+
+inst_72:
+// rs1_val==46341 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x104, 0xb505, 0x334, x2, 256, x1)
+
+inst_73:
+// rs1_val==46341 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb505, 0x6, x2, 260, x1)
+
+inst_74:
+// rs1_val==46341 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0xb001, 0xb505, -0x555, x2, 264, x1)
+
+inst_75:
+// rs1_val==46341 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x504, 0xb505, 0x556, x2, 268, x1)
+
+inst_76:
+// rs1_val==46341 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb505, 0x4, x2, 272, x1)
+
+inst_77:
+// rs1_val==46341 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb505, 0x2c, x2, 276, x1)
+
+inst_78:
+// rs1_val==46341 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0xb505, 0x0, x2, 280, x1)
+
+inst_79:
+// rs1_val==46341 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x405, 0xb505, 0x665, x2, 284, x1)
+
+inst_80:
+// rs1_val==46341 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x100, 0xb505, 0x332, x2, 288, x1)
+
+inst_81:
+// rs1_val==46341 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x504, 0xb505, 0x554, x2, 292, x1)
+
+inst_82:
+// rs1_val==46341 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0xb505, 0x2, x2, 296, x1)
+
+inst_83:
+// rs1_val==46341 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x5, 0xb505, 0x2d, x2, 300, x1)
+
+inst_84:
+// rs1_val==46341 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xb501, 0xb505, -0x2d, x2, 304, x1)
+
+inst_85:
+// rs1_val==46341 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x404, 0xb505, 0x666, x2, 308, x1)
+
+inst_86:
+// rs1_val==46341 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x101, 0xb505, 0x333, x2, 312, x1)
+
+inst_87:
+// rs1_val==46341 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x5, 0xb505, 0x5, x2, 316, x1)
+
+inst_88:
+// rs1_val==46341 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xb000, 0xb505, -0x556, x2, 320, x1)
+
+inst_89:
+// rs1_val==46341 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x505, 0xb505, 0x555, x2, 324, x1)
+
+inst_90:
+// rs1_val==46341 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb505; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x1, 0xb505, 0x3, x2, 328, x1)
+
+inst_91:
+// rs1_val==-46339 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x2c, -0xb503, 0x2e, x2, 332, x1)
+
+inst_92:
+// rs1_val==-46339 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0xffff4ad4, -0xb503, -0x2c, x2, 336, x1)
+
+inst_93:
+// rs1_val==-46339 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x265, -0xb503, 0x667, x2, 340, x1)
+
+inst_94:
+// rs1_val==-46339 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x234, -0xb503, 0x334, x2, 344, x1)
+
+inst_95:
+// rs1_val==-46339 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, -0xb503, 0x6, x2, 348, x1)
+
+inst_96:
+// rs1_val==-46339 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0xffff4aa9, -0xb503, -0x555, x2, 352, x1)
+
+inst_97:
+// rs1_val==-46339 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x54, -0xb503, 0x556, x2, 356, x1)
+
+inst_98:
+// rs1_val==-46339 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, -0xb503, 0x4, x2, 360, x1)
+
+inst_99:
+// rs1_val==-46339 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x2c, -0xb503, 0x2c, x2, 364, x1)
+
+inst_100:
+// rs1_val==-46339 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, -0xb503, 0x0, x2, 368, x1)
+
+inst_101:
+// rs1_val==-46339 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x265, -0xb503, 0x665, x2, 372, x1)
+
+inst_102:
+// rs1_val==-46339 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x230, -0xb503, 0x332, x2, 376, x1)
+
+inst_103:
+// rs1_val==-46339 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x54, -0xb503, 0x554, x2, 380, x1)
+
+inst_104:
+// rs1_val==-46339 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, -0xb503, 0x2, x2, 384, x1)
+
+inst_105:
+// rs1_val==-46339 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x2d, -0xb503, 0x2d, x2, 388, x1)
+
+inst_106:
+// rs1_val==-46339 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xffff4ad1, -0xb503, -0x2d, x2, 392, x1)
+
+inst_107:
+// rs1_val==-46339 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x264, -0xb503, 0x666, x2, 396, x1)
+
+inst_108:
+// rs1_val==-46339 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x231, -0xb503, 0x333, x2, 400, x1)
+
+inst_109:
+// rs1_val==-46339 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x5, -0xb503, 0x5, x2, 404, x1)
+
+inst_110:
+// rs1_val==-46339 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xffff4aa8, -0xb503, -0x556, x2, 408, x1)
+
+inst_111:
+// rs1_val==-46339 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x55, -0xb503, 0x555, x2, 412, x1)
+
+inst_112:
+// rs1_val==-46339 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb503; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x1, -0xb503, 0x3, x2, 416, x1)
+
+inst_113:
+// rs1_val==1717986919 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x26, 0x66666667, 0x2e, x2, 420, x1)
+
+inst_114:
+// rs1_val==1717986919 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x66666644, 0x66666667, -0x2c, x2, 424, x1)
+
+inst_115:
+// rs1_val==1717986919 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x667, 0x66666667, 0x667, x2, 428, x1)
+
+inst_116:
+// rs1_val==1717986919 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x224, 0x66666667, 0x334, x2, 432, x1)
+
+inst_117:
+// rs1_val==1717986919 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x66666667, 0x6, x2, 436, x1)
+
+inst_118:
+// rs1_val==1717986919 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x66666223, 0x66666667, -0x555, x2, 440, x1)
+
+inst_119:
+// rs1_val==1717986919 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x446, 0x66666667, 0x556, x2, 444, x1)
+
+inst_120:
+// rs1_val==1717986919 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x66666667, 0x4, x2, 448, x1)
+
+inst_121:
+// rs1_val==1717986919 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x24, 0x66666667, 0x2c, x2, 452, x1)
+
+inst_122:
+// rs1_val==1717986919 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x66666667, 0x0, x2, 456, x1)
+
+inst_123:
+// rs1_val==1717986919 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x665, 0x66666667, 0x665, x2, 460, x1)
+
+inst_124:
+// rs1_val==1717986919 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x222, 0x66666667, 0x332, x2, 464, x1)
+
+inst_125:
+// rs1_val==1717986919 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x66666667, 0x554, x2, 468, x1)
+
+inst_126:
+// rs1_val==1717986919 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x66666667, 0x2, x2, 472, x1)
+
+inst_127:
+// rs1_val==1717986919 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x25, 0x66666667, 0x2d, x2, 476, x1)
+
+inst_128:
+// rs1_val==1717986919 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x66666643, 0x66666667, -0x2d, x2, 480, x1)
+
+inst_129:
+// rs1_val==1717986919 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x666, 0x66666667, 0x666, x2, 484, x1)
+
+inst_130:
+// rs1_val==1717986919 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x223, 0x66666667, 0x333, x2, 488, x1)
+
+inst_131:
+// rs1_val==1717986919 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x66666667, 0x5, x2, 492, x1)
+
+inst_132:
+// rs1_val==1717986919 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x66666222, 0x66666667, -0x556, x2, 496, x1)
+
+inst_133:
+// rs1_val==1717986919 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x445, 0x66666667, 0x555, x2, 500, x1)
+
+inst_134:
+// rs1_val==1717986919 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666667; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x3, 0x66666667, 0x3, x2, 504, x1)
+
+inst_135:
+// rs1_val==858993460 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x24, 0x33333334, 0x2e, x2, 508, x1)
+
+inst_136:
+// rs1_val==858993460 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x33333314, 0x33333334, -0x2c, x2, 512, x1)
+
+inst_137:
+// rs1_val==858993460 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x224, 0x33333334, 0x667, x2, 516, x1)
+
+inst_138:
+// rs1_val==858993460 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x334, 0x33333334, 0x334, x2, 520, x1)
+
+inst_139:
+// rs1_val==858993460 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x33333334, 0x6, x2, 524, x1)
+
+inst_140:
+// rs1_val==858993460 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x33333220, 0x33333334, -0x555, x2, 528, x1)
+
+inst_141:
+// rs1_val==858993460 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x114, 0x33333334, 0x556, x2, 532, x1)
+
+inst_142:
+// rs1_val==858993460 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x33333334, 0x4, x2, 536, x1)
+
+inst_143:
+// rs1_val==858993460 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x24, 0x33333334, 0x2c, x2, 540, x1)
+
+inst_144:
+// rs1_val==858993460 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x33333334, 0x0, x2, 544, x1)
+
+inst_145:
+// rs1_val==858993460 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x224, 0x33333334, 0x665, x2, 548, x1)
+
+inst_146:
+// rs1_val==858993460 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x330, 0x33333334, 0x332, x2, 552, x1)
+
+inst_147:
+// rs1_val==858993460 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x114, 0x33333334, 0x554, x2, 556, x1)
+
+inst_148:
+// rs1_val==858993460 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x33333334, 0x2, x2, 560, x1)
+
+inst_149:
+// rs1_val==858993460 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x24, 0x33333334, 0x2d, x2, 564, x1)
+
+inst_150:
+// rs1_val==858993460 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x33333310, 0x33333334, -0x2d, x2, 568, x1)
+
+inst_151:
+// rs1_val==858993460 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x224, 0x33333334, 0x666, x2, 572, x1)
+
+inst_152:
+// rs1_val==858993460 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x330, 0x33333334, 0x333, x2, 576, x1)
+
+inst_153:
+// rs1_val==858993460 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x33333334, 0x5, x2, 580, x1)
+
+inst_154:
+// rs1_val==858993460 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x33333220, 0x33333334, -0x556, x2, 584, x1)
+
+inst_155:
+// rs1_val==858993460 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x114, 0x33333334, 0x555, x2, 588, x1)
+
+inst_156:
+// rs1_val==858993460 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333334; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x33333334, 0x3, x2, 592, x1)
+
+inst_157:
+// rs1_val==6 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x6, 0x2e, x2, 596, x1)
+
+inst_158:
+// rs1_val==6 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, -0x2c, x2, 600, x1)
+
+inst_159:
+// rs1_val==6 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x6, 0x667, x2, 604, x1)
+
+inst_160:
+// rs1_val==6 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, 0x334, x2, 608, x1)
+
+inst_161:
+// rs1_val==6 and imm_val==6, rs1_val == imm_val
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x6, 0x6, x2, 612, x1)
+
+inst_162:
+// rs1_val==6 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x6, -0x555, x2, 616, x1)
+
+inst_163:
+// rs1_val==6 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x6, 0x556, x2, 620, x1)
+
+inst_164:
+// rs1_val==6 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, 0x4, x2, 624, x1)
+
+inst_165:
+// rs1_val==6 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, 0x2c, x2, 628, x1)
+
+inst_166:
+// rs1_val==6 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x6, 0x0, x2, 632, x1)
+
+inst_167:
+// rs1_val==6 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, 0x665, x2, 636, x1)
+
+inst_168:
+// rs1_val==6 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x6, 0x332, x2, 640, x1)
+
+inst_169:
+// rs1_val==6 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, 0x554, x2, 644, x1)
+
+inst_170:
+// rs1_val==6 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x6, 0x2, x2, 648, x1)
+
+inst_171:
+// rs1_val==6 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, 0x2d, x2, 652, x1)
+
+inst_172:
+// rs1_val==6 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x6, -0x2d, x2, 656, x1)
+
+inst_173:
+// rs1_val==6 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x6, 0x666, x2, 660, x1)
+
+inst_174:
+// rs1_val==6 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x6, 0x333, x2, 664, x1)
+
+inst_175:
+// rs1_val==6 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, 0x5, x2, 668, x1)
+
+inst_176:
+// rs1_val==6 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x6, -0x556, x2, 672, x1)
+
+inst_177:
+// rs1_val==6 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x6, 0x555, x2, 676, x1)
+
+inst_178:
+// rs1_val==6 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x6; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x6, 0x3, x2, 680, x1)
+
+inst_179:
+// rs1_val==-1431655765 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x2a, -0x55555555, 0x2e, x2, 684, x1)
+
+inst_180:
+// rs1_val==-1431655765 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0xaaaaaa80, -0x55555555, -0x2c, x2, 688, x1)
+
+inst_181:
+// rs1_val==-1431655765 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x223, -0x55555555, 0x667, x2, 692, x1)
+
+inst_182:
+// rs1_val==-1431655765 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x220, -0x55555555, 0x334, x2, 696, x1)
+
+inst_183:
+// rs1_val==-1431655765 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x55555555, 0x6, x2, 700, x1)
+
+inst_184:
+// rs1_val==-1431655765 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0xaaaaaaab, -0x55555555, -0x555, x2, 704, x1)
+
+inst_185:
+// rs1_val==-1431655765 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x55555555, 0x556, x2, 708, x1)
+
+inst_186:
+// rs1_val==-1431655765 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x55555555, 0x4, x2, 712, x1)
+
+inst_187:
+// rs1_val==-1431655765 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x28, -0x55555555, 0x2c, x2, 716, x1)
+
+inst_188:
+// rs1_val==-1431655765 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x55555555, 0x0, x2, 720, x1)
+
+inst_189:
+// rs1_val==-1431655765 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x221, -0x55555555, 0x665, x2, 724, x1)
+
+inst_190:
+// rs1_val==-1431655765 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x222, -0x55555555, 0x332, x2, 728, x1)
+
+inst_191:
+// rs1_val==-1431655765 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x55555555, 0x554, x2, 732, x1)
+
+inst_192:
+// rs1_val==-1431655765 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x55555555, 0x2, x2, 736, x1)
+
+inst_193:
+// rs1_val==-1431655765 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x29, -0x55555555, 0x2d, x2, 740, x1)
+
+inst_194:
+// rs1_val==-1431655765 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xaaaaaa83, -0x55555555, -0x2d, x2, 744, x1)
+
+inst_195:
+// rs1_val==-1431655765 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x222, -0x55555555, 0x666, x2, 748, x1)
+
+inst_196:
+// rs1_val==-1431655765 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x223, -0x55555555, 0x333, x2, 752, x1)
+
+inst_197:
+// rs1_val==-1431655765 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x1, -0x55555555, 0x5, x2, 756, x1)
+
+inst_198:
+// rs1_val==-1431655765 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xaaaaaaaa, -0x55555555, -0x556, x2, 760, x1)
+
+inst_199:
+// rs1_val==-1431655765 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x1, -0x55555555, 0x555, x2, 764, x1)
+
+inst_200:
+// rs1_val==-1431655765 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x3, -0x55555555, 0x3, x2, 768, x1)
+
+inst_201:
+// rs1_val==1431655766 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x55555556, 0x2e, x2, 772, x1)
+
+inst_202:
+// rs1_val==1431655766 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x55555554, 0x55555556, -0x2c, x2, 776, x1)
+
+inst_203:
+// rs1_val==1431655766 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x446, 0x55555556, 0x667, x2, 780, x1)
+
+inst_204:
+// rs1_val==1431655766 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x114, 0x55555556, 0x334, x2, 784, x1)
+
+inst_205:
+// rs1_val==1431655766 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x55555556, 0x6, x2, 788, x1)
+
+inst_206:
+// rs1_val==1431655766 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x55555002, 0x55555556, -0x555, x2, 792, x1)
+
+inst_207:
+// rs1_val==1431655766 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x556, 0x55555556, 0x556, x2, 796, x1)
+
+inst_208:
+// rs1_val==1431655766 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555556, 0x4, x2, 800, x1)
+
+inst_209:
+// rs1_val==1431655766 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555556, 0x2c, x2, 804, x1)
+
+inst_210:
+// rs1_val==1431655766 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x55555556, 0x0, x2, 808, x1)
+
+inst_211:
+// rs1_val==1431655766 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x55555556, 0x665, x2, 812, x1)
+
+inst_212:
+// rs1_val==1431655766 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x112, 0x55555556, 0x332, x2, 816, x1)
+
+inst_213:
+// rs1_val==1431655766 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x554, 0x55555556, 0x554, x2, 820, x1)
+
+inst_214:
+// rs1_val==1431655766 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x55555556, 0x2, x2, 824, x1)
+
+inst_215:
+// rs1_val==1431655766 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555556, 0x2d, x2, 828, x1)
+
+inst_216:
+// rs1_val==1431655766 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x55555552, 0x55555556, -0x2d, x2, 832, x1)
+
+inst_217:
+// rs1_val==1431655766 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x446, 0x55555556, 0x666, x2, 836, x1)
+
+inst_218:
+// rs1_val==1431655766 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x112, 0x55555556, 0x333, x2, 840, x1)
+
+inst_219:
+// rs1_val==1431655766 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555556, 0x5, x2, 844, x1)
+
+inst_220:
+// rs1_val==1431655766 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x55555002, 0x55555556, -0x556, x2, 848, x1)
+
+inst_221:
+// rs1_val==1431655766 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x554, 0x55555556, 0x555, x2, 852, x1)
+
+inst_222:
+// rs1_val==1431655766 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555556; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x55555556, 0x3, x2, 856, x1)
+
+inst_223:
+// rs1_val==4 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x2e, x2, 860, x1)
+
+inst_224:
+// rs1_val==4 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, -0x2c, x2, 864, x1)
+
+inst_225:
+// rs1_val==4 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x667, x2, 868, x1)
+
+inst_226:
+// rs1_val==4 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x334, x2, 872, x1)
+
+inst_227:
+// rs1_val==4 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x6, x2, 876, x1)
+
+inst_228:
+// rs1_val==4 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x4, -0x555, x2, 880, x1)
+
+inst_229:
+// rs1_val==4 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x556, x2, 884, x1)
+
+inst_230:
+// rs1_val==4 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x4, x2, 888, x1)
+
+inst_231:
+// rs1_val==4 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x2c, x2, 892, x1)
+
+inst_232:
+// rs1_val==4 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x4, 0x0, x2, 896, x1)
+
+inst_233:
+// rs1_val==4 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x665, x2, 900, x1)
+
+inst_234:
+// rs1_val==4 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x4, 0x332, x2, 904, x1)
+
+inst_235:
+// rs1_val==4 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x554, x2, 908, x1)
+
+inst_236:
+// rs1_val==4 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x4, 0x2, x2, 912, x1)
+
+inst_237:
+// rs1_val==4 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x2d, x2, 916, x1)
+
+inst_238:
+// rs1_val==4 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x4, -0x2d, x2, 920, x1)
+
+inst_239:
+// rs1_val==4 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x4, 0x333, x2, 924, x1)
+
+inst_240:
+// rs1_val==4 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x5, x2, 928, x1)
+
+inst_241:
+// rs1_val==4 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x4, -0x556, x2, 932, x1)
+
+inst_242:
+// rs1_val==4 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x4, 0x555, x2, 936, x1)
+
+inst_243:
+// rs1_val==4 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x4; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x4, 0x3, x2, 940, x1)
+
+inst_244:
+// rs1_val==46339 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x2, 0xb503, 0x2e, x2, 944, x1)
+
+inst_245:
+// rs1_val==46339 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0xb500, 0xb503, -0x2c, x2, 948, x1)
+
+inst_246:
+// rs1_val==46339 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x403, 0xb503, 0x667, x2, 952, x1)
+
+inst_247:
+// rs1_val==46339 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x100, 0xb503, 0x334, x2, 956, x1)
+
+inst_248:
+// rs1_val==46339 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x2, 0xb503, 0x6, x2, 960, x1)
+
+inst_249:
+// rs1_val==46339 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0xb003, 0xb503, -0x555, x2, 964, x1)
+
+inst_250:
+// rs1_val==46339 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x502, 0xb503, 0x556, x2, 968, x1)
+
+inst_251:
+// rs1_val==46339 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, 0xb503, 0x4, x2, 972, x1)
+
+inst_252:
+// rs1_val==46339 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x0, 0xb503, 0x2c, x2, 976, x1)
+
+inst_253:
+// rs1_val==46339 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0xb503, 0x0, x2, 980, x1)
+
+inst_254:
+// rs1_val==46339 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x401, 0xb503, 0x665, x2, 984, x1)
+
+inst_255:
+// rs1_val==46339 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x102, 0xb503, 0x332, x2, 988, x1)
+
+inst_256:
+// rs1_val==46339 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x500, 0xb503, 0x554, x2, 992, x1)
+
+inst_257:
+// rs1_val==46339 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0xb503, 0x2, x2, 996, x1)
+
+inst_258:
+// rs1_val==46339 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x1, 0xb503, 0x2d, x2, 1000, x1)
+
+inst_259:
+// rs1_val==46339 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xb503, 0xb503, -0x2d, x2, 1004, x1)
+
+inst_260:
+// rs1_val==46339 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x402, 0xb503, 0x666, x2, 1008, x1)
+
+inst_261:
+// rs1_val==46339 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x103, 0xb503, 0x333, x2, 1012, x1)
+
+inst_262:
+// rs1_val==46339 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x1, 0xb503, 0x5, x2, 1016, x1)
+
+inst_263:
+// rs1_val==46339 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xb002, 0xb503, -0x556, x2, 1020, x1)
+
+inst_264:
+// rs1_val==46339 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x501, 0xb503, 0x555, x2, 1024, x1)
+
+inst_265:
+// rs1_val==46339 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb503; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x3, 0xb503, 0x3, x2, 1028, x1)
+
+inst_266:
+// rs1_val==0 and imm_val==46, rs1_val == 0
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x2e, x2, 1032, x1)
+
+inst_267:
+// rs1_val==0 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, -0x2c, x2, 1036, x1)
+
+inst_268:
+// rs1_val==0 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x667, x2, 1040, x1)
+
+inst_269:
+// rs1_val==0 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x334, x2, 1044, x1)
+
+inst_270:
+// rs1_val==0 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x6, x2, 1048, x1)
+
+inst_271:
+// rs1_val==0 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, -0x555, x2, 1052, x1)
+
+inst_272:
+// rs1_val==0 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x556, x2, 1056, x1)
+
+inst_273:
+// rs1_val==0 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x4, x2, 1060, x1)
+
+inst_274:
+// rs1_val==0 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x2c, x2, 1064, x1)
+
+inst_275:
+// rs1_val==0 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x0, x2, 1068, x1)
+
+inst_276:
+// rs1_val==0 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x665, x2, 1072, x1)
+
+inst_277:
+// rs1_val==0 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x332, x2, 1076, x1)
+
+inst_278:
+// rs1_val==0 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x554, x2, 1080, x1)
+
+inst_279:
+// rs1_val==0 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x2, x2, 1084, x1)
+
+inst_280:
+// rs1_val==0 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x2d, x2, 1088, x1)
+
+inst_281:
+// rs1_val==0 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, -0x2d, x2, 1092, x1)
+
+inst_282:
+// rs1_val==0 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x666, x2, 1096, x1)
+
+inst_283:
+// rs1_val==0 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x333, x2, 1100, x1)
+
+inst_284:
+// rs1_val==0 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x5, x2, 1104, x1)
+
+inst_285:
+// rs1_val==0 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, -0x556, x2, 1108, x1)
+
+inst_286:
+// rs1_val==0 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x555, x2, 1112, x1)
+
+inst_287:
+// rs1_val==0 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x0; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x0, 0x3, x2, 1116, x1)
+
+inst_288:
+// rs1_val==1717986917 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x24, 0x66666665, 0x2e, x2, 1120, x1)
+
+inst_289:
+// rs1_val==1717986917 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x66666644, 0x66666665, -0x2c, x2, 1124, x1)
+
+inst_290:
+// rs1_val==1717986917 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x665, 0x66666665, 0x667, x2, 1128, x1)
+
+inst_291:
+// rs1_val==1717986917 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x224, 0x66666665, 0x334, x2, 1132, x1)
+
+inst_292:
+// rs1_val==1717986917 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x66666665, 0x6, x2, 1136, x1)
+
+inst_293:
+// rs1_val==1717986917 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x66666221, 0x66666665, -0x555, x2, 1140, x1)
+
+inst_294:
+// rs1_val==1717986917 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x66666665, 0x556, x2, 1144, x1)
+
+inst_295:
+// rs1_val==1717986917 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x66666665, 0x4, x2, 1148, x1)
+
+inst_296:
+// rs1_val==1717986917 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x24, 0x66666665, 0x2c, x2, 1152, x1)
+
+inst_297:
+// rs1_val==1717986917 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x66666665, 0x0, x2, 1156, x1)
+
+inst_298:
+// rs1_val==1717986917 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x665, 0x66666665, 0x665, x2, 1160, x1)
+
+inst_299:
+// rs1_val==-1431655766 and imm_val==-1365, rs1_val == -1431655766
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0xaaaaaaaa, -0x55555556, -0x555, x2, 1164, x1)
+
+inst_300:
+// rs1_val==-1431655766 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x55555556, 0x556, x2, 1168, x1)
+
+inst_301:
+// rs1_val==-1431655766 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x55555556, 0x4, x2, 1172, x1)
+
+inst_302:
+// rs1_val==-1431655766 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x28, -0x55555556, 0x2c, x2, 1176, x1)
+
+inst_303:
+// rs1_val==-1431655766 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x55555556, 0x0, x2, 1180, x1)
+
+inst_304:
+// rs1_val==-1431655766 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x220, -0x55555556, 0x665, x2, 1184, x1)
+
+inst_305:
+// rs1_val==-1431655766 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x222, -0x55555556, 0x332, x2, 1188, x1)
+
+inst_306:
+// rs1_val==-1431655766 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x55555556, 0x554, x2, 1192, x1)
+
+inst_307:
+// rs1_val==-1431655766 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x55555556, 0x2, x2, 1196, x1)
+
+inst_308:
+// rs1_val==-1431655766 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x28, -0x55555556, 0x2d, x2, 1200, x1)
+
+inst_309:
+// rs1_val==-1431655766 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xaaaaaa82, -0x55555556, -0x2d, x2, 1204, x1)
+
+inst_310:
+// rs1_val==-1431655766 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x222, -0x55555556, 0x666, x2, 1208, x1)
+
+inst_311:
+// rs1_val==-1431655766 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x222, -0x55555556, 0x333, x2, 1212, x1)
+
+inst_312:
+// rs1_val==-1431655766 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x55555556, 0x5, x2, 1216, x1)
+
+inst_313:
+// rs1_val==-1431655766 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xaaaaaaaa, -0x55555556, -0x556, x2, 1220, x1)
+
+inst_314:
+// rs1_val==-1431655766 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x0, -0x55555556, 0x555, x2, 1224, x1)
+
+inst_315:
+// rs1_val==-1431655766 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x55555556, 0x3, x2, 1228, x1)
+
+inst_316:
+// rs1_val==1431655765 and imm_val==46, rs1_val == 1431655765
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555555, 0x2e, x2, 1232, x1)
+
+inst_317:
+// rs1_val==1431655765 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x55555554, 0x55555555, -0x2c, x2, 1236, x1)
+
+inst_318:
+// rs1_val==1431655765 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x445, 0x55555555, 0x667, x2, 1240, x1)
+
+inst_319:
+// rs1_val==1431655765 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x114, 0x55555555, 0x334, x2, 1244, x1)
+
+inst_320:
+// rs1_val==1431655765 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555555, 0x6, x2, 1248, x1)
+
+inst_321:
+// rs1_val==1431655765 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x55555001, 0x55555555, -0x555, x2, 1252, x1)
+
+inst_322:
+// rs1_val==1431655765 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x554, 0x55555555, 0x556, x2, 1256, x1)
+
+inst_323:
+// rs1_val==1431655765 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555555, 0x4, x2, 1260, x1)
+
+inst_324:
+// rs1_val==1431655765 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555555, 0x2c, x2, 1264, x1)
+
+inst_325:
+// rs1_val==1431655765 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x55555555, 0x0, x2, 1268, x1)
+
+inst_326:
+// rs1_val==1431655765 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x445, 0x55555555, 0x665, x2, 1272, x1)
+
+inst_327:
+// rs1_val==1431655765 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x110, 0x55555555, 0x332, x2, 1276, x1)
+
+inst_328:
+// rs1_val==1431655765 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x554, 0x55555555, 0x554, x2, 1280, x1)
+
+inst_329:
+// rs1_val==1431655765 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x55555555, 0x2, x2, 1284, x1)
+
+inst_330:
+// rs1_val==1431655765 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x55555555, 0x2d, x2, 1288, x1)
+
+inst_331:
+// rs1_val==1431655765 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x55555551, 0x55555555, -0x2d, x2, 1292, x1)
+
+inst_332:
+// rs1_val==1431655765 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x55555555, 0x666, x2, 1296, x1)
+
+inst_333:
+// rs1_val==1431655765 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x111, 0x55555555, 0x333, x2, 1300, x1)
+
+inst_334:
+// rs1_val==1431655765 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x55555555, 0x5, x2, 1304, x1)
+
+inst_335:
+// rs1_val==1431655765 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x55555000, 0x55555555, -0x556, x2, 1308, x1)
+
+inst_336:
+// rs1_val==1431655765 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x555, 0x55555555, 0x555, x2, 1312, x1)
+
+inst_337:
+// rs1_val==1431655765 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555555; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x55555555, 0x3, x2, 1316, x1)
+
+inst_338:
+// rs1_val==3 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x3, 0x2e, x2, 1320, x1)
+
+inst_339:
+// rs1_val==3 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x3, -0x2c, x2, 1324, x1)
+
+inst_340:
+// rs1_val==3 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x3, 0x3, 0x667, x2, 1328, x1)
+
+inst_341:
+// rs1_val==3 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x3, 0x334, x2, 1332, x1)
+
+inst_342:
+// rs1_val==3 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x3, 0x6, x2, 1336, x1)
+
+inst_343:
+// rs1_val==3 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x3, 0x3, -0x555, x2, 1340, x1)
+
+inst_344:
+// rs1_val==3 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x3, 0x556, x2, 1344, x1)
+
+inst_345:
+// rs1_val==3 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x3, 0x4, x2, 1348, x1)
+
+inst_346:
+// rs1_val==3 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x3, 0x2c, x2, 1352, x1)
+
+inst_347:
+// rs1_val==3 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x3, 0x0, x2, 1356, x1)
+
+inst_348:
+// rs1_val==3 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x3, 0x665, x2, 1360, x1)
+
+inst_349:
+// rs1_val==3 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x3, 0x332, x2, 1364, x1)
+
+inst_350:
+// rs1_val==3 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x3, 0x554, x2, 1368, x1)
+
+inst_351:
+// rs1_val==3 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x3, 0x2, x2, 1372, x1)
+
+inst_352:
+// rs1_val==3 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x3, 0x2d, x2, 1376, x1)
+
+inst_353:
+// rs1_val==3 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x3, 0x3, -0x2d, x2, 1380, x1)
+
+inst_354:
+// rs1_val==3 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x3, 0x666, x2, 1384, x1)
+
+inst_355:
+// rs1_val==3 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x3, 0x3, 0x333, x2, 1388, x1)
+
+inst_356:
+// rs1_val==3 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x3, 0x5, x2, 1392, x1)
+
+inst_357:
+// rs1_val==3 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x3, -0x556, x2, 1396, x1)
+
+inst_358:
+// rs1_val==3 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x3, 0x555, x2, 1400, x1)
+
+inst_359:
+// rs1_val==3 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x3; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x3, 0x3, 0x3, x2, 1404, x1)
+
+inst_360:
+// rs1_val==1717986917 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x220, 0x66666665, 0x332, x2, 1408, x1)
+
+inst_361:
+// rs1_val==1717986917 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x66666665, 0x554, x2, 1412, x1)
+
+inst_362:
+// rs1_val==1717986917 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x66666665, 0x2, x2, 1416, x1)
+
+inst_363:
+// rs1_val==1717986917 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x25, 0x66666665, 0x2d, x2, 1420, x1)
+
+inst_364:
+// rs1_val==1717986917 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x66666641, 0x66666665, -0x2d, x2, 1424, x1)
+
+inst_365:
+// rs1_val==1717986917 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x664, 0x66666665, 0x666, x2, 1428, x1)
+
+inst_366:
+// rs1_val==1717986917 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x221, 0x66666665, 0x333, x2, 1432, x1)
+
+inst_367:
+// rs1_val==1717986917 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x66666665, 0x5, x2, 1436, x1)
+
+inst_368:
+// rs1_val==1717986917 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x66666220, 0x66666665, -0x556, x2, 1440, x1)
+
+inst_369:
+// rs1_val==1717986917 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x445, 0x66666665, 0x555, x2, 1444, x1)
+
+inst_370:
+// rs1_val==1717986917 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666665; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x66666665, 0x3, x2, 1448, x1)
+
+inst_371:
+// rs1_val==858993458 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x22, 0x33333332, 0x2e, x2, 1452, x1)
+
+inst_372:
+// rs1_val==858993458 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x33333310, 0x33333332, -0x2c, x2, 1456, x1)
+
+inst_373:
+// rs1_val==858993458 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x222, 0x33333332, 0x667, x2, 1460, x1)
+
+inst_374:
+// rs1_val==858993458 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x330, 0x33333332, 0x334, x2, 1464, x1)
+
+inst_375:
+// rs1_val==858993458 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x33333332, 0x6, x2, 1468, x1)
+
+inst_376:
+// rs1_val==858993458 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x33333222, 0x33333332, -0x555, x2, 1472, x1)
+
+inst_377:
+// rs1_val==858993458 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x112, 0x33333332, 0x556, x2, 1476, x1)
+
+inst_378:
+// rs1_val==858993458 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x33333332, 0x4, x2, 1480, x1)
+
+inst_379:
+// rs1_val==858993458 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x20, 0x33333332, 0x2c, x2, 1484, x1)
+
+inst_380:
+// rs1_val==858993458 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x33333332, 0x0, x2, 1488, x1)
+
+inst_381:
+// rs1_val==858993458 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x220, 0x33333332, 0x665, x2, 1492, x1)
+
+inst_382:
+// rs1_val==858993458 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x332, 0x33333332, 0x332, x2, 1496, x1)
+
+inst_383:
+// rs1_val==858993458 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x110, 0x33333332, 0x554, x2, 1500, x1)
+
+inst_384:
+// rs1_val==858993458 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x33333332, 0x2, x2, 1504, x1)
+
+inst_385:
+// rs1_val==858993458 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x20, 0x33333332, 0x2d, x2, 1508, x1)
+
+inst_386:
+// rs1_val==858993458 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x33333312, 0x33333332, -0x2d, x2, 1512, x1)
+
+inst_387:
+// rs1_val==858993458 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x222, 0x33333332, 0x666, x2, 1516, x1)
+
+inst_388:
+// rs1_val==858993458 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x332, 0x33333332, 0x333, x2, 1520, x1)
+
+inst_389:
+// rs1_val==858993458 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x33333332, 0x5, x2, 1524, x1)
+
+inst_390:
+// rs1_val==858993458 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x33333222, 0x33333332, -0x556, x2, 1528, x1)
+
+inst_391:
+// rs1_val==858993458 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x110, 0x33333332, 0x555, x2, 1532, x1)
+
+inst_392:
+// rs1_val==858993458 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333332; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x33333332, 0x3, x2, 1536, x1)
+
+inst_393:
+// rs1_val==1431655764 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555554, 0x2e, x2, 1540, x1)
+
+inst_394:
+// rs1_val==1431655764 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x55555554, 0x55555554, -0x2c, x2, 1544, x1)
+
+inst_395:
+// rs1_val==1431655764 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x55555554, 0x667, x2, 1548, x1)
+
+inst_396:
+// rs1_val==1431655764 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x114, 0x55555554, 0x334, x2, 1552, x1)
+
+inst_397:
+// rs1_val==1431655764 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555554, 0x6, x2, 1556, x1)
+
+inst_398:
+// rs1_val==1431655764 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x55555000, 0x55555554, -0x555, x2, 1560, x1)
+
+inst_399:
+// rs1_val==1431655764 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x554, 0x55555554, 0x556, x2, 1564, x1)
+
+inst_400:
+// rs1_val==1431655764 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555554, 0x4, x2, 1568, x1)
+
+inst_401:
+// rs1_val==1431655764 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555554, 0x2c, x2, 1572, x1)
+
+inst_402:
+// rs1_val==1431655764 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x55555554, 0x0, x2, 1576, x1)
+
+inst_403:
+// rs1_val==1431655764 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x55555554, 0x665, x2, 1580, x1)
+
+inst_404:
+// rs1_val==1431655764 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x110, 0x55555554, 0x332, x2, 1584, x1)
+
+inst_405:
+// rs1_val==1431655764 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x554, 0x55555554, 0x554, x2, 1588, x1)
+
+inst_406:
+// rs1_val==1431655764 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x55555554, 0x2, x2, 1592, x1)
+
+inst_407:
+// rs1_val==1431655764 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555554, 0x2d, x2, 1596, x1)
+
+inst_408:
+// rs1_val==1431655764 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x55555550, 0x55555554, -0x2d, x2, 1600, x1)
+
+inst_409:
+// rs1_val==1431655764 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x55555554, 0x666, x2, 1604, x1)
+
+inst_410:
+// rs1_val==1431655764 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x110, 0x55555554, 0x333, x2, 1608, x1)
+
+inst_411:
+// rs1_val==1431655764 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x55555554, 0x5, x2, 1612, x1)
+
+inst_412:
+// rs1_val==1431655764 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x55555000, 0x55555554, -0x556, x2, 1616, x1)
+
+inst_413:
+// rs1_val==1431655764 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x554, 0x55555554, 0x555, x2, 1620, x1)
+
+inst_414:
+// rs1_val==1431655764 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x55555554; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x55555554, 0x3, x2, 1624, x1)
+
+inst_415:
+// rs1_val==2 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x2e, x2, 1628, x1)
+
+inst_416:
+// rs1_val==2 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, -0x2c, x2, 1632, x1)
+
+inst_417:
+// rs1_val==2 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x667, x2, 1636, x1)
+
+inst_418:
+// rs1_val==2 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x334, x2, 1640, x1)
+
+inst_419:
+// rs1_val==2 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x6, x2, 1644, x1)
+
+inst_420:
+// rs1_val==2 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, -0x555, x2, 1648, x1)
+
+inst_421:
+// rs1_val==2 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x556, x2, 1652, x1)
+
+inst_422:
+// rs1_val==2 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x4, x2, 1656, x1)
+
+inst_423:
+// rs1_val==2 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x2c, x2, 1660, x1)
+
+inst_424:
+// rs1_val==2 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x0, x2, 1664, x1)
+
+inst_425:
+// rs1_val==2 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x665, x2, 1668, x1)
+
+inst_426:
+// rs1_val==2 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x332, x2, 1672, x1)
+
+inst_427:
+// rs1_val==2 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x554, x2, 1676, x1)
+
+inst_428:
+// rs1_val==2 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x2, x2, 1680, x1)
+
+inst_429:
+// rs1_val==2 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x2d, x2, 1684, x1)
+
+inst_430:
+// rs1_val==2 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, -0x2d, x2, 1688, x1)
+
+inst_431:
+// rs1_val==2 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x666, x2, 1692, x1)
+
+inst_432:
+// rs1_val==2 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x333, x2, 1696, x1)
+
+inst_433:
+// rs1_val==2 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x5, x2, 1700, x1)
+
+inst_434:
+// rs1_val==2 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, -0x556, x2, 1704, x1)
+
+inst_435:
+// rs1_val==2 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x2, 0x555, x2, 1708, x1)
+
+inst_436:
+// rs1_val==2 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x2; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x2, 0x3, x2, 1712, x1)
+
+inst_437:
+// rs1_val==46340 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb504, 0x2e, x2, 1716, x1)
+
+inst_438:
+// rs1_val==46340 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0xb504, 0xb504, -0x2c, x2, 1720, x1)
+
+inst_439:
+// rs1_val==46340 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x404, 0xb504, 0x667, x2, 1724, x1)
+
+inst_440:
+// rs1_val==46340 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x104, 0xb504, 0x334, x2, 1728, x1)
+
+inst_441:
+// rs1_val==46340 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb504, 0x6, x2, 1732, x1)
+
+inst_442:
+// rs1_val==46340 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0xb000, 0xb504, -0x555, x2, 1736, x1)
+
+inst_443:
+// rs1_val==46340 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x504, 0xb504, 0x556, x2, 1740, x1)
+
+inst_444:
+// rs1_val==46340 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb504, 0x4, x2, 1744, x1)
+
+inst_445:
+// rs1_val==46340 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb504, 0x2c, x2, 1748, x1)
+
+inst_446:
+// rs1_val==46340 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0xb504, 0x0, x2, 1752, x1)
+
+inst_447:
+// rs1_val==46340 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x404, 0xb504, 0x665, x2, 1756, x1)
+
+inst_448:
+// rs1_val==46340 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x100, 0xb504, 0x332, x2, 1760, x1)
+
+inst_449:
+// rs1_val==46340 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x504, 0xb504, 0x554, x2, 1764, x1)
+
+inst_450:
+// rs1_val==46340 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0xb504, 0x2, x2, 1768, x1)
+
+inst_451:
+// rs1_val==46340 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb504, 0x2d, x2, 1772, x1)
+
+inst_452:
+// rs1_val==46340 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xb500, 0xb504, -0x2d, x2, 1776, x1)
+
+inst_453:
+// rs1_val==46340 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x404, 0xb504, 0x666, x2, 1780, x1)
+
+inst_454:
+// rs1_val==46340 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x100, 0xb504, 0x333, x2, 1784, x1)
+
+inst_455:
+// rs1_val==46340 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x4, 0xb504, 0x5, x2, 1788, x1)
+
+inst_456:
+// rs1_val==46340 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xb000, 0xb504, -0x556, x2, 1792, x1)
+
+inst_457:
+// rs1_val==46340 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x504, 0xb504, 0x555, x2, 1796, x1)
+
+inst_458:
+// rs1_val==46340 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0xb504; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x0, 0xb504, 0x3, x2, 1800, x1)
+
+inst_459:
+// rs1_val==-46340 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x2c, -0xb504, 0x2e, x2, 1804, x1)
+
+inst_460:
+// rs1_val==-46340 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0xffff4ad4, -0xb504, -0x2c, x2, 1808, x1)
+
+inst_461:
+// rs1_val==-46340 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x264, -0xb504, 0x667, x2, 1812, x1)
+
+inst_462:
+// rs1_val==-46340 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x234, -0xb504, 0x334, x2, 1816, x1)
+
+inst_463:
+// rs1_val==-46340 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, -0xb504, 0x6, x2, 1820, x1)
+
+inst_464:
+// rs1_val==-46340 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0xffff4aa8, -0xb504, -0x555, x2, 1824, x1)
+
+inst_465:
+// rs1_val==-46340 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x54, -0xb504, 0x556, x2, 1828, x1)
+
+inst_466:
+// rs1_val==-46340 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, -0xb504, 0x4, x2, 1832, x1)
+
+inst_467:
+// rs1_val==-46340 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x2c, -0xb504, 0x2c, x2, 1836, x1)
+
+inst_468:
+// rs1_val==-46340 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, -0xb504, 0x0, x2, 1840, x1)
+
+inst_469:
+// rs1_val==-46340 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x264, -0xb504, 0x665, x2, 1844, x1)
+
+inst_470:
+// rs1_val==-46340 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x230, -0xb504, 0x332, x2, 1848, x1)
+
+inst_471:
+// rs1_val==-46340 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x54, -0xb504, 0x554, x2, 1852, x1)
+
+inst_472:
+// rs1_val==-46340 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, -0xb504, 0x2, x2, 1856, x1)
+
+inst_473:
+// rs1_val==-46340 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x2c, -0xb504, 0x2d, x2, 1860, x1)
+
+inst_474:
+// rs1_val==-46340 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0xffff4ad0, -0xb504, -0x2d, x2, 1864, x1)
+
+inst_475:
+// rs1_val==-46340 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x264, -0xb504, 0x666, x2, 1868, x1)
+
+inst_476:
+// rs1_val==-46340 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x230, -0xb504, 0x333, x2, 1872, x1)
+
+inst_477:
+// rs1_val==-46340 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x4, -0xb504, 0x5, x2, 1876, x1)
+
+inst_478:
+// rs1_val==-46340 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0xffff4aa8, -0xb504, -0x556, x2, 1880, x1)
+
+inst_479:
+// rs1_val==-46340 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x54, -0xb504, 0x555, x2, 1884, x1)
+
+inst_480:
+// rs1_val==-46340 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0xb504; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x0, -0xb504, 0x3, x2, 1888, x1)
+
+inst_481:
+// rs1_val==1717986918 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x26, 0x66666666, 0x2e, x2, 1892, x1)
+
+inst_482:
+// rs1_val==1717986918 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x66666644, 0x66666666, -0x2c, x2, 1896, x1)
+
+inst_483:
+// rs1_val==1717986918 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x666, 0x66666666, 0x667, x2, 1900, x1)
+
+inst_484:
+// rs1_val==1717986918 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x224, 0x66666666, 0x334, x2, 1904, x1)
+
+inst_485:
+// rs1_val==1717986918 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x6, 0x66666666, 0x6, x2, 1908, x1)
+
+inst_486:
+// rs1_val==1717986918 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x66666222, 0x66666666, -0x555, x2, 1912, x1)
+
+inst_487:
+// rs1_val==1717986918 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x446, 0x66666666, 0x556, x2, 1916, x1)
+
+inst_488:
+// rs1_val==1717986918 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x66666666, 0x4, x2, 1920, x1)
+
+inst_489:
+// rs1_val==1717986918 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x24, 0x66666666, 0x2c, x2, 1924, x1)
+
+inst_490:
+// rs1_val==1717986918 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x66666666, 0x0, x2, 1928, x1)
+
+inst_491:
+// rs1_val==1717986918 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x664, 0x66666666, 0x665, x2, 1932, x1)
+
+inst_492:
+// rs1_val==1717986918 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x222, 0x66666666, 0x332, x2, 1936, x1)
+
+inst_493:
+// rs1_val==1717986918 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x66666666, 0x554, x2, 1940, x1)
+
+inst_494:
+// rs1_val==1717986918 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x66666666, 0x2, x2, 1944, x1)
+
+inst_495:
+// rs1_val==1717986918 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x24, 0x66666666, 0x2d, x2, 1948, x1)
+
+inst_496:
+// rs1_val==1717986918 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x66666642, 0x66666666, -0x2d, x2, 1952, x1)
+
+inst_497:
+// rs1_val==1717986918 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x666, 0x66666666, 0x666, x2, 1956, x1)
+
+inst_498:
+// rs1_val==1717986918 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x222, 0x66666666, 0x333, x2, 1960, x1)
+
+inst_499:
+// rs1_val==1717986918 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x66666666, 0x5, x2, 1964, x1)
+
+inst_500:
+// rs1_val==1717986918 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x66666222, 0x66666666, -0x556, x2, 1968, x1)
+
+inst_501:
+// rs1_val==1717986918 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x444, 0x66666666, 0x555, x2, 1972, x1)
+
+inst_502:
+// rs1_val==1717986918 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x66666666; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x66666666, 0x3, x2, 1976, x1)
+
+inst_503:
+// rs1_val==858993459 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x22, 0x33333333, 0x2e, x2, 1980, x1)
+
+inst_504:
+// rs1_val==858993459 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x33333310, 0x33333333, -0x2c, x2, 1984, x1)
+
+inst_505:
+// rs1_val==858993459 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x223, 0x33333333, 0x667, x2, 1988, x1)
+
+inst_506:
+// rs1_val==858993459 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x330, 0x33333333, 0x334, x2, 1992, x1)
+
+inst_507:
+// rs1_val==858993459 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x33333333, 0x6, x2, 1996, x1)
+
+inst_508:
+// rs1_val==858993459 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x33333223, 0x33333333, -0x555, x2, 2000, x1)
+
+inst_509:
+// rs1_val==858993459 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x112, 0x33333333, 0x556, x2, 2004, x1)
+
+inst_510:
+// rs1_val==858993459 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x33333333, 0x4, x2, 2008, x1)
+
+inst_511:
+// rs1_val==858993459 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x20, 0x33333333, 0x2c, x2, 2012, x1)
+
+inst_512:
+// rs1_val==858993459 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x33333333, 0x0, x2, 2016, x1)
+
+inst_513:
+// rs1_val==858993459 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x221, 0x33333333, 0x665, x2, 2020, x1)
+
+inst_514:
+// rs1_val==858993459 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x332, 0x33333333, 0x332, x2, 2024, x1)
+
+inst_515:
+// rs1_val==858993459 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x110, 0x33333333, 0x554, x2, 2028, x1)
+
+inst_516:
+// rs1_val==858993459 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, 0x33333333, 0x2, x2, 2032, x1)
+
+inst_517:
+// rs1_val==858993459 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x21, 0x33333333, 0x2d, x2, 2036, x1)
+
+inst_518:
+// rs1_val==858993459 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x33333313, 0x33333333, -0x2d, x2, 2040, x1)
+
+inst_519:
+// rs1_val==858993459 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x222, 0x33333333, 0x666, x2, 2044, x1)
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_520:
+// rs1_val==858993459 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x333, 0x33333333, 0x333, x2, 0, x1)
+
+inst_521:
+// rs1_val==858993459 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x33333333, 0x5, x2, 4, x1)
+
+inst_522:
+// rs1_val==858993459 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x33333222, 0x33333333, -0x556, x2, 8, x1)
+
+inst_523:
+// rs1_val==858993459 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x111, 0x33333333, 0x555, x2, 12, x1)
+
+inst_524:
+// rs1_val==858993459 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x33333333; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x3, 0x33333333, 0x3, x2, 16, x1)
+
+inst_525:
+// rs1_val==5 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, 0x2e, x2, 20, x1)
+
+inst_526:
+// rs1_val==5 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, -0x2c, x2, 24, x1)
+
+inst_527:
+// rs1_val==5 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x5, 0x667, x2, 28, x1)
+
+inst_528:
+// rs1_val==5 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, 0x334, x2, 32, x1)
+
+inst_529:
+// rs1_val==5 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, 0x6, x2, 36, x1)
+
+inst_530:
+// rs1_val==5 and imm_val==-1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:-0x555
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x5, -0x555, x2, 40, x1)
+
+inst_531:
+// rs1_val==5 and imm_val==1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x556
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, 0x556, x2, 44, x1)
+
+inst_532:
+// rs1_val==5 and imm_val==4,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x4
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, 0x4, x2, 48, x1)
+
+inst_533:
+// rs1_val==5 and imm_val==44,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x2c
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, 0x2c, x2, 52, x1)
+
+inst_534:
+// rs1_val==5 and imm_val==0,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x0
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x5, 0x0, x2, 56, x1)
+
+inst_535:
+// rs1_val==5 and imm_val==1637,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x665
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x5, 0x665, x2, 60, x1)
+
+inst_536:
+// rs1_val==5 and imm_val==818,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x332
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x5, 0x332, x2, 64, x1)
+
+inst_537:
+// rs1_val==5 and imm_val==1364,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x554
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, 0x554, x2, 68, x1)
+
+inst_538:
+// rs1_val==5 and imm_val==2,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x5, 0x2, x2, 72, x1)
+
+inst_539:
+// rs1_val==5 and imm_val==45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x2d
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x5, 0x2d, x2, 76, x1)
+
+inst_540:
+// rs1_val==5 and imm_val==-45,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:-0x2d
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x5, -0x2d, x2, 80, x1)
+
+inst_541:
+// rs1_val==5 and imm_val==1638,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x666
+TEST_IMM_OP( andi, x11, x10, 0x4, 0x5, 0x666, x2, 84, x1)
+
+inst_542:
+// rs1_val==5 and imm_val==819,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x333
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x5, 0x333, x2, 88, x1)
+
+inst_543:
+// rs1_val==5 and imm_val==5,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x5
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x5, 0x5, x2, 92, x1)
+
+inst_544:
+// rs1_val==5 and imm_val==-1366,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:-0x556
+TEST_IMM_OP( andi, x11, x10, 0x0, 0x5, -0x556, x2, 96, x1)
+
+inst_545:
+// rs1_val==5 and imm_val==1365,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x5, 0x5, 0x555, x2, 100, x1)
+
+inst_546:
+// rs1_val==5 and imm_val==3,
+// opcode: andi ; op1:x10; dest:x11; op1val:0x5; immval:0x3
+TEST_IMM_OP( andi, x11, x10, 0x1, 0x5, 0x3, x2, 104, x1)
+
+inst_547:
+// rs1_val==-1431655766 and imm_val==46,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2e
+TEST_IMM_OP( andi, x11, x10, 0x2a, -0x55555556, 0x2e, x2, 108, x1)
+
+inst_548:
+// rs1_val==-1431655766 and imm_val==-44,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2c
+TEST_IMM_OP( andi, x11, x10, 0xaaaaaa80, -0x55555556, -0x2c, x2, 112, x1)
+
+inst_549:
+// rs1_val==-1431655766 and imm_val==1639,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x667
+TEST_IMM_OP( andi, x11, x10, 0x222, -0x55555556, 0x667, x2, 116, x1)
+
+inst_550:
+// rs1_val==-1431655766 and imm_val==820,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x334
+TEST_IMM_OP( andi, x11, x10, 0x220, -0x55555556, 0x334, x2, 120, x1)
+
+inst_551:
+// rs1_val==-1431655766 and imm_val==6,
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x6
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x55555556, 0x6, x2, 124, x1)
+
+inst_552:
+// rs1_val == -16777217, imm_val == 2
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x1000001; immval:0x2
+TEST_IMM_OP( andi, x11, x10, 0x2, -0x1000001, 0x2, x2, 128, x1)
+
+inst_553:
+// rs1_val == -131073, imm_val == 1365
+// opcode: andi ; op1:x10; dest:x11; op1val:-0x20001; immval:0x555
+TEST_IMM_OP( andi, x11, x10, 0x555, -0x20001, 0x555, x2, 132, x1)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 34*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/auipc-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/auipc-01.S
new file mode 100644
index 000000000..87eed4cd9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/auipc-01.S
@@ -0,0 +1,390 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the auipc instruction of the RISC-V E extension for the auipc covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",auipc)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rd==x9, imm_val == ((2**20)-1), imm_val > 0
+// opcode: auipc ; dest:x9; immval:0xfffff
+TEST_AUIPC(auipc, x9, -0x1000, 0xfffff, x2, 0, x3)
+
+inst_1:
+// rd==x6, imm_val == 524287,
+// opcode: auipc ; dest:x6; immval:0x7ffff
+TEST_AUIPC(auipc, x6, 0x7ffff000, 0x7ffff, x2, 4, x3)
+
+inst_2:
+// rd==x1, imm_val == 786431,
+// opcode: auipc ; dest:x1; immval:0xbffff
+TEST_AUIPC(auipc, x1, -0x40001000, 0xbffff, x2, 8, x3)
+
+inst_3:
+// rd==x5, imm_val == 917503,
+// opcode: auipc ; dest:x5; immval:0xdffff
+TEST_AUIPC(auipc, x5, -0x20001000, 0xdffff, x2, 12, x3)
+
+inst_4:
+// rd==x14, imm_val == 983039,
+// opcode: auipc ; dest:x14; immval:0xeffff
+TEST_AUIPC(auipc, x14, -0x10001000, 0xeffff, x2, 16, x3)
+
+inst_5:
+// rd==x7, imm_val == 1015807,
+// opcode: auipc ; dest:x7; immval:0xf7fff
+TEST_AUIPC(auipc, x7, -0x8001000, 0xf7fff, x2, 20, x3)
+
+inst_6:
+// rd==x15, imm_val == 1032191,
+// opcode: auipc ; dest:x15; immval:0xfbfff
+TEST_AUIPC(auipc, x15, -0x4001000, 0xfbfff, x2, 24, x3)
+
+inst_7:
+// rd==x10, imm_val == 1040383,
+// opcode: auipc ; dest:x10; immval:0xfdfff
+TEST_AUIPC(auipc, x10, -0x2001000, 0xfdfff, x2, 28, x3)
+
+inst_8:
+// rd==x12, imm_val == 1044479,
+// opcode: auipc ; dest:x12; immval:0xfefff
+TEST_AUIPC(auipc, x12, -0x1001000, 0xfefff, x2, 32, x3)
+
+inst_9:
+// rd==x0, imm_val == 1046527,
+// opcode: auipc ; dest:x0; immval:0xff7ff
+TEST_AUIPC(auipc, x0, 0, 0xff7ff, x2, 36, x3)
+
+inst_10:
+// rd==x8, imm_val == 1047551,
+// opcode: auipc ; dest:x8; immval:0xffbff
+TEST_AUIPC(auipc, x8, -0x401000, 0xffbff, x2, 40, x3)
+
+inst_11:
+// rd==x4, imm_val == 1048063,
+// opcode: auipc ; dest:x4; immval:0xffdff
+TEST_AUIPC(auipc, x4, -0x201000, 0xffdff, x2, 44, x3)
+
+inst_12:
+// rd==x13, imm_val == 1048319,
+// opcode: auipc ; dest:x13; immval:0xffeff
+TEST_AUIPC(auipc, x13, -0x101000, 0xffeff, x2, 48, x4)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_13:
+// rd==x3, imm_val == 1048447,
+// opcode: auipc ; dest:x3; immval:0xfff7f
+TEST_AUIPC(auipc, x3, -0x81000, 0xfff7f, x1, 0, x4)
+
+inst_14:
+// rd==x11, imm_val == 1048511,
+// opcode: auipc ; dest:x11; immval:0xfffbf
+TEST_AUIPC(auipc, x11, -0x41000, 0xfffbf, x1, 4, x4)
+
+inst_15:
+// rd==x2, imm_val == 1048543,
+// opcode: auipc ; dest:x2; immval:0xfffdf
+TEST_AUIPC(auipc, x2, -0x21000, 0xfffdf, x1, 8, x4)
+
+inst_16:
+// imm_val == 1048559,
+// opcode: auipc ; dest:x10; immval:0xfffef
+TEST_AUIPC(auipc, x10, -0x11000, 0xfffef, x1, 12, x4)
+
+inst_17:
+// imm_val == 1048567,
+// opcode: auipc ; dest:x10; immval:0xffff7
+TEST_AUIPC(auipc, x10, -0x9000, 0xffff7, x1, 16, x4)
+
+inst_18:
+// imm_val == 1048571,
+// opcode: auipc ; dest:x10; immval:0xffffb
+TEST_AUIPC(auipc, x10, -0x5000, 0xffffb, x1, 20, x4)
+
+inst_19:
+// imm_val == 1048573,
+// opcode: auipc ; dest:x10; immval:0xffffd
+TEST_AUIPC(auipc, x10, -0x3000, 0xffffd, x1, 24, x4)
+
+inst_20:
+// imm_val == 1048574,
+// opcode: auipc ; dest:x10; immval:0xffffe
+TEST_AUIPC(auipc, x10, -0x2000, 0xffffe, x1, 28, x4)
+
+inst_21:
+// imm_val == 524288,
+// opcode: auipc ; dest:x10; immval:0x80000
+TEST_AUIPC(auipc, x10, -0x80000000, 0x80000, x1, 32, x4)
+
+inst_22:
+// imm_val == 262144,
+// opcode: auipc ; dest:x10; immval:0x40000
+TEST_AUIPC(auipc, x10, 0x40000000, 0x40000, x1, 36, x4)
+
+inst_23:
+// imm_val == 131072,
+// opcode: auipc ; dest:x10; immval:0x20000
+TEST_AUIPC(auipc, x10, 0x20000000, 0x20000, x1, 40, x4)
+
+inst_24:
+// imm_val == 65536,
+// opcode: auipc ; dest:x10; immval:0x10000
+TEST_AUIPC(auipc, x10, 0x10000000, 0x10000, x1, 44, x4)
+
+inst_25:
+// imm_val == 32768,
+// opcode: auipc ; dest:x10; immval:0x8000
+TEST_AUIPC(auipc, x10, 0x8000000, 0x8000, x1, 48, x4)
+
+inst_26:
+// imm_val == 16384,
+// opcode: auipc ; dest:x10; immval:0x4000
+TEST_AUIPC(auipc, x10, 0x4000000, 0x4000, x1, 52, x4)
+
+inst_27:
+// imm_val == 8192,
+// opcode: auipc ; dest:x10; immval:0x2000
+TEST_AUIPC(auipc, x10, 0x2000000, 0x2000, x1, 56, x4)
+
+inst_28:
+// imm_val == 4096,
+// opcode: auipc ; dest:x10; immval:0x1000
+TEST_AUIPC(auipc, x10, 0x1000000, 0x1000, x1, 60, x4)
+
+inst_29:
+// imm_val == 2048,
+// opcode: auipc ; dest:x10; immval:0x800
+TEST_AUIPC(auipc, x10, 0x800000, 0x800, x1, 64, x4)
+
+inst_30:
+// imm_val == 1024, imm_val==1024
+// opcode: auipc ; dest:x10; immval:0x400
+TEST_AUIPC(auipc, x10, 0x400000, 0x400, x1, 68, x4)
+
+inst_31:
+// imm_val == 512,
+// opcode: auipc ; dest:x10; immval:0x200
+TEST_AUIPC(auipc, x10, 0x200000, 0x200, x1, 72, x4)
+
+inst_32:
+// imm_val == 256,
+// opcode: auipc ; dest:x10; immval:0x100
+TEST_AUIPC(auipc, x10, 0x100000, 0x100, x1, 76, x4)
+
+inst_33:
+// imm_val == 128,
+// opcode: auipc ; dest:x10; immval:0x80
+TEST_AUIPC(auipc, x10, 0x80000, 0x80, x1, 80, x4)
+
+inst_34:
+// imm_val == 64,
+// opcode: auipc ; dest:x10; immval:0x40
+TEST_AUIPC(auipc, x10, 0x40000, 0x40, x1, 84, x4)
+
+inst_35:
+// imm_val == 32,
+// opcode: auipc ; dest:x10; immval:0x20
+TEST_AUIPC(auipc, x10, 0x20000, 0x20, x1, 88, x4)
+
+inst_36:
+// imm_val == 16,
+// opcode: auipc ; dest:x10; immval:0x10
+TEST_AUIPC(auipc, x10, 0x10000, 0x10, x1, 92, x4)
+
+inst_37:
+// imm_val==349525, imm_val == 349525
+// opcode: auipc ; dest:x10; immval:0x55555
+TEST_AUIPC(auipc, x10, 0x55555000, 0x55555, x1, 96, x4)
+
+inst_38:
+// imm_val==3,
+// opcode: auipc ; dest:x10; immval:0x3
+TEST_AUIPC(auipc, x10, 0x3000, 0x3, x1, 100, x4)
+
+inst_39:
+// imm_val == 699050, imm_val==699050
+// opcode: auipc ; dest:x10; immval:0xaaaaa
+TEST_AUIPC(auipc, x10, -0x55556000, 0xaaaaa, x1, 104, x4)
+
+inst_40:
+// imm_val == 0, imm_val==0
+// opcode: auipc ; dest:x10; immval:0x0
+TEST_AUIPC(auipc, x10, 0x0, 0x0, x1, 108, x4)
+
+inst_41:
+// imm_val == 8,
+// opcode: auipc ; dest:x10; immval:0x8
+TEST_AUIPC(auipc, x10, 0x8000, 0x8, x1, 112, x4)
+
+inst_42:
+// imm_val == 4, imm_val==4
+// opcode: auipc ; dest:x10; immval:0x4
+TEST_AUIPC(auipc, x10, 0x4000, 0x4, x1, 116, x4)
+
+inst_43:
+// imm_val == 2, imm_val==2
+// opcode: auipc ; dest:x10; immval:0x2
+TEST_AUIPC(auipc, x10, 0x2000, 0x2, x1, 120, x4)
+
+inst_44:
+// imm_val == 1, imm_val==1
+// opcode: auipc ; dest:x10; immval:0x1
+TEST_AUIPC(auipc, x10, 0x1000, 0x1, x1, 124, x4)
+
+inst_45:
+// imm_val==725,
+// opcode: auipc ; dest:x10; immval:0x2d5
+TEST_AUIPC(auipc, x10, 0x2d5000, 0x2d5, x1, 128, x4)
+
+inst_46:
+// imm_val==419431,
+// opcode: auipc ; dest:x10; immval:0x66667
+TEST_AUIPC(auipc, x10, 0x66667000, 0x66667, x1, 132, x4)
+
+inst_47:
+// imm_val==209716,
+// opcode: auipc ; dest:x10; immval:0x33334
+TEST_AUIPC(auipc, x10, 0x33334000, 0x33334, x1, 136, x4)
+
+inst_48:
+// imm_val==6,
+// opcode: auipc ; dest:x10; immval:0x6
+TEST_AUIPC(auipc, x10, 0x6000, 0x6, x1, 140, x4)
+
+inst_49:
+// imm_val==699051,
+// opcode: auipc ; dest:x10; immval:0xaaaab
+TEST_AUIPC(auipc, x10, -0x55555000, 0xaaaab, x1, 144, x4)
+
+inst_50:
+// imm_val==349526,
+// opcode: auipc ; dest:x10; immval:0x55556
+TEST_AUIPC(auipc, x10, 0x55556000, 0x55556, x1, 148, x4)
+
+inst_51:
+// imm_val==1022,
+// opcode: auipc ; dest:x10; immval:0x3fe
+TEST_AUIPC(auipc, x10, 0x3fe000, 0x3fe, x1, 152, x4)
+
+inst_52:
+// imm_val==723,
+// opcode: auipc ; dest:x10; immval:0x2d3
+TEST_AUIPC(auipc, x10, 0x2d3000, 0x2d3, x1, 156, x4)
+
+inst_53:
+// imm_val==419429,
+// opcode: auipc ; dest:x10; immval:0x66665
+TEST_AUIPC(auipc, x10, 0x66665000, 0x66665, x1, 160, x4)
+
+inst_54:
+// imm_val==209714,
+// opcode: auipc ; dest:x10; immval:0x33332
+TEST_AUIPC(auipc, x10, 0x33332000, 0x33332, x1, 164, x4)
+
+inst_55:
+// imm_val==699049,
+// opcode: auipc ; dest:x10; immval:0xaaaa9
+TEST_AUIPC(auipc, x10, -0x55557000, 0xaaaa9, x1, 168, x4)
+
+inst_56:
+// imm_val==349524,
+// opcode: auipc ; dest:x10; immval:0x55554
+TEST_AUIPC(auipc, x10, 0x55554000, 0x55554, x1, 172, x4)
+
+inst_57:
+// imm_val==1023,
+// opcode: auipc ; dest:x10; immval:0x3ff
+TEST_AUIPC(auipc, x10, 0x3ff000, 0x3ff, x1, 176, x4)
+
+inst_58:
+// imm_val==724,
+// opcode: auipc ; dest:x10; immval:0x2d4
+TEST_AUIPC(auipc, x10, 0x2d4000, 0x2d4, x1, 180, x4)
+
+inst_59:
+// imm_val==419430,
+// opcode: auipc ; dest:x10; immval:0x66666
+TEST_AUIPC(auipc, x10, 0x66666000, 0x66666, x1, 184, x4)
+
+inst_60:
+// imm_val==209715,
+// opcode: auipc ; dest:x10; immval:0x33333
+TEST_AUIPC(auipc, x10, 0x33333000, 0x33333, x1, 188, x4)
+
+inst_61:
+// imm_val==5,
+// opcode: auipc ; dest:x10; immval:0x5
+TEST_AUIPC(auipc, x10, 0x5000, 0x5, x1, 192, x4)
+
+inst_62:
+// imm_val == 1046527,
+// opcode: auipc ; dest:x10; immval:0xff7ff
+TEST_AUIPC(auipc, x10, -0x801000, 0xff7ff, x1, 196, x4)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 13*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 50*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/beq-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/beq-01.S
new file mode 100644
index 000000000..a8a75c632
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/beq-01.S
@@ -0,0 +1,3030 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the beq instruction of the RISC-V E extension for the beq covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",beq)
+
+RVTEST_SIGBASE( x5,signature_x5_1)
+
+inst_0:
+// rs1 == rs2, rs1==x6, rs2==x6, rs1_val < 0 and rs2_val < 0 and imm_val & 0x03 == 0, rs1_val > rs2_val and imm_val > 0 and imm_val & 0x03 == 0, rs2_val == -67108865, rs1_val == -33554433
+// opcode: beq, op1:x6; op2:x6; op1val:-0x2000001; op2val:-0x2000001; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x13, x6, x6, -0x2000001, -0x2000001, 0x8, 3f, x5, 0,0)
+
+inst_1:
+// rs1 != rs2, rs1==x2, rs2==x12, rs2_val == 2147483647,
+// opcode: beq, op1:x2; op2:x12; op1val:0x0; op2val:0x7fffffff; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x13, x2, x12, 0x0, 0x7fffffff, 0x0, 3f, x5, 4,0)
+
+inst_2:
+// rs1==x10, rs2==x7, rs2_val == -1073741825, rs1_val < rs2_val and imm_val < 0 and imm_val & 0x03 == 0, rs1_val == -1431655766
+// opcode: beq, op1:x10; op2:x7; op1val:-0x55555556; op2val:-0x40000001; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x13, x10, x7, -0x55555556, -0x40000001, 0x4, 1b, x5, 8,0)
+
+inst_3:
+// rs1==x7, rs2==x11, rs2_val == -536870913, rs1_val == 2147483647, rs1_val > 0 and rs2_val < 0 and imm_val & 0x03 == 0
+// opcode: beq, op1:x7; op2:x11; op1val:0x7fffffff; op2val:-0x20000001; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x13, x7, x11, 0x7fffffff, -0x20000001, 0x100, 3f, x5, 12,0)
+
+inst_4:
+// rs1==x9, rs2==x14, rs2_val == -268435457,
+// opcode: beq, op1:x9; op2:x14; op1val:0x3fffffff; op2val:-0x10000001; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x13, x9, x14, 0x3fffffff, -0x10000001, 0x6, 1b, x5, 16,0)
+
+inst_5:
+// rs1==x8, rs2==x2, rs2_val == -134217729, rs1_val > rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: beq, op1:x8; op2:x2; op1val:-0xa; op2val:-0x8000001; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x13, x8, x2, -0xa, -0x8000001, 0x4, 1b, x5, 20,0)
+
+inst_6:
+// rs1==x12, rs2==x1, rs2_val == -33554433,
+// opcode: beq, op1:x12; op2:x1; op1val:0xb504; op2val:-0x2000001; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x13, x12, x1, 0xb504, -0x2000001, 0x2, 3f, x5, 24,0)
+
+inst_7:
+// rs1==x3, rs2==x4, rs2_val == -16777217, rs1_val == -2097153
+// opcode: beq, op1:x3; op2:x4; op1val:-0x200001; op2val:-0x1000001; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x13, x3, x4, -0x200001, -0x1000001, 0x100, 3f, x5, 28,0)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_8:
+// rs1==x0, rs2==x13, rs2_val == -8388609,
+// opcode: beq, op1:x0; op2:x13; op1val:0x0; op2val:-0x800001; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x6, x0, x13, 0x0, -0x800001, 0x0, 3f, x2, 0,0)
+
+inst_9:
+// rs1==x14, rs2==x5, rs2_val == -4194305, rs1_val < rs2_val and imm_val > 0 and imm_val & 0x03 == 0, rs1_val == -268435457
+// opcode: beq, op1:x14; op2:x5; op1val:-0x10000001; op2val:-0x400001; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x6, x14, x5, -0x10000001, -0x400001, 0x4, 3f, x2, 4,0)
+
+inst_10:
+// rs1==x15, rs2==x9, rs2_val == -2097153, rs1_val == 4
+// opcode: beq, op1:x15; op2:x9; op1val:0x4; op2val:-0x200001; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x6, x15, x9, 0x4, -0x200001, 0x20, 3f, x2, 8,0)
+
+inst_11:
+// rs1==x5, rs2==x15, rs2_val == -1048577, rs1_val == 512
+// opcode: beq, op1:x5; op2:x15; op1val:0x200; op2val:-0x100001; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x6, x5, x15, 0x200, -0x100001, 0x4, 1b, x2, 12,0)
+
+inst_12:
+// rs1==x4, rs2==x0, rs2_val == -524289, rs1_val == -536870913
+// opcode: beq, op1:x4; op2:x0; op1val:-0x20000001; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x6, x4, x0, -0x20000001, 0x0, 0x6, 1b, x2, 16,0)
+
+inst_13:
+// rs1==x1, rs2==x8, rs2_val == -262145, rs1_val == -65
+// opcode: beq, op1:x1; op2:x8; op1val:-0x41; op2val:-0x40001; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x6, x1, x8, -0x41, -0x40001, 0x10, 3f, x2, 20,0)
+
+inst_14:
+// rs1==x11, rs2==x3, rs2_val == -131073,
+// opcode: beq, op1:x11; op2:x3; op1val:0x4; op2val:-0x20001; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x6, x11, x3, 0x4, -0x20001, 0x4, 3f, x2, 24,0)
+
+inst_15:
+// rs1==x13, rs2==x10, rs2_val == -65537, rs1_val == -8193
+// opcode: beq, op1:x13; op2:x10; op1val:-0x2001; op2val:-0x10001; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x6, x13, x10, -0x2001, -0x10001, 0x4, 3f, x2, 28,0)
+
+inst_16:
+// rs2_val == -32769, rs1_val == 32
+// opcode: beq, op1:x10; op2:x11; op1val:0x20; op2val:-0x8001; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x20, -0x8001, 0x6, 1b, x2, 32,0)
+
+inst_17:
+// rs2_val == -16385,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x4; op2val:-0x4001; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x4, -0x4001, 0x8, 3f, x2, 36,0)
+
+inst_18:
+// rs2_val == -8193,
+// opcode: beq, op1:x10; op2:x11; op1val:0x200; op2val:-0x2001; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x200, -0x2001, 0x20, 3f, x2, 40,0)
+
+inst_19:
+// rs2_val == -4097,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x6; op2val:-0x1001; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x6, -0x1001, 0x400, 1b, x2, 44,0)
+
+inst_20:
+// rs2_val == -2049,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x8; op2val:-0x801; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x8, -0x801, 0xa, 1b, x2, 48,0)
+
+inst_21:
+// rs2_val == -1025, rs1_val == -129
+// opcode: beq, op1:x10; op2:x11; op1val:-0x81; op2val:-0x401; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x81, -0x401, 0x8, 1b, x2, 52,0)
+
+inst_22:
+// rs2_val == -513,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:-0x201; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, -0x201, 0x4, 1b, x2, 56,0)
+
+inst_23:
+// rs2_val == -257, rs1_val == -3
+// opcode: beq, op1:x10; op2:x11; op1val:-0x3; op2val:-0x101; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x3, -0x101, 0x2, 3f, x2, 60,0)
+
+inst_24:
+// rs2_val == -129, rs1_val == 8192
+// opcode: beq, op1:x10; op2:x11; op1val:0x2000; op2val:-0x81; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2000, -0x81, 0x4, 1b, x2, 64,0)
+
+inst_25:
+// rs2_val == -65,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3fffffff; op2val:-0x41; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3fffffff, -0x41, 0x400, 3f, x2, 68,0)
+
+inst_26:
+// rs2_val == -33, rs1_val == -262145
+// opcode: beq, op1:x10; op2:x11; op1val:-0x40001; op2val:-0x21; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x40001, -0x21, 0x400, 1b, x2, 72,0)
+
+inst_27:
+// rs2_val == -17, rs1_val == -33
+// opcode: beq, op1:x10; op2:x11; op1val:-0x21; op2val:-0x11; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x21, -0x11, 0x556, 1b, x2, 76,0)
+
+inst_28:
+// rs2_val == -9,
+// opcode: beq, op1:x10; op2:x11; op1val:0x7fffffff; op2val:-0x9; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x7fffffff, -0x9, 0x4, 3f, x2, 80,0)
+
+inst_29:
+// rs2_val == -5,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x5; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, -0x5, 0x80, 3f, x2, 84,0)
+
+inst_30:
+// rs2_val == -3, rs1_val == 1
+// opcode: beq, op1:x10; op2:x11; op1val:0x1; op2val:-0x3; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x1, -0x3, 0x4, 1b, x2, 88,0)
+
+inst_31:
+// rs2_val == -2,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x40001; op2val:-0x2; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x40001, -0x2, 0xa, 1b, x2, 92,0)
+
+inst_32:
+// rs1_val == -1073741825,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x40000001; op2val:0x6; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x40000001, 0x6, 0x556, 1b, x2, 96,0)
+
+inst_33:
+// rs1_val == -134217729,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x8000001; op2val:-0x10000001; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x8000001, -0x10000001, 0x8, 3f, x2, 100,0)
+
+inst_34:
+// rs1_val == -67108865, rs1_val < 0 and rs2_val > 0 and imm_val & 0x03 == 0
+// opcode: beq, op1:x10; op2:x11; op1val:-0x4000001; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x4000001, 0xb504, 0x8, 3f, x2, 104,0)
+
+inst_35:
+// rs1_val == -16777217, rs1_val == rs2_val and imm_val > 0 and imm_val & 0x03 == 0
+// opcode: beq, op1:x10; op2:x11; op1val:-0x1000001; op2val:-0x1000001; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x1000001, -0x1000001, 0x200, 3f, x2, 108,0)
+
+inst_36:
+// rs1_val == -8388609,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x800001; op2val:-0x9; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x800001, -0x9, 0x2, 1b, x2, 112,0)
+
+inst_37:
+// rs1_val == -4194305, rs2_val == 128
+// opcode: beq, op1:x10; op2:x11; op1val:-0x400001; op2val:0x80; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x400001, 0x80, 0x400, 1b, x2, 116,0)
+
+inst_38:
+// rs1_val == -1048577,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x100001; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x100001, -0x55555555, 0x0, 1b, x2, 120,0)
+
+inst_39:
+// rs1_val == -524289, rs2_val == 131072
+// opcode: beq, op1:x10; op2:x11; op1val:-0x80001; op2val:0x20000; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x80001, 0x20000, 0x0, 1b, x2, 124,0)
+
+inst_40:
+// rs1_val == -131073,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x20001; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x20001, 0x66666667, 0x400, 1b, x2, 128,0)
+
+inst_41:
+// rs1_val == -65537,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x10001; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x10001, 0x33333334, 0x6, 1b, x2, 132,0)
+
+inst_42:
+// rs1_val == -32769,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x8001; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x8001, 0x0, 0x6, 1b, x2, 136,0)
+
+inst_43:
+// rs1_val == -16385,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x4001; op2val:-0x1001; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x4001, -0x1001, 0x0, 3f, x2, 140,0)
+
+inst_44:
+// rs1_val == -4097,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x1001; op2val:-0x800001; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x1001, -0x800001, 0x10, 3f, x2, 144,0)
+
+inst_45:
+// rs1_val == -2049, rs2_val == 2
+// opcode: beq, op1:x10; op2:x11; op1val:-0x801; op2val:0x2; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x801, 0x2, 0xa, 1b, x2, 148,0)
+
+inst_46:
+// rs1_val == -1025,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x401; op2val:-0x81; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x401, -0x81, 0x80, 3f, x2, 152,0)
+
+inst_47:
+// rs1_val == -513,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x201; op2val:-0x401; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x201, -0x401, 0x8, 1b, x2, 156,0)
+
+inst_48:
+// rs1_val == -257,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x101; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x101, 0xb503, 0x8, 1b, x2, 160,0)
+
+inst_49:
+// rs1_val == -17,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x11; op2val:-0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x11, -0xb503, 0x6, 3f, x2, 164,0)
+
+inst_50:
+// rs1_val == -9,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x9; op2val:-0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x9, -0xb504, 0x556, 1b, x2, 168,0)
+
+inst_51:
+// rs1_val == -5,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x5; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x5, 0x55555554, 0x8, 3f, x2, 172,0)
+
+inst_52:
+// rs1_val == -2,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x2; op2val:-0x801; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x2, -0x801, 0xa, 1b, x2, 176,0)
+
+inst_53:
+// rs2_val == -2147483648, rs1_val == 32768
+// opcode: beq, op1:x10; op2:x11; op1val:0x8000; op2val:-0x80000000; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x8000, -0x80000000, 0x0, 1b, x2, 180,0)
+
+inst_54:
+// rs2_val == 1073741824,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x40000000; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x40000000, 0x6, 3f, x2, 184,0)
+
+inst_55:
+// rs2_val == 536870912, rs1_val == 1431655765, rs1_val > 0 and rs2_val > 0 and imm_val & 0x03 == 0
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x20000000; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x20000000, 0x200, 3f, x2, 188,0)
+
+inst_56:
+// rs2_val == 268435456,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x401; op2val:0x10000000; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x401, 0x10000000, 0x10, 3f, x2, 192,0)
+
+inst_57:
+// rs2_val == 134217728,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x8000000; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x8000000, 0x40, 3f, x2, 196,0)
+
+inst_58:
+// rs2_val == 67108864,
+// opcode: beq, op1:x10; op2:x11; op1val:0x20; op2val:0x4000000; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x20, 0x4000000, 0x4, 3f, x2, 200,0)
+
+inst_59:
+// rs2_val == 33554432,
+// opcode: beq, op1:x10; op2:x11; op1val:0x9; op2val:0x2000000; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x9, 0x2000000, 0x100, 3f, x2, 204,0)
+
+inst_60:
+// rs2_val == 16777216, rs1_val == 134217728
+// opcode: beq, op1:x10; op2:x11; op1val:0x8000000; op2val:0x1000000; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x8000000, 0x1000000, 0x100, 3f, x2, 208,0)
+
+inst_61:
+// rs2_val == 8388608, rs1_val == 8388608
+// opcode: beq, op1:x10; op2:x11; op1val:0x800000; op2val:0x800000; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x800000, 0x800000, 0x200, 3f, x2, 212,0)
+
+inst_62:
+// rs2_val == 4194304,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x400000; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x400000, 0x0, 3f, x2, 216,0)
+
+inst_63:
+// rs2_val == 2097152,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x401; op2val:0x200000; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x401, 0x200000, 0x4, 1b, x2, 220,0)
+
+inst_64:
+// rs2_val == 1048576,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x8000001; op2val:0x100000; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x8000001, 0x100000, 0x556, 1b, x2, 224,0)
+
+inst_65:
+// rs2_val == 524288,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x8; op2val:0x80000; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x8, 0x80000, 0x400, 1b, x2, 228,0)
+
+inst_66:
+// rs2_val == 262144, rs1_val == 256
+// opcode: beq, op1:x10; op2:x11; op1val:0x100; op2val:0x40000; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x100, 0x40000, 0x0, 1b, x2, 232,0)
+
+inst_67:
+// rs2_val == 65536,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xa; op2val:0x10000; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xa, 0x10000, 0x0, 3f, x2, 236,0)
+
+inst_68:
+// rs2_val == 32768,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x8000; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x8000, 0xa, 1b, x2, 240,0)
+
+inst_69:
+// rs2_val == 16384,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x40001; op2val:0x4000; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x40001, 0x4000, 0x40, 3f, x2, 244,0)
+
+inst_70:
+// rs2_val == 8192,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x8001; op2val:0x2000; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x8001, 0x2000, 0x6, 3f, x2, 248,0)
+
+inst_71:
+// rs2_val == 4096,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x1000; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x1000, 0x400, 1b, x2, 252,0)
+
+inst_72:
+// rs2_val == 2048,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x5; op2val:0x800; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x5, 0x800, 0x4, 1b, x2, 256,0)
+
+inst_73:
+// rs2_val == 1024,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x400001; op2val:0x400; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x400001, 0x400, 0x10, 3f, x2, 260,0)
+
+inst_74:
+// rs2_val == 512,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x101; op2val:0x200; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x101, 0x200, 0x400, 1b, x2, 264,0)
+
+inst_75:
+// rs2_val == 256,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x100; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x100, 0x20, 3f, x2, 268,0)
+
+inst_76:
+// rs2_val == 64,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x40; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x40, 0x40, 3f, x2, 272,0)
+
+inst_77:
+// rs2_val == 32,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x20; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x20, 0x2, 3f, x2, 276,0)
+
+inst_78:
+// rs2_val == 16,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x200001; op2val:0x10; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x200001, 0x10, 0x200, 3f, x2, 280,0)
+
+inst_79:
+// rs2_val == 8,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x8; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x8, 0x6, 1b, x2, 284,0)
+
+inst_80:
+// rs2_val == 4, rs1_val == 16384
+// opcode: beq, op1:x10; op2:x11; op1val:0x4000; op2val:0x4; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4000, 0x4, 0x200, 3f, x2, 288,0)
+
+inst_81:
+// rs2_val == 1,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x20001; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x20001, 0x1, 0x6, 3f, x2, 292,0)
+
+inst_82:
+// rs1_val == -2147483648,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x80000000; op2val:0x40000000; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x80000000, 0x40000000, 0x2, 3f, x2, 296,0)
+
+inst_83:
+// rs1_val == 1073741824,
+// opcode: beq, op1:x10; op2:x11; op1val:0x40000000; op2val:-0x81; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x40000000, -0x81, 0xa, 1b, x2, 300,0)
+
+inst_84:
+// rs1_val == 536870912,
+// opcode: beq, op1:x10; op2:x11; op1val:0x20000000; op2val:-0x40000001; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x20000000, -0x40000001, 0x4, 3f, x2, 304,0)
+
+inst_85:
+// rs1_val == 268435456,
+// opcode: beq, op1:x10; op2:x11; op1val:0x10000000; op2val:-0x40000001; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x10000000, -0x40000001, 0x0, 3f, x2, 308,0)
+
+inst_86:
+// rs1_val == 67108864,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4000000; op2val:-0x8; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4000000, -0x8, 0x2, 1b, x2, 312,0)
+
+inst_87:
+// rs1_val == 33554432,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2000000; op2val:0x10; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2000000, 0x10, 0x100, 3f, x2, 316,0)
+
+inst_88:
+// rs1_val == 16777216,
+// opcode: beq, op1:x10; op2:x11; op1val:0x1000000; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x1000000, 0x6, 0x0, 1b, x2, 320,0)
+
+inst_89:
+// rs1_val == 4194304,
+// opcode: beq, op1:x10; op2:x11; op1val:0x400000; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x400000, 0x66666666, 0x6, 3f, x2, 324,0)
+
+inst_90:
+// rs1_val == 2097152,
+// opcode: beq, op1:x10; op2:x11; op1val:0x200000; op2val:-0x2; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x200000, -0x2, 0x80, 3f, x2, 328,0)
+
+inst_91:
+// rs1_val == 1048576,
+// opcode: beq, op1:x10; op2:x11; op1val:0x100000; op2val:0x66666667; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x100000, 0x66666667, 0xa, 1b, x2, 332,0)
+
+inst_92:
+// rs1_val == 524288,
+// opcode: beq, op1:x10; op2:x11; op1val:0x80000; op2val:-0x101; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x80000, -0x101, 0x6, 3f, x2, 336,0)
+
+inst_93:
+// rs1_val == 262144, rs2_val == 1431655765
+// opcode: beq, op1:x10; op2:x11; op1val:0x40000; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x40000, 0x55555555, 0x6, 3f, x2, 340,0)
+
+inst_94:
+// rs1_val == 131072,
+// opcode: beq, op1:x10; op2:x11; op1val:0x20000; op2val:-0x10000001; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x20000, -0x10000001, 0x4, 3f, x2, 344,0)
+
+inst_95:
+// rs1_val == 65536,
+// opcode: beq, op1:x10; op2:x11; op1val:0x10000; op2val:-0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x10000, -0x55555555, 0xa, 1b, x2, 348,0)
+
+inst_96:
+// rs1_val == 4096,
+// opcode: beq, op1:x10; op2:x11; op1val:0x1000; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x1000, 0x66666665, 0x4, 1b, x2, 352,0)
+
+inst_97:
+// rs1_val == 2048,
+// opcode: beq, op1:x10; op2:x11; op1val:0x800; op2val:-0x200001; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x800, -0x200001, 0x8, 3f, x2, 356,0)
+
+inst_98:
+// rs1_val == 1024,
+// opcode: beq, op1:x10; op2:x11; op1val:0x400; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x400, 0x3, 0x8, 3f, x2, 360,0)
+
+inst_99:
+// rs1_val == 128,
+// opcode: beq, op1:x10; op2:x11; op1val:0x80; op2val:0x2000000; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x80, 0x2000000, 0x6, 1b, x2, 364,0)
+
+inst_100:
+// rs1_val == 64,
+// opcode: beq, op1:x10; op2:x11; op1val:0x40; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x40, 0x3, 0x8, 1b, x2, 368,0)
+
+inst_101:
+// rs1_val == 16,
+// opcode: beq, op1:x10; op2:x11; op1val:0x10; op2val:-0x80000000; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x10, -0x80000000, 0x556, 1b, x2, 372,0)
+
+inst_102:
+// rs1_val == 8,
+// opcode: beq, op1:x10; op2:x11; op1val:0x8; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x8, 0x33333332, 0x2, 1b, x2, 376,0)
+
+inst_103:
+// rs1_val == 2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x7; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x7, 0x100, 3f, x2, 380,0)
+
+inst_104:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0xb505, 0x4, 3f, x2, 384,0)
+
+inst_105:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, -0xb503, 0x400, 1b, x2, 388,0)
+
+inst_106:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x66666667, 0x2, 1b, x2, 392,0)
+
+inst_107:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x33333334, 0x40, 3f, x2, 396,0)
+
+inst_108:
+// rs1_val==46341 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x6, 0x2, 3f, x2, 400,0)
+
+inst_109:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, -0x55555555, 0x10, 3f, x2, 404,0)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x55555556, 0x40, 3f, x2, 408,0)
+
+inst_111:
+// rs1_val==46341 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x4, 0x10, 3f, x2, 412,0)
+
+inst_112:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0xb503, 0x6, 3f, x2, 416,0)
+
+inst_113:
+// rs1_val==46341 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x0; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x0, 0x10, 3f, x2, 420,0)
+
+inst_114:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x66666665, 0x200, 3f, x2, 424,0)
+
+inst_115:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x33333332, 0x6, 3f, x2, 428,0)
+
+inst_116:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x55555554, 0x8, 3f, x2, 432,0)
+
+inst_117:
+// rs1_val==46341 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x2, 0x0, 3f, x2, 436,0)
+
+inst_118:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0xb504, 0x4, 3f, x2, 440,0)
+
+inst_119:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, -0xb504, 0x400, 1b, x2, 444,0)
+
+inst_120:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x66666666, 0xa, 1b, x2, 448,0)
+
+inst_121:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x33333333, 0x8, 3f, x2, 452,0)
+
+inst_122:
+// rs1_val==46341 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x5, 0x8, 3f, x2, 456,0)
+
+inst_123:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, -0x55555556, 0xa, 1b, x2, 460,0)
+
+inst_124:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x55555555, 0x0, 1b, x2, 464,0)
+
+inst_125:
+// rs1_val==46341 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb505; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb505, 0x3, 0x10, 3f, x2, 468,0)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0xb505, 0x2, 3f, x2, 472,0)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, -0xb503, 0x0, 3f, x2, 476,0)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x66666667, 0x0, 1b, x2, 480,0)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x33333334, 0xa, 1b, x2, 484,0)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x6, 0x80, 3f, x2, 488,0)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, -0x55555555, 0x20, 3f, x2, 492,0)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x55555556, 0x400, 1b, x2, 496,0)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x4; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x4, 0x80, 3f, x2, 500,0)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0xb503, 0x6, 3f, x2, 504,0)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x0, 0x400, 3f, x2, 508,0)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x66666665, 0x4, 1b, x2, 512,0)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x33333332, 0x0, 1b, x2, 516,0)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x55555554, 0x10, 3f, x2, 520,0)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x2; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x2, 0x40, 3f, x2, 524,0)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0xb504, 0x6, 1b, x2, 528,0)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, -0xb504, 0x4, 1b, x2, 532,0)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x66666666, 0x6, 1b, x2, 536,0)
+
+inst_143:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x33333333, 0x556, 1b, x2, 540,0)
+
+inst_144:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x5; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x5, 0x10, 3f, x2, 544,0)
+
+inst_145:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, -0x55555556, 0xa, 1b, x2, 548,0)
+
+inst_146:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x55555555, 0x8, 3f, x2, 552,0)
+
+inst_147:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb503; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb503, 0x3, 0x10, 3f, x2, 556,0)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0xb505, 0x6, 3f, x2, 560,0)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, -0xb503, 0x80, 3f, x2, 564,0)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x66666667, 0x40, 3f, x2, 568,0)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x33333334, 0x2, 1b, x2, 572,0)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x6, 0x4, 1b, x2, 576,0)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, -0x55555555, 0x200, 3f, x2, 580,0)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x55555556, 0x2, 3f, x2, 584,0)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x4; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x4, 0xa, 1b, x2, 588,0)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0xb503, 0xa, 1b, x2, 592,0)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x0; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x0, 0x10, 3f, x2, 596,0)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x66666665, 0x200, 3f, x2, 600,0)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x33333332, 0x200, 3f, x2, 604,0)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x55555554, 0x8, 3f, x2, 608,0)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x2, 0x8, 3f, x2, 612,0)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0xb504, 0x8, 1b, x2, 616,0)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, -0xb504, 0x0, 1b, x2, 620,0)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x66666666, 0x4, 3f, x2, 624,0)
+
+inst_165:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x33333333, 0x8, 3f, x2, 628,0)
+
+inst_166:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x5; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x5, 0x556, 1b, x2, 632,0)
+
+inst_167:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, -0x55555556, 0x2, 1b, x2, 636,0)
+
+inst_168:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x55555555, 0x2, 3f, x2, 640,0)
+
+inst_169:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666667; op2val:0x3; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666667, 0x3, 0x556, 1b, x2, 644,0)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0xb505, 0x0, 1b, x2, 648,0)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, -0xb503, 0x400, 3f, x2, 652,0)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x66666667, 0x400, 3f, x2, 656,0)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x33333334, 0x2, 3f, x2, 660,0)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x6, 0xa, 1b, x2, 664,0)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, -0x55555555, 0x200, 3f, x2, 668,0)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x55555556, 0x8, 1b, x2, 672,0)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x4; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x4, 0x20, 3f, x2, 676,0)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0xb503, 0x4, 1b, x2, 680,0)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x0; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x0, 0x100, 3f, x2, 684,0)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x66666665, 0x10, 3f, x2, 688,0)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x33333332, 0x200, 3f, x2, 692,0)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x55555554, 0x400, 1b, x2, 696,0)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x2, 0x4, 1b, x2, 700,0)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0xb504, 0x100, 3f, x2, 704,0)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, -0xb504, 0x0, 1b, x2, 708,0)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x66666666, 0x6, 1b, x2, 712,0)
+
+inst_187:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x33333333, 0x20, 3f, x2, 716,0)
+
+inst_188:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x5, 0x200, 3f, x2, 720,0)
+
+inst_189:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, -0x55555556, 0x40, 3f, x2, 724,0)
+
+inst_190:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x55555555, 0x556, 1b, x2, 728,0)
+
+inst_191:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333334; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333334, 0x3, 0x0, 1b, x2, 732,0)
+
+inst_192:
+// rs1_val==6 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0xb505, 0x20, 3f, x2, 736,0)
+
+inst_193:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:-0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, -0xb503, 0x40, 3f, x2, 740,0)
+
+inst_194:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x66666667, 0x2, 3f, x2, 744,0)
+
+inst_195:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x33333334; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x33333334, 0x556, 1b, x2, 748,0)
+
+inst_196:
+// rs1_val==6 and rs2_val==6, rs1_val == rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x6, 0x8, 1b, x2, 752,0)
+
+inst_197:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, -0x55555555, 0x6, 1b, x2, 756,0)
+
+inst_198:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x55555556, 0x6, 1b, x2, 760,0)
+
+inst_199:
+// rs1_val==6 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x4, 0x2, 3f, x2, 764,0)
+
+inst_200:
+// rs1_val==6 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0xb503, 0xa, 1b, x2, 768,0)
+
+inst_201:
+// rs1_val==6 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x0, 0x2, 1b, x2, 772,0)
+
+inst_202:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x66666665; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x66666665, 0x80, 3f, x2, 776,0)
+
+inst_203:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x33333332, 0x200, 3f, x2, 780,0)
+
+inst_204:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x55555554, 0x2, 3f, x2, 784,0)
+
+inst_205:
+// rs1_val==6 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x2, 0x0, 1b, x2, 788,0)
+
+inst_206:
+// rs1_val==6 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0xb504, 0x40, 3f, x2, 792,0)
+
+inst_207:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:-0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, -0xb504, 0x8, 1b, x2, 796,0)
+
+inst_208:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x66666666, 0x400, 1b, x2, 800,0)
+
+inst_209:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x33333333; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x33333333, 0x20, 3f, x2, 804,0)
+
+inst_210:
+// rs1_val==6 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x5, 0xa, 1b, x2, 808,0)
+
+inst_211:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, -0x55555556, 0x4, 1b, x2, 812,0)
+
+inst_212:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x55555555, 0x4, 1b, x2, 816,0)
+
+inst_213:
+// rs1_val==6 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x6; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x6, 0x3, 0x6, 3f, x2, 820,0)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0xb505, 0x20, 3f, x2, 824,0)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, -0xb503, 0x6, 1b, x2, 828,0)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x66666667, 0x556, 1b, x2, 832,0)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x33333334, 0x8, 3f, x2, 836,0)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x6, 0x40, 3f, x2, 840,0)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, -0x55555555, 0x8, 3f, x2, 844,0)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x55555556, 0xa, 1b, x2, 848,0)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x4, 0x6, 1b, x2, 852,0)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0xb503, 0xa, 1b, x2, 856,0)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x0, 0x6, 3f, x2, 860,0)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x66666665, 0x400, 1b, x2, 864,0)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x33333332, 0x10, 3f, x2, 868,0)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x55555554, 0x400, 1b, x2, 872,0)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x2, 0x0, 3f, x2, 876,0)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0xb504, 0x10, 3f, x2, 880,0)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, -0xb504, 0x0, 1b, x2, 884,0)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x66666666, 0x40, 3f, x2, 888,0)
+
+inst_231:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x33333333, 0x10, 3f, x2, 892,0)
+
+inst_232:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x5, 0x2, 1b, x2, 896,0)
+
+inst_233:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, -0x55555556, 0x2, 3f, x2, 900,0)
+
+inst_234:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x55555555, 0x100, 3f, x2, 904,0)
+
+inst_235:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555555, 0x3, 0xa, 1b, x2, 908,0)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0xb505, 0x400, 3f, x2, 912,0)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, -0xb503, 0xa, 1b, x2, 916,0)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x66666667, 0x6, 1b, x2, 920,0)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x33333334, 0x2, 3f, x2, 924,0)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x6, 0x8, 3f, x2, 928,0)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, -0x55555555, 0x4, 1b, x2, 932,0)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x55555556, 0x0, 1b, x2, 936,0)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x4; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x4, 0x200, 3f, x2, 940,0)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0xb503, 0x200, 3f, x2, 944,0)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x0, 0x400, 3f, x2, 948,0)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x66666665, 0x6, 1b, x2, 952,0)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x33333332, 0x0, 1b, x2, 956,0)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x55555554, 0x6, 1b, x2, 960,0)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x2, 0x8, 3f, x2, 964,0)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0xb504, 0x100, 3f, x2, 968,0)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, -0xb504, 0xa, 1b, x2, 972,0)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x66666666, 0x4, 1b, x2, 976,0)
+
+inst_253:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x33333333, 0x4, 1b, x2, 980,0)
+
+inst_254:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x5, 0x6, 1b, x2, 984,0)
+
+inst_255:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, -0x55555556, 0x200, 3f, x2, 988,0)
+
+inst_256:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x55555555, 0x6, 3f, x2, 992,0)
+
+inst_257:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555556; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555556, 0x3, 0x2, 3f, x2, 996,0)
+
+inst_258:
+// rs1_val==4 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0xb505, 0x0, 3f, x2, 1000,0)
+
+inst_259:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:-0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, -0xb503, 0x556, 1b, x2, 1004,0)
+
+inst_260:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x66666667, 0x400, 3f, x2, 1008,0)
+
+inst_261:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x33333334, 0x6, 1b, x2, 1012,0)
+
+inst_262:
+// rs1_val==4 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x6; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x6, 0x400, 3f, x2, 1016,0)
+
+inst_263:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, -0x55555555, 0x2, 1b, x2, 1020,0)
+
+inst_264:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x55555556, 0x6, 1b, x2, 1024,0)
+
+inst_265:
+// rs1_val==4 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x4; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x4, 0x200, 3f, x2, 1028,0)
+
+inst_266:
+// rs1_val==4 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0xb503, 0x2, 3f, x2, 1032,0)
+
+inst_267:
+// rs1_val==4 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x0; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x0, 0x100, 3f, x2, 1036,0)
+
+inst_268:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x66666665; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x66666665, 0xa, 1b, x2, 1040,0)
+
+inst_269:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x33333332, 0x556, 1b, x2, 1044,0)
+
+inst_270:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x55555554, 0x8, 1b, x2, 1048,0)
+
+inst_271:
+// rs1_val==4 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x2, 0x10, 3f, x2, 1052,0)
+
+inst_272:
+// rs1_val==4 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0xb504, 0x0, 1b, x2, 1056,0)
+
+inst_273:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:-0xb504; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, -0xb504, 0xa, 1b, x2, 1060,0)
+
+inst_274:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x66666666; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x66666666, 0x80, 3f, x2, 1064,0)
+
+inst_275:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x33333333, 0x0, 3f, x2, 1068,0)
+
+inst_276:
+// rs1_val==4 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x5, 0x40, 3f, x2, 1072,0)
+
+inst_277:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, -0x55555556, 0x8, 1b, x2, 1076,0)
+
+inst_278:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x55555555, 0x6, 1b, x2, 1080,0)
+
+inst_279:
+// rs1_val==4 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x4; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x4, 0x3, 0x8, 1b, x2, 1084,0)
+
+inst_280:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0xb505, 0x40, 3f, x2, 1088,0)
+
+inst_281:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, -0xb503, 0x2, 1b, x2, 1092,0)
+
+inst_282:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x66666667, 0x10, 3f, x2, 1096,0)
+
+inst_283:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x33333334, 0x20, 3f, x2, 1100,0)
+
+inst_284:
+// rs1_val==46339 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x6; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x6, 0x100, 3f, x2, 1104,0)
+
+inst_285:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, -0x55555555, 0x2, 3f, x2, 1108,0)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x55555556, 0x400, 3f, x2, 1112,0)
+
+inst_287:
+// rs1_val==46339 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x4, 0x4, 3f, x2, 1116,0)
+
+inst_288:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0xb503, 0x6, 1b, x2, 1120,0)
+
+inst_289:
+// rs1_val==46339 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x0, 0x556, 1b, x2, 1124,0)
+
+inst_290:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x66666665, 0x400, 3f, x2, 1128,0)
+
+inst_291:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x33333332, 0x8, 1b, x2, 1132,0)
+
+inst_292:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x55555554, 0x0, 3f, x2, 1136,0)
+
+inst_293:
+// rs1_val==46339 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x2, 0x6, 3f, x2, 1140,0)
+
+inst_294:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0xb504, 0x6, 3f, x2, 1144,0)
+
+inst_295:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, -0xb504, 0x400, 1b, x2, 1148,0)
+
+inst_296:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x66666666, 0x0, 1b, x2, 1152,0)
+
+inst_297:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x33333333, 0x20, 3f, x2, 1156,0)
+
+inst_298:
+// rs1_val==46339 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x5, 0x400, 1b, x2, 1160,0)
+
+inst_299:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, -0x55555556, 0x400, 3f, x2, 1164,0)
+
+inst_300:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x55555555, 0x400, 1b, x2, 1168,0)
+
+inst_301:
+// rs1_val==46339 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb503; op2val:0x3; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb503, 0x3, 0x556, 1b, x2, 1172,0)
+
+inst_302:
+// rs1_val==0 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0xb505; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0xb505, 0x556, 1b, x2, 1176,0)
+
+inst_303:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:-0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, -0xb503, 0x2, 1b, x2, 1180,0)
+
+inst_304:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x66666667; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x66666667, 0x10, 3f, x2, 1184,0)
+
+inst_305:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x33333334, 0x2, 1b, x2, 1188,0)
+
+inst_306:
+// rs1_val==0 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x6, 0x80, 3f, x2, 1192,0)
+
+inst_307:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, -0x55555555, 0x80, 3f, x2, 1196,0)
+
+inst_308:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x55555556, 0x400, 1b, x2, 1200,0)
+
+inst_309:
+// rs1_val==0 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x4, 0x10, 3f, x2, 1204,0)
+
+inst_310:
+// rs1_val==0 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0xb503, 0x4, 3f, x2, 1208,0)
+
+inst_311:
+// rs1_val==0 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x0, 0x8, 1b, x2, 1212,0)
+
+inst_312:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x66666665, 0x6, 3f, x2, 1216,0)
+
+inst_313:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x33333332, 0x200, 3f, x2, 1220,0)
+
+inst_314:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x55555554; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x55555554, 0x100, 3f, x2, 1224,0)
+
+inst_315:
+// rs1_val==0 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x2, 0x80, 3f, x2, 1228,0)
+
+inst_316:
+// rs1_val==0 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0xb504, 0x40, 3f, x2, 1232,0)
+
+inst_317:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:-0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, -0xb504, 0x20, 3f, x2, 1236,0)
+
+inst_318:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x66666666; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x66666666, 0x556, 1b, x2, 1240,0)
+
+inst_319:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x33333333, 0x0, 3f, x2, 1244,0)
+
+inst_320:
+// rs1_val==0 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x5, 0x0, 3f, x2, 1248,0)
+
+inst_321:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, -0x55555556, 0x6, 3f, x2, 1252,0)
+
+inst_322:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x55555555, 0x556, 1b, x2, 1256,0)
+
+inst_323:
+// rs1_val==0 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x0; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x0, 0x3, 0x10, 3f, x2, 1260,0)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0xb505, 0x40, 3f, x2, 1264,0)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, -0xb503, 0x6, 3f, x2, 1268,0)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x66666667, 0x8, 3f, x2, 1272,0)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x33333334, 0x4, 1b, x2, 1276,0)
+
+inst_328:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x6, 0x0, 3f, x2, 1280,0)
+
+inst_329:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, -0x55555555, 0x4, 3f, x2, 1284,0)
+
+inst_330:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x55555556, 0x400, 1b, x2, 1288,0)
+
+inst_331:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x4, 0x10, 3f, x2, 1292,0)
+
+inst_332:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0xb503, 0x400, 1b, x2, 1296,0)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x0, 0x6, 3f, x2, 1300,0)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x66666665, 0x40, 3f, x2, 1304,0)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x33333332, 0x400, 3f, x2, 1308,0)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x55555554, 0x6, 1b, x2, 1312,0)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x2; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x2, 0x40, 3f, x2, 1316,0)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0xb504, 0x10, 3f, x2, 1320,0)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, -0xb504, 0x20, 3f, x2, 1324,0)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x66666666, 0x2, 3f, x2, 1328,0)
+
+inst_341:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x33333333, 0x4, 3f, x2, 1332,0)
+
+inst_342:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x5, 0x0, 3f, x2, 1336,0)
+
+inst_343:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, -0x55555556, 0x200, 3f, x2, 1340,0)
+
+inst_344:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x55555555, 0x8, 3f, x2, 1344,0)
+
+inst_345:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x3, 0x4, 3f, x2, 1348,0)
+
+inst_346:
+// rs1_val==5 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0xb505, 0x400, 3f, x2, 1352,0)
+
+inst_347:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, -0xb503, 0x4, 3f, x2, 1356,0)
+
+inst_348:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x66666667; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x66666667, 0x200, 3f, x2, 1360,0)
+
+inst_349:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x33333334, 0x2, 1b, x2, 1364,0)
+
+inst_350:
+// rs1_val==5 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x6, 0x4, 1b, x2, 1368,0)
+
+inst_351:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, -0x55555555, 0x8, 3f, x2, 1372,0)
+
+inst_352:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x55555556, 0x40, 3f, x2, 1376,0)
+
+inst_353:
+// rs1_val==5 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x4, 0x0, 1b, x2, 1380,0)
+
+inst_354:
+// rs1_val==5 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0xb503, 0x8, 3f, x2, 1384,0)
+
+inst_355:
+// rs1_val==5 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x0; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x0, 0xa, 1b, x2, 1388,0)
+
+inst_356:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x66666665, 0x8, 1b, x2, 1392,0)
+
+inst_357:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x33333332, 0x400, 3f, x2, 1396,0)
+
+inst_358:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x55555554; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x55555554, 0x10, 3f, x2, 1400,0)
+
+inst_359:
+// rs1_val==5 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x2; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x2, 0x556, 1b, x2, 1404,0)
+
+inst_360:
+// rs1_val==5 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0xb504, 0x0, 3f, x2, 1408,0)
+
+inst_361:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, -0xb504, 0x400, 1b, x2, 1412,0)
+
+inst_362:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x66666666, 0x2, 3f, x2, 1416,0)
+
+inst_363:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x33333333, 0x6, 3f, x2, 1420,0)
+
+inst_364:
+// rs1_val==5 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x5, 0xa, 1b, x2, 1424,0)
+
+inst_365:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, -0x55555556, 0x8, 3f, x2, 1428,0)
+
+inst_366:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x55555555, 0x2, 3f, x2, 1432,0)
+
+inst_367:
+// rs1_val==5 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x5; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x5, 0x3, 0x20, 3f, x2, 1436,0)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0xb505, 0x20, 3f, x2, 1440,0)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, -0xb503, 0x200, 3f, x2, 1444,0)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x66666667, 0x10, 3f, x2, 1448,0)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x33333334, 0x556, 1b, x2, 1452,0)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x6, 0xa, 1b, x2, 1456,0)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, -0x55555555, 0x8, 3f, x2, 1460,0)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x55555556, 0x4, 1b, x2, 1464,0)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x4, 0x6, 1b, x2, 1468,0)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0xb503, 0x8, 3f, x2, 1472,0)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x0, 0x200, 3f, x2, 1476,0)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x66666665, 0x2, 3f, x2, 1480,0)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x33333332, 0x8, 1b, x2, 1484,0)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x55555554, 0x6, 1b, x2, 1488,0)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x2, 0x200, 3f, x2, 1492,0)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0xb504, 0x8, 1b, x2, 1496,0)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, -0xb504, 0x2, 1b, x2, 1500,0)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x66666666, 0x8, 3f, x2, 1504,0)
+
+inst_385:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x33333333, 0x8, 1b, x2, 1508,0)
+
+inst_386:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x5, 0x20, 3f, x2, 1512,0)
+
+inst_387:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, -0x55555556, 0x2, 1b, x2, 1516,0)
+
+inst_388:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x55555555, 0x80, 3f, x2, 1520,0)
+
+inst_389:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x55555556, 0x3, 0x4, 1b, x2, 1524,0)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0xb505, 0x0, 3f, x2, 1528,0)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, -0xb503, 0x100, 3f, x2, 1532,0)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x66666667, 0x0, 3f, x2, 1536,0)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x33333334, 0x40, 3f, x2, 1540,0)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x6, 0x8, 3f, x2, 1544,0)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, -0x55555555, 0x2, 1b, x2, 1548,0)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x55555556, 0x100, 3f, x2, 1552,0)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x4, 0x2, 1b, x2, 1556,0)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0xb503, 0x4, 3f, x2, 1560,0)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x0; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x0, 0x10, 3f, x2, 1564,0)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x66666665, 0x400, 1b, x2, 1568,0)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x33333332, 0x20, 3f, x2, 1572,0)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x55555554, 0x40, 3f, x2, 1576,0)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x2; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x2, 0x40, 3f, x2, 1580,0)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0xb504, 0x400, 1b, x2, 1584,0)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, -0xb504, 0x400, 3f, x2, 1588,0)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x66666666, 0x40, 3f, x2, 1592,0)
+
+inst_407:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x33333333, 0x6, 3f, x2, 1596,0)
+
+inst_408:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x5, 0x0, 3f, x2, 1600,0)
+
+inst_409:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, -0x55555556, 0x6, 3f, x2, 1604,0)
+
+inst_410:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x55555555, 0x0, 1b, x2, 1608,0)
+
+inst_411:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555555; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555555, 0x3, 0x10, 3f, x2, 1612,0)
+
+inst_412:
+// rs1_val==3 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0xb505, 0x2, 1b, x2, 1616,0)
+
+inst_413:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:-0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, -0xb503, 0x0, 1b, x2, 1620,0)
+
+inst_414:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x66666667, 0x0, 1b, x2, 1624,0)
+
+inst_415:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x33333334, 0x4, 1b, x2, 1628,0)
+
+inst_416:
+// rs1_val==3 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x6, 0x0, 1b, x2, 1632,0)
+
+inst_417:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, -0x55555555, 0x400, 1b, x2, 1636,0)
+
+inst_418:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x55555556, 0x8, 3f, x2, 1640,0)
+
+inst_419:
+// rs1_val==3 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x4; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x4, 0x80, 3f, x2, 1644,0)
+
+inst_420:
+// rs1_val==3 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0xb503, 0x80, 3f, x2, 1648,0)
+
+inst_421:
+// rs1_val==3 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x0; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x0, 0x10, 3f, x2, 1652,0)
+
+inst_422:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x66666665, 0x6, 3f, x2, 1656,0)
+
+inst_423:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x33333332, 0x400, 1b, x2, 1660,0)
+
+inst_424:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x55555554, 0x0, 1b, x2, 1664,0)
+
+inst_425:
+// rs1_val==3 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x2, 0x400, 3f, x2, 1668,0)
+
+inst_426:
+// rs1_val==3 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0xb504, 0x200, 3f, x2, 1672,0)
+
+inst_427:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, -0xb504, 0x400, 3f, x2, 1676,0)
+
+inst_428:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x66666666, 0x0, 3f, x2, 1680,0)
+
+inst_429:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x33333333; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x33333333, 0x10, 3f, x2, 1684,0)
+
+inst_430:
+// rs1_val==3 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x5, 0x40, 3f, x2, 1688,0)
+
+inst_431:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, -0x55555556, 0x400, 3f, x2, 1692,0)
+
+inst_432:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x55555555, 0x400, 3f, x2, 1696,0)
+
+inst_433:
+// rs1_val==3 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x3; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x3, 0x3, 0x20, 3f, x2, 1700,0)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x0, 0x8, 3f, x2, 1704,0)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x66666665, 0x10, 3f, x2, 1708,0)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x33333332, 0x10, 3f, x2, 1712,0)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x55555554, 0x556, 1b, x2, 1716,0)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x2, 0x0, 1b, x2, 1720,0)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0xb504, 0x0, 1b, x2, 1724,0)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, -0xb504, 0x6, 1b, x2, 1728,0)
+
+inst_441:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x66666666, 0x8, 1b, x2, 1732,0)
+
+inst_442:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x33333333, 0x2, 3f, x2, 1736,0)
+
+inst_443:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x5, 0x0, 1b, x2, 1740,0)
+
+inst_444:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, -0x55555556, 0x40, 3f, x2, 1744,0)
+
+inst_445:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x55555555, 0x6, 3f, x2, 1748,0)
+
+inst_446:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666665; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666665, 0x3, 0x4, 3f, x2, 1752,0)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0xb505, 0x4, 3f, x2, 1756,0)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, -0xb503, 0x8, 1b, x2, 1760,0)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x66666667, 0x4, 1b, x2, 1764,0)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x33333334, 0x4, 3f, x2, 1768,0)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x6, 0xa, 1b, x2, 1772,0)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, -0x55555555, 0x80, 3f, x2, 1776,0)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x55555556, 0x100, 3f, x2, 1780,0)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x4; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x4, 0x20, 3f, x2, 1784,0)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0xb503, 0x400, 3f, x2, 1788,0)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x0, 0x6, 3f, x2, 1792,0)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x66666665, 0x4, 1b, x2, 1796,0)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x33333332, 0x80, 3f, x2, 1800,0)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x55555554, 0x4, 3f, x2, 1804,0)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x2, 0x400, 3f, x2, 1808,0)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0xb504, 0x40, 3f, x2, 1812,0)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, -0xb504, 0x200, 3f, x2, 1816,0)
+
+inst_463:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x66666666, 0x2, 1b, x2, 1820,0)
+
+inst_464:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x33333333, 0x8, 3f, x2, 1824,0)
+
+inst_465:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x5, 0x20, 3f, x2, 1828,0)
+
+inst_466:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, -0x55555556, 0x40, 3f, x2, 1832,0)
+
+inst_467:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x55555555, 0x0, 1b, x2, 1836,0)
+
+inst_468:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333332; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333332, 0x3, 0x6, 1b, x2, 1840,0)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0xb505, 0x10, 3f, x2, 1844,0)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, -0xb503, 0x20, 3f, x2, 1848,0)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x66666667, 0x6, 3f, x2, 1852,0)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x33333334, 0x200, 3f, x2, 1856,0)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x6, 0x200, 3f, x2, 1860,0)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, -0x55555555, 0x400, 1b, x2, 1864,0)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x55555556, 0xa, 1b, x2, 1868,0)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x4; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x4, 0x20, 3f, x2, 1872,0)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0xb503, 0x2, 3f, x2, 1876,0)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x0, 0x6, 3f, x2, 1880,0)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x66666665, 0x0, 3f, x2, 1884,0)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x33333332, 0x10, 3f, x2, 1888,0)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x55555554, 0x0, 3f, x2, 1892,0)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x2, 0x6, 1b, x2, 1896,0)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0xb504, 0x0, 3f, x2, 1900,0)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, -0xb504, 0x4, 1b, x2, 1904,0)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x66666666, 0x20, 3f, x2, 1908,0)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x33333333, 0x8, 1b, x2, 1912,0)
+
+inst_487:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x5, 0x2, 3f, x2, 1916,0)
+
+inst_488:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, -0x55555556, 0x8, 3f, x2, 1920,0)
+
+inst_489:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x55555555, 0x400, 1b, x2, 1924,0)
+
+inst_490:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x55555554; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x55555554, 0x3, 0x2, 3f, x2, 1928,0)
+
+inst_491:
+// rs1_val==2 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0xb505, 0x400, 3f, x2, 1932,0)
+
+inst_492:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, -0xb503, 0x400, 3f, x2, 1936,0)
+
+inst_493:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x66666667, 0x4, 3f, x2, 1940,0)
+
+inst_494:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x33333334, 0x4, 1b, x2, 1944,0)
+
+inst_495:
+// rs1_val==2 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x6; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x6, 0x100, 3f, x2, 1948,0)
+
+inst_496:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, -0x55555555, 0x556, 1b, x2, 1952,0)
+
+inst_497:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x55555556, 0x4, 3f, x2, 1956,0)
+
+inst_498:
+// rs1_val==2 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x4, 0x6, 1b, x2, 1960,0)
+
+inst_499:
+// rs1_val==2 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0xb503, 0x556, 1b, x2, 1964,0)
+
+inst_500:
+// rs1_val==2 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x0, 0x4, 1b, x2, 1968,0)
+
+inst_501:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x66666665; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x66666665, 0x200, 3f, x2, 1972,0)
+
+inst_502:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x33333332, 0x0, 1b, x2, 1976,0)
+
+inst_503:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x55555554; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x55555554, 0x80, 3f, x2, 1980,0)
+
+inst_504:
+// rs1_val==2 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x2, 0x2, 1b, x2, 1984,0)
+
+inst_505:
+// rs1_val==2 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0xb504, 0x556, 1b, x2, 1988,0)
+
+inst_506:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, -0xb504, 0x0, 3f, x2, 1992,0)
+
+inst_507:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x66666666, 0x0, 3f, x2, 1996,0)
+
+inst_508:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x33333333, 0x400, 1b, x2, 2000,0)
+
+inst_509:
+// rs1_val==2 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x5, 0x2, 3f, x2, 2004,0)
+
+inst_510:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, -0x55555556, 0x10, 3f, x2, 2008,0)
+
+inst_511:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x55555555, 0x400, 3f, x2, 2012,0)
+
+inst_512:
+// rs1_val==2 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x2; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x2, 0x3, 0x10, 3f, x2, 2016,0)
+
+inst_513:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0xb505; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0xb505, 0x100, 3f, x2, 2020,0)
+
+inst_514:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, -0xb503, 0x4, 1b, x2, 2024,0)
+
+inst_515:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x66666667, 0x2, 3f, x2, 2028,0)
+
+inst_516:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x33333334, 0x8, 3f, x2, 2032,0)
+
+inst_517:
+// rs1_val==46340 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x6, 0x8, 1b, x2, 2036,0)
+
+inst_518:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, -0x55555555, 0x0, 1b, x2, 2040,0)
+
+inst_519:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x55555556, 0x6, 3f, x2, 2044,0)
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_520:
+// rs1_val==46340 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x4, 0x6, 1b, x2, 0,0)
+
+inst_521:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0xb503, 0x10, 3f, x2, 4,0)
+
+inst_522:
+// rs1_val==46340 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x0, 0x8, 1b, x2, 8,0)
+
+inst_523:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x66666665, 0x0, 1b, x2, 12,0)
+
+inst_524:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x33333332, 0x400, 3f, x2, 16,0)
+
+inst_525:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x55555554, 0x6, 1b, x2, 20,0)
+
+inst_526:
+// rs1_val==46340 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x2, 0x400, 1b, x2, 24,0)
+
+inst_527:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0xb504, 0x0, 3f, x2, 28,0)
+
+inst_528:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, -0xb504, 0x100, 3f, x2, 32,0)
+
+inst_529:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x66666666, 0x80, 3f, x2, 36,0)
+
+inst_530:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x33333333, 0x8, 1b, x2, 40,0)
+
+inst_531:
+// rs1_val==46340 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x5, 0x2, 1b, x2, 44,0)
+
+inst_532:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, -0x55555556, 0x2, 1b, x2, 48,0)
+
+inst_533:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x55555555, 0x400, 1b, x2, 52,0)
+
+inst_534:
+// rs1_val==46340 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0xb504; op2val:0x3; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0xb504, 0x3, 0xa, 1b, x2, 56,0)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0xb505, 0x80, 3f, x2, 60,0)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, -0xb503, 0x80, 3f, x2, 64,0)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x66666667, 0x400, 3f, x2, 68,0)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x33333334, 0x6, 3f, x2, 72,0)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x6, 0x200, 3f, x2, 76,0)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, -0x55555555, 0x2, 1b, x2, 80,0)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x55555556, 0x0, 1b, x2, 84,0)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x4, 0x4, 3f, x2, 88,0)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0xb503, 0xa, 1b, x2, 92,0)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x0, 0x0, 3f, x2, 96,0)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x66666665, 0x556, 1b, x2, 100,0)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x33333332, 0x200, 3f, x2, 104,0)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x55555554, 0x80, 3f, x2, 108,0)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x2, 0x4, 1b, x2, 112,0)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0xb504, 0x2, 3f, x2, 116,0)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, -0xb504, 0x4, 1b, x2, 120,0)
+
+inst_551:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x66666666, 0x400, 1b, x2, 124,0)
+
+inst_552:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x33333333, 0x10, 3f, x2, 128,0)
+
+inst_553:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x5, 0x8, 3f, x2, 132,0)
+
+inst_554:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, -0x55555556, 0x6, 3f, x2, 136,0)
+
+inst_555:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x55555555, 0x80, 3f, x2, 140,0)
+
+inst_556:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:-0xb504; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0xb504, 0x3, 0x8, 1b, x2, 144,0)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0xb505, 0x20, 3f, x2, 148,0)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, -0xb503, 0x100, 3f, x2, 152,0)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x66666667, 0x6, 1b, x2, 156,0)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x33333334, 0x100, 3f, x2, 160,0)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x6, 0x200, 3f, x2, 164,0)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, -0x55555555, 0x2, 3f, x2, 168,0)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x55555556, 0x10, 3f, x2, 172,0)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x4, 0x4, 3f, x2, 176,0)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0xb503, 0x100, 3f, x2, 180,0)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x0; immval:0x20; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x0, 0x20, 3f, x2, 184,0)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x66666665, 0x556, 1b, x2, 188,0)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x33333332, 0x200, 3f, x2, 192,0)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x55555554, 0x2, 1b, x2, 196,0)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x2, 0x400, 1b, x2, 200,0)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0xb504, 0x100, 3f, x2, 204,0)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, -0xb504, 0x2, 3f, x2, 208,0)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x66666666, 0x0, 3f, x2, 212,0)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x33333333, 0x0, 3f, x2, 216,0)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x5, 0x40, 3f, x2, 220,0)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, -0x55555556, 0x556, 1b, x2, 224,0)
+
+inst_577:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x55555555, 0x556, 1b, x2, 228,0)
+
+inst_578:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: beq, op1:x10; op2:x11; op1val:0x66666666; op2val:0x3; immval:0x556; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x66666666, 0x3, 0x556, 1b, x2, 232,0)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0xb505, 0x400, 1b, x2, 236,0)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, -0xb503, 0x10, 3f, x2, 240,0)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x66666667, 0xa, 1b, x2, 244,0)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334; immval:0x200; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x33333334, 0x200, 3f, x2, 248,0)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x6, 0x0, 3f, x2, 252,0)
+
+inst_584:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, -0x55555555, 0x4, 3f, x2, 256,0)
+
+inst_585:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x55555556, 0xa, 1b, x2, 260,0)
+
+inst_586:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0x4, 0x400, 1b, x2, 264,0)
+
+inst_587:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: beq, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, 0x33333333, 0xb503, 0x400, 1b, x2, 268,0)
+
+inst_588:
+// rs1_val < 0 and rs2_val < 0 and imm_val & 0x03 == 0, rs1_val > rs2_val and imm_val > 0 and imm_val & 0x03 == 0, rs2_val == -67108865, rs1_val == -33554433
+// opcode: beq, op1:x10; op2:x11; op1val:-0x2000001; op2val:-0x4000001; immval:0x8; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x2000001, -0x4000001, 0x8, 3f, x2, 272,0)
+
+inst_589:
+// rs2_val == -524289, rs1_val == -536870913
+// opcode: beq, op1:x10; op2:x11; op1val:-0x20000001; op2val:-0x80001; immval:0x6; align:0
+TEST_BRANCH_OP(beq, x1, x10, x11, -0x20000001, -0x80001, 0x6, 1b, x2, 276,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x5_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 70*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bge-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bge-01.S
new file mode 100644
index 000000000..e468772c8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bge-01.S
@@ -0,0 +1,3015 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the bge instruction of the RISC-V E extension for the bge covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",bge)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 == rs2, rs1==x9, rs2==x9, rs1_val < 0 and rs2_val < 0 and imm_val & 0x03 == 0, rs1_val == -65537, rs1_val < rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x9; op2:x9; op1val:-0x10001; op2val:-0x10001; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x14, x9, x9, -0x10001, -0x10001, 0x400, 1b, x2, 0,0)
+
+inst_1:
+// rs1 != rs2, rs1==x8, rs2==x7, rs2_val == 2147483647, rs1_val < rs2_val and imm_val > 0 and imm_val & 0x03 == 0, rs1_val == 4, rs1_val > 0 and rs2_val > 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x8; op2:x7; op1val:0x4; op2val:0x7fffffff; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x14, x8, x7, 0x4, 0x7fffffff, 0x10, 3f, x2, 4,0)
+
+inst_2:
+// rs1==x5, rs2==x11, rs2_val == -1073741825,
+// opcode: bge, op1:x5; op2:x11; op1val:0x4; op2val:-0x40000001; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x14, x5, x11, 0x4, -0x40000001, 0x2, 1b, x2, 8,0)
+
+inst_3:
+// rs1==x12, rs2==x0, rs2_val == -536870913, rs1_val == -32769, rs1_val > rs2_val and imm_val > 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x12; op2:x0; op1val:-0x8001; op2val:0x0; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x14, x12, x0, -0x8001, 0x0, 0x20, 3f, x2, 12,0)
+
+inst_4:
+// rs1==x3, rs2==x4, rs2_val == -268435457, rs1_val == 536870912
+// opcode: bge, op1:x3; op2:x4; op1val:0x20000000; op2val:-0x10000001; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x14, x3, x4, 0x20000000, -0x10000001, 0x2, 3f, x2, 16,0)
+
+inst_5:
+// rs1==x11, rs2==x1, rs2_val == -134217729, rs1_val == 128, rs1_val > 0 and rs2_val < 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x11; op2:x1; op1val:0x80; op2val:-0x8000001; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x14, x11, x1, 0x80, -0x8000001, 0x10, 3f, x2, 20,0)
+
+inst_6:
+// rs1==x0, rs2==x12, rs2_val == -67108865, rs1_val == 256
+// opcode: bge, op1:x0; op2:x12; op1val:0x0; op2val:-0x4000001; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x14, x0, x12, 0x0, -0x4000001, 0x556, 1b, x2, 24,0)
+
+inst_7:
+// rs1==x7, rs2==x6, rs2_val == -33554433, rs1_val > rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x7; op2:x6; op1val:0x80; op2val:-0x2000001; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x14, x7, x6, 0x80, -0x2000001, 0x4, 1b, x2, 28,0)
+
+inst_8:
+// rs1==x13, rs2==x10, rs2_val == -16777217, rs1_val == 8388608
+// opcode: bge, op1:x13; op2:x10; op1val:0x800000; op2val:-0x1000001; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x14, x13, x10, 0x800000, -0x1000001, 0x2, 1b, x2, 32,0)
+RVTEST_SIGBASE( x7,signature_x7_0)
+
+inst_9:
+// rs1==x1, rs2==x3, rs2_val == -8388609, rs1_val == 268435456
+// opcode: bge, op1:x1; op2:x3; op1val:0x10000000; op2val:-0x800001; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x9, x1, x3, 0x10000000, -0x800001, 0x80, 3f, x7, 0,0)
+
+inst_10:
+// rs1==x2, rs2==x13, rs2_val == -4194305, rs1_val == 32768
+// opcode: bge, op1:x2; op2:x13; op1val:0x8000; op2val:-0x400001; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x9, x2, x13, 0x8000, -0x400001, 0x40, 3f, x7, 4,0)
+
+inst_11:
+// rs1==x14, rs2==x5, rs2_val == -2097153, rs1_val == 2147483647
+// opcode: bge, op1:x14; op2:x5; op1val:0x7fffffff; op2val:-0x200001; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x9, x14, x5, 0x7fffffff, -0x200001, 0x100, 3f, x7, 8,0)
+
+inst_12:
+// rs1==x10, rs2==x15, rs2_val == -1048577, rs1_val == -262145
+// opcode: bge, op1:x10; op2:x15; op1val:-0x40001; op2val:-0x100001; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x9, x10, x15, -0x40001, -0x100001, 0x8, 3f, x7, 12,0)
+
+inst_13:
+// rs1==x6, rs2==x8, rs2_val == -524289,
+// opcode: bge, op1:x6; op2:x8; op1val:0x0; op2val:-0x80001; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x9, x6, x8, 0x0, -0x80001, 0x0, 1b, x7, 16,0)
+
+inst_14:
+// rs1==x4, rs2==x14, rs2_val == -262145, rs1_val == 65536
+// opcode: bge, op1:x4; op2:x14; op1val:0x10000; op2val:-0x40001; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x9, x4, x14, 0x10000, -0x40001, 0x2, 1b, x7, 20,0)
+
+inst_15:
+// rs1==x15, rs2==x2, rs2_val == -131073,
+// opcode: bge, op1:x15; op2:x2; op1val:0x55555554; op2val:-0x20001; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x15, x2, 0x55555554, -0x20001, 0x80, 3f, x7, 24,0)
+
+inst_16:
+// rs2_val == -65537, rs1_val == -3
+// opcode: bge, op1:x10; op2:x11; op1val:-0x3; op2val:-0x10001; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x3, -0x10001, 0x0, 1b, x7, 28,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_17:
+// rs2_val == -32769, rs1_val == 1431655765
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x8001; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, -0x8001, 0x8, 3f, x1, 0,0)
+
+inst_18:
+// rs2_val == -16385,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x4001; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, -0x4001, 0x100, 3f, x1, 4,0)
+
+inst_19:
+// rs2_val == -8193, rs1_val == -131073
+// opcode: bge, op1:x10; op2:x11; op1val:-0x20001; op2val:-0x2001; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x20001, -0x2001, 0x4, 3f, x1, 8,0)
+
+inst_20:
+// rs2_val == -4097, rs1_val == -1048577
+// opcode: bge, op1:x10; op2:x11; op1val:-0x100001; op2val:-0x1001; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x100001, -0x1001, 0x400, 1b, x1, 12,0)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x801; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, -0x801, 0x20, 3f, x1, 16,0)
+
+inst_22:
+// rs2_val == -1025, rs1_val == 512
+// opcode: bge, op1:x10; op2:x11; op1val:0x200; op2val:-0x401; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x200, -0x401, 0x4, 3f, x1, 20,0)
+
+inst_23:
+// rs2_val == -513,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:-0x201; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, -0x201, 0x556, 1b, x1, 24,0)
+
+inst_24:
+// rs2_val == -257, rs1_val == -16777217
+// opcode: bge, op1:x10; op2:x11; op1val:-0x1000001; op2val:-0x101; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x1000001, -0x101, 0x40, 3f, x1, 28,0)
+
+inst_25:
+// rs2_val == -129,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x1000001; op2val:-0x81; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x1000001, -0x81, 0x0, 3f, x1, 32,0)
+
+inst_26:
+// rs2_val == -65,
+// opcode: bge, op1:x10; op2:x11; op1val:0x80; op2val:-0x41; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x80, -0x41, 0x400, 3f, x1, 36,0)
+
+inst_27:
+// rs2_val == -33,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x1; op2val:-0x21; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x1, -0x21, 0x100, 3f, x1, 40,0)
+
+inst_28:
+// rs2_val == -17,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3fffffff; op2val:-0x11; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3fffffff, -0x11, 0xa, 1b, x1, 44,0)
+
+inst_29:
+// rs2_val == -9,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:-0x9; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, -0x9, 0x2, 3f, x1, 48,0)
+
+inst_30:
+// rs2_val == -5, rs1_val == 67108864
+// opcode: bge, op1:x10; op2:x11; op1val:0x4000000; op2val:-0x5; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4000000, -0x5, 0x20, 3f, x1, 52,0)
+
+inst_31:
+// rs2_val == -3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3fffffff; op2val:-0x3; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3fffffff, -0x3, 0x10, 3f, x1, 56,0)
+
+inst_32:
+// rs2_val == -2, rs1_val == -2049
+// opcode: bge, op1:x10; op2:x11; op1val:-0x801; op2val:-0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x801, -0x2, 0x4, 3f, x1, 60,0)
+
+inst_33:
+// rs1_val == -1073741825, rs2_val == 262144
+// opcode: bge, op1:x10; op2:x11; op1val:-0x40000001; op2val:0x40000; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x40000001, 0x40000, 0xa, 1b, x1, 64,0)
+
+inst_34:
+// rs1_val == -536870913, rs2_val == 32
+// opcode: bge, op1:x10; op2:x11; op1val:-0x20000001; op2val:0x20; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x20000001, 0x20, 0xa, 1b, x1, 68,0)
+
+inst_35:
+// rs1_val == -268435457,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x10000001; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x10000001, 0x0, 0x2, 1b, x1, 72,0)
+
+inst_36:
+// rs1_val == -134217729,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x8000001; op2val:-0x7; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x8000001, -0x7, 0x20, 3f, x1, 76,0)
+
+inst_37:
+// rs1_val == -67108865, rs1_val < 0 and rs2_val > 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x10; op2:x11; op1val:-0x4000001; op2val:0x7fffffff; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x4000001, 0x7fffffff, 0x400, 1b, x1, 80,0)
+
+inst_38:
+// rs1_val == -33554433,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x2000001; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x2000001, 0x33333333, 0x8, 3f, x1, 84,0)
+
+inst_39:
+// rs1_val == -8388609,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x800001; op2val:-0x40001; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x800001, -0x40001, 0x8, 3f, x1, 88,0)
+
+inst_40:
+// rs1_val == -4194305,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x400001; op2val:-0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x400001, -0x4, 0x0, 1b, x1, 92,0)
+
+inst_41:
+// rs1_val == -2097153, rs2_val == 2
+// opcode: bge, op1:x10; op2:x11; op1val:-0x200001; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x200001, 0x2, 0x0, 1b, x1, 96,0)
+
+inst_42:
+// rs1_val == -524289,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x80001; op2val:-0x4001; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x80001, -0x4001, 0xa, 1b, x1, 100,0)
+
+inst_43:
+// rs1_val == -16385, rs2_val == 1073741824
+// opcode: bge, op1:x10; op2:x11; op1val:-0x4001; op2val:0x40000000; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x4001, 0x40000000, 0x40, 3f, x1, 104,0)
+
+inst_44:
+// rs1_val == -8193,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x2001; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x2001, 0x2, 0x4, 3f, x1, 108,0)
+
+inst_45:
+// rs1_val == -4097, rs2_val == -1431655766
+// opcode: bge, op1:x10; op2:x11; op1val:-0x1001; op2val:-0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x1001, -0x55555556, 0xa, 1b, x1, 112,0)
+
+inst_46:
+// rs1_val == -1025,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x401; op2val:-0x10000001; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x401, -0x10000001, 0x400, 3f, x1, 116,0)
+
+inst_47:
+// rs1_val == -513,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x201; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x201, 0x0, 0x556, 1b, x1, 120,0)
+
+inst_48:
+// rs1_val == -257,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x101; op2val:0x20; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x101, 0x20, 0x4, 1b, x1, 124,0)
+
+inst_49:
+// rs1_val == -129,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x81; op2val:-0x40000001; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x81, -0x40000001, 0x8, 1b, x1, 128,0)
+
+inst_50:
+// rs1_val == -65,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x41; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x41, 0xb503, 0x8, 1b, x1, 132,0)
+
+inst_51:
+// rs1_val == -33,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x21; op2val:-0x40000000; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x21, -0x40000000, 0x2, 3f, x1, 136,0)
+
+inst_52:
+// rs1_val == -17,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x11; op2val:-0x100001; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x11, -0x100001, 0x4, 3f, x1, 140,0)
+
+inst_53:
+// rs1_val == -9,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x9; op2val:-0x2001; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x9, -0x2001, 0x200, 3f, x1, 144,0)
+
+inst_54:
+// rs1_val == -5,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x5; op2val:-0x201; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x5, -0x201, 0x2, 1b, x1, 148,0)
+
+inst_55:
+// rs1_val == -2,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x2; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x2, 0x33333334, 0x100, 3f, x1, 152,0)
+
+inst_56:
+// rs2_val == -2147483648, rs1_val == -1431655766
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x80000000; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, -0x80000000, 0x6, 1b, x1, 156,0)
+
+inst_57:
+// rs2_val == 536870912, rs1_val == 32
+// opcode: bge, op1:x10; op2:x11; op1val:0x20; op2val:0x20000000; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x20, 0x20000000, 0x6, 3f, x1, 160,0)
+
+inst_58:
+// rs2_val == 268435456,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x5; op2val:0x10000000; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x5, 0x10000000, 0x4, 1b, x1, 164,0)
+
+inst_59:
+// rs2_val == 134217728, rs1_val == 524288
+// opcode: bge, op1:x10; op2:x11; op1val:0x80000; op2val:0x8000000; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x80000, 0x8000000, 0x4, 1b, x1, 168,0)
+
+inst_60:
+// rs2_val == 67108864,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x4000000; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x4000000, 0xa, 1b, x1, 172,0)
+
+inst_61:
+// rs2_val == 33554432,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x2000000; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x2000000, 0x6, 3f, x1, 176,0)
+
+inst_62:
+// rs2_val == 16777216,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x1000000; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x1000000, 0x10, 3f, x1, 180,0)
+
+inst_63:
+// rs2_val == 8388608, rs1_val == rs2_val and imm_val > 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x10; op2:x11; op1val:0x800000; op2val:0x800000; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x800000, 0x800000, 0x80, 3f, x1, 184,0)
+
+inst_64:
+// rs2_val == 4194304,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x400001; op2val:0x400000; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x400001, 0x400000, 0x6, 3f, x1, 188,0)
+
+inst_65:
+// rs2_val == 2097152,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x200000; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x200000, 0x80, 3f, x1, 192,0)
+
+inst_66:
+// rs2_val == 1048576,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x3; op2val:0x100000; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x3, 0x100000, 0x40, 3f, x1, 196,0)
+
+inst_67:
+// rs2_val == 524288,
+// opcode: bge, op1:x10; op2:x11; op1val:0x10000000; op2val:0x80000; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x10000000, 0x80000, 0x4, 3f, x1, 200,0)
+
+inst_68:
+// rs2_val == 131072, rs1_val == 8
+// opcode: bge, op1:x10; op2:x11; op1val:0x8; op2val:0x20000; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x8, 0x20000, 0x556, 1b, x1, 204,0)
+
+inst_69:
+// rs2_val == 65536, rs1_val == 1024
+// opcode: bge, op1:x10; op2:x11; op1val:0x400; op2val:0x10000; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x400, 0x10000, 0x40, 3f, x1, 208,0)
+
+inst_70:
+// rs2_val == 32768,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x8000; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x8000, 0xa, 1b, x1, 212,0)
+
+inst_71:
+// rs2_val == 16384, rs1_val == 2048
+// opcode: bge, op1:x10; op2:x11; op1val:0x800; op2val:0x4000; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x800, 0x4000, 0x200, 3f, x1, 216,0)
+
+inst_72:
+// rs2_val == 8192,
+// opcode: bge, op1:x10; op2:x11; op1val:0x100; op2val:0x2000; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x100, 0x2000, 0x40, 3f, x1, 220,0)
+
+inst_73:
+// rs2_val == 4096, rs1_val == 2
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x1000; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x1000, 0x0, 3f, x1, 224,0)
+
+inst_74:
+// rs2_val == 2048,
+// opcode: bge, op1:x10; op2:x11; op1val:0x800; op2val:0x800; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x800, 0x800, 0x400, 3f, x1, 228,0)
+
+inst_75:
+// rs2_val == 1024,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x400; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x400, 0x8, 3f, x1, 232,0)
+
+inst_76:
+// rs2_val == 512,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x200; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x200, 0x400, 3f, x1, 236,0)
+
+inst_77:
+// rs2_val == 256,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x5; op2val:0x100; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x5, 0x100, 0x400, 3f, x1, 240,0)
+
+inst_78:
+// rs2_val == 128,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x80; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x80, 0x8, 1b, x1, 244,0)
+
+inst_79:
+// rs2_val == 64,
+// opcode: bge, op1:x10; op2:x11; op1val:0x10000; op2val:0x40; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x10000, 0x40, 0x100, 3f, x1, 248,0)
+
+inst_80:
+// rs2_val == 16,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x401; op2val:0x10; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x401, 0x10, 0x200, 3f, x1, 252,0)
+
+inst_81:
+// rs2_val == 8,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x8; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x8, 0x400, 3f, x1, 256,0)
+
+inst_82:
+// rs2_val == 4, rs1_val == 131072
+// opcode: bge, op1:x10; op2:x11; op1val:0x20000; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x20000, 0x4, 0x6, 3f, x1, 260,0)
+
+inst_83:
+// rs2_val == 1,
+// opcode: bge, op1:x10; op2:x11; op1val:0x10000; op2val:0x1; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x10000, 0x1, 0x40, 3f, x1, 264,0)
+
+inst_84:
+// rs1_val == -2147483648,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x80000000; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x80000000, 0x2, 0x8, 1b, x1, 268,0)
+
+inst_85:
+// rs1_val == 1073741824,
+// opcode: bge, op1:x10; op2:x11; op1val:0x40000000; op2val:-0x401; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x40000000, -0x401, 0x10, 3f, x1, 272,0)
+
+inst_86:
+// rs1_val == 134217728,
+// opcode: bge, op1:x10; op2:x11; op1val:0x8000000; op2val:-0x2; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x8000000, -0x2, 0xa, 1b, x1, 276,0)
+
+inst_87:
+// rs1_val == 33554432,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2000000; op2val:-0x40000001; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2000000, -0x40000001, 0x2, 3f, x1, 280,0)
+
+inst_88:
+// rs1_val == 16777216,
+// opcode: bge, op1:x10; op2:x11; op1val:0x1000000; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x1000000, 0x0, 0x2, 3f, x1, 284,0)
+
+inst_89:
+// rs1_val == 4194304,
+// opcode: bge, op1:x10; op2:x11; op1val:0x400000; op2val:-0x8000001; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x400000, -0x8000001, 0x2, 3f, x1, 288,0)
+
+inst_90:
+// rs1_val == 2097152,
+// opcode: bge, op1:x10; op2:x11; op1val:0x200000; op2val:0x4000000; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x200000, 0x4000000, 0x0, 1b, x1, 292,0)
+
+inst_91:
+// rs1_val == 1048576,
+// opcode: bge, op1:x10; op2:x11; op1val:0x100000; op2val:-0x401; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x100000, -0x401, 0x0, 1b, x1, 296,0)
+
+inst_92:
+// rs1_val == 262144,
+// opcode: bge, op1:x10; op2:x11; op1val:0x40000; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x40000, 0x0, 0x2, 3f, x1, 300,0)
+
+inst_93:
+// rs1_val == 16384,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4000; op2val:0x8000000; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4000, 0x8000000, 0x4, 3f, x1, 304,0)
+
+inst_94:
+// rs1_val == 8192,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2000; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2000, 0x0, 0x2, 3f, x1, 308,0)
+
+inst_95:
+// rs1_val == 4096,
+// opcode: bge, op1:x10; op2:x11; op1val:0x1000; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x1000, -0xb503, 0x4, 3f, x1, 312,0)
+
+inst_96:
+// rs1_val == 64,
+// opcode: bge, op1:x10; op2:x11; op1val:0x40; op2val:-0x1000001; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x40, -0x1000001, 0x556, 1b, x1, 316,0)
+
+inst_97:
+// rs1_val == 16,
+// opcode: bge, op1:x10; op2:x11; op1val:0x10; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x10, 0x0, 0x4, 3f, x1, 320,0)
+
+inst_98:
+// rs1_val == 1,
+// opcode: bge, op1:x10; op2:x11; op1val:0x1; op2val:0x3fffffff; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x1, 0x3fffffff, 0x100, 3f, x1, 324,0)
+
+inst_99:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0xb505, 0x20, 3f, x1, 328,0)
+
+inst_100:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, -0xb503, 0x200, 3f, x1, 332,0)
+
+inst_101:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x66666667, 0x0, 3f, x1, 336,0)
+
+inst_102:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x33333334, 0x8, 3f, x1, 340,0)
+
+inst_103:
+// rs1_val==46341 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x6, 0x10, 3f, x1, 344,0)
+
+inst_104:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, -0x55555555, 0x4, 1b, x1, 348,0)
+
+inst_105:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x55555556, 0xa, 1b, x1, 352,0)
+
+inst_106:
+// rs1_val==46341 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x4; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x4, 0x100, 3f, x1, 356,0)
+
+inst_107:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0xb503, 0x2, 1b, x1, 360,0)
+
+inst_108:
+// rs1_val==46341 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x0, 0x4, 1b, x1, 364,0)
+
+inst_109:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x66666665, 0x80, 3f, x1, 368,0)
+
+inst_110:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x33333332, 0x0, 1b, x1, 372,0)
+
+inst_111:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x55555554, 0x400, 1b, x1, 376,0)
+
+inst_112:
+// rs1_val==46341 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x2, 0x2, 1b, x1, 380,0)
+
+inst_113:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0xb504, 0x2, 3f, x1, 384,0)
+
+inst_114:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, -0xb504, 0x20, 3f, x1, 388,0)
+
+inst_115:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x66666666, 0x400, 3f, x1, 392,0)
+
+inst_116:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x33333333, 0x200, 3f, x1, 396,0)
+
+inst_117:
+// rs1_val==46341 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x5; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x5, 0x10, 3f, x1, 400,0)
+
+inst_118:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, -0x55555556, 0x20, 3f, x1, 404,0)
+
+inst_119:
+// rs1_val==46341 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x55555555, 0xa, 1b, x1, 408,0)
+
+inst_120:
+// rs1_val==46341 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb505; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb505, 0x3, 0x10, 3f, x1, 412,0)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0xb505, 0x100, 3f, x1, 416,0)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, -0xb503, 0x2, 3f, x1, 420,0)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x66666667, 0x4, 3f, x1, 424,0)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x33333334, 0x2, 1b, x1, 428,0)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x6, 0x4, 1b, x1, 432,0)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, -0x55555555, 0x4, 3f, x1, 436,0)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x55555556, 0x2, 3f, x1, 440,0)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x4, 0x8, 1b, x1, 444,0)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0xb503, 0x40, 3f, x1, 448,0)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x0; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x0, 0x80, 3f, x1, 452,0)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x66666665, 0x100, 3f, x1, 456,0)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x33333332, 0x4, 3f, x1, 460,0)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x55555554, 0x556, 1b, x1, 464,0)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x2, 0x100, 3f, x1, 468,0)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0xb504, 0x200, 3f, x1, 472,0)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, -0xb504, 0x400, 1b, x1, 476,0)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x66666666, 0x2, 3f, x1, 480,0)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x33333333, 0x0, 3f, x1, 484,0)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x5, 0x8, 3f, x1, 488,0)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, -0x55555556, 0x2, 1b, x1, 492,0)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x55555555, 0x556, 1b, x1, 496,0)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb503; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb503, 0x3, 0x4, 1b, x1, 500,0)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0xb505, 0x8, 3f, x1, 504,0)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, -0xb503, 0x2, 1b, x1, 508,0)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x66666667, 0xa, 1b, x1, 512,0)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x33333334, 0x100, 3f, x1, 516,0)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x6, 0x10, 3f, x1, 520,0)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, -0x55555555, 0x100, 3f, x1, 524,0)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x55555556, 0x0, 1b, x1, 528,0)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x4, 0x6, 1b, x1, 532,0)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0xb503, 0xa, 1b, x1, 536,0)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x0; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x0, 0x100, 3f, x1, 540,0)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x66666665, 0x2, 1b, x1, 544,0)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x33333332, 0x556, 1b, x1, 548,0)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x55555554, 0x556, 1b, x1, 552,0)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x2, 0x100, 3f, x1, 556,0)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0xb504, 0x10, 3f, x1, 560,0)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, -0xb504, 0x200, 3f, x1, 564,0)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x66666666, 0x0, 3f, x1, 568,0)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x33333333, 0x400, 1b, x1, 572,0)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x5, 0x200, 3f, x1, 576,0)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, -0x55555556, 0x2, 3f, x1, 580,0)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x55555555, 0x10, 3f, x1, 584,0)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666667; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666667, 0x3, 0x2, 3f, x1, 588,0)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0xb505, 0x0, 1b, x1, 592,0)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, -0xb503, 0x10, 3f, x1, 596,0)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x66666667, 0x100, 3f, x1, 600,0)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==858993460, rs1_val == rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x33333334, 0x0, 1b, x1, 604,0)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x6, 0x8, 1b, x1, 608,0)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, -0x55555555, 0x6, 1b, x1, 612,0)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x55555556, 0x8, 3f, x1, 616,0)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x4, 0x400, 1b, x1, 620,0)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0xb503, 0x556, 1b, x1, 624,0)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x0; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x0, 0x10, 3f, x1, 628,0)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x66666665, 0x400, 3f, x1, 632,0)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x33333332, 0x80, 3f, x1, 636,0)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x55555554, 0x2, 1b, x1, 640,0)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x2, 0x0, 1b, x1, 644,0)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0xb504, 0x400, 3f, x1, 648,0)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, -0xb504, 0x10, 3f, x1, 652,0)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x66666666, 0x6, 3f, x1, 656,0)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x33333333, 0x0, 3f, x1, 660,0)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x5, 0x0, 1b, x1, 664,0)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, -0x55555556, 0x6, 1b, x1, 668,0)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x55555555, 0x2, 3f, x1, 672,0)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333334; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333334, 0x3, 0x8, 3f, x1, 676,0)
+
+inst_187:
+// rs1_val==6 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0xb505, 0x10, 3f, x1, 680,0)
+
+inst_188:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:-0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, -0xb503, 0x40, 3f, x1, 684,0)
+
+inst_189:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x66666667, 0x4, 3f, x1, 688,0)
+
+inst_190:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x33333334, 0x4, 1b, x1, 692,0)
+
+inst_191:
+// rs1_val==6 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x6, 0x0, 1b, x1, 696,0)
+
+inst_192:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, -0x55555555, 0x2, 1b, x1, 700,0)
+
+inst_193:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x55555556, 0x10, 3f, x1, 704,0)
+
+inst_194:
+// rs1_val==6 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x4, 0x400, 3f, x1, 708,0)
+
+inst_195:
+// rs1_val==6 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0xb503, 0x10, 3f, x1, 712,0)
+
+inst_196:
+// rs1_val==6 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x0, 0x0, 1b, x1, 716,0)
+
+inst_197:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x66666665; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x66666665, 0x80, 3f, x1, 720,0)
+
+inst_198:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x33333332, 0x40, 3f, x1, 724,0)
+
+inst_199:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x55555554; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x55555554, 0xa, 1b, x1, 728,0)
+
+inst_200:
+// rs1_val==6 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x2, 0x2, 1b, x1, 732,0)
+
+inst_201:
+// rs1_val==6 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0xb504, 0x6, 3f, x1, 736,0)
+
+inst_202:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, -0xb504, 0x400, 3f, x1, 740,0)
+
+inst_203:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x66666666, 0x6, 1b, x1, 744,0)
+
+inst_204:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x33333333, 0x2, 1b, x1, 748,0)
+
+inst_205:
+// rs1_val==6 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x5, 0x8, 3f, x1, 752,0)
+
+inst_206:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, -0x55555556, 0x0, 1b, x1, 756,0)
+
+inst_207:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x55555555, 0x400, 3f, x1, 760,0)
+
+inst_208:
+// rs1_val==6 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x6; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x6, 0x3, 0x2, 3f, x1, 764,0)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0xb505, 0x2, 1b, x1, 768,0)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, -0xb503, 0x4, 3f, x1, 772,0)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x66666667, 0x0, 3f, x1, 776,0)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x33333334, 0x0, 1b, x1, 780,0)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x6, 0x20, 3f, x1, 784,0)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, -0x55555555, 0x10, 3f, x1, 788,0)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x55555556, 0x8, 3f, x1, 792,0)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x4, 0x4, 3f, x1, 796,0)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0xb503, 0x20, 3f, x1, 800,0)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x0, 0x20, 3f, x1, 804,0)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x66666665, 0x2, 1b, x1, 808,0)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x33333332, 0x200, 3f, x1, 812,0)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x55555554, 0x400, 3f, x1, 816,0)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x2, 0x6, 3f, x1, 820,0)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0xb504, 0x6, 3f, x1, 824,0)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, -0xb504, 0x0, 3f, x1, 828,0)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x66666666, 0x400, 3f, x1, 832,0)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x33333333, 0x8, 3f, x1, 836,0)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x5, 0x8, 1b, x1, 840,0)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, -0x55555556, 0x2, 1b, x1, 844,0)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x55555555, 0x100, 3f, x1, 848,0)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555555, 0x3, 0x8, 1b, x1, 852,0)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0xb505, 0x40, 3f, x1, 856,0)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, -0xb503, 0x556, 1b, x1, 860,0)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x66666667, 0x2, 3f, x1, 864,0)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x33333334, 0x0, 3f, x1, 868,0)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x6; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x6, 0x40, 3f, x1, 872,0)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, -0x55555555, 0x6, 3f, x1, 876,0)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x55555556, 0x2, 1b, x1, 880,0)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x4, 0x10, 3f, x1, 884,0)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0xb503, 0x6, 1b, x1, 888,0)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x0; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x0, 0x10, 3f, x1, 892,0)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x66666665, 0x0, 1b, x1, 896,0)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x33333332, 0x400, 3f, x1, 900,0)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x55555554, 0x100, 3f, x1, 904,0)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x2, 0x10, 3f, x1, 908,0)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0xb504, 0x400, 3f, x1, 912,0)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, -0xb504, 0x8, 1b, x1, 916,0)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x66666666, 0x100, 3f, x1, 920,0)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x33333333, 0x4, 3f, x1, 924,0)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x5, 0xa, 1b, x1, 928,0)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, -0x55555556, 0x0, 1b, x1, 932,0)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x55555555, 0x200, 3f, x1, 936,0)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555556; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555556, 0x3, 0x400, 1b, x1, 940,0)
+
+inst_253:
+// rs1_val==4 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0xb505, 0x20, 3f, x1, 944,0)
+
+inst_254:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:-0xb503; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, -0xb503, 0x200, 3f, x1, 948,0)
+
+inst_255:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x66666667, 0x2, 3f, x1, 952,0)
+
+inst_256:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x33333334; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x33333334, 0x40, 3f, x1, 956,0)
+
+inst_257:
+// rs1_val==4 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x6, 0xa, 1b, x1, 960,0)
+
+inst_258:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, -0x55555555, 0x20, 3f, x1, 964,0)
+
+inst_259:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x55555556, 0xa, 1b, x1, 968,0)
+
+inst_260:
+// rs1_val==4 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x4, 0x6, 1b, x1, 972,0)
+
+inst_261:
+// rs1_val==4 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0xb503, 0x400, 1b, x1, 976,0)
+
+inst_262:
+// rs1_val==4 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x0; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x0, 0x100, 3f, x1, 980,0)
+
+inst_263:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x66666665; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x66666665, 0x100, 3f, x1, 984,0)
+
+inst_264:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x33333332, 0x400, 3f, x1, 988,0)
+
+inst_265:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x55555554, 0x200, 3f, x1, 992,0)
+
+inst_266:
+// rs1_val==4 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x2, 0x80, 3f, x1, 996,0)
+
+inst_267:
+// rs1_val==4 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0xb504, 0x400, 1b, x1, 1000,0)
+
+inst_268:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, -0xb504, 0x0, 3f, x1, 1004,0)
+
+inst_269:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x66666666; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x66666666, 0x10, 3f, x1, 1008,0)
+
+inst_270:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x33333333, 0x4, 1b, x1, 1012,0)
+
+inst_271:
+// rs1_val==4 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x5; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x5, 0x80, 3f, x1, 1016,0)
+
+inst_272:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, -0x55555556, 0x6, 3f, x1, 1020,0)
+
+inst_273:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x55555555, 0x0, 1b, x1, 1024,0)
+
+inst_274:
+// rs1_val==4 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x4; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x4, 0x3, 0x40, 3f, x1, 1028,0)
+
+inst_275:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0xb505, 0x2, 1b, x1, 1032,0)
+
+inst_276:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, -0xb503, 0x400, 1b, x1, 1036,0)
+
+inst_277:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x66666667, 0x400, 1b, x1, 1040,0)
+
+inst_278:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x33333334, 0xa, 1b, x1, 1044,0)
+
+inst_279:
+// rs1_val==46339 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x6, 0x2, 3f, x1, 1048,0)
+
+inst_280:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, -0x55555555, 0x10, 3f, x1, 1052,0)
+
+inst_281:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x55555556, 0x2, 1b, x1, 1056,0)
+
+inst_282:
+// rs1_val==46339 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x4, 0x2, 1b, x1, 1060,0)
+
+inst_283:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0xb503, 0x6, 3f, x1, 1064,0)
+
+inst_284:
+// rs1_val==46339 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x0; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x0, 0x20, 3f, x1, 1068,0)
+
+inst_285:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x66666665, 0x0, 1b, x1, 1072,0)
+
+inst_286:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x33333332, 0x0, 1b, x1, 1076,0)
+
+inst_287:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x55555554, 0x8, 1b, x1, 1080,0)
+
+inst_288:
+// rs1_val==46339 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x2, 0x8, 1b, x1, 1084,0)
+
+inst_289:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0xb504, 0x4, 3f, x1, 1088,0)
+
+inst_290:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, -0xb504, 0x200, 3f, x1, 1092,0)
+
+inst_291:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x66666666, 0x400, 3f, x1, 1096,0)
+
+inst_292:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x33333333, 0x100, 3f, x1, 1100,0)
+
+inst_293:
+// rs1_val==46339 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x5, 0x400, 1b, x1, 1104,0)
+
+inst_294:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, -0x55555556, 0x4, 1b, x1, 1108,0)
+
+inst_295:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x55555555, 0x8, 1b, x1, 1112,0)
+
+inst_296:
+// rs1_val==46339 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb503; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb503, 0x3, 0x4, 3f, x1, 1116,0)
+
+inst_297:
+// rs1_val==0 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0xb505, 0x2, 1b, x1, 1120,0)
+
+inst_298:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:-0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, -0xb503, 0x8, 3f, x1, 1124,0)
+
+inst_299:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x66666667; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x66666667, 0x20, 3f, x1, 1128,0)
+
+inst_300:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x33333334, 0x0, 3f, x1, 1132,0)
+
+inst_301:
+// rs1_val==0 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x6, 0x2, 3f, x1, 1136,0)
+
+inst_302:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, -0x55555555, 0x10, 3f, x1, 1140,0)
+
+inst_303:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x55555556, 0x4, 3f, x1, 1144,0)
+
+inst_304:
+// rs1_val==0 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x4, 0x0, 1b, x1, 1148,0)
+
+inst_305:
+// rs1_val==0 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0xb503, 0x2, 3f, x1, 1152,0)
+
+inst_306:
+// rs1_val==0 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x0, 0x8, 1b, x1, 1156,0)
+
+inst_307:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x66666665; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x66666665, 0x10, 3f, x1, 1160,0)
+
+inst_308:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x33333332; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x33333332, 0x100, 3f, x1, 1164,0)
+
+inst_309:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x55555554, 0x6, 1b, x1, 1168,0)
+
+inst_310:
+// rs1_val==0 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x2, 0x4, 3f, x1, 1172,0)
+
+inst_311:
+// rs1_val==0 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0xb504, 0x100, 3f, x1, 1176,0)
+
+inst_312:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:-0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, -0xb504, 0x80, 3f, x1, 1180,0)
+
+inst_313:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x66666666, 0x2, 1b, x1, 1184,0)
+
+inst_314:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x33333333, 0xa, 1b, x1, 1188,0)
+
+inst_315:
+// rs1_val==0 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x5; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x5, 0x80, 3f, x1, 1192,0)
+
+inst_316:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, -0x55555556, 0x556, 1b, x1, 1196,0)
+
+inst_317:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x55555555, 0x400, 3f, x1, 1200,0)
+
+inst_318:
+// rs1_val==0 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x0; op2val:0x3; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x0, 0x3, 0x100, 3f, x1, 1204,0)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0xb505, 0x40, 3f, x1, 1208,0)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, -0xb503, 0x4, 3f, x1, 1212,0)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x66666667, 0x8, 1b, x1, 1216,0)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x33333334, 0x556, 1b, x1, 1220,0)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x6, 0x8, 1b, x1, 1224,0)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, -0x55555555, 0x4, 3f, x1, 1228,0)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x55555556, 0x4, 3f, x1, 1232,0)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x4, 0x6, 1b, x1, 1236,0)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0xb503, 0x8, 1b, x1, 1240,0)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x0; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x0, 0x80, 3f, x1, 1244,0)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x66666665, 0x4, 1b, x1, 1248,0)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x33333332, 0x10, 3f, x1, 1252,0)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x55555554, 0x40, 3f, x1, 1256,0)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x2, 0x4, 3f, x1, 1260,0)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0xb504, 0x0, 3f, x1, 1264,0)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, -0xb504, 0x8, 1b, x1, 1268,0)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x66666666, 0x8, 1b, x1, 1272,0)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x33333333, 0x556, 1b, x1, 1276,0)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x5, 0x6, 3f, x1, 1280,0)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, -0x55555556, 0x4, 3f, x1, 1284,0)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x55555555, 0x556, 1b, x1, 1288,0)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x3, 0x0, 1b, x1, 1292,0)
+
+inst_341:
+// rs1_val==5 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0xb505; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0xb505, 0x556, 1b, x1, 1296,0)
+
+inst_342:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:-0xb503; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, -0xb503, 0x200, 3f, x1, 1300,0)
+
+inst_343:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x66666667, 0x0, 1b, x1, 1304,0)
+
+inst_344:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x33333334, 0x6, 1b, x1, 1308,0)
+
+inst_345:
+// rs1_val==5 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x6, 0x2, 3f, x1, 1312,0)
+
+inst_346:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, -0x55555555, 0x20, 3f, x1, 1316,0)
+
+inst_347:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x55555556, 0x400, 3f, x1, 1320,0)
+
+inst_348:
+// rs1_val==5 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x4; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x4, 0x556, 1b, x1, 1324,0)
+
+inst_349:
+// rs1_val==5 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0xb503, 0x6, 1b, x1, 1328,0)
+
+inst_350:
+// rs1_val==5 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x0, 0x200, 3f, x1, 1332,0)
+
+inst_351:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x66666665, 0x6, 3f, x1, 1336,0)
+
+inst_352:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x33333332, 0x556, 1b, x1, 1340,0)
+
+inst_353:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x55555554, 0x2, 1b, x1, 1344,0)
+
+inst_354:
+// rs1_val==5 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x2, 0x6, 1b, x1, 1348,0)
+
+inst_355:
+// rs1_val==5 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0xb504; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0xb504, 0xa, 1b, x1, 1352,0)
+
+inst_356:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, -0xb504, 0x2, 1b, x1, 1356,0)
+
+inst_357:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x66666666; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x66666666, 0xa, 1b, x1, 1360,0)
+
+inst_358:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x33333333; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x33333333, 0x80, 3f, x1, 1364,0)
+
+inst_359:
+// rs1_val==5 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x5, 0x0, 1b, x1, 1368,0)
+
+inst_360:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, -0x55555556, 0x0, 3f, x1, 1372,0)
+
+inst_361:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x55555555, 0x100, 3f, x1, 1376,0)
+
+inst_362:
+// rs1_val==5 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x5; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x5, 0x3, 0x6, 3f, x1, 1380,0)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0xb505, 0x0, 1b, x1, 1384,0)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, -0xb503, 0xa, 1b, x1, 1388,0)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x66666667, 0x400, 3f, x1, 1392,0)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x33333334, 0x200, 3f, x1, 1396,0)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x6, 0x40, 3f, x1, 1400,0)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, -0x55555555, 0x8, 1b, x1, 1404,0)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x55555556, 0x8, 1b, x1, 1408,0)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x4, 0x2, 1b, x1, 1412,0)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0xb503, 0x20, 3f, x1, 1416,0)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x0, 0x0, 1b, x1, 1420,0)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x66666665, 0x200, 3f, x1, 1424,0)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x33333332, 0xa, 1b, x1, 1428,0)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x55555554, 0x2, 3f, x1, 1432,0)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x2, 0x6, 3f, x1, 1436,0)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0xb504, 0x4, 3f, x1, 1440,0)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, -0xb504, 0x2, 3f, x1, 1444,0)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x66666666, 0x2, 3f, x1, 1448,0)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x33333333, 0x200, 3f, x1, 1452,0)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x5, 0x556, 1b, x1, 1456,0)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, -0x55555556, 0x8, 3f, x1, 1460,0)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x55555555, 0x200, 3f, x1, 1464,0)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x55555556, 0x3, 0x4, 3f, x1, 1468,0)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0xb505, 0xa, 1b, x1, 1472,0)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, -0xb503, 0x4, 3f, x1, 1476,0)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x66666667, 0x0, 3f, x1, 1480,0)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x33333334, 0x0, 3f, x1, 1484,0)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x6, 0x6, 3f, x1, 1488,0)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, -0x55555555, 0x6, 1b, x1, 1492,0)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x55555556, 0x8, 3f, x1, 1496,0)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x4; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x4, 0x200, 3f, x1, 1500,0)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0xb503, 0x0, 3f, x1, 1504,0)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x0, 0x4, 1b, x1, 1508,0)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x66666665, 0x2, 3f, x1, 1512,0)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x33333332, 0x40, 3f, x1, 1516,0)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x55555554, 0x4, 1b, x1, 1520,0)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x2, 0x10, 3f, x1, 1524,0)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0xb504, 0x8, 3f, x1, 1528,0)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, -0xb504, 0x2, 3f, x1, 1532,0)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x66666666, 0x20, 3f, x1, 1536,0)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x33333333, 0xa, 1b, x1, 1540,0)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x5, 0x6, 1b, x1, 1544,0)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, -0x55555556, 0x8, 3f, x1, 1548,0)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x55555555, 0x200, 3f, x1, 1552,0)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555555; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555555, 0x3, 0x6, 3f, x1, 1556,0)
+
+inst_407:
+// rs1_val==3 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0xb505, 0x0, 1b, x1, 1560,0)
+
+inst_408:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:-0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, -0xb503, 0x80, 3f, x1, 1564,0)
+
+inst_409:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x66666667, 0x2, 3f, x1, 1568,0)
+
+inst_410:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x33333334, 0x4, 3f, x1, 1572,0)
+
+inst_411:
+// rs1_val==3 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x6, 0x8, 3f, x1, 1576,0)
+
+inst_412:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, -0x55555555, 0x10, 3f, x1, 1580,0)
+
+inst_413:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x55555556, 0x4, 3f, x1, 1584,0)
+
+inst_414:
+// rs1_val==3 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x4, 0x2, 1b, x1, 1588,0)
+
+inst_415:
+// rs1_val==3 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0xb503, 0x8, 1b, x1, 1592,0)
+
+inst_416:
+// rs1_val==3 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x0; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x0, 0x80, 3f, x1, 1596,0)
+
+inst_417:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x66666665, 0x20, 3f, x1, 1600,0)
+
+inst_418:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x33333332, 0x0, 3f, x1, 1604,0)
+
+inst_419:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x55555554; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x55555554, 0x80, 3f, x1, 1608,0)
+
+inst_420:
+// rs1_val==3 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x2, 0x8, 3f, x1, 1612,0)
+
+inst_421:
+// rs1_val==3 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0xb504, 0x400, 3f, x1, 1616,0)
+
+inst_422:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:-0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, -0xb504, 0x100, 3f, x1, 1620,0)
+
+inst_423:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x66666666, 0x8, 3f, x1, 1624,0)
+
+inst_424:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x33333333, 0x400, 3f, x1, 1628,0)
+
+inst_425:
+// rs1_val==3 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x5, 0x200, 3f, x1, 1632,0)
+
+inst_426:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, -0x55555556, 0x400, 1b, x1, 1636,0)
+
+inst_427:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x55555555, 0x400, 1b, x1, 1640,0)
+
+inst_428:
+// rs1_val==3 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x3; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x3, 0x3, 0x4, 1b, x1, 1644,0)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x0, 0x8, 1b, x1, 1648,0)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x66666665, 0xa, 1b, x1, 1652,0)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x33333332, 0x200, 3f, x1, 1656,0)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x55555554, 0x400, 1b, x1, 1660,0)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x2; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x2, 0x556, 1b, x1, 1664,0)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0xb504, 0x40, 3f, x1, 1668,0)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, -0xb504, 0x8, 1b, x1, 1672,0)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x66666666, 0x6, 1b, x1, 1676,0)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x33333333, 0x2, 3f, x1, 1680,0)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x5, 0x0, 3f, x1, 1684,0)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, -0x55555556, 0x400, 3f, x1, 1688,0)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x55555555, 0x400, 1b, x1, 1692,0)
+
+inst_441:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666665; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666665, 0x3, 0x10, 3f, x1, 1696,0)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0xb505, 0x4, 1b, x1, 1700,0)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, -0xb503, 0x8, 3f, x1, 1704,0)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x66666667, 0x4, 3f, x1, 1708,0)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x33333334, 0x6, 3f, x1, 1712,0)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x6, 0x20, 3f, x1, 1716,0)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, -0x55555555, 0x2, 3f, x1, 1720,0)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x55555556, 0x2, 3f, x1, 1724,0)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x4, 0x0, 1b, x1, 1728,0)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0xb503, 0x6, 3f, x1, 1732,0)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x0; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x0, 0xa, 1b, x1, 1736,0)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x66666665, 0x8, 3f, x1, 1740,0)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x33333332, 0x80, 3f, x1, 1744,0)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x55555554, 0x556, 1b, x1, 1748,0)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x2, 0x100, 3f, x1, 1752,0)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0xb504, 0x8, 3f, x1, 1756,0)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, -0xb504, 0x100, 3f, x1, 1760,0)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x66666666, 0x400, 1b, x1, 1764,0)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x33333333, 0x400, 1b, x1, 1768,0)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x5, 0xa, 1b, x1, 1772,0)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, -0x55555556, 0x4, 3f, x1, 1776,0)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x55555555, 0x6, 1b, x1, 1780,0)
+
+inst_463:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333332; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333332, 0x3, 0x10, 3f, x1, 1784,0)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0xb505, 0x4, 3f, x1, 1788,0)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, -0xb503, 0x8, 1b, x1, 1792,0)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x66666667, 0x2, 1b, x1, 1796,0)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x33333334, 0x100, 3f, x1, 1800,0)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x6, 0x2, 3f, x1, 1804,0)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, -0x55555555, 0x8, 1b, x1, 1808,0)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x55555556, 0x0, 1b, x1, 1812,0)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x4, 0x8, 1b, x1, 1816,0)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0xb503, 0x80, 3f, x1, 1820,0)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x0, 0x2, 3f, x1, 1824,0)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x66666665, 0x40, 3f, x1, 1828,0)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x33333332, 0x40, 3f, x1, 1832,0)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x55555554, 0x2, 1b, x1, 1836,0)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x2, 0x80, 3f, x1, 1840,0)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0xb504, 0x2, 1b, x1, 1844,0)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, -0xb504, 0x20, 3f, x1, 1848,0)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x66666666, 0x40, 3f, x1, 1852,0)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x33333333, 0x400, 1b, x1, 1856,0)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x5, 0x400, 1b, x1, 1860,0)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, -0x55555556, 0x40, 3f, x1, 1864,0)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x55555555, 0x0, 1b, x1, 1868,0)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x55555554; op2val:0x3; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x55555554, 0x3, 0x556, 1b, x1, 1872,0)
+
+inst_486:
+// rs1_val==2 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0xb505, 0x400, 3f, x1, 1876,0)
+
+inst_487:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:-0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, -0xb503, 0x80, 3f, x1, 1880,0)
+
+inst_488:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x66666667, 0x4, 3f, x1, 1884,0)
+
+inst_489:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x33333334, 0x100, 3f, x1, 1888,0)
+
+inst_490:
+// rs1_val==2 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x6, 0x20, 3f, x1, 1892,0)
+
+inst_491:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, -0x55555555, 0x200, 3f, x1, 1896,0)
+
+inst_492:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x55555556, 0x80, 3f, x1, 1900,0)
+
+inst_493:
+// rs1_val==2 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x4; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x4, 0x80, 3f, x1, 1904,0)
+
+inst_494:
+// rs1_val==2 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0xb503, 0x8, 1b, x1, 1908,0)
+
+inst_495:
+// rs1_val==2 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x0, 0x2, 3f, x1, 1912,0)
+
+inst_496:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x66666665, 0x8, 1b, x1, 1916,0)
+
+inst_497:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x33333332, 0x2, 3f, x1, 1920,0)
+
+inst_498:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x55555554; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x55555554, 0x100, 3f, x1, 1924,0)
+
+inst_499:
+// rs1_val==2 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x2, 0x100, 3f, x1, 1928,0)
+
+inst_500:
+// rs1_val==2 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0xb504, 0x2, 1b, x1, 1932,0)
+
+inst_501:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:-0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, -0xb504, 0x4, 3f, x1, 1936,0)
+
+inst_502:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x66666666, 0x4, 3f, x1, 1940,0)
+
+inst_503:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x33333333; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x33333333, 0x80, 3f, x1, 1944,0)
+
+inst_504:
+// rs1_val==2 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x5, 0x6, 1b, x1, 1948,0)
+
+inst_505:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, -0x55555556, 0x6, 1b, x1, 1952,0)
+
+inst_506:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x55555555, 0x80, 3f, x1, 1956,0)
+
+inst_507:
+// rs1_val==2 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x2; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x2, 0x3, 0x0, 3f, x1, 1960,0)
+
+inst_508:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0xb505, 0x2, 1b, x1, 1964,0)
+
+inst_509:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, -0xb503, 0x100, 3f, x1, 1968,0)
+
+inst_510:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x66666667, 0x80, 3f, x1, 1972,0)
+
+inst_511:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x33333334, 0x10, 3f, x1, 1976,0)
+
+inst_512:
+// rs1_val==46340 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x6, 0x2, 3f, x1, 1980,0)
+
+inst_513:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, -0x55555555, 0x20, 3f, x1, 1984,0)
+
+inst_514:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x55555556, 0x6, 3f, x1, 1988,0)
+
+inst_515:
+// rs1_val==46340 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x4, 0x8, 1b, x1, 1992,0)
+
+inst_516:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0xb503, 0x0, 1b, x1, 1996,0)
+
+inst_517:
+// rs1_val==46340 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x0, 0x400, 1b, x1, 2000,0)
+
+inst_518:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x66666665, 0x100, 3f, x1, 2004,0)
+
+inst_519:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x33333332, 0x40, 3f, x1, 2008,0)
+
+inst_520:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x55555554, 0x6, 3f, x1, 2012,0)
+
+inst_521:
+// rs1_val==46340 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x2, 0x100, 3f, x1, 2016,0)
+
+inst_522:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0xb504, 0x4, 3f, x1, 2020,0)
+
+inst_523:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504; immval:0xa; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, -0xb504, 0xa, 1b, x1, 2024,0)
+
+inst_524:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x66666666, 0x400, 1b, x1, 2028,0)
+
+inst_525:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x33333333, 0x8, 3f, x1, 2032,0)
+
+inst_526:
+// rs1_val==46340 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x5, 0x0, 1b, x1, 2036,0)
+
+inst_527:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, -0x55555556, 0x6, 1b, x1, 2040,0)
+
+inst_528:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x55555555, 0x100, 3f, x1, 2044,0)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_529:
+// rs1_val==46340 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0xb504; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0xb504, 0x3, 0x8, 3f, x1, 0,0)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0xb505, 0x400, 1b, x1, 4,0)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, -0xb503, 0x6, 3f, x1, 8,0)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x66666667, 0x400, 3f, x1, 12,0)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x33333334, 0x100, 3f, x1, 16,0)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x6; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x6, 0x400, 1b, x1, 20,0)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, -0x55555555, 0x0, 3f, x1, 24,0)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x55555556, 0x20, 3f, x1, 28,0)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x4, 0x2, 1b, x1, 32,0)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0xb503, 0x2, 3f, x1, 36,0)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x0, 0x2, 1b, x1, 40,0)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x66666665, 0x20, 3f, x1, 44,0)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x33333332, 0x2, 3f, x1, 48,0)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x55555554, 0x6, 3f, x1, 52,0)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x2, 0x6, 1b, x1, 56,0)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0xb504, 0x2, 3f, x1, 60,0)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, -0xb504, 0x556, 1b, x1, 64,0)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x66666666, 0x20, 3f, x1, 68,0)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x33333333, 0x40, 3f, x1, 72,0)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x5, 0x2, 3f, x1, 76,0)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, -0x55555556, 0x400, 1b, x1, 80,0)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x55555555, 0x100, 3f, x1, 84,0)
+
+inst_551:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:-0xb504; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0xb504, 0x3, 0x40, 3f, x1, 88,0)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0xb505, 0x10, 3f, x1, 92,0)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, -0xb503, 0x20, 3f, x1, 96,0)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x66666667, 0x2, 1b, x1, 100,0)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x33333334, 0x0, 3f, x1, 104,0)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x6, 0x10, 3f, x1, 108,0)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, -0x55555555, 0x4, 1b, x1, 112,0)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x55555556, 0x2, 3f, x1, 116,0)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x4, 0x10, 3f, x1, 120,0)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0xb503, 0x6, 3f, x1, 124,0)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x0; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x0, 0x80, 3f, x1, 128,0)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x66666665, 0x2, 1b, x1, 132,0)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x33333332, 0x40, 3f, x1, 136,0)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x55555554, 0x4, 1b, x1, 140,0)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x2, 0x2, 1b, x1, 144,0)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0xb504, 0x0, 1b, x1, 148,0)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, -0xb504, 0x20, 3f, x1, 152,0)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x66666666, 0x0, 3f, x1, 156,0)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x33333333, 0x200, 3f, x1, 160,0)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x5, 0x0, 3f, x1, 164,0)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, -0x55555556, 0x0, 1b, x1, 168,0)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x55555555, 0x20, 3f, x1, 172,0)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: bge, op1:x10; op2:x11; op1val:0x66666666; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x66666666, 0x3, 0x6, 1b, x1, 176,0)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0xb505, 0x20, 3f, x1, 180,0)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, -0xb503, 0x6, 1b, x1, 184,0)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x66666667, 0x400, 1b, x1, 188,0)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x33333334, 0x0, 3f, x1, 192,0)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x6, 0x2, 3f, x1, 196,0)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, -0x55555555, 0x8, 3f, x1, 200,0)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x55555556, 0x80, 3f, x1, 204,0)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0x4; immval:0x200; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0x4, 0x200, 3f, x1, 208,0)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: bge, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x33333333, 0xb503, 0x8, 1b, x1, 212,0)
+
+inst_583:
+// rs1_val < 0 and rs2_val < 0 and imm_val & 0x03 == 0, rs1_val == -65537, rs1_val < rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x10; op2:x11; op1val:-0x10001; op2val:-0x8; immval:0x400; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x10001, -0x8, 0x400, 1b, x1, 216,0)
+
+inst_584:
+// rs2_val == -536870913, rs1_val == -32769, rs1_val > rs2_val and imm_val > 0 and imm_val & 0x03 == 0
+// opcode: bge, op1:x10; op2:x11; op1val:-0x8001; op2val:-0x20000001; immval:0x20; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, -0x8001, -0x20000001, 0x20, 3f, x1, 220,0)
+
+inst_585:
+// rs2_val == -67108865, rs1_val == 256
+// opcode: bge, op1:x10; op2:x11; op1val:0x100; op2val:-0x4000001; immval:0x556; align:0
+TEST_BRANCH_OP(bge, x3, x10, x11, 0x100, -0x4000001, 0x556, 1b, x1, 224,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x7_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 57*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bgeu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bgeu-01.S
new file mode 100644
index 000000000..2b9d38768
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bgeu-01.S
@@ -0,0 +1,3720 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the bgeu instruction of the RISC-V E extension for the bgeu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",bgeu)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 == rs2, rs1==x5, rs2==x5, rs1_val > 0 and rs2_val > 0, rs2_val == 4294967039, rs1_val == 3758096383, rs1_val > 0 and rs2_val > 0 and rs1_val < rs2_val and imm_val < 0
+// opcode: bgeu, op1:x5; op2:x5; op1val:0xdfffffff; op2val:0xdfffffff; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x3, x5, x5, 0xdfffffff, 0xdfffffff, 0x400, 1b, x2, 0,0)
+
+inst_1:
+// rs1 != rs2, rs1==x1, rs2==x10, rs2_val == 2147483647, rs1_val > 0 and rs2_val > 0 and rs1_val > rs2_val and imm_val > 0 , rs1_val == 4261412863
+// opcode: bgeu, op1:x1; op2:x10; op1val:0xfdffffff; op2val:0x7fffffff; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x3, x1, x10, 0xfdffffff, 0x7fffffff, 0x4, 3f, x2, 4,0)
+
+inst_2:
+// rs1==x0, rs2==x9, rs2_val == 3221225471,
+// opcode: bgeu, op1:x0; op2:x9; op1val:0x0; op2val:0xbfffffff; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x3, x0, x9, 0x0, 0xbfffffff, 0xa, 1b, x2, 8,0)
+
+inst_3:
+// rs1==x7, rs2==x11, rs2_val == 3758096383, rs1_val > 0 and rs2_val > 0 and rs1_val < rs2_val and imm_val > 0
+// opcode: bgeu, op1:x7; op2:x11; op1val:0x13; op2val:0xdfffffff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x3, x7, x11, 0x13, 0xdfffffff, 0x6, 3f, x2, 12,0)
+
+inst_4:
+// rs1==x6, rs2==x12, rs2_val == 4026531839, rs1_val == 2
+// opcode: bgeu, op1:x6; op2:x12; op1val:0x2; op2val:0xefffffff; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x3, x6, x12, 0x2, 0xefffffff, 0x8, 3f, x2, 16,0)
+
+inst_5:
+// rs1==x9, rs2==x13, rs2_val == 4160749567, rs1_val == 3221225471
+// opcode: bgeu, op1:x9; op2:x13; op1val:0xbfffffff; op2val:0xf7ffffff; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x3, x9, x13, 0xbfffffff, 0xf7ffffff, 0x10, 3f, x2, 20,0)
+
+inst_6:
+// rs1==x11, rs2==x7, rs2_val == 4227858431,
+// opcode: bgeu, op1:x11; op2:x7; op1val:0xb505; op2val:0xfbffffff; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x3, x11, x7, 0xb505, 0xfbffffff, 0x2, 3f, x2, 24,0)
+
+inst_7:
+// rs1==x13, rs2==x6, rs2_val == 4261412863, rs1_val == 1
+// opcode: bgeu, op1:x13; op2:x6; op1val:0x1; op2val:0xfdffffff; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x3, x13, x6, 0x1, 0xfdffffff, 0x2, 3f, x2, 28,0)
+
+inst_8:
+// rs1==x12, rs2==x15, rs2_val == 4278190079,
+// opcode: bgeu, op1:x12; op2:x15; op1val:0x66666666; op2val:0xfeffffff; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x3, x12, x15, 0x66666666, 0xfeffffff, 0x0, 1b, x2, 32,0)
+
+inst_9:
+// rs1==x10, rs2==x14, rs2_val == 4286578687,
+// opcode: bgeu, op1:x10; op2:x14; op1val:0x33333333; op2val:0xff7fffff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x3, x10, x14, 0x33333333, 0xff7fffff, 0x6, 3f, x2, 36,0)
+
+inst_10:
+// rs1==x3, rs2==x8, rs2_val == 4290772991,
+// opcode: bgeu, op1:x3; op2:x8; op1val:0x12; op2val:0xffbfffff; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x3, x8, 0x12, 0xffbfffff, 0x4, 1b, x2, 40,0)
+RVTEST_SIGBASE( x5,signature_x5_0)
+
+inst_11:
+// rs1==x4, rs2==x2, rs2_val == 4292870143,
+// opcode: bgeu, op1:x4; op2:x2; op1val:0x6; op2val:0xffdfffff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x4, x2, 0x6, 0xffdfffff, 0x6, 1b, x5, 0,0)
+
+inst_12:
+// rs1==x15, rs2==x3, rs2_val == 4293918719,
+// opcode: bgeu, op1:x15; op2:x3; op1val:0x5; op2val:0xffefffff; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x15, x3, 0x5, 0xffefffff, 0x2, 1b, x5, 4,0)
+
+inst_13:
+// rs1==x14, rs2==x1, rs2_val == 4294443007, rs1_val == 4293918719
+// opcode: bgeu, op1:x14; op2:x1; op1val:0xffefffff; op2val:0xfff7ffff; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x14, x1, 0xffefffff, 0xfff7ffff, 0x80, 3f, x5, 8,0)
+
+inst_14:
+// rs1==x8, rs2==x4, rs2_val == 4294705151,
+// opcode: bgeu, op1:x8; op2:x4; op1val:0x3; op2val:0xfffbffff; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x8, x4, 0x3, 0xfffbffff, 0x4, 1b, x5, 12,0)
+
+inst_15:
+// rs1==x2, rs2==x0, rs2_val == 4294836223, rs1_val == 2147483647
+// opcode: bgeu, op1:x2; op2:x0; op1val:0x7fffffff; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x2, x0, 0x7fffffff, 0x0, 0x2, 1b, x5, 16,0)
+
+inst_16:
+// rs2_val == 4294901759,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xfffeffff; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xfffeffff, 0x4, 3f, x5, 20,0)
+
+inst_17:
+// rs2_val == 4294934527, rs1_val == 4
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xffff7fff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xffff7fff, 0x6, 3f, x5, 24,0)
+
+inst_18:
+// rs2_val == 4294950911, rs1_val == 4294443007
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfff7ffff; op2val:0xffffbfff; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfff7ffff, 0xffffbfff, 0x2, 1b, x5, 28,0)
+
+inst_19:
+// rs2_val == 4294959103,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xffffdfff; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xffffdfff, 0x20, 3f, x5, 32,0)
+
+inst_20:
+// rs2_val == 4294963199, rs1_val == 4286578687
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xff7fffff; op2val:0xffffefff; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xff7fffff, 0xffffefff, 0x100, 3f, x5, 36,0)
+
+inst_21:
+// rs2_val == 4294965247,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xfffff7ff; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xfffff7ff, 0x400, 1b, x5, 40,0)
+
+inst_22:
+// rs2_val == 4294966271, rs1_val == 268435456
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000000; op2val:0xfffffbff; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000000, 0xfffffbff, 0x8, 1b, x5, 44,0)
+
+inst_23:
+// rs2_val == 4294966783,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xfffffdff; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xfffffdff, 0x4, 3f, x5, 48,0)
+
+inst_24:
+// rs2_val == 4294967167,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xffffff7f; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xffffff7f, 0x0, 3f, x5, 52,0)
+
+inst_25:
+// rs2_val == 4294967231, rs1_val == 4294967293
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffffffd; op2val:0xffffffbf; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffffffd, 0xffffffbf, 0x0, 3f, x5, 56,0)
+
+inst_26:
+// rs2_val == 4294967263, rs1_val == 16777216
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1000000; op2val:0xffffffdf; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1000000, 0xffffffdf, 0x100, 3f, x5, 60,0)
+
+inst_27:
+// rs2_val == 4294967279,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x11; op2val:0xffffffef; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x11, 0xffffffef, 0x80, 3f, x5, 64,0)
+
+inst_28:
+// rs2_val == 4294967287, rs1_val == 67108864
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4000000; op2val:0xfffffff7; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4000000, 0xfffffff7, 0xa, 1b, x5, 68,0)
+
+inst_29:
+// rs2_val == 4294967291, rs1_val == 32768
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x8000; op2val:0xfffffffb; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x8000, 0xfffffffb, 0xa, 1b, x5, 72,0)
+
+inst_30:
+// rs2_val == 4294967293, rs1_val == 524288
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x80000; op2val:0xfffffffd; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x80000, 0xfffffffd, 0x10, 3f, x5, 76,0)
+
+inst_31:
+// rs2_val == 4294967294,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xdfffffff; op2val:0xfffffffe; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xdfffffff, 0xfffffffe, 0x6, 1b, x5, 80,0)
+
+inst_32:
+// rs1_val == 4026531839, rs2_val == 1073741824
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xefffffff; op2val:0x40000000; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xefffffff, 0x40000000, 0x2, 3f, x5, 84,0)
+
+inst_33:
+// rs1_val == 4160749567, rs2_val == 67108864
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xf7ffffff; op2val:0x4000000; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xf7ffffff, 0x4000000, 0x2, 3f, x5, 88,0)
+
+inst_34:
+// rs1_val == 4227858431, rs2_val == 32768
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfbffffff; op2val:0x8000; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfbffffff, 0x8000, 0x4, 3f, x5, 92,0)
+
+inst_35:
+// rs1_val == 4278190079,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfeffffff; op2val:0xc; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfeffffff, 0xc, 0x4, 3f, x5, 96,0)
+
+inst_36:
+// rs1_val == 4290772991,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffbfffff; op2val:0xffffffff; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffbfffff, 0xffffffff, 0x556, 1b, x5, 100,0)
+
+inst_37:
+// rs1_val == 4292870143,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffdfffff; op2val:0x8000; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffdfffff, 0x8000, 0x10, 3f, x5, 104,0)
+
+inst_38:
+// rs1_val == 4294705151,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffbffff; op2val:0xfffffeff; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffbffff, 0xfffffeff, 0x0, 1b, x5, 108,0)
+
+inst_39:
+// rs1_val == 4294836223, rs1_val > 0 and rs2_val > 0 and rs1_val > rs2_val and imm_val < 0
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffdffff; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffdffff, 0x5, 0x0, 1b, x5, 112,0)
+
+inst_40:
+// rs1_val == 4294901759,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffeffff; op2val:0xfffff7ff; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffeffff, 0xfffff7ff, 0x20, 3f, x5, 116,0)
+
+inst_41:
+// rs1_val == 4294934527,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff7fff; op2val:0xc; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff7fff, 0xc, 0xa, 1b, x5, 120,0)
+
+inst_42:
+// rs1_val == 4294950911,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffbfff; op2val:0xfffffffd; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffbfff, 0xfffffffd, 0x20, 3f, x5, 124,0)
+
+inst_43:
+// rs1_val == 4294959103,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffdfff; op2val:0xfeffffff; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffdfff, 0xfeffffff, 0x100, 3f, x5, 128,0)
+
+inst_44:
+// rs1_val == 4294963199, rs2_val == 16777216
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffefff; op2val:0x1000000; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffefff, 0x1000000, 0x10, 3f, x5, 132,0)
+
+inst_45:
+// rs1_val == 4294965247,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffff7ff; op2val:0xfffffbff; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffff7ff, 0xfffffbff, 0x400, 3f, x5, 136,0)
+
+inst_46:
+// rs1_val == 4294966271,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffffbff; op2val:0xefffffff; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffffbff, 0xefffffff, 0x80, 3f, x5, 140,0)
+
+inst_47:
+// rs1_val == 4294966783,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffffdff; op2val:0x1000000; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffffdff, 0x1000000, 0x6, 1b, x5, 144,0)
+
+inst_48:
+// rs1_val == 4294967039, rs2_val == 268435456
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffffeff; op2val:0x10000000; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffffeff, 0x10000000, 0x0, 3f, x5, 148,0)
+
+inst_49:
+// rs1_val == 4294967167, rs2_val == 256
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffff7f; op2val:0x100; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffff7f, 0x100, 0x6, 3f, x5, 152,0)
+
+inst_50:
+// rs1_val == 4294967231, rs1_val > 0 and rs2_val > 0 and rs1_val == rs2_val and imm_val > 0
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffffbf; op2val:0xffffffbf; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffffbf, 0xffffffbf, 0x100, 3f, x5, 156,0)
+
+inst_51:
+// rs1_val == 4294967263,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffffdf; op2val:0xffffffbf; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffffdf, 0xffffffbf, 0x6, 1b, x5, 160,0)
+
+inst_52:
+// rs1_val == 4294967279, rs2_val == 2048
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffffef; op2val:0x800; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffffef, 0x800, 0xa, 1b, x5, 164,0)
+
+inst_53:
+// rs1_val == 4294967287, rs2_val == 134217728
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffffff7; op2val:0x8000000; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffffff7, 0x8000000, 0x2, 1b, x5, 168,0)
+
+inst_54:
+// rs1_val == 4294967291,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffffffb; op2val:0xfffffeff; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffffffb, 0xfffffeff, 0x400, 1b, x5, 172,0)
+
+inst_55:
+// rs1_val == 4294967294,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffffffe; op2val:0xe; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffffffe, 0xe, 0x400, 3f, x5, 176,0)
+
+inst_56:
+// rs2_val == 2147483648,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff7fff; op2val:0x80000000; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff7fff, 0x80000000, 0x80, 3f, x5, 180,0)
+
+inst_57:
+// rs2_val == 536870912,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffff7f; op2val:0x20000000; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffff7f, 0x20000000, 0x556, 1b, x5, 184,0)
+
+inst_58:
+// rs2_val == 33554432,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffefff; op2val:0x2000000; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffefff, 0x2000000, 0x200, 3f, x5, 188,0)
+
+inst_59:
+// rs2_val == 8388608,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x800000; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x800000, 0x200, 3f, x5, 192,0)
+
+inst_60:
+// rs2_val == 4194304,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffff7ff; op2val:0x400000; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffff7ff, 0x400000, 0x6, 3f, x5, 196,0)
+
+inst_61:
+// rs2_val == 2097152,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x200000; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x200000, 0x8, 1b, x5, 200,0)
+
+inst_62:
+// rs2_val == 1048576,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x100000; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x100000, 0x0, 3f, x5, 204,0)
+
+inst_63:
+// rs2_val == 524288,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x7; op2val:0x80000; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x7, 0x80000, 0x10, 3f, x5, 208,0)
+
+inst_64:
+// rs2_val == 262144,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1000000; op2val:0x40000; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1000000, 0x40000, 0x0, 3f, x5, 212,0)
+
+inst_65:
+// rs2_val == 131072, rs1_val == 65536
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x20000; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x20000, 0x200, 3f, x5, 216,0)
+
+inst_66:
+// rs2_val == 65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfbffffff; op2val:0x10000; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfbffffff, 0x10000, 0x40, 3f, x5, 220,0)
+
+inst_67:
+// rs2_val == 16384,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xc; op2val:0x4000; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xc, 0x4000, 0x2, 3f, x5, 224,0)
+
+inst_68:
+// rs2_val == 8192,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x2000; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x2000, 0x6, 3f, x5, 228,0)
+
+inst_69:
+// rs2_val == 4096, rs1_val == 32
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x20; op2val:0x1000; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x20, 0x1000, 0x2, 1b, x5, 232,0)
+
+inst_70:
+// rs2_val == 1024,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x400; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x400, 0x6, 1b, x5, 236,0)
+
+inst_71:
+// rs2_val == 512,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x200; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x200, 0x4, 3f, x5, 240,0)
+
+inst_72:
+// rs2_val == 128,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x80; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x80, 0x100, 3f, x5, 244,0)
+
+inst_73:
+// rs2_val == 64,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x40; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x40, 0x8, 3f, x5, 248,0)
+
+inst_74:
+// rs2_val == 32,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x20; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x20, 0x200, 3f, x5, 252,0)
+
+inst_75:
+// rs2_val == 16,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1000000; op2val:0x10; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1000000, 0x10, 0x6, 3f, x5, 256,0)
+
+inst_76:
+// rs2_val == 8,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffffdf; op2val:0x8; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffffdf, 0x8, 0x2, 1b, x5, 260,0)
+
+inst_77:
+// rs2_val == 4, rs1_val==65536 and rs2_val==4
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x4, 0x2, 1b, x5, 264,0)
+
+inst_78:
+// rs2_val == 2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffffff7f; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffffff7f, 0x2, 0x4, 3f, x5, 268,0)
+
+inst_79:
+// rs2_val == 1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfbffffff; op2val:0x1; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfbffffff, 0x1, 0x10, 3f, x5, 272,0)
+
+inst_80:
+// rs1_val == 2147483648,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x80000000; op2val:0xfffffff7; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x80000000, 0xfffffff7, 0x2, 1b, x5, 276,0)
+
+inst_81:
+// rs1_val == 1073741824,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x40000000; op2val:0xb; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x40000000, 0xb, 0x100, 3f, x5, 280,0)
+
+inst_82:
+// rs1_val == 536870912,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x20000000; op2val:0x800000; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x20000000, 0x800000, 0x8, 3f, x5, 284,0)
+
+inst_83:
+// rs1_val == 134217728,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x8000000; op2val:0xefffffff; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x8000000, 0xefffffff, 0x100, 3f, x5, 288,0)
+
+inst_84:
+// rs1_val == 33554432,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2000000; op2val:0xb; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2000000, 0xb, 0x200, 3f, x5, 292,0)
+
+inst_85:
+// rs1_val == 8388608,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x800000; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x800000, 0x4, 0x8, 1b, x5, 296,0)
+
+inst_86:
+// rs1_val == 4194304,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x400000; op2val:0x1; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x400000, 0x1, 0x0, 3f, x5, 300,0)
+
+inst_87:
+// rs1_val == 2097152,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x200000; op2val:0x7fffffff; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x200000, 0x7fffffff, 0x400, 1b, x5, 304,0)
+
+inst_88:
+// rs1_val == 1048576,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x100000; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x100000, 0x33333333, 0x2, 1b, x5, 308,0)
+
+inst_89:
+// rs1_val == 262144,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x40000; op2val:0x80; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x40000, 0x80, 0x8, 3f, x5, 312,0)
+
+inst_90:
+// rs1_val == 131072,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x20000; op2val:0x20000000; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x20000, 0x20000000, 0x20, 3f, x5, 316,0)
+
+inst_91:
+// rs1_val == 16384,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4000; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4000, 0x66666666, 0x6, 3f, x5, 320,0)
+
+inst_92:
+// rs1_val == 8192,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2000; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2000, 0x66666666, 0x2, 1b, x5, 324,0)
+
+inst_93:
+// rs1_val == 4096,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1000; op2val:0xfffffeff; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1000, 0xfffffeff, 0x556, 1b, x5, 328,0)
+
+inst_94:
+// rs1_val == 2048,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x800; op2val:0xfffffffd; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x800, 0xfffffffd, 0x80, 3f, x5, 332,0)
+
+inst_95:
+// rs1_val == 1024,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x400; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x400, 0x0, 0x6, 3f, x5, 336,0)
+
+inst_96:
+// rs1_val == 512,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x200; op2val:0xefffffff; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x200, 0xefffffff, 0x556, 1b, x5, 340,0)
+
+inst_97:
+// rs1_val == 256,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x100; op2val:0xb505; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x100, 0xb505, 0x200, 3f, x5, 344,0)
+
+inst_98:
+// rs1_val == 128,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x80; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x80, 0x0, 0x4, 3f, x5, 348,0)
+
+inst_99:
+// rs1_val == 64,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x40; op2val:0xffffefff; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x40, 0xffffefff, 0x556, 1b, x5, 352,0)
+
+inst_100:
+// rs1_val == 16,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10; op2val:0xfffffeff; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10, 0xfffffeff, 0x100, 3f, x5, 356,0)
+
+inst_101:
+// rs1_val == 8,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x8; op2val:0xffffefff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x8, 0xffffefff, 0x6, 3f, x5, 360,0)
+
+inst_102:
+// rs1_val==65536 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x10000; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x10000, 0x0, 3f, x5, 364,0)
+
+inst_103:
+// rs1_val==65536 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x1; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x1, 0x80, 3f, x5, 368,0)
+
+inst_104:
+// rs1_val==65536 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0xb505, 0x10, 3f, x5, 372,0)
+
+inst_105:
+// rs1_val==65536 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x66666667; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x66666667, 0x556, 1b, x5, 376,0)
+
+inst_106:
+// rs1_val==65536 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x33333334; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x33333334, 0x80, 3f, x5, 380,0)
+
+inst_107:
+// rs1_val==65536 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x6; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x6, 0x400, 1b, x5, 384,0)
+
+inst_108:
+// rs1_val==65536 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0xaaaaaaab; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0xaaaaaaab, 0x100, 3f, x5, 388,0)
+
+inst_109:
+// rs1_val==65536 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x55555556, 0x20, 3f, x5, 392,0)
+
+inst_110:
+// rs1_val==65536 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0xfffe; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0xfffe, 0x4, 3f, x5, 396,0)
+
+inst_111:
+// rs1_val==65536 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x0; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x0, 0x100, 3f, x5, 400,0)
+
+inst_112:
+// rs1_val==65536 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0xb503, 0x8, 1b, x5, 404,0)
+
+inst_113:
+// rs1_val==65536 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x66666665, 0x400, 1b, x5, 408,0)
+
+inst_114:
+// rs1_val==65536 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x33333332, 0x8, 3f, x5, 412,0)
+
+inst_115:
+// rs1_val==65536 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0xaaaaaaa9; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0xaaaaaaa9, 0x200, 3f, x5, 416,0)
+
+inst_116:
+// rs1_val==65536 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x55555554, 0x8, 1b, x5, 420,0)
+
+inst_117:
+// rs1_val==65536 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x2; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x2, 0x40, 3f, x5, 424,0)
+
+inst_118:
+// rs1_val==65536 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0xffff; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0xffff, 0x80, 3f, x5, 428,0)
+
+inst_119:
+// rs1_val==65536 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0xb504, 0x100, 3f, x5, 432,0)
+
+inst_120:
+// rs1_val==65536 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x66666666, 0x4, 3f, x5, 436,0)
+
+inst_121:
+// rs1_val==65536 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x33333333, 0x2, 3f, x5, 440,0)
+
+inst_122:
+// rs1_val==65536 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x5, 0x4, 1b, x5, 444,0)
+
+inst_123:
+// rs1_val==65536 and rs2_val==2863311530, rs2_val == 2863311530
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0xaaaaaaaa; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0xaaaaaaaa, 0x2, 3f, x5, 448,0)
+
+inst_124:
+// rs1_val==65536 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x55555555, 0x20, 3f, x5, 452,0)
+
+inst_125:
+// rs1_val==65536 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x10000; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x10000, 0x3, 0x20, 3f, x5, 456,0)
+
+inst_126:
+// rs1_val==1 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x10000, 0x4, 1b, x5, 460,0)
+
+inst_127:
+// rs1_val==1 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x1; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x1, 0x100, 3f, x5, 464,0)
+
+inst_128:
+// rs1_val==1 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0xb505; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0xb505, 0x80, 3f, x5, 468,0)
+
+inst_129:
+// rs1_val==1 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x66666667, 0x2, 1b, x5, 472,0)
+
+inst_130:
+// rs1_val==1 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x33333334, 0x4, 3f, x5, 476,0)
+
+inst_131:
+// rs1_val==1 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x6, 0xa, 1b, x5, 480,0)
+
+inst_132:
+// rs1_val==1 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0xaaaaaaab; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0xaaaaaaab, 0x400, 3f, x5, 484,0)
+
+inst_133:
+// rs1_val==1 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x55555556, 0x400, 3f, x5, 488,0)
+
+inst_134:
+// rs1_val==1 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x4; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x4, 0x80, 3f, x5, 492,0)
+
+inst_135:
+// rs1_val==1 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0xfffe; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0xfffe, 0x400, 1b, x5, 496,0)
+
+inst_136:
+// rs1_val==1 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x0, 0x2, 3f, x5, 500,0)
+
+inst_137:
+// rs1_val==1 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0xb503, 0x8, 1b, x5, 504,0)
+
+inst_138:
+// rs1_val==1 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x66666665; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x66666665, 0x556, 1b, x5, 508,0)
+
+inst_139:
+// rs1_val==1 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x33333332, 0x40, 3f, x5, 512,0)
+
+inst_140:
+// rs1_val==1 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0xaaaaaaa9; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0xaaaaaaa9, 0x400, 3f, x5, 516,0)
+
+inst_141:
+// rs1_val==1 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x55555554, 0x40, 3f, x5, 520,0)
+
+inst_142:
+// rs1_val==1 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x2, 0x100, 3f, x5, 524,0)
+
+inst_143:
+// rs1_val==1 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0xffff; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0xffff, 0x20, 3f, x5, 528,0)
+
+inst_144:
+// rs1_val==1 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0xb504, 0x4, 3f, x5, 532,0)
+
+inst_145:
+// rs1_val==1 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x66666666; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x66666666, 0x10, 3f, x5, 536,0)
+
+inst_146:
+// rs1_val==1 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x33333333, 0x8, 1b, x5, 540,0)
+
+inst_147:
+// rs1_val==1 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x5, 0x8, 3f, x5, 544,0)
+
+inst_148:
+// rs1_val==1 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0xaaaaaaaa; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0xaaaaaaaa, 0x40, 3f, x5, 548,0)
+
+inst_149:
+// rs1_val==1 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x55555555, 0x6, 1b, x5, 552,0)
+
+inst_150:
+// rs1_val==1 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x1; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x1, 0x3, 0x10, 3f, x5, 556,0)
+
+inst_151:
+// rs1_val==46341 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x10000; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x10000, 0x8, 3f, x5, 560,0)
+
+inst_152:
+// rs1_val==46341 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x1; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x1, 0x200, 3f, x5, 564,0)
+
+inst_153:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0xb505, 0x400, 3f, x5, 568,0)
+
+inst_154:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x66666667, 0x556, 1b, x5, 572,0)
+
+inst_155:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x33333334, 0x10, 3f, x5, 576,0)
+
+inst_156:
+// rs1_val==46341 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x6, 0x20, 3f, x5, 580,0)
+
+inst_157:
+// rs1_val==46341 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0xaaaaaaab; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0xaaaaaaab, 0x4, 1b, x5, 584,0)
+
+inst_158:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x55555556, 0x6, 3f, x5, 588,0)
+
+inst_159:
+// rs1_val==46341 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x4, 0x4, 1b, x5, 592,0)
+
+inst_160:
+// rs1_val==46341 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0xfffe; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0xfffe, 0x556, 1b, x5, 596,0)
+
+inst_161:
+// rs1_val==46341 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x0, 0x6, 1b, x5, 600,0)
+
+inst_162:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0xb503, 0xa, 1b, x5, 604,0)
+
+inst_163:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x66666665, 0x80, 3f, x5, 608,0)
+
+inst_164:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x33333332, 0x200, 3f, x5, 612,0)
+
+inst_165:
+// rs1_val==46341 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0xaaaaaaa9; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0xaaaaaaa9, 0x0, 3f, x5, 616,0)
+
+inst_166:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x55555554, 0x2, 1b, x5, 620,0)
+
+inst_167:
+// rs1_val==46341 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x2, 0x80, 3f, x5, 624,0)
+
+inst_168:
+// rs1_val==46341 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0xffff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0xffff, 0x6, 1b, x5, 628,0)
+
+inst_169:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0xb504, 0x40, 3f, x5, 632,0)
+
+inst_170:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x66666666, 0x6, 1b, x5, 636,0)
+
+inst_171:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x33333333, 0xa, 1b, x5, 640,0)
+
+inst_172:
+// rs1_val==46341 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x5, 0x20, 3f, x5, 644,0)
+
+inst_173:
+// rs1_val==46341 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0xaaaaaaaa; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0xaaaaaaaa, 0x20, 3f, x5, 648,0)
+
+inst_174:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x55555555, 0x6, 3f, x5, 652,0)
+
+inst_175:
+// rs1_val==46341 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb505; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb505, 0x3, 0x40, 3f, x5, 656,0)
+
+inst_176:
+// rs1_val==1717986919 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x10000, 0x4, 3f, x5, 660,0)
+
+inst_177:
+// rs1_val==1717986919 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x1; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x1, 0x200, 3f, x5, 664,0)
+
+inst_178:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0xb505, 0x400, 1b, x5, 668,0)
+
+inst_179:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x66666667, 0x6, 3f, x5, 672,0)
+
+inst_180:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x33333334, 0x400, 1b, x5, 676,0)
+
+inst_181:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x6, 0x6, 3f, x5, 680,0)
+
+inst_182:
+// rs1_val==1717986919 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xaaaaaaab; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0xaaaaaaab, 0x400, 1b, x5, 684,0)
+
+inst_183:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x55555556, 0x6, 3f, x5, 688,0)
+
+inst_184:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x4, 0x8, 1b, x5, 692,0)
+
+inst_185:
+// rs1_val==1717986919 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xfffe; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0xfffe, 0x2, 3f, x5, 696,0)
+
+inst_186:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x0, 0x6, 1b, x5, 700,0)
+
+inst_187:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0xb503, 0x80, 3f, x5, 704,0)
+
+inst_188:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x66666665, 0x8, 1b, x5, 708,0)
+
+inst_189:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x33333332, 0x8, 1b, x5, 712,0)
+
+inst_190:
+// rs1_val==1717986919 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xaaaaaaa9; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0xaaaaaaa9, 0x20, 3f, x5, 716,0)
+
+inst_191:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x55555554, 0x200, 3f, x5, 720,0)
+
+inst_192:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x2, 0x4, 3f, x5, 724,0)
+
+inst_193:
+// rs1_val==1717986919 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xffff; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0xffff, 0x10, 3f, x5, 728,0)
+
+inst_194:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0xb504, 0x8, 1b, x5, 732,0)
+
+inst_195:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x66666666, 0x8, 1b, x5, 736,0)
+
+inst_196:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x33333333, 0x0, 3f, x5, 740,0)
+
+inst_197:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x5, 0x6, 3f, x5, 744,0)
+
+inst_198:
+// rs1_val==1717986919 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xaaaaaaaa; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0xaaaaaaaa, 0x556, 1b, x5, 748,0)
+
+inst_199:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x55555555, 0x80, 3f, x5, 752,0)
+
+inst_200:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666667, 0x3, 0x4, 3f, x5, 756,0)
+
+inst_201:
+// rs1_val==858993460 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x10000; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x10000, 0x8, 3f, x5, 760,0)
+
+inst_202:
+// rs1_val==858993460 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x1; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x1, 0x8, 3f, x5, 764,0)
+
+inst_203:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0xb505, 0x0, 3f, x5, 768,0)
+
+inst_204:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x66666667, 0x6, 3f, x5, 772,0)
+
+inst_205:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x33333334, 0x200, 3f, x5, 776,0)
+
+inst_206:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x6, 0x4, 3f, x5, 780,0)
+
+inst_207:
+// rs1_val==858993460 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xaaaaaaab; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0xaaaaaaab, 0x8, 3f, x5, 784,0)
+
+inst_208:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x55555556, 0x10, 3f, x5, 788,0)
+
+inst_209:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x4; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x4, 0x40, 3f, x5, 792,0)
+
+inst_210:
+// rs1_val==858993460 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xfffe; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0xfffe, 0x10, 3f, x5, 796,0)
+
+inst_211:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x0, 0x400, 1b, x5, 800,0)
+
+inst_212:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0xb503, 0x556, 1b, x5, 804,0)
+
+inst_213:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x66666665, 0x6, 1b, x5, 808,0)
+
+inst_214:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x33333332, 0x2, 3f, x5, 812,0)
+
+inst_215:
+// rs1_val==858993460 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xaaaaaaa9; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0xaaaaaaa9, 0x8, 3f, x5, 816,0)
+
+inst_216:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x55555554, 0x4, 3f, x5, 820,0)
+
+inst_217:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x2; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x2, 0x20, 3f, x5, 824,0)
+
+inst_218:
+// rs1_val==858993460 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xffff; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0xffff, 0x40, 3f, x5, 828,0)
+
+inst_219:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0xb504, 0x10, 3f, x5, 832,0)
+
+inst_220:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x66666666, 0x4, 3f, x5, 836,0)
+
+inst_221:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x33333333, 0x400, 3f, x5, 840,0)
+
+inst_222:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x5, 0x0, 3f, x5, 844,0)
+
+inst_223:
+// rs1_val==858993460 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xaaaaaaaa; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0xaaaaaaaa, 0x2, 3f, x5, 848,0)
+
+inst_224:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x55555555, 0x0, 1b, x5, 852,0)
+
+inst_225:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333334, 0x3, 0x2, 1b, x5, 856,0)
+
+inst_226:
+// rs1_val==6 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x10000, 0x4, 3f, x5, 860,0)
+
+inst_227:
+// rs1_val==6 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x1; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x1, 0x20, 3f, x5, 864,0)
+
+inst_228:
+// rs1_val==6 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xb505; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xb505, 0x100, 3f, x5, 868,0)
+
+inst_229:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x66666667, 0x2, 3f, x5, 872,0)
+
+inst_230:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x33333334; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x33333334, 0x556, 1b, x5, 876,0)
+
+inst_231:
+// rs1_val==6 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x6, 0x4, 3f, x5, 880,0)
+
+inst_232:
+// rs1_val==6 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xaaaaaaab; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xaaaaaaab, 0x20, 3f, x5, 884,0)
+
+inst_233:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x55555556, 0x4, 3f, x5, 888,0)
+
+inst_234:
+// rs1_val==6 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x4, 0x4, 1b, x5, 892,0)
+
+inst_235:
+// rs1_val==6 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xfffe; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xfffe, 0x6, 1b, x5, 896,0)
+
+inst_236:
+// rs1_val==6 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x0, 0x556, 1b, x5, 900,0)
+
+inst_237:
+// rs1_val==6 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xb503, 0x10, 3f, x5, 904,0)
+
+inst_238:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x66666665, 0x8, 3f, x5, 908,0)
+
+inst_239:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x33333332; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x33333332, 0x4, 1b, x5, 912,0)
+
+inst_240:
+// rs1_val==6 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xaaaaaaa9; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xaaaaaaa9, 0x4, 1b, x5, 916,0)
+
+inst_241:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x55555554, 0x200, 3f, x5, 920,0)
+
+inst_242:
+// rs1_val==6 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x2, 0x4, 3f, x5, 924,0)
+
+inst_243:
+// rs1_val==6 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xffff; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xffff, 0x4, 1b, x5, 928,0)
+
+inst_244:
+// rs1_val==6 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xb504, 0x80, 3f, x5, 932,0)
+
+inst_245:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x66666666, 0x6, 1b, x5, 936,0)
+
+inst_246:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x33333333, 0x2, 3f, x5, 940,0)
+
+inst_247:
+// rs1_val==6 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x5, 0x40, 3f, x5, 944,0)
+
+inst_248:
+// rs1_val==6 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0xaaaaaaaa; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0xaaaaaaaa, 0x80, 3f, x5, 948,0)
+
+inst_249:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x55555555, 0x556, 1b, x5, 952,0)
+
+inst_250:
+// rs1_val==6 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x6; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x6, 0x3, 0x6, 1b, x5, 956,0)
+
+inst_251:
+// rs1_val==2863311531 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x10000; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x10000, 0x400, 1b, x5, 960,0)
+
+inst_252:
+// rs1_val==2863311531 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x1; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x1, 0xa, 1b, x5, 964,0)
+
+inst_253:
+// rs1_val==2863311531 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xb505; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0xb505, 0x100, 3f, x5, 968,0)
+
+inst_254:
+// rs1_val==2863311531 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x66666667; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x66666667, 0x100, 3f, x5, 972,0)
+
+inst_255:
+// rs1_val==2863311531 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x33333334, 0x8, 1b, x5, 976,0)
+
+inst_256:
+// rs1_val==2863311531 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x6, 0x2, 1b, x5, 980,0)
+
+inst_257:
+// rs1_val==2863311531 and rs2_val==2863311531, rs1_val > 0 and rs2_val > 0 and rs1_val == rs2_val and imm_val < 0
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xaaaaaaab; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0xaaaaaaab, 0x8, 1b, x5, 984,0)
+
+inst_258:
+// rs1_val==2863311531 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x55555556, 0x8, 3f, x5, 988,0)
+
+inst_259:
+// rs1_val==2863311531 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x4, 0x6, 3f, x5, 992,0)
+
+inst_260:
+// rs1_val==2863311531 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xfffe; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0xfffe, 0x6, 1b, x5, 996,0)
+
+inst_261:
+// rs1_val==2863311531 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x0, 0x400, 1b, x5, 1000,0)
+
+inst_262:
+// rs1_val==2863311531 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0xb503, 0x8, 1b, x5, 1004,0)
+
+inst_263:
+// rs1_val==2863311531 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x66666665, 0x2, 3f, x5, 1008,0)
+
+inst_264:
+// rs1_val==2863311531 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x33333332, 0x0, 3f, x5, 1012,0)
+
+inst_265:
+// rs1_val==2863311531 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xaaaaaaa9; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0xaaaaaaa9, 0x8, 1b, x5, 1016,0)
+
+inst_266:
+// rs1_val==2863311531 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x55555554, 0x40, 3f, x5, 1020,0)
+
+inst_267:
+// rs1_val==2863311531 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x2, 0x2, 1b, x5, 1024,0)
+
+inst_268:
+// rs1_val==2863311531 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xffff; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0xffff, 0x200, 3f, x5, 1028,0)
+
+inst_269:
+// rs1_val==2863311531 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0xb504, 0x8, 3f, x5, 1032,0)
+
+inst_270:
+// rs1_val==2863311531 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x66666666; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x66666666, 0x80, 3f, x5, 1036,0)
+
+inst_271:
+// rs1_val==2863311531 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x33333333, 0x6, 1b, x5, 1040,0)
+
+inst_272:
+// rs1_val==2863311531 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x5, 0x2, 3f, x5, 1044,0)
+
+inst_273:
+// rs1_val==2863311531 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xaaaaaaaa; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0xaaaaaaaa, 0xa, 1b, x5, 1048,0)
+
+inst_274:
+// rs1_val==2863311531 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x55555555; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x55555555, 0x40, 3f, x5, 1052,0)
+
+inst_275:
+// rs1_val==2863311531 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaab, 0x3, 0x6, 1b, x5, 1056,0)
+
+inst_276:
+// rs1_val==1431655766 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x10000, 0x4, 1b, x5, 1060,0)
+
+inst_277:
+// rs1_val==1431655766 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x1; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x1, 0x0, 1b, x5, 1064,0)
+
+inst_278:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0xb505, 0x8, 1b, x5, 1068,0)
+
+inst_279:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x66666667, 0x4, 1b, x5, 1072,0)
+
+inst_280:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x33333334, 0x20, 3f, x5, 1076,0)
+
+inst_281:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x6, 0x6, 3f, x5, 1080,0)
+
+inst_282:
+// rs1_val==1431655766 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xaaaaaaab; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0xaaaaaaab, 0x400, 3f, x5, 1084,0)
+
+inst_283:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x55555556, 0x20, 3f, x5, 1088,0)
+
+inst_284:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x4, 0x4, 3f, x5, 1092,0)
+
+inst_285:
+// rs1_val==1431655766 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xfffe; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0xfffe, 0x8, 3f, x5, 1096,0)
+
+inst_286:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x0, 0x400, 3f, x5, 1100,0)
+
+inst_287:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0xb503, 0x8, 3f, x5, 1104,0)
+
+inst_288:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x66666665, 0x0, 1b, x5, 1108,0)
+
+inst_289:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x33333332, 0x556, 1b, x5, 1112,0)
+
+inst_290:
+// rs1_val==1431655766 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xaaaaaaa9; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0xaaaaaaa9, 0x6, 3f, x5, 1116,0)
+
+inst_291:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x55555554, 0x2, 3f, x5, 1120,0)
+
+inst_292:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x2; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x2, 0x20, 3f, x5, 1124,0)
+
+inst_293:
+// rs1_val==1431655766 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xffff; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0xffff, 0x400, 3f, x5, 1128,0)
+
+inst_294:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0xb504, 0x80, 3f, x5, 1132,0)
+
+inst_295:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x66666666, 0x80, 3f, x5, 1136,0)
+
+inst_296:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x33333333, 0x6, 1b, x5, 1140,0)
+
+inst_297:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x5; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x5, 0x80, 3f, x5, 1144,0)
+
+inst_298:
+// rs1_val==1431655766 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xaaaaaaaa; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0xaaaaaaaa, 0x8, 3f, x5, 1148,0)
+
+inst_299:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x55555555, 0x400, 3f, x5, 1152,0)
+
+inst_300:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555556, 0x3, 0x2, 1b, x5, 1156,0)
+
+inst_301:
+// rs1_val==4 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x10000; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x10000, 0x2, 1b, x5, 1160,0)
+
+inst_302:
+// rs1_val==4 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x1; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x1, 0x4, 1b, x5, 1164,0)
+
+inst_303:
+// rs1_val==4 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xb505, 0x2, 3f, x5, 1168,0)
+
+inst_304:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x66666667, 0x6, 3f, x5, 1172,0)
+
+inst_305:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x33333334, 0x0, 1b, x5, 1176,0)
+
+inst_306:
+// rs1_val==4 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x6, 0x4, 1b, x5, 1180,0)
+
+inst_307:
+// rs1_val==4 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xaaaaaaab; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xaaaaaaab, 0x4, 3f, x5, 1184,0)
+
+inst_308:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x55555556, 0x4, 3f, x5, 1188,0)
+
+inst_309:
+// rs1_val==4 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x4, 0x0, 1b, x5, 1192,0)
+
+inst_310:
+// rs1_val==4 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xfffe; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xfffe, 0x200, 3f, x5, 1196,0)
+
+inst_311:
+// rs1_val==4 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x0, 0x2, 1b, x5, 1200,0)
+
+inst_312:
+// rs1_val==4 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xb503, 0xa, 1b, x5, 1204,0)
+
+inst_313:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x66666665, 0x8, 3f, x5, 1208,0)
+
+inst_314:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x33333332, 0x400, 1b, x5, 1212,0)
+
+inst_315:
+// rs1_val==4 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xaaaaaaa9; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xaaaaaaa9, 0x200, 3f, x5, 1216,0)
+
+inst_316:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x55555554; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x55555554, 0x100, 3f, x5, 1220,0)
+
+inst_317:
+// rs1_val==4 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x2, 0x2, 3f, x5, 1224,0)
+
+inst_318:
+// rs1_val==4 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xffff; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xffff, 0x100, 3f, x5, 1228,0)
+
+inst_319:
+// rs1_val==4 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xb504; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xb504, 0xa, 1b, x5, 1232,0)
+
+inst_320:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x66666666; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x66666666, 0x10, 3f, x5, 1236,0)
+
+inst_321:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x33333333; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x33333333, 0x80, 3f, x5, 1240,0)
+
+inst_322:
+// rs1_val==4 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x5, 0x2, 1b, x5, 1244,0)
+
+inst_323:
+// rs1_val==4 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0xaaaaaaaa; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0xaaaaaaaa, 0x200, 3f, x5, 1248,0)
+
+inst_324:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x55555555, 0x10, 3f, x5, 1252,0)
+
+inst_325:
+// rs1_val==4 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x4; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x4, 0x3, 0x20, 3f, x5, 1256,0)
+
+inst_326:
+// rs1_val==65534 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x10000; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x10000, 0x0, 3f, x5, 1260,0)
+
+inst_327:
+// rs1_val==65534 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x1; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x1, 0x40, 3f, x5, 1264,0)
+
+inst_328:
+// rs1_val==65534 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0xb505, 0x0, 3f, x5, 1268,0)
+
+inst_329:
+// rs1_val==65534 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x66666667; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x66666667, 0xa, 1b, x5, 1272,0)
+
+inst_330:
+// rs1_val==65534 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x33333334, 0x8, 3f, x5, 1276,0)
+
+inst_331:
+// rs1_val==65534 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x6, 0x20, 3f, x5, 1280,0)
+
+inst_332:
+// rs1_val==65534 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0xaaaaaaab, 0x6, 1b, x5, 1284,0)
+
+inst_333:
+// rs1_val==65534 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x55555556, 0x10, 3f, x5, 1288,0)
+
+inst_334:
+// rs1_val==65534 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x4, 0x400, 3f, x5, 1292,0)
+
+inst_335:
+// rs1_val==65534 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xfffe; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0xfffe, 0x556, 1b, x5, 1296,0)
+
+inst_336:
+// rs1_val==65534 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x0, 0x2, 3f, x5, 1300,0)
+
+inst_337:
+// rs1_val==65534 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0xb503, 0x0, 1b, x5, 1304,0)
+
+inst_338:
+// rs1_val==65534 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x66666665, 0x8, 1b, x5, 1308,0)
+
+inst_339:
+// rs1_val==65534 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x33333332, 0x40, 3f, x5, 1312,0)
+
+inst_340:
+// rs1_val==65534 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xaaaaaaa9; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0xaaaaaaa9, 0x2, 1b, x5, 1316,0)
+
+inst_341:
+// rs1_val==65534 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x55555554, 0x6, 1b, x5, 1320,0)
+
+inst_342:
+// rs1_val==65534 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x2, 0x2, 1b, x5, 1324,0)
+
+inst_343:
+// rs1_val==65534 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xffff; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0xffff, 0xa, 1b, x5, 1328,0)
+
+inst_344:
+// rs1_val==65534 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0xb504, 0x2, 3f, x5, 1332,0)
+
+inst_345:
+// rs1_val==65534 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x66666666; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x66666666, 0x200, 3f, x5, 1336,0)
+
+inst_346:
+// rs1_val==65534 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x33333333, 0x2, 1b, x5, 1340,0)
+
+inst_347:
+// rs1_val==65534 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x5, 0x400, 1b, x5, 1344,0)
+
+inst_348:
+// rs1_val==65534 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xaaaaaaaa; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0xaaaaaaaa, 0xa, 1b, x5, 1348,0)
+
+inst_349:
+// rs1_val==65534 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x55555555, 0x20, 3f, x5, 1352,0)
+
+inst_350:
+// rs1_val==65534 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xfffe, 0x3, 0x6, 1b, x5, 1356,0)
+
+inst_351:
+// rs1_val==0 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x10000; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x10000, 0x10, 3f, x5, 1360,0)
+
+inst_352:
+// rs1_val==0 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x1, 0x6, 1b, x5, 1364,0)
+
+inst_353:
+// rs1_val==0 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0xb505; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0xb505, 0x6, 3f, x5, 1368,0)
+
+inst_354:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x66666667, 0x400, 1b, x5, 1372,0)
+
+inst_355:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x33333334, 0x8, 1b, x5, 1376,0)
+
+inst_356:
+// rs1_val==0 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x6, 0x80, 3f, x5, 1380,0)
+
+inst_357:
+// rs1_val==0 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0xaaaaaaab; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0xaaaaaaab, 0x100, 3f, x5, 1384,0)
+
+inst_358:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x55555556, 0x0, 1b, x5, 1388,0)
+
+inst_359:
+// rs1_val==0 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x4, 0x4, 3f, x5, 1392,0)
+
+inst_360:
+// rs1_val==0 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0xfffe; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0xfffe, 0x200, 3f, x5, 1396,0)
+
+inst_361:
+// rs1_val==0 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x0, 0x2, 1b, x5, 1400,0)
+
+inst_362:
+// rs1_val==0 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0xb503, 0x400, 1b, x5, 1404,0)
+
+inst_363:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x66666665; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x66666665, 0x80, 3f, x5, 1408,0)
+
+inst_364:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x33333332, 0x200, 3f, x5, 1412,0)
+
+inst_365:
+// rs1_val==0 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0xaaaaaaa9; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0xaaaaaaa9, 0x6, 1b, x5, 1416,0)
+
+inst_366:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x55555554; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x55555554, 0xa, 1b, x5, 1420,0)
+
+inst_367:
+// rs1_val==0 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x2, 0x4, 1b, x5, 1424,0)
+
+inst_368:
+// rs1_val==0 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0xffff; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0xffff, 0x556, 1b, x5, 1428,0)
+
+inst_369:
+// rs1_val==0 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0xb504, 0x80, 3f, x5, 1432,0)
+
+inst_370:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x66666666, 0x2, 3f, x5, 1436,0)
+
+inst_371:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x33333333, 0x400, 3f, x5, 1440,0)
+
+inst_372:
+// rs1_val==0 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x5, 0x4, 1b, x5, 1444,0)
+
+inst_373:
+// rs1_val==0 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0xaaaaaaaa; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0xaaaaaaaa, 0xa, 1b, x5, 1448,0)
+
+inst_374:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x55555555, 0x0, 1b, x5, 1452,0)
+
+inst_375:
+// rs1_val==0 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x0; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x0, 0x3, 0x10, 3f, x5, 1456,0)
+
+inst_376:
+// rs1_val==46339 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x10000; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x10000, 0x2, 1b, x5, 1460,0)
+
+inst_377:
+// rs1_val==46339 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x1; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x1, 0x2, 3f, x5, 1464,0)
+
+inst_378:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0xb505, 0x0, 3f, x5, 1468,0)
+
+inst_379:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x66666667, 0x0, 3f, x5, 1472,0)
+
+inst_380:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x33333334, 0xa, 1b, x5, 1476,0)
+
+inst_381:
+// rs1_val==46339 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x6, 0x200, 3f, x5, 1480,0)
+
+inst_382:
+// rs1_val==46339 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0xaaaaaaab; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0xaaaaaaab, 0x4, 1b, x5, 1484,0)
+
+inst_383:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x55555556, 0x200, 3f, x5, 1488,0)
+
+inst_384:
+// rs1_val==46339 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x4, 0x8, 3f, x5, 1492,0)
+
+inst_385:
+// rs1_val==46339 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0xfffe; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0xfffe, 0x100, 3f, x5, 1496,0)
+
+inst_386:
+// rs1_val==46339 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x0, 0x4, 1b, x5, 1500,0)
+
+inst_387:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0xb503, 0x4, 1b, x5, 1504,0)
+
+inst_388:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x66666665, 0x4, 1b, x5, 1508,0)
+
+inst_389:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x33333332, 0x2, 1b, x5, 1512,0)
+
+inst_390:
+// rs1_val==46339 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0xaaaaaaa9; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0xaaaaaaa9, 0x40, 3f, x5, 1516,0)
+
+inst_391:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x55555554, 0x400, 1b, x5, 1520,0)
+
+inst_392:
+// rs1_val==46339 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x2, 0x10, 3f, x5, 1524,0)
+
+inst_393:
+// rs1_val==46339 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0xffff; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0xffff, 0x4, 1b, x5, 1528,0)
+
+inst_394:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0xb504, 0x10, 3f, x5, 1532,0)
+
+inst_395:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x66666666, 0x400, 3f, x5, 1536,0)
+
+inst_396:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x33333333, 0x20, 3f, x5, 1540,0)
+
+inst_397:
+// rs1_val==46339 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x5, 0xa, 1b, x5, 1544,0)
+
+inst_398:
+// rs1_val==46339 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0xaaaaaaaa; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0xaaaaaaaa, 0x556, 1b, x5, 1548,0)
+
+inst_399:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x55555555, 0x0, 3f, x5, 1552,0)
+
+inst_400:
+// rs1_val==46339 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb503; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb503, 0x3, 0x40, 3f, x5, 1556,0)
+
+inst_401:
+// rs1_val==1717986917 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x10000; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x10000, 0x6, 1b, x5, 1560,0)
+
+inst_402:
+// rs1_val==1717986917 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x1; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x1, 0xa, 1b, x5, 1564,0)
+
+inst_403:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xb505, 0x0, 3f, x5, 1568,0)
+
+inst_404:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x66666667, 0x6, 3f, x5, 1572,0)
+
+inst_405:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x33333334, 0x4, 1b, x5, 1576,0)
+
+inst_406:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x6, 0x0, 1b, x5, 1580,0)
+
+inst_407:
+// rs1_val==1717986917 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xaaaaaaab; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xaaaaaaab, 0x8, 3f, x5, 1584,0)
+
+inst_408:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x55555556, 0x200, 3f, x5, 1588,0)
+
+inst_409:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x4, 0x6, 1b, x5, 1592,0)
+
+inst_410:
+// rs1_val==1717986917 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xfffe; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xfffe, 0x200, 3f, x5, 1596,0)
+
+inst_411:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x0, 0x400, 1b, x5, 1600,0)
+
+inst_412:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xb503, 0x6, 3f, x5, 1604,0)
+
+inst_413:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x66666665, 0x20, 3f, x5, 1608,0)
+
+inst_414:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x33333332, 0x0, 3f, x5, 1612,0)
+
+inst_415:
+// rs1_val==1717986917 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xaaaaaaa9; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xaaaaaaa9, 0x4, 1b, x5, 1616,0)
+
+inst_416:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x55555554, 0x80, 3f, x5, 1620,0)
+
+inst_417:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x2; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x2, 0x40, 3f, x5, 1624,0)
+
+inst_418:
+// rs1_val==1717986917 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xffff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xffff, 0x6, 3f, x5, 1628,0)
+
+inst_419:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xb504, 0x80, 3f, x5, 1632,0)
+
+inst_420:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x66666666, 0x8, 1b, x5, 1636,0)
+
+inst_421:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x33333333, 0x10, 3f, x5, 1640,0)
+
+inst_422:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x5, 0x0, 1b, x5, 1644,0)
+
+inst_423:
+// rs1_val==1717986917 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xaaaaaaaa; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0xaaaaaaaa, 0x556, 1b, x5, 1648,0)
+
+inst_424:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x55555555, 0x200, 3f, x5, 1652,0)
+
+inst_425:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666665, 0x3, 0x8, 1b, x5, 1656,0)
+
+inst_426:
+// rs1_val==858993458 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x10000; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x10000, 0x100, 3f, x5, 1660,0)
+
+inst_427:
+// rs1_val==858993458 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x1; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x1, 0x8, 1b, x5, 1664,0)
+
+inst_428:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xb505, 0x2, 1b, x5, 1668,0)
+
+inst_429:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x66666667, 0x400, 3f, x5, 1672,0)
+
+inst_430:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x33333334, 0x10, 3f, x5, 1676,0)
+
+inst_431:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x6, 0xa, 1b, x5, 1680,0)
+
+inst_432:
+// rs1_val==858993458 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xaaaaaaab; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xaaaaaaab, 0x100, 3f, x5, 1684,0)
+
+inst_433:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x55555556, 0x4, 1b, x5, 1688,0)
+
+inst_434:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x4; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x4, 0x100, 3f, x5, 1692,0)
+
+inst_435:
+// rs1_val==858993458 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xfffe; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xfffe, 0x2, 3f, x5, 1696,0)
+
+inst_436:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x0; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x0, 0x80, 3f, x5, 1700,0)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xb503, 0x556, 1b, x5, 1704,0)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x66666665, 0x400, 1b, x5, 1708,0)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x33333332, 0x10, 3f, x5, 1712,0)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xaaaaaaa9; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xaaaaaaa9, 0x6, 1b, x5, 1716,0)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x55555554, 0x0, 1b, x5, 1720,0)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x2, 0x10, 3f, x5, 1724,0)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xffff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xffff, 0x6, 3f, x5, 1728,0)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xb504, 0x6, 1b, x5, 1732,0)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x66666666, 0x100, 3f, x5, 1736,0)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x33333333, 0x2, 1b, x5, 1740,0)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x5, 0x2, 1b, x5, 1744,0)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xaaaaaaaa; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0xaaaaaaaa, 0x80, 3f, x5, 1748,0)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x55555555, 0x80, 3f, x5, 1752,0)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x3; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333332, 0x3, 0x200, 3f, x5, 1756,0)
+
+inst_451:
+// rs1_val==2863311529 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x10000; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x10000, 0x20, 3f, x5, 1760,0)
+
+inst_452:
+// rs1_val==2863311529 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x1; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x1, 0x556, 1b, x5, 1764,0)
+
+inst_453:
+// rs1_val==2863311529 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0xb505, 0x40, 3f, x5, 1768,0)
+
+inst_454:
+// rs1_val==2863311529 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x66666667; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x66666667, 0x40, 3f, x5, 1772,0)
+
+inst_455:
+// rs1_val==2863311529 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x33333334, 0x400, 3f, x5, 1776,0)
+
+inst_456:
+// rs1_val==2863311529 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x6, 0x6, 3f, x5, 1780,0)
+
+inst_457:
+// rs1_val==2863311529 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xaaaaaaab; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0xaaaaaaab, 0x80, 3f, x5, 1784,0)
+
+inst_458:
+// rs1_val==2863311529 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x55555556, 0x4, 3f, x5, 1788,0)
+
+inst_459:
+// rs1_val==2863311529 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x4, 0x6, 1b, x5, 1792,0)
+
+inst_460:
+// rs1_val==2863311529 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xfffe; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0xfffe, 0x200, 3f, x5, 1796,0)
+
+inst_461:
+// rs1_val==2863311529 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x0, 0x4, 1b, x5, 1800,0)
+
+inst_462:
+// rs1_val==2863311529 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0xb503, 0x80, 3f, x5, 1804,0)
+
+inst_463:
+// rs1_val==2863311529 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x66666665, 0x400, 3f, x5, 1808,0)
+
+inst_464:
+// rs1_val==2863311529 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x33333332; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x33333332, 0x4, 3f, x5, 1812,0)
+
+inst_465:
+// rs1_val==2863311529 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xaaaaaaa9; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0xaaaaaaa9, 0x0, 1b, x5, 1816,0)
+
+inst_466:
+// rs1_val==2863311529 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x55555554, 0x2, 1b, x5, 1820,0)
+
+inst_467:
+// rs1_val==2863311529 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x2, 0x6, 3f, x5, 1824,0)
+
+inst_468:
+// rs1_val==2863311529 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xffff; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0xffff, 0x200, 3f, x5, 1828,0)
+
+inst_469:
+// rs1_val==2863311529 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0xb504, 0x400, 1b, x5, 1832,0)
+
+inst_470:
+// rs1_val==2863311529 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x66666666, 0x100, 3f, x5, 1836,0)
+
+inst_471:
+// rs1_val==2863311529 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x33333333, 0x400, 1b, x5, 1840,0)
+
+inst_472:
+// rs1_val==2863311529 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x5, 0x2, 3f, x5, 1844,0)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x4, 0x10, 3f, x5, 1848,0)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xfffe; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0xfffe, 0x556, 1b, x5, 1852,0)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x0, 0x200, 3f, x5, 1856,0)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0xb503, 0x80, 3f, x5, 1860,0)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x66666665, 0x8, 1b, x5, 1864,0)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x33333332, 0x80, 3f, x5, 1868,0)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xaaaaaaa9; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0xaaaaaaa9, 0x100, 3f, x5, 1872,0)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x55555554, 0x0, 1b, x5, 1876,0)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x2, 0x80, 3f, x5, 1880,0)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xffff; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0xffff, 0x20, 3f, x5, 1884,0)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0xb504, 0x556, 1b, x5, 1888,0)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x66666666, 0x6, 1b, x5, 1892,0)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x33333333, 0x556, 1b, x5, 1896,0)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x5, 0x20, 3f, x5, 1900,0)
+
+inst_487:
+// rs1_val==1431655764 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xaaaaaaaa; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0xaaaaaaaa, 0x20, 3f, x5, 1904,0)
+
+inst_488:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x55555555, 0x100, 3f, x5, 1908,0)
+
+inst_489:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x3; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x3, 0x556, 1b, x5, 1912,0)
+
+inst_490:
+// rs1_val==2 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x10000, 0x4, 3f, x5, 1916,0)
+
+inst_491:
+// rs1_val==2 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x1; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x1, 0x40, 3f, x5, 1920,0)
+
+inst_492:
+// rs1_val==2 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0xb505, 0x2, 3f, x5, 1924,0)
+
+inst_493:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x66666667, 0x2, 1b, x5, 1928,0)
+
+inst_494:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x33333334, 0x8, 3f, x5, 1932,0)
+
+inst_495:
+// rs1_val==2 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x6, 0x8, 1b, x5, 1936,0)
+
+inst_496:
+// rs1_val==2 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0xaaaaaaab; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0xaaaaaaab, 0x4, 1b, x5, 1940,0)
+
+inst_497:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x55555556, 0x100, 3f, x5, 1944,0)
+
+inst_498:
+// rs1_val==2 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x4; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x4, 0x556, 1b, x5, 1948,0)
+
+inst_499:
+// rs1_val==2 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0xfffe; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0xfffe, 0x200, 3f, x5, 1952,0)
+
+inst_500:
+// rs1_val==2 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x0, 0x400, 3f, x5, 1956,0)
+
+inst_501:
+// rs1_val==2 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0xb503, 0x0, 3f, x5, 1960,0)
+
+inst_502:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x66666665, 0x4, 3f, x5, 1964,0)
+
+inst_503:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x33333332; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x33333332, 0x20, 3f, x5, 1968,0)
+
+inst_504:
+// rs1_val==2 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0xaaaaaaa9; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0xaaaaaaa9, 0x0, 1b, x5, 1972,0)
+
+inst_505:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x55555554, 0x200, 3f, x5, 1976,0)
+
+inst_506:
+// rs1_val==2 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x2, 0x400, 3f, x5, 1980,0)
+
+inst_507:
+// rs1_val==2 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0xffff; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0xffff, 0x556, 1b, x5, 1984,0)
+
+inst_508:
+// rs1_val==2 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0xb504, 0x8, 3f, x5, 1988,0)
+
+inst_509:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x66666666; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x66666666, 0x40, 3f, x5, 1992,0)
+
+inst_510:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x33333333, 0xa, 1b, x5, 1996,0)
+
+inst_511:
+// rs1_val==2 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x5; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x5, 0x10, 3f, x5, 2000,0)
+
+inst_512:
+// rs1_val==2 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0xaaaaaaaa; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0xaaaaaaaa, 0x400, 1b, x5, 2004,0)
+
+inst_513:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x55555555, 0xa, 1b, x5, 2008,0)
+
+inst_514:
+// rs1_val==2 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x2; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x2, 0x3, 0x6, 3f, x5, 2012,0)
+
+inst_515:
+// rs1_val==65535 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x10000; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x10000, 0x556, 1b, x5, 2016,0)
+
+inst_516:
+// rs1_val==65535 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x1; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x1, 0x4, 1b, x5, 2020,0)
+
+inst_517:
+// rs1_val==65535 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0xb505, 0x8, 3f, x5, 2024,0)
+
+inst_518:
+// rs1_val==65535 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x66666667, 0x4, 1b, x5, 2028,0)
+
+inst_519:
+// rs1_val==65535 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x33333334; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x33333334, 0x20, 3f, x5, 2032,0)
+
+inst_520:
+// rs1_val==65535 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x6, 0x4, 1b, x5, 2036,0)
+
+inst_521:
+// rs1_val==65535 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0xaaaaaaab; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0xaaaaaaab, 0x100, 3f, x5, 2040,0)
+
+inst_522:
+// rs1_val==65535 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x55555556, 0x20, 3f, x5, 2044,0)
+RVTEST_SIGBASE( x5,signature_x5_1)
+
+inst_523:
+// rs1_val==65535 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x4; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x4, 0x100, 3f, x5, 0,0)
+
+inst_524:
+// rs1_val==65535 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0xfffe; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0xfffe, 0x6, 1b, x5, 4,0)
+
+inst_525:
+// rs1_val==65535 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x0, 0x556, 1b, x5, 8,0)
+
+inst_526:
+// rs1_val==65535 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0xb503; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0xb503, 0x100, 3f, x5, 12,0)
+
+inst_527:
+// rs1_val==65535 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x66666665, 0x2, 1b, x5, 16,0)
+
+inst_528:
+// rs1_val==65535 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x33333332; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x33333332, 0x100, 3f, x5, 20,0)
+
+inst_529:
+// rs1_val==65535 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0xaaaaaaa9; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0xaaaaaaa9, 0x200, 3f, x5, 24,0)
+
+inst_530:
+// rs1_val==65535 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x55555554; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x55555554, 0x20, 3f, x5, 28,0)
+
+inst_531:
+// rs1_val==65535 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x2, 0x6, 1b, x5, 32,0)
+
+inst_532:
+// rs1_val==65535 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0xffff; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0xffff, 0x0, 1b, x5, 36,0)
+
+inst_533:
+// rs1_val==65535 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0xb504, 0x200, 3f, x5, 40,0)
+
+inst_534:
+// rs1_val==65535 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x66666666, 0x0, 3f, x5, 44,0)
+
+inst_535:
+// rs1_val==65535 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x33333333, 0xa, 1b, x5, 48,0)
+
+inst_536:
+// rs1_val==65535 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x5; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x5, 0x80, 3f, x5, 52,0)
+
+inst_537:
+// rs1_val==65535 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0xaaaaaaaa; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0xaaaaaaaa, 0x40, 3f, x5, 56,0)
+
+inst_538:
+// rs1_val==65535 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x55555555, 0x2, 3f, x5, 60,0)
+
+inst_539:
+// rs1_val==65535 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xffff; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xffff, 0x3, 0x8, 3f, x5, 64,0)
+
+inst_540:
+// rs1_val==46340 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x10000; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x10000, 0x6, 1b, x5, 68,0)
+
+inst_541:
+// rs1_val==46340 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x1; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x1, 0x2, 1b, x5, 72,0)
+
+inst_542:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0xb505, 0x40, 3f, x5, 76,0)
+
+inst_543:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x66666667, 0x8, 1b, x5, 80,0)
+
+inst_544:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x33333334, 0x400, 3f, x5, 84,0)
+
+inst_545:
+// rs1_val==46340 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x6, 0x2, 1b, x5, 88,0)
+
+inst_546:
+// rs1_val==46340 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0xaaaaaaab; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0xaaaaaaab, 0x556, 1b, x5, 92,0)
+
+inst_547:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x55555556, 0x0, 3f, x5, 96,0)
+
+inst_548:
+// rs1_val==46340 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x4, 0x8, 1b, x5, 100,0)
+
+inst_549:
+// rs1_val==46340 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0xfffe; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0xfffe, 0x80, 3f, x5, 104,0)
+
+inst_550:
+// rs1_val==46340 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x0, 0x2, 3f, x5, 108,0)
+
+inst_551:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0xb503, 0xa, 1b, x5, 112,0)
+
+inst_552:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x66666665, 0x8, 3f, x5, 116,0)
+
+inst_553:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x33333332, 0x4, 1b, x5, 120,0)
+
+inst_554:
+// rs1_val==46340 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0xaaaaaaa9; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0xaaaaaaa9, 0x200, 3f, x5, 124,0)
+
+inst_555:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x55555554, 0x100, 3f, x5, 128,0)
+
+inst_556:
+// rs1_val==46340 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x2; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x2, 0x200, 3f, x5, 132,0)
+
+inst_557:
+// rs1_val==46340 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0xffff; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0xffff, 0x100, 3f, x5, 136,0)
+
+inst_558:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0xb504, 0x400, 1b, x5, 140,0)
+
+inst_559:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x66666666, 0x0, 1b, x5, 144,0)
+
+inst_560:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x33333333, 0x200, 3f, x5, 148,0)
+
+inst_561:
+// rs1_val==46340 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x5; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x5, 0x556, 1b, x5, 152,0)
+
+inst_562:
+// rs1_val==46340 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0xaaaaaaaa; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0xaaaaaaaa, 0x10, 3f, x5, 156,0)
+
+inst_563:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x55555555, 0x8, 3f, x5, 160,0)
+
+inst_564:
+// rs1_val==46340 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xb504; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xb504, 0x3, 0x8, 3f, x5, 164,0)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x10000; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x10000, 0x10, 3f, x5, 168,0)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x1; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x1, 0x200, 3f, x5, 172,0)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0xb505, 0x4, 1b, x5, 176,0)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x66666667, 0x6, 1b, x5, 180,0)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x33333334, 0x2, 1b, x5, 184,0)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x6, 0x8, 1b, x5, 188,0)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0xaaaaaaab, 0x6, 3f, x5, 192,0)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x55555556, 0x4, 1b, x5, 196,0)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x4; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x4, 0x40, 3f, x5, 200,0)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xfffe; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0xfffe, 0x200, 3f, x5, 204,0)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x0, 0x0, 1b, x5, 208,0)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0xb503, 0x0, 1b, x5, 212,0)
+
+inst_577:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x66666665, 0x100, 3f, x5, 216,0)
+
+inst_578:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x33333332, 0x2, 3f, x5, 220,0)
+
+inst_579:
+// rs1_val==1717986918 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xaaaaaaa9; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0xaaaaaaa9, 0x10, 3f, x5, 224,0)
+
+inst_580:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x55555554, 0x556, 1b, x5, 228,0)
+
+inst_581:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x2, 0x400, 1b, x5, 232,0)
+
+inst_582:
+// rs1_val==1717986918 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xffff; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0xffff, 0x200, 3f, x5, 236,0)
+
+inst_583:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0xb504, 0x2, 1b, x5, 240,0)
+
+inst_584:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x66666666, 0x200, 3f, x5, 244,0)
+
+inst_585:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x33333333, 0x10, 3f, x5, 248,0)
+
+inst_586:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x5, 0x400, 3f, x5, 252,0)
+
+inst_587:
+// rs1_val==1717986918 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xaaaaaaaa; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0xaaaaaaaa, 0x4, 1b, x5, 256,0)
+
+inst_588:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x55555555, 0x2, 3f, x5, 260,0)
+
+inst_589:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x66666666, 0x3, 0x8, 1b, x5, 264,0)
+
+inst_590:
+// rs1_val==858993459 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x10000; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x10000, 0x2, 1b, x5, 268,0)
+
+inst_591:
+// rs1_val==858993459 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x1; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x1, 0x0, 1b, x5, 272,0)
+
+inst_592:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0xb505, 0x2, 3f, x5, 276,0)
+
+inst_593:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x66666667, 0x6, 3f, x5, 280,0)
+
+inst_594:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x33333334, 0x400, 1b, x5, 284,0)
+
+inst_595:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x6, 0x0, 3f, x5, 288,0)
+
+inst_596:
+// rs1_val==858993459 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xaaaaaaab; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0xaaaaaaab, 0x10, 3f, x5, 292,0)
+
+inst_597:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x55555556, 0x200, 3f, x5, 296,0)
+
+inst_598:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x4, 0x8, 1b, x5, 300,0)
+
+inst_599:
+// rs1_val==858993459 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xfffe; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0xfffe, 0xa, 1b, x5, 304,0)
+
+inst_600:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x0, 0x0, 1b, x5, 308,0)
+
+inst_601:
+// rs1_val==2863311529 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x3, 0x6, 1b, x5, 312,0)
+
+inst_602:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0xb503, 0x400, 1b, x5, 316,0)
+
+inst_603:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x66666665, 0x100, 3f, x5, 320,0)
+
+inst_604:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x33333332, 0x10, 3f, x5, 324,0)
+
+inst_605:
+// rs1_val==858993459 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xaaaaaaa9; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0xaaaaaaa9, 0x100, 3f, x5, 328,0)
+
+inst_606:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x55555554, 0x8, 1b, x5, 332,0)
+
+inst_607:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x2, 0x80, 3f, x5, 336,0)
+
+inst_608:
+// rs1_val==858993459 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xffff; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0xffff, 0x556, 1b, x5, 340,0)
+
+inst_609:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0xb504, 0x8, 1b, x5, 344,0)
+
+inst_610:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x66666666, 0x0, 3f, x5, 348,0)
+
+inst_611:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x33333333, 0x2, 1b, x5, 352,0)
+
+inst_612:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x5; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x5, 0x80, 3f, x5, 356,0)
+
+inst_613:
+// rs1_val==858993459 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xaaaaaaaa; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0xaaaaaaaa, 0x6, 1b, x5, 360,0)
+
+inst_614:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x55555555, 0x2, 3f, x5, 364,0)
+
+inst_615:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x33333333, 0x3, 0x0, 3f, x5, 368,0)
+
+inst_616:
+// rs1_val==5 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x10000; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x10000, 0x100, 3f, x5, 372,0)
+
+inst_617:
+// rs1_val==5 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x1, 0x6, 3f, x5, 376,0)
+
+inst_618:
+// rs1_val==5 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0xb505; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0xb505, 0xa, 1b, x5, 380,0)
+
+inst_619:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x66666667, 0x400, 1b, x5, 384,0)
+
+inst_620:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x33333334, 0x8, 3f, x5, 388,0)
+
+inst_621:
+// rs1_val==5 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x6, 0x2, 1b, x5, 392,0)
+
+inst_622:
+// rs1_val==5 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0xaaaaaaab; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0xaaaaaaab, 0x100, 3f, x5, 396,0)
+
+inst_623:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x55555556, 0x4, 3f, x5, 400,0)
+
+inst_624:
+// rs1_val==5 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x4, 0x0, 3f, x5, 404,0)
+
+inst_625:
+// rs1_val==5 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0xfffe; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0xfffe, 0x400, 3f, x5, 408,0)
+
+inst_626:
+// rs1_val==5 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x0, 0x200, 3f, x5, 412,0)
+
+inst_627:
+// rs1_val==5 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0xb503, 0x556, 1b, x5, 416,0)
+
+inst_628:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x66666665, 0x6, 1b, x5, 420,0)
+
+inst_629:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x33333332, 0x556, 1b, x5, 424,0)
+
+inst_630:
+// rs1_val==5 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0xaaaaaaa9; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0xaaaaaaa9, 0x6, 3f, x5, 428,0)
+
+inst_631:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x55555554, 0x556, 1b, x5, 432,0)
+
+inst_632:
+// rs1_val==5 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x2, 0x6, 3f, x5, 436,0)
+
+inst_633:
+// rs1_val==5 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0xffff; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0xffff, 0xa, 1b, x5, 440,0)
+
+inst_634:
+// rs1_val==5 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0xb504, 0x556, 1b, x5, 444,0)
+
+inst_635:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x66666666, 0x2, 3f, x5, 448,0)
+
+inst_636:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x33333333, 0x6, 3f, x5, 452,0)
+
+inst_637:
+// rs1_val==5 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x5, 0x6, 1b, x5, 456,0)
+
+inst_638:
+// rs1_val==5 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0xaaaaaaaa; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0xaaaaaaaa, 0xa, 1b, x5, 460,0)
+
+inst_639:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x55555555, 0x0, 1b, x5, 464,0)
+
+inst_640:
+// rs1_val==5 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x5; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x5, 0x3, 0x0, 3f, x5, 468,0)
+
+inst_641:
+// rs1_val==2863311530 and rs2_val==65536, rs1_val == 2863311530
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x10000; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x10000, 0x6, 1b, x5, 472,0)
+
+inst_642:
+// rs1_val==2863311530 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x1; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x1, 0x556, 1b, x5, 476,0)
+
+inst_643:
+// rs1_val==2863311530 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0xb505, 0x10, 3f, x5, 480,0)
+
+inst_644:
+// rs1_val==2863311530 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x66666667, 0x0, 1b, x5, 484,0)
+
+inst_645:
+// rs1_val==2863311530 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x33333334, 0x4, 1b, x5, 488,0)
+
+inst_646:
+// rs1_val==2863311530 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x6, 0x20, 3f, x5, 492,0)
+
+inst_647:
+// rs1_val==2863311530 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xaaaaaaab; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0xaaaaaaab, 0x0, 3f, x5, 496,0)
+
+inst_648:
+// rs1_val==2863311530 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x55555556, 0x8, 3f, x5, 500,0)
+
+inst_649:
+// rs1_val==2863311530 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x4; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x4, 0x80, 3f, x5, 504,0)
+
+inst_650:
+// rs1_val==2863311530 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xfffe; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0xfffe, 0x20, 3f, x5, 508,0)
+
+inst_651:
+// rs1_val==2863311530 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x0, 0x6, 3f, x5, 512,0)
+
+inst_652:
+// rs1_val==2863311530 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0xb503, 0x400, 1b, x5, 516,0)
+
+inst_653:
+// rs1_val==2863311530 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x66666665, 0x20, 3f, x5, 520,0)
+
+inst_654:
+// rs1_val==2863311530 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x33333332, 0x0, 3f, x5, 524,0)
+
+inst_655:
+// rs1_val==2863311530 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xaaaaaaa9; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0xaaaaaaa9, 0x40, 3f, x5, 528,0)
+
+inst_656:
+// rs1_val==2863311530 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x55555554, 0x40, 3f, x5, 532,0)
+
+inst_657:
+// rs1_val==2863311530 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x2, 0x0, 1b, x5, 536,0)
+
+inst_658:
+// rs1_val==2863311530 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xffff; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0xffff, 0x40, 3f, x5, 540,0)
+
+inst_659:
+// rs1_val==2863311530 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0xb504, 0x0, 1b, x5, 544,0)
+
+inst_660:
+// rs1_val==2863311530 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x66666666, 0x400, 3f, x5, 548,0)
+
+inst_661:
+// rs1_val==2863311530 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x33333333; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x33333333, 0x100, 3f, x5, 552,0)
+
+inst_662:
+// rs1_val==2863311530 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x5; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x5, 0x100, 3f, x5, 556,0)
+
+inst_663:
+// rs1_val==2863311530 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xaaaaaaaa; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0xaaaaaaaa, 0x6, 3f, x5, 560,0)
+
+inst_664:
+// rs1_val==2863311530 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x55555555, 0x400, 1b, x5, 564,0)
+
+inst_665:
+// rs1_val==2863311530 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaaa, 0x3, 0x20, 3f, x5, 568,0)
+
+inst_666:
+// rs1_val==1431655765 and rs2_val==65536, rs1_val == 1431655765
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x10000; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x10000, 0x400, 3f, x5, 572,0)
+
+inst_667:
+// rs1_val==1431655765 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x1; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x1, 0x8, 1b, x5, 576,0)
+
+inst_668:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0xb505, 0x10, 3f, x5, 580,0)
+
+inst_669:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x66666667, 0x40, 3f, x5, 584,0)
+
+inst_670:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x33333334, 0x6, 3f, x5, 588,0)
+
+inst_671:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x6, 0x80, 3f, x5, 592,0)
+
+inst_672:
+// rs1_val==1431655765 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xaaaaaaab; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0xaaaaaaab, 0x8, 3f, x5, 596,0)
+
+inst_673:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x55555556, 0x200, 3f, x5, 600,0)
+
+inst_674:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x4; immval:0x556; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x4, 0x556, 1b, x5, 604,0)
+
+inst_675:
+// rs1_val==1431655765 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xfffe; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0xfffe, 0x4, 3f, x5, 608,0)
+
+inst_676:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x0, 0x200, 3f, x5, 612,0)
+
+inst_677:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0xb503, 0x8, 3f, x5, 616,0)
+
+inst_678:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x66666665, 0xa, 1b, x5, 620,0)
+
+inst_679:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x33333332, 0x4, 1b, x5, 624,0)
+
+inst_680:
+// rs1_val==1431655765 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xaaaaaaa9; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0xaaaaaaa9, 0x100, 3f, x5, 628,0)
+
+inst_681:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554; immval:0x100; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x55555554, 0x100, 3f, x5, 632,0)
+
+inst_682:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x2, 0x8, 1b, x5, 636,0)
+
+inst_683:
+// rs1_val==1431655765 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xffff; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0xffff, 0x0, 1b, x5, 640,0)
+
+inst_684:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0xb504, 0x20, 3f, x5, 644,0)
+
+inst_685:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x66666666, 0x4, 1b, x5, 648,0)
+
+inst_686:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x33333333, 0x400, 1b, x5, 652,0)
+
+inst_687:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x5, 0xa, 1b, x5, 656,0)
+
+inst_688:
+// rs1_val==1431655765 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xaaaaaaaa; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0xaaaaaaaa, 0x8, 3f, x5, 660,0)
+
+inst_689:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x55555555, 0x0, 1b, x5, 664,0)
+
+inst_690:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555555, 0x3, 0x8, 3f, x5, 668,0)
+
+inst_691:
+// rs1_val==3 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x10000; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x10000, 0x400, 1b, x5, 672,0)
+
+inst_692:
+// rs1_val==3 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x1; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x1, 0x400, 1b, x5, 676,0)
+
+inst_693:
+// rs1_val==3 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0xb505, 0x8, 3f, x5, 680,0)
+
+inst_694:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x66666667, 0x0, 3f, x5, 684,0)
+
+inst_695:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x33333334, 0x8, 1b, x5, 688,0)
+
+inst_696:
+// rs1_val==3 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x6, 0x0, 3f, x5, 692,0)
+
+inst_697:
+// rs1_val==3 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0xaaaaaaab; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0xaaaaaaab, 0x400, 3f, x5, 696,0)
+
+inst_698:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x55555556, 0x400, 3f, x5, 700,0)
+
+inst_699:
+// rs1_val==3 and rs2_val==4,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x4, 0x8, 1b, x5, 704,0)
+
+inst_700:
+// rs1_val==3 and rs2_val==65534,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0xfffe; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0xfffe, 0x8, 3f, x5, 708,0)
+
+inst_701:
+// rs1_val==3 and rs2_val==0,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x0; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x0, 0xa, 1b, x5, 712,0)
+
+inst_702:
+// rs1_val==3 and rs2_val==46339,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0xb503, 0x40, 3f, x5, 716,0)
+
+inst_703:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x66666665; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x66666665, 0x200, 3f, x5, 720,0)
+
+inst_704:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x33333332, 0x200, 3f, x5, 724,0)
+
+inst_705:
+// rs1_val==3 and rs2_val==2863311529,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0xaaaaaaa9; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0xaaaaaaa9, 0x4, 1b, x5, 728,0)
+
+inst_706:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x55555554, 0x2, 3f, x5, 732,0)
+
+inst_707:
+// rs1_val==3 and rs2_val==2,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x2, 0x400, 1b, x5, 736,0)
+
+inst_708:
+// rs1_val==3 and rs2_val==65535,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0xffff; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0xffff, 0x6, 3f, x5, 740,0)
+
+inst_709:
+// rs1_val==3 and rs2_val==46340,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0xb504, 0x2, 3f, x5, 744,0)
+
+inst_710:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x66666666, 0x8, 1b, x5, 748,0)
+
+inst_711:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x33333333, 0x2, 1b, x5, 752,0)
+
+inst_712:
+// rs1_val==3 and rs2_val==5,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x5, 0x4, 3f, x5, 756,0)
+
+inst_713:
+// rs1_val==3 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0xaaaaaaaa; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0xaaaaaaaa, 0x0, 1b, x5, 760,0)
+
+inst_714:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x55555555, 0x0, 3f, x5, 764,0)
+
+inst_715:
+// rs1_val==3 and rs2_val==3,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x3; op2val:0x3; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x3, 0x3, 0x200, 3f, x5, 768,0)
+
+inst_716:
+// rs1_val==2863311529 and rs2_val==2863311530,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xaaaaaaaa; immval:0x200; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0xaaaaaaaa, 0x200, 3f, x5, 772,0)
+
+inst_717:
+// rs1_val==2863311529 and rs2_val==1431655765,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0xaaaaaaa9, 0x55555555, 0x20, 3f, x5, 776,0)
+
+inst_718:
+// rs1_val==1431655764 and rs2_val==65536,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x10000, 0x4, 1b, x5, 780,0)
+
+inst_719:
+// rs1_val==1431655764 and rs2_val==1,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x1, 0x6, 3f, x5, 784,0)
+
+inst_720:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0xb505, 0x2, 3f, x5, 788,0)
+
+inst_721:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x66666667, 0x4, 1b, x5, 792,0)
+
+inst_722:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x33333334, 0x2, 1b, x5, 796,0)
+
+inst_723:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x6, 0xa, 1b, x5, 800,0)
+
+inst_724:
+// rs1_val==1431655764 and rs2_val==2863311531,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0xaaaaaaab, 0x6, 1b, x5, 804,0)
+
+inst_725:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x55555554, 0x55555556, 0xa, 1b, x5, 808,0)
+
+inst_726:
+// rs2_val == 3221225471,
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x11; op2val:0xbfffffff; immval:0xa; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x11, 0xbfffffff, 0xa, 1b, x5, 812,0)
+
+inst_727:
+// rs2_val == 4294836223, rs1_val == 2147483647
+// opcode: bgeu, op1:x10; op2:x11; op1val:0x7fffffff; op2val:0xfffdffff; immval:0x2; align:0
+TEST_BRANCH_OP(bgeu, x6, x10, x11, 0x7fffffff, 0xfffdffff, 0x2, 1b, x5, 816,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 11*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_1:
+ .fill 205*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/blt-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/blt-01.S
new file mode 100644
index 000000000..886a17eba
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/blt-01.S
@@ -0,0 +1,3010 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the blt instruction of the RISC-V E extension for the blt covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",blt)
+
+RVTEST_SIGBASE( x6,signature_x6_1)
+
+inst_0:
+// rs1 == rs2, rs1==x7, rs2==x7, rs1_val < 0 and rs2_val < 0 and imm_val & 0x03 == 0, rs1_val == -65537, rs2_val == -65, rs1_val < rs2_val and imm_val > 0 and imm_val & 0x03 == 0
+// opcode: blt, op1:x7; op2:x7; op1val:-0x10001; op2val:-0x10001; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x4, x7, x7, -0x10001, -0x10001, 0x80, 3f, x6, 0,0)
+
+inst_1:
+// rs1 != rs2, rs1==x9, rs2==x15, rs2_val == 2147483647, rs1_val == 4, rs1_val > 0 and rs2_val > 0 and imm_val & 0x03 == 0
+// opcode: blt, op1:x9; op2:x15; op1val:0x4; op2val:0x7fffffff; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x4, x9, x15, 0x4, 0x7fffffff, 0x0, 3f, x6, 4,0)
+
+inst_2:
+// rs1==x12, rs2==x3, rs2_val == -1073741825, rs1_val > rs2_val and imm_val > 0 and imm_val & 0x03 == 0, rs1_val > 0 and rs2_val < 0 and imm_val & 0x03 == 0
+// opcode: blt, op1:x12; op2:x3; op1val:0x4; op2val:-0x40000001; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x4, x12, x3, 0x4, -0x40000001, 0x400, 3f, x6, 8,0)
+
+inst_3:
+// rs1==x2, rs2==x5, rs2_val == -536870913,
+// opcode: blt, op1:x2; op2:x5; op1val:0x0; op2val:-0x20000001; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x4, x2, x5, 0x0, -0x20000001, 0x6, 1b, x6, 12,0)
+
+inst_4:
+// rs1==x11, rs2==x0, rs2_val == -268435457, rs1_val == 1048576
+// opcode: blt, op1:x11; op2:x0; op1val:0x100000; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x4, x11, x0, 0x100000, 0x0, 0x200, 3f, x6, 16,0)
+
+inst_5:
+// rs1==x3, rs2==x13, rs2_val == -134217729, rs1_val > rs2_val and imm_val < 0 and imm_val & 0x03 == 0, rs1_val == -9
+// opcode: blt, op1:x3; op2:x13; op1val:-0x9; op2val:-0x8000001; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x4, x3, x13, -0x9, -0x8000001, 0x4, 1b, x6, 20,0)
+
+inst_6:
+// rs1==x5, rs2==x12, rs2_val == -67108865,
+// opcode: blt, op1:x5; op2:x12; op1val:-0x1; op2val:-0x4000001; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x4, x5, x12, -0x1, -0x4000001, 0x2, 1b, x6, 24,0)
+
+inst_7:
+// rs1==x1, rs2==x14, rs2_val == -33554433,
+// opcode: blt, op1:x1; op2:x14; op1val:-0x10001; op2val:-0x2000001; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x4, x1, x14, -0x10001, -0x2000001, 0x6, 1b, x6, 28,0)
+
+inst_8:
+// rs1==x13, rs2==x4, rs2_val == -16777217, rs1_val == 1024
+// opcode: blt, op1:x13; op2:x4; op1val:0x400; op2val:-0x1000001; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x5, x13, x4, 0x400, -0x1000001, 0x6, 3f, x6, 32,0)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_9:
+// rs1==x14, rs2==x8, rs2_val == -8388609, rs1_val == -2049
+// opcode: blt, op1:x14; op2:x8; op1val:-0x801; op2val:-0x800001; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x5, x14, x8, -0x801, -0x800001, 0x8, 3f, x3, 0,0)
+
+inst_10:
+// rs1==x8, rs2==x10, rs2_val == -4194305,
+// opcode: blt, op1:x8; op2:x10; op1val:-0x1; op2val:-0x400001; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x5, x8, x10, -0x1, -0x400001, 0x2, 1b, x3, 4,0)
+
+inst_11:
+// rs1==x0, rs2==x2, rs2_val == -2097153,
+// opcode: blt, op1:x0; op2:x2; op1val:0x0; op2val:-0x200001; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x5, x0, x2, 0x0, -0x200001, 0x2, 3f, x3, 8,0)
+
+inst_12:
+// rs1==x4, rs2==x1, rs2_val == -1048577, rs1_val == 67108864
+// opcode: blt, op1:x4; op2:x1; op1val:0x4000000; op2val:-0x100001; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x5, x4, x1, 0x4000000, -0x100001, 0x2, 1b, x3, 12,0)
+
+inst_13:
+// rs1==x10, rs2==x6, rs2_val == -524289, rs1_val == -8388609
+// opcode: blt, op1:x10; op2:x6; op1val:-0x800001; op2val:-0x80001; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x5, x10, x6, -0x800001, -0x80001, 0x556, 1b, x3, 16,0)
+
+inst_14:
+// rs1==x15, rs2==x11, rs2_val == -262145,
+// opcode: blt, op1:x15; op2:x11; op1val:-0xb503; op2val:-0x40001; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x5, x15, x11, -0xb503, -0x40001, 0x200, 3f, x3, 20,0)
+
+inst_15:
+// rs1==x6, rs2==x9, rs2_val == -131073, rs1_val == -1025
+// opcode: blt, op1:x6; op2:x9; op1val:-0x401; op2val:-0x20001; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x5, x6, x9, -0x401, -0x20001, 0x4, 3f, x3, 24,0)
+
+inst_16:
+// rs2_val == -65537, rs1_val == 2048
+// opcode: blt, op1:x10; op2:x11; op1val:0x800; op2val:-0x10001; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x800, -0x10001, 0x0, 3f, x3, 28,0)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:-0x8001; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, -0x8001, 0x0, 1b, x3, 32,0)
+
+inst_18:
+// rs2_val == -16385, rs1_val == -5
+// opcode: blt, op1:x10; op2:x11; op1val:-0x5; op2val:-0x4001; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x5, -0x4001, 0x40, 3f, x3, 36,0)
+
+inst_19:
+// rs2_val == -8193,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:-0x2001; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, -0x2001, 0x4, 1b, x3, 40,0)
+
+inst_20:
+// rs2_val == -4097,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x40000000; op2val:-0x1001; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x40000000, -0x1001, 0x80, 3f, x3, 44,0)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x801; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, -0x801, 0x6, 3f, x3, 48,0)
+
+inst_22:
+// rs2_val == -1025, rs1_val < rs2_val and imm_val < 0 and imm_val & 0x03 == 0, rs1_val == -1048577
+// opcode: blt, op1:x10; op2:x11; op1val:-0x100001; op2val:-0x401; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x100001, -0x401, 0x8, 1b, x3, 52,0)
+
+inst_23:
+// rs2_val == -513, rs1_val == -67108865
+// opcode: blt, op1:x10; op2:x11; op1val:-0x4000001; op2val:-0x201; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x4000001, -0x201, 0x0, 1b, x3, 56,0)
+
+inst_24:
+// rs2_val == -257, rs1_val == -134217729
+// opcode: blt, op1:x10; op2:x11; op1val:-0x8000001; op2val:-0x101; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x8000001, -0x101, 0x6, 1b, x3, 60,0)
+
+inst_25:
+// rs2_val == -129, rs1_val == 32
+// opcode: blt, op1:x10; op2:x11; op1val:0x20; op2val:-0x81; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x20, -0x81, 0x0, 1b, x3, 64,0)
+
+inst_26:
+// rs2_val == -33, rs1_val == 2
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:-0x21; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, -0x21, 0x20, 3f, x3, 68,0)
+
+inst_27:
+// rs2_val == -17,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x6; op2val:-0x11; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x6, -0x11, 0x100, 3f, x3, 72,0)
+
+inst_28:
+// rs2_val == -9,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x9; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, -0x9, 0x400, 3f, x3, 76,0)
+
+inst_29:
+// rs2_val == -5,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:-0x5; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, -0x5, 0x6, 3f, x3, 80,0)
+
+inst_30:
+// rs2_val == -3, rs1_val == -268435457
+// opcode: blt, op1:x10; op2:x11; op1val:-0x10000001; op2val:-0x3; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x10000001, -0x3, 0x400, 3f, x3, 84,0)
+
+inst_31:
+// rs2_val == -2, rs1_val == -129
+// opcode: blt, op1:x10; op2:x11; op1val:-0x81; op2val:-0x2; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x81, -0x2, 0x400, 1b, x3, 88,0)
+
+inst_32:
+// rs1_val == 2147483647, rs2_val == 8
+// opcode: blt, op1:x10; op2:x11; op1val:0x7fffffff; op2val:0x8; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x7fffffff, 0x8, 0x80, 3f, x3, 92,0)
+
+inst_33:
+// rs1_val == -1073741825, rs1_val < 0 and rs2_val > 0 and imm_val & 0x03 == 0, rs2_val == 134217728
+// opcode: blt, op1:x10; op2:x11; op1val:-0x40000001; op2val:0x8000000; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x40000001, 0x8000000, 0x40, 3f, x3, 96,0)
+
+inst_34:
+// rs1_val == -536870913,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x20000001; op2val:-0x201; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x20000001, -0x201, 0x4, 3f, x3, 100,0)
+
+inst_35:
+// rs1_val == -33554433,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x2000001; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x2000001, -0x55555555, 0x4, 1b, x3, 104,0)
+
+inst_36:
+// rs1_val == -16777217,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x1000001; op2val:-0x800001; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x1000001, -0x800001, 0x556, 1b, x3, 108,0)
+
+inst_37:
+// rs1_val == -4194305, rs2_val == 1048576
+// opcode: blt, op1:x10; op2:x11; op1val:-0x400001; op2val:0x100000; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x400001, 0x100000, 0x6, 3f, x3, 112,0)
+
+inst_38:
+// rs1_val == -2097153,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x200001; op2val:0x8000000; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x200001, 0x8000000, 0x0, 3f, x3, 116,0)
+
+inst_39:
+// rs1_val == -524289,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x80001; op2val:-0x200001; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x80001, -0x200001, 0x2, 3f, x3, 120,0)
+
+inst_40:
+// rs1_val == -262145, rs2_val == 524288
+// opcode: blt, op1:x10; op2:x11; op1val:-0x40001; op2val:0x80000; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x40001, 0x80000, 0x2, 3f, x3, 124,0)
+
+inst_41:
+// rs1_val == -131073, rs2_val == 131072
+// opcode: blt, op1:x10; op2:x11; op1val:-0x20001; op2val:0x20000; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x20001, 0x20000, 0x400, 3f, x3, 128,0)
+
+inst_42:
+// rs1_val == -32769,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x8001; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x8001, -0xb503, 0x4, 1b, x3, 132,0)
+
+inst_43:
+// rs1_val == -16385,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x4001; op2val:-0x40001; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x4001, -0x40001, 0x2, 3f, x3, 136,0)
+
+inst_44:
+// rs1_val == -8193,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x2001; op2val:-0x40000001; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x2001, -0x40000001, 0x20, 3f, x3, 140,0)
+
+inst_45:
+// rs1_val == -4097, rs2_val == 256
+// opcode: blt, op1:x10; op2:x11; op1val:-0x1001; op2val:0x100; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x1001, 0x100, 0x4, 3f, x3, 144,0)
+
+inst_46:
+// rs1_val == -513, rs2_val == 1431655765
+// opcode: blt, op1:x10; op2:x11; op1val:-0x201; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x201, 0x55555555, 0x8, 1b, x3, 148,0)
+
+inst_47:
+// rs1_val == -257,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x101; op2val:-0x801; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x101, -0x801, 0x2, 3f, x3, 152,0)
+
+inst_48:
+// rs1_val == -65, rs2_val == 2
+// opcode: blt, op1:x10; op2:x11; op1val:-0x41; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x41, 0x2, 0x400, 1b, x3, 156,0)
+
+inst_49:
+// rs1_val == -33,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x21; op2val:0x55555554; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x21, 0x55555554, 0x80, 3f, x3, 160,0)
+
+inst_50:
+// rs1_val == -17,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x11; op2val:0x66666667; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x11, 0x66666667, 0x10, 3f, x3, 164,0)
+
+inst_51:
+// rs1_val == -3,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x3; op2val:0x5; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x3, 0x5, 0x100, 3f, x3, 168,0)
+
+inst_52:
+// rs1_val == -2,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x2; op2val:-0x2001; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x2, -0x2001, 0x0, 3f, x3, 172,0)
+
+inst_53:
+// rs2_val == -2147483648,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:-0x80000000; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, -0x80000000, 0x8, 1b, x3, 176,0)
+
+inst_54:
+// rs2_val == 1073741824,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x40000000; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x40000000, 0x2, 3f, x3, 180,0)
+
+inst_55:
+// rs2_val == 536870912,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x20000000; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x20000000, 0x2, 1b, x3, 184,0)
+
+inst_56:
+// rs2_val == 268435456,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x5; op2val:0x10000000; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x5, 0x10000000, 0x6, 3f, x3, 188,0)
+
+inst_57:
+// rs2_val == 67108864,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x200001; op2val:0x4000000; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x200001, 0x4000000, 0x400, 3f, x3, 192,0)
+
+inst_58:
+// rs2_val == 33554432,
+// opcode: blt, op1:x10; op2:x11; op1val:0x9; op2val:0x2000000; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x9, 0x2000000, 0xa, 1b, x3, 196,0)
+
+inst_59:
+// rs2_val == 16777216, rs1_val == 2097152
+// opcode: blt, op1:x10; op2:x11; op1val:0x200000; op2val:0x1000000; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x200000, 0x1000000, 0x100, 3f, x3, 200,0)
+
+inst_60:
+// rs2_val == 8388608,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x3; op2val:0x800000; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x3, 0x800000, 0x100, 3f, x3, 204,0)
+
+inst_61:
+// rs2_val == 4194304,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x400000; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x400000, 0x20, 3f, x3, 208,0)
+
+inst_62:
+// rs2_val == 2097152,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x200000; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x200000, 0xa, 1b, x3, 212,0)
+
+inst_63:
+// rs2_val == 262144,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x40000; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x40000, 0x100, 3f, x3, 216,0)
+
+inst_64:
+// rs2_val == 65536, rs1_val == 8192
+// opcode: blt, op1:x10; op2:x11; op1val:0x2000; op2val:0x10000; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2000, 0x10000, 0x6, 3f, x3, 220,0)
+
+inst_65:
+// rs2_val == 32768,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x10000001; op2val:0x8000; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x10000001, 0x8000, 0x2, 3f, x3, 224,0)
+
+inst_66:
+// rs2_val == 16384,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x4000; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x4000, 0x400, 3f, x3, 228,0)
+
+inst_67:
+// rs2_val == 8192,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x2000; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x2000, 0x10, 3f, x3, 232,0)
+
+inst_68:
+// rs2_val == 4096,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x81; op2val:0x1000; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x81, 0x1000, 0x6, 3f, x3, 236,0)
+
+inst_69:
+// rs2_val == 2048,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x800; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x800, 0x2, 3f, x3, 240,0)
+
+inst_70:
+// rs2_val == 1024,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x8000001; op2val:0x400; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x8000001, 0x400, 0x556, 1b, x3, 244,0)
+
+inst_71:
+// rs2_val == 512,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x200; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x200, 0x80, 3f, x3, 248,0)
+
+inst_72:
+// rs2_val == 128,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x80; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x80, 0x40, 3f, x3, 252,0)
+
+inst_73:
+// rs2_val == 64,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x100001; op2val:0x40; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x100001, 0x40, 0x10, 3f, x3, 256,0)
+
+inst_74:
+// rs2_val == 32,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3fffffff; op2val:0x20; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3fffffff, 0x20, 0x0, 1b, x3, 260,0)
+
+inst_75:
+// rs2_val == 16,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x3; op2val:0x10; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x3, 0x10, 0x100, 3f, x3, 264,0)
+
+inst_76:
+// rs2_val == 4,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x80001; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x80001, 0x4, 0x4, 1b, x3, 268,0)
+
+inst_77:
+// rs2_val == 1,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x200001; op2val:0x1; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x200001, 0x1, 0x4, 1b, x3, 272,0)
+
+inst_78:
+// rs1_val == -2147483648,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x80000000; op2val:-0x2; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x80000000, -0x2, 0x6, 1b, x3, 276,0)
+
+inst_79:
+// rs1_val == 1073741824, rs2_val == -1431655766
+// opcode: blt, op1:x10; op2:x11; op1val:0x40000000; op2val:-0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x40000000, -0x55555556, 0x20, 3f, x3, 280,0)
+
+inst_80:
+// rs1_val == 536870912,
+// opcode: blt, op1:x10; op2:x11; op1val:0x20000000; op2val:0x4000; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x20000000, 0x4000, 0x0, 1b, x3, 284,0)
+
+inst_81:
+// rs1_val == 268435456,
+// opcode: blt, op1:x10; op2:x11; op1val:0x10000000; op2val:-0x41; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x10000000, -0x41, 0xa, 1b, x3, 288,0)
+
+inst_82:
+// rs1_val == 134217728,
+// opcode: blt, op1:x10; op2:x11; op1val:0x8000000; op2val:0x8000; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x8000000, 0x8000, 0x0, 3f, x3, 292,0)
+
+inst_83:
+// rs1_val == 33554432,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2000000; op2val:0x8000000; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2000000, 0x8000000, 0xa, 1b, x3, 296,0)
+
+inst_84:
+// rs1_val == 16777216,
+// opcode: blt, op1:x10; op2:x11; op1val:0x1000000; op2val:0x40000; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x1000000, 0x40000, 0x8, 3f, x3, 300,0)
+
+inst_85:
+// rs1_val == 8388608,
+// opcode: blt, op1:x10; op2:x11; op1val:0x800000; op2val:0x40000; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x800000, 0x40000, 0x8, 1b, x3, 304,0)
+
+inst_86:
+// rs1_val == 4194304,
+// opcode: blt, op1:x10; op2:x11; op1val:0x400000; op2val:-0x5; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x400000, -0x5, 0x556, 1b, x3, 308,0)
+
+inst_87:
+// rs1_val == 524288,
+// opcode: blt, op1:x10; op2:x11; op1val:0x80000; op2val:-0x80000000; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x80000, -0x80000000, 0xa, 1b, x3, 312,0)
+
+inst_88:
+// rs1_val == 262144,
+// opcode: blt, op1:x10; op2:x11; op1val:0x40000; op2val:0x1; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x40000, 0x1, 0xa, 1b, x3, 316,0)
+
+inst_89:
+// rs1_val == 131072,
+// opcode: blt, op1:x10; op2:x11; op1val:0x20000; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x20000, 0x33333332, 0x2, 3f, x3, 320,0)
+
+inst_90:
+// rs1_val == 65536,
+// opcode: blt, op1:x10; op2:x11; op1val:0x10000; op2val:0x2000; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x10000, 0x2000, 0x100, 3f, x3, 324,0)
+
+inst_91:
+// rs1_val == 32768,
+// opcode: blt, op1:x10; op2:x11; op1val:0x8000; op2val:0x4000; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x8000, 0x4000, 0x40, 3f, x3, 328,0)
+
+inst_92:
+// rs1_val == 16384,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4000; op2val:-0x81; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4000, -0x81, 0x4, 3f, x3, 332,0)
+
+inst_93:
+// rs1_val == 4096,
+// opcode: blt, op1:x10; op2:x11; op1val:0x1000; op2val:0x2000000; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x1000, 0x2000000, 0xa, 1b, x3, 336,0)
+
+inst_94:
+// rs1_val == 512,
+// opcode: blt, op1:x10; op2:x11; op1val:0x200; op2val:-0x201; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x200, -0x201, 0x4, 1b, x3, 340,0)
+
+inst_95:
+// rs1_val == 256,
+// opcode: blt, op1:x10; op2:x11; op1val:0x100; op2val:0x6; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x100, 0x6, 0x556, 1b, x3, 344,0)
+
+inst_96:
+// rs1_val == 128,
+// opcode: blt, op1:x10; op2:x11; op1val:0x80; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x80, -0xb503, 0x400, 1b, x3, 348,0)
+
+inst_97:
+// rs1_val == 64,
+// opcode: blt, op1:x10; op2:x11; op1val:0x40; op2val:0x10; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x40, 0x10, 0x20, 3f, x3, 352,0)
+
+inst_98:
+// rs1_val == 16,
+// opcode: blt, op1:x10; op2:x11; op1val:0x10; op2val:-0x4001; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x10, -0x4001, 0x200, 3f, x3, 356,0)
+
+inst_99:
+// rs1_val == 8,
+// opcode: blt, op1:x10; op2:x11; op1val:0x8; op2val:0x40000; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x8, 0x40000, 0x2, 3f, x3, 360,0)
+
+inst_100:
+// rs1_val == 1,
+// opcode: blt, op1:x10; op2:x11; op1val:0x1; op2val:0x2000000; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x1, 0x2000000, 0xa, 1b, x3, 364,0)
+
+inst_101:
+// rs1_val==46341 and rs2_val==46341, rs1_val == rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0xb505, 0x0, 1b, x3, 368,0)
+
+inst_102:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, -0xb503, 0x200, 3f, x3, 372,0)
+
+inst_103:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x66666667, 0x8, 3f, x3, 376,0)
+
+inst_104:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x33333334, 0x200, 3f, x3, 380,0)
+
+inst_105:
+// rs1_val==46341 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x6, 0x6, 1b, x3, 384,0)
+
+inst_106:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, -0x55555555, 0x80, 3f, x3, 388,0)
+
+inst_107:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x55555556, 0x0, 3f, x3, 392,0)
+
+inst_108:
+// rs1_val==46341 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x4; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x4, 0xa, 1b, x3, 396,0)
+
+inst_109:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0xb503, 0x0, 1b, x3, 400,0)
+
+inst_110:
+// rs1_val==46341 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x0, 0x4, 3f, x3, 404,0)
+
+inst_111:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x66666665, 0x20, 3f, x3, 408,0)
+
+inst_112:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x33333332, 0x400, 1b, x3, 412,0)
+
+inst_113:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x55555554, 0x40, 3f, x3, 416,0)
+
+inst_114:
+// rs1_val==46341 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x2, 0x8, 3f, x3, 420,0)
+
+inst_115:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0xb504, 0x80, 3f, x3, 424,0)
+
+inst_116:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, -0xb504, 0x6, 1b, x3, 428,0)
+
+inst_117:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x66666666, 0x40, 3f, x3, 432,0)
+
+inst_118:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x33333333, 0x8, 1b, x3, 436,0)
+
+inst_119:
+// rs1_val==46341 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x5, 0x4, 1b, x3, 440,0)
+
+inst_120:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, -0x55555556, 0x2, 3f, x3, 444,0)
+
+inst_121:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x55555555, 0x6, 3f, x3, 448,0)
+
+inst_122:
+// rs1_val==46341 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb505; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb505, 0x3, 0x400, 1b, x3, 452,0)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0xb505, 0x20, 3f, x3, 456,0)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==-46339, rs1_val == rs2_val and imm_val > 0 and imm_val & 0x03 == 0
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, -0xb503, 0x4, 3f, x3, 460,0)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x66666667, 0x556, 1b, x3, 464,0)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x33333334, 0x8, 3f, x3, 468,0)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x6; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x6, 0x556, 1b, x3, 472,0)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, -0x55555555, 0x2, 1b, x3, 476,0)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x55555556, 0x4, 1b, x3, 480,0)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x4; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x4, 0x20, 3f, x3, 484,0)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0xb503, 0x80, 3f, x3, 488,0)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x0, 0x8, 1b, x3, 492,0)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x66666665, 0x20, 3f, x3, 496,0)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x33333332, 0x0, 3f, x3, 500,0)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x55555554, 0x200, 3f, x3, 504,0)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x2; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x2, 0xa, 1b, x3, 508,0)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0xb504, 0x2, 3f, x3, 512,0)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, -0xb504, 0x8, 1b, x3, 516,0)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x66666666, 0x400, 1b, x3, 520,0)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x33333333, 0xa, 1b, x3, 524,0)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x5, 0x0, 1b, x3, 528,0)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, -0x55555556, 0x100, 3f, x3, 532,0)
+
+inst_143:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x55555555, 0x4, 1b, x3, 536,0)
+
+inst_144:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb503; op2val:0x3; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb503, 0x3, 0xa, 1b, x3, 540,0)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0xb505, 0x0, 3f, x3, 544,0)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, -0xb503, 0x8, 3f, x3, 548,0)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x66666667, 0x556, 1b, x3, 552,0)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x33333334, 0x0, 3f, x3, 556,0)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x6, 0xa, 1b, x3, 560,0)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, -0x55555555, 0x40, 3f, x3, 564,0)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x55555556, 0x0, 1b, x3, 568,0)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x4, 0x0, 3f, x3, 572,0)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0xb503, 0x4, 3f, x3, 576,0)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x0, 0x400, 3f, x3, 580,0)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x66666665, 0x4, 1b, x3, 584,0)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x33333332, 0x2, 1b, x3, 588,0)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x55555554, 0x40, 3f, x3, 592,0)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x2, 0x10, 3f, x3, 596,0)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0xb504, 0x400, 3f, x3, 600,0)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, -0xb504, 0x6, 1b, x3, 604,0)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x66666666, 0x100, 3f, x3, 608,0)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x33333333, 0x4, 3f, x3, 612,0)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x5, 0x6, 3f, x3, 616,0)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, -0x55555556, 0x80, 3f, x3, 620,0)
+
+inst_165:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x55555555, 0x2, 1b, x3, 624,0)
+
+inst_166:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666667; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666667, 0x3, 0x0, 3f, x3, 628,0)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0xb505, 0x0, 1b, x3, 632,0)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, -0xb503, 0x4, 3f, x3, 636,0)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x66666667, 0x6, 3f, x3, 640,0)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x33333334, 0x20, 3f, x3, 644,0)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x6, 0x0, 1b, x3, 648,0)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, -0x55555555, 0x400, 3f, x3, 652,0)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x55555556, 0x6, 3f, x3, 656,0)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x4, 0x8, 1b, x3, 660,0)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0xb503, 0x2, 3f, x3, 664,0)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x0, 0x6, 3f, x3, 668,0)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x66666665, 0x0, 1b, x3, 672,0)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x33333332, 0x2, 1b, x3, 676,0)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x55555554, 0x6, 3f, x3, 680,0)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x2; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x2, 0x200, 3f, x3, 684,0)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0xb504, 0x4, 3f, x3, 688,0)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, -0xb504, 0x20, 3f, x3, 692,0)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x66666666, 0x2, 3f, x3, 696,0)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x33333333, 0x4, 1b, x3, 700,0)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x5, 0x6, 1b, x3, 704,0)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, -0x55555556, 0x4, 1b, x3, 708,0)
+
+inst_187:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x55555555, 0x80, 3f, x3, 712,0)
+
+inst_188:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333334; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333334, 0x3, 0x40, 3f, x3, 716,0)
+
+inst_189:
+// rs1_val==6 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0xb505; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0xb505, 0x556, 1b, x3, 720,0)
+
+inst_190:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:-0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, -0xb503, 0x80, 3f, x3, 724,0)
+
+inst_191:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x66666667, 0x2, 3f, x3, 728,0)
+
+inst_192:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x33333334, 0x400, 3f, x3, 732,0)
+
+inst_193:
+// rs1_val==6 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x6, 0x200, 3f, x3, 736,0)
+
+inst_194:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, -0x55555555, 0x0, 1b, x3, 740,0)
+
+inst_195:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x55555556, 0x40, 3f, x3, 744,0)
+
+inst_196:
+// rs1_val==6 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x4, 0x4, 3f, x3, 748,0)
+
+inst_197:
+// rs1_val==6 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0xb503, 0x2, 3f, x3, 752,0)
+
+inst_198:
+// rs1_val==6 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x0, 0x6, 1b, x3, 756,0)
+
+inst_199:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x66666665; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x66666665, 0xa, 1b, x3, 760,0)
+
+inst_200:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x33333332, 0x200, 3f, x3, 764,0)
+
+inst_201:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x55555554; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x55555554, 0x20, 3f, x3, 768,0)
+
+inst_202:
+// rs1_val==6 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x2, 0x0, 3f, x3, 772,0)
+
+inst_203:
+// rs1_val==6 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0xb504, 0x40, 3f, x3, 776,0)
+
+inst_204:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:-0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, -0xb504, 0x200, 3f, x3, 780,0)
+
+inst_205:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x66666666; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x66666666, 0x40, 3f, x3, 784,0)
+
+inst_206:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x33333333, 0xa, 1b, x3, 788,0)
+
+inst_207:
+// rs1_val==6 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x5, 0x200, 3f, x3, 792,0)
+
+inst_208:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, -0x55555556, 0x0, 3f, x3, 796,0)
+
+inst_209:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x55555555, 0x2, 1b, x3, 800,0)
+
+inst_210:
+// rs1_val==6 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x6; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x6, 0x3, 0x40, 3f, x3, 804,0)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0xb505, 0x2, 3f, x3, 808,0)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, -0xb503, 0x2, 1b, x3, 812,0)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x66666667, 0x6, 1b, x3, 816,0)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x33333334, 0x556, 1b, x3, 820,0)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x6, 0x10, 3f, x3, 824,0)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, -0x55555555, 0x20, 3f, x3, 828,0)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x55555556, 0x40, 3f, x3, 832,0)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x4, 0x8, 1b, x3, 836,0)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0xb503, 0x0, 1b, x3, 840,0)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x0, 0x0, 1b, x3, 844,0)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x66666665, 0x20, 3f, x3, 848,0)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x33333332, 0x556, 1b, x3, 852,0)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x55555554, 0x40, 3f, x3, 856,0)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x2, 0x400, 1b, x3, 860,0)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0xb504, 0x556, 1b, x3, 864,0)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, -0xb504, 0x10, 3f, x3, 868,0)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x66666666, 0x6, 3f, x3, 872,0)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x33333333, 0x400, 3f, x3, 876,0)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x5, 0x80, 3f, x3, 880,0)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, -0x55555556, 0x4, 3f, x3, 884,0)
+
+inst_231:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x55555555, 0x20, 3f, x3, 888,0)
+
+inst_232:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555555, 0x3, 0x4, 1b, x3, 892,0)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0xb505, 0x80, 3f, x3, 896,0)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, -0xb503, 0x0, 3f, x3, 900,0)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x66666667, 0x10, 3f, x3, 904,0)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x33333334, 0x40, 3f, x3, 908,0)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x6; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x6, 0x556, 1b, x3, 912,0)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, -0x55555555, 0x10, 3f, x3, 916,0)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x55555556, 0x0, 1b, x3, 920,0)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x4, 0x6, 3f, x3, 924,0)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0xb503, 0x20, 3f, x3, 928,0)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x0, 0x556, 1b, x3, 932,0)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x66666665, 0x2, 3f, x3, 936,0)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x33333332, 0x0, 1b, x3, 940,0)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x55555554, 0x8, 3f, x3, 944,0)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x2; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x2, 0xa, 1b, x3, 948,0)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0xb504, 0x200, 3f, x3, 952,0)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, -0xb504, 0x40, 3f, x3, 956,0)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x66666666, 0x4, 3f, x3, 960,0)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x33333333, 0x4, 3f, x3, 964,0)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x5; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x5, 0x556, 1b, x3, 968,0)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, -0x55555556, 0x2, 3f, x3, 972,0)
+
+inst_253:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x55555555, 0x100, 3f, x3, 976,0)
+
+inst_254:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555556; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555556, 0x3, 0x2, 3f, x3, 980,0)
+
+inst_255:
+// rs1_val==4 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0xb505, 0x8, 1b, x3, 984,0)
+
+inst_256:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:-0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, -0xb503, 0x0, 1b, x3, 988,0)
+
+inst_257:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x66666667; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x66666667, 0x20, 3f, x3, 992,0)
+
+inst_258:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x33333334, 0x6, 1b, x3, 996,0)
+
+inst_259:
+// rs1_val==4 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x6, 0x2, 1b, x3, 1000,0)
+
+inst_260:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, -0x55555555, 0x100, 3f, x3, 1004,0)
+
+inst_261:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x55555556, 0x4, 3f, x3, 1008,0)
+
+inst_262:
+// rs1_val==4 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x4, 0x400, 1b, x3, 1012,0)
+
+inst_263:
+// rs1_val==4 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0xb503, 0x0, 3f, x3, 1016,0)
+
+inst_264:
+// rs1_val==4 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x0, 0x2, 1b, x3, 1020,0)
+
+inst_265:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x66666665, 0x4, 3f, x3, 1024,0)
+
+inst_266:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x33333332; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x33333332, 0x100, 3f, x3, 1028,0)
+
+inst_267:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x55555554, 0x2, 1b, x3, 1032,0)
+
+inst_268:
+// rs1_val==4 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x2, 0x6, 1b, x3, 1036,0)
+
+inst_269:
+// rs1_val==4 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0xb504, 0x20, 3f, x3, 1040,0)
+
+inst_270:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, -0xb504, 0x400, 1b, x3, 1044,0)
+
+inst_271:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x66666666; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x66666666, 0x10, 3f, x3, 1048,0)
+
+inst_272:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x33333333, 0x2, 3f, x3, 1052,0)
+
+inst_273:
+// rs1_val==4 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x5, 0x40, 3f, x3, 1056,0)
+
+inst_274:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, -0x55555556, 0x2, 3f, x3, 1060,0)
+
+inst_275:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x55555555, 0x8, 1b, x3, 1064,0)
+
+inst_276:
+// rs1_val==4 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x4; op2val:0x3; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x4, 0x3, 0x556, 1b, x3, 1068,0)
+
+inst_277:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0xb505, 0x2, 3f, x3, 1072,0)
+
+inst_278:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, -0xb503, 0x6, 3f, x3, 1076,0)
+
+inst_279:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x66666667, 0x400, 1b, x3, 1080,0)
+
+inst_280:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x33333334, 0x400, 3f, x3, 1084,0)
+
+inst_281:
+// rs1_val==46339 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x6; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x6, 0x100, 3f, x3, 1088,0)
+
+inst_282:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, -0x55555555, 0x20, 3f, x3, 1092,0)
+
+inst_283:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x55555556, 0x200, 3f, x3, 1096,0)
+
+inst_284:
+// rs1_val==46339 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x4; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x4, 0x100, 3f, x3, 1100,0)
+
+inst_285:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0xb503, 0x400, 3f, x3, 1104,0)
+
+inst_286:
+// rs1_val==46339 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x0, 0x200, 3f, x3, 1108,0)
+
+inst_287:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x66666665, 0x4, 3f, x3, 1112,0)
+
+inst_288:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x33333332, 0x4, 1b, x3, 1116,0)
+
+inst_289:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x55555554, 0x40, 3f, x3, 1120,0)
+
+inst_290:
+// rs1_val==46339 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x2, 0x80, 3f, x3, 1124,0)
+
+inst_291:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0xb504, 0x8, 3f, x3, 1128,0)
+
+inst_292:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, -0xb504, 0x10, 3f, x3, 1132,0)
+
+inst_293:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x66666666, 0x400, 3f, x3, 1136,0)
+
+inst_294:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x33333333, 0x200, 3f, x3, 1140,0)
+
+inst_295:
+// rs1_val==46339 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x5, 0x200, 3f, x3, 1144,0)
+
+inst_296:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, -0x55555556, 0x2, 1b, x3, 1148,0)
+
+inst_297:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x55555555, 0x400, 1b, x3, 1152,0)
+
+inst_298:
+// rs1_val==46339 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb503; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb503, 0x3, 0x2, 3f, x3, 1156,0)
+
+inst_299:
+// rs1_val==0 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0xb505, 0x0, 3f, x3, 1160,0)
+
+inst_300:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, -0xb503, 0x4, 1b, x3, 1164,0)
+
+inst_301:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x66666667, 0x6, 1b, x3, 1168,0)
+
+inst_302:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x33333334; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x33333334, 0x80, 3f, x3, 1172,0)
+
+inst_303:
+// rs1_val==0 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x6, 0x0, 1b, x3, 1176,0)
+
+inst_304:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, -0x55555555, 0x0, 1b, x3, 1180,0)
+
+inst_305:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x55555556, 0x8, 1b, x3, 1184,0)
+
+inst_306:
+// rs1_val==0 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x4; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x4, 0x80, 3f, x3, 1188,0)
+
+inst_307:
+// rs1_val==0 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0xb503, 0x8, 3f, x3, 1192,0)
+
+inst_308:
+// rs1_val==0 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x0, 0x4, 1b, x3, 1196,0)
+
+inst_309:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x66666665; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x66666665, 0x10, 3f, x3, 1200,0)
+
+inst_310:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x33333332, 0x0, 3f, x3, 1204,0)
+
+inst_311:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x55555554, 0x40, 3f, x3, 1208,0)
+
+inst_312:
+// rs1_val==0 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x2; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x2, 0x20, 3f, x3, 1212,0)
+
+inst_313:
+// rs1_val==0 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0xb504, 0x100, 3f, x3, 1216,0)
+
+inst_314:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:-0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, -0xb504, 0x556, 1b, x3, 1220,0)
+
+inst_315:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x66666666, 0x8, 1b, x3, 1224,0)
+
+inst_316:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x33333333, 0x4, 3f, x3, 1228,0)
+
+inst_317:
+// rs1_val==0 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x5, 0x20, 3f, x3, 1232,0)
+
+inst_318:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, -0x55555556, 0x6, 3f, x3, 1236,0)
+
+inst_319:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x55555555, 0x4, 1b, x3, 1240,0)
+
+inst_320:
+// rs1_val==0 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x0; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x0, 0x3, 0x400, 3f, x3, 1244,0)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0xb505, 0x100, 3f, x3, 1248,0)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, -0xb503, 0x400, 1b, x3, 1252,0)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x66666667, 0x2, 3f, x3, 1256,0)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x33333334, 0x400, 3f, x3, 1260,0)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x6, 0x10, 3f, x3, 1264,0)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, -0x55555555, 0x4, 1b, x3, 1268,0)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x55555556, 0xa, 1b, x3, 1272,0)
+
+inst_328:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x4, 0x4, 3f, x3, 1276,0)
+
+inst_329:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0xb503, 0x400, 1b, x3, 1280,0)
+
+inst_330:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x0, 0x2, 3f, x3, 1284,0)
+
+inst_331:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x66666665, 0x40, 3f, x3, 1288,0)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x0, 0x0, 3f, x3, 1292,0)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x66666665, 0x4, 1b, x3, 1296,0)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x33333332, 0x100, 3f, x3, 1300,0)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x55555554, 0x400, 3f, x3, 1304,0)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x2, 0x10, 3f, x3, 1308,0)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0xb504, 0x400, 1b, x3, 1312,0)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, -0xb504, 0x80, 3f, x3, 1316,0)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x66666666, 0x4, 3f, x3, 1320,0)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x33333333, 0xa, 1b, x3, 1324,0)
+
+inst_341:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x5, 0x6, 1b, x3, 1328,0)
+
+inst_342:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, -0x55555556, 0x200, 3f, x3, 1332,0)
+
+inst_343:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x55555555, 0x2, 3f, x3, 1336,0)
+
+inst_344:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x3, 0x400, 3f, x3, 1340,0)
+
+inst_345:
+// rs1_val==5 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0xb505, 0x4, 1b, x3, 1344,0)
+
+inst_346:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:-0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, -0xb503, 0x2, 1b, x3, 1348,0)
+
+inst_347:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x66666667, 0x4, 3f, x3, 1352,0)
+
+inst_348:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x33333334, 0x4, 1b, x3, 1356,0)
+
+inst_349:
+// rs1_val==5 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x6, 0x2, 1b, x3, 1360,0)
+
+inst_350:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, -0x55555555, 0x400, 3f, x3, 1364,0)
+
+inst_351:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x55555556, 0x6, 1b, x3, 1368,0)
+
+inst_352:
+// rs1_val==5 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x4, 0x6, 3f, x3, 1372,0)
+
+inst_353:
+// rs1_val==5 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0xb503, 0x8, 3f, x3, 1376,0)
+
+inst_354:
+// rs1_val==5 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x0, 0x400, 3f, x3, 1380,0)
+
+inst_355:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x66666665, 0x400, 3f, x3, 1384,0)
+
+inst_356:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x33333332, 0x0, 3f, x3, 1388,0)
+
+inst_357:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x55555554, 0x2, 1b, x3, 1392,0)
+
+inst_358:
+// rs1_val==5 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x2; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x2, 0x20, 3f, x3, 1396,0)
+
+inst_359:
+// rs1_val==5 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0xb504, 0x40, 3f, x3, 1400,0)
+
+inst_360:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:-0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, -0xb504, 0x4, 1b, x3, 1404,0)
+
+inst_361:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x66666666, 0x0, 3f, x3, 1408,0)
+
+inst_362:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x33333333; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x33333333, 0x556, 1b, x3, 1412,0)
+
+inst_363:
+// rs1_val==5 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x5, 0x200, 3f, x3, 1416,0)
+
+inst_364:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, -0x55555556, 0x400, 3f, x3, 1420,0)
+
+inst_365:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x55555555, 0x400, 1b, x3, 1424,0)
+
+inst_366:
+// rs1_val==5 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x5; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x5, 0x3, 0x4, 3f, x3, 1428,0)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==46341, rs1_val == -1431655766
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0xb505, 0x0, 1b, x3, 1432,0)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, -0xb503, 0x8, 1b, x3, 1436,0)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x66666667, 0x6, 1b, x3, 1440,0)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x33333334, 0xa, 1b, x3, 1444,0)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x6, 0x4, 3f, x3, 1448,0)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, -0x55555555, 0x200, 3f, x3, 1452,0)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x55555556, 0x80, 3f, x3, 1456,0)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x4, 0x6, 1b, x3, 1460,0)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0xb503, 0x0, 1b, x3, 1464,0)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x0, 0xa, 1b, x3, 1468,0)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x66666665, 0x556, 1b, x3, 1472,0)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x33333332, 0x20, 3f, x3, 1476,0)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x55555554, 0x8, 1b, x3, 1480,0)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x2, 0x6, 3f, x3, 1484,0)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0xb504, 0x8, 1b, x3, 1488,0)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, -0xb504, 0x556, 1b, x3, 1492,0)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x66666666, 0x556, 1b, x3, 1496,0)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x33333333, 0x20, 3f, x3, 1500,0)
+
+inst_385:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x5, 0x0, 3f, x3, 1504,0)
+
+inst_386:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, -0x55555556, 0x6, 3f, x3, 1508,0)
+
+inst_387:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x55555555, 0x2, 1b, x3, 1512,0)
+
+inst_388:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0x55555556, 0x3, 0xa, 1b, x3, 1516,0)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==46341, rs1_val == 1431655765
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0xb505, 0x4, 3f, x3, 1520,0)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, -0xb503, 0x100, 3f, x3, 1524,0)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x66666667, 0x40, 3f, x3, 1528,0)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x33333334, 0x6, 3f, x3, 1532,0)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x6, 0x4, 1b, x3, 1536,0)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, -0x55555555, 0x4, 1b, x3, 1540,0)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x55555556, 0x8, 1b, x3, 1544,0)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x4, 0x10, 3f, x3, 1548,0)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0xb503, 0x400, 1b, x3, 1552,0)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x0, 0x556, 1b, x3, 1556,0)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x66666665, 0x80, 3f, x3, 1560,0)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x33333332, 0x10, 3f, x3, 1564,0)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x55555554, 0x200, 3f, x3, 1568,0)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x2, 0x0, 3f, x3, 1572,0)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0xb504, 0x10, 3f, x3, 1576,0)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, -0xb504, 0x8, 3f, x3, 1580,0)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x66666666, 0x200, 3f, x3, 1584,0)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x33333333, 0x400, 3f, x3, 1588,0)
+
+inst_407:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x5, 0x8, 1b, x3, 1592,0)
+
+inst_408:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, -0x55555556, 0x200, 3f, x3, 1596,0)
+
+inst_409:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x55555555, 0x4, 3f, x3, 1600,0)
+
+inst_410:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555555; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555555, 0x3, 0x400, 3f, x3, 1604,0)
+
+inst_411:
+// rs1_val==3 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0xb505; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0xb505, 0x6, 3f, x3, 1608,0)
+
+inst_412:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:-0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, -0xb503, 0xa, 1b, x3, 1612,0)
+
+inst_413:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x66666667; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x66666667, 0x20, 3f, x3, 1616,0)
+
+inst_414:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x33333334, 0x8, 1b, x3, 1620,0)
+
+inst_415:
+// rs1_val==3 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x6; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x6, 0x100, 3f, x3, 1624,0)
+
+inst_416:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, -0x55555555, 0x400, 1b, x3, 1628,0)
+
+inst_417:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x55555556, 0x10, 3f, x3, 1632,0)
+
+inst_418:
+// rs1_val==3 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x4, 0x8, 3f, x3, 1636,0)
+
+inst_419:
+// rs1_val==3 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0xb503, 0x4, 3f, x3, 1640,0)
+
+inst_420:
+// rs1_val==3 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x0, 0x2, 1b, x3, 1644,0)
+
+inst_421:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x66666665, 0x400, 1b, x3, 1648,0)
+
+inst_422:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x33333332, 0x200, 3f, x3, 1652,0)
+
+inst_423:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x55555554, 0x0, 3f, x3, 1656,0)
+
+inst_424:
+// rs1_val==3 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x2; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x2, 0x200, 3f, x3, 1660,0)
+
+inst_425:
+// rs1_val==3 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0xb504, 0x556, 1b, x3, 1664,0)
+
+inst_426:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:-0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, -0xb504, 0x40, 3f, x3, 1668,0)
+
+inst_427:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x66666666, 0x4, 1b, x3, 1672,0)
+
+inst_428:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x33333333, 0x0, 1b, x3, 1676,0)
+
+inst_429:
+// rs1_val==3 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x5, 0x4, 3f, x3, 1680,0)
+
+inst_430:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, -0x55555556, 0xa, 1b, x3, 1684,0)
+
+inst_431:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x55555555, 0x556, 1b, x3, 1688,0)
+
+inst_432:
+// rs1_val==3 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x3; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x3, 0x3, 0x6, 3f, x3, 1692,0)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x33333332, 0x0, 1b, x3, 1696,0)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x55555554, 0x8, 3f, x3, 1700,0)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x2, 0x8, 1b, x3, 1704,0)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0xb504, 0x20, 3f, x3, 1708,0)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, -0xb504, 0x6, 1b, x3, 1712,0)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x66666666, 0x400, 1b, x3, 1716,0)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x33333333, 0x8, 1b, x3, 1720,0)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x5, 0x8, 1b, x3, 1724,0)
+
+inst_441:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, -0x55555556, 0x20, 3f, x3, 1728,0)
+
+inst_442:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x55555555, 0x6, 1b, x3, 1732,0)
+
+inst_443:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666665; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666665, 0x3, 0x0, 3f, x3, 1736,0)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0xb505, 0x8, 1b, x3, 1740,0)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, -0xb503, 0x20, 3f, x3, 1744,0)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x66666667, 0x400, 1b, x3, 1748,0)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x33333334, 0x0, 1b, x3, 1752,0)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x6, 0xa, 1b, x3, 1756,0)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, -0x55555555, 0x80, 3f, x3, 1760,0)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x55555556, 0x100, 3f, x3, 1764,0)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x4, 0x4, 1b, x3, 1768,0)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0xb503, 0x0, 1b, x3, 1772,0)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x0, 0x8, 3f, x3, 1776,0)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x66666665, 0x400, 3f, x3, 1780,0)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x33333332, 0x8, 3f, x3, 1784,0)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x55555554, 0x8, 3f, x3, 1788,0)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x2, 0x4, 1b, x3, 1792,0)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0xb504, 0x2, 3f, x3, 1796,0)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, -0xb504, 0x10, 3f, x3, 1800,0)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x66666666, 0x200, 3f, x3, 1804,0)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x33333333, 0x6, 3f, x3, 1808,0)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x5, 0x400, 1b, x3, 1812,0)
+
+inst_463:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, -0x55555556, 0xa, 1b, x3, 1816,0)
+
+inst_464:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x55555555, 0x6, 3f, x3, 1820,0)
+
+inst_465:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333332; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333332, 0x3, 0x6, 1b, x3, 1824,0)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0xb505, 0x40, 3f, x3, 1828,0)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, -0xb503, 0x40, 3f, x3, 1832,0)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x66666667, 0x200, 3f, x3, 1836,0)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x33333334, 0x2, 1b, x3, 1840,0)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x6; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x6, 0x400, 1b, x3, 1844,0)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, -0x55555555, 0x400, 1b, x3, 1848,0)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x55555556, 0x40, 3f, x3, 1852,0)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x4, 0x0, 3f, x3, 1856,0)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0xb503, 0x0, 1b, x3, 1860,0)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x0; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x0, 0x10, 3f, x3, 1864,0)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x66666665, 0x20, 3f, x3, 1868,0)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x33333332, 0x40, 3f, x3, 1872,0)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x55555554, 0x400, 1b, x3, 1876,0)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x2; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x2, 0x200, 3f, x3, 1880,0)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0xb504, 0x2, 1b, x3, 1884,0)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, -0xb504, 0x0, 3f, x3, 1888,0)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x66666666, 0x4, 1b, x3, 1892,0)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x33333333, 0x8, 3f, x3, 1896,0)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x5; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x5, 0x100, 3f, x3, 1900,0)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, -0x55555556, 0x0, 1b, x3, 1904,0)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x55555555, 0x2, 1b, x3, 1908,0)
+
+inst_487:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x55555554; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x55555554, 0x3, 0x20, 3f, x3, 1912,0)
+
+inst_488:
+// rs1_val==2 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0xb505, 0x2, 3f, x3, 1916,0)
+
+inst_489:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:-0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, -0xb503, 0x2, 3f, x3, 1920,0)
+
+inst_490:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x66666667, 0x4, 1b, x3, 1924,0)
+
+inst_491:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x33333334; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x33333334, 0x10, 3f, x3, 1928,0)
+
+inst_492:
+// rs1_val==2 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x6, 0xa, 1b, x3, 1932,0)
+
+inst_493:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, -0x55555555, 0x4, 3f, x3, 1936,0)
+
+inst_494:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x55555556, 0x2, 1b, x3, 1940,0)
+
+inst_495:
+// rs1_val==2 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x4, 0x8, 1b, x3, 1944,0)
+
+inst_496:
+// rs1_val==2 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0xb503, 0x4, 1b, x3, 1948,0)
+
+inst_497:
+// rs1_val==2 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x0, 0x6, 1b, x3, 1952,0)
+
+inst_498:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x66666665; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x66666665, 0x40, 3f, x3, 1956,0)
+
+inst_499:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x33333332, 0x400, 3f, x3, 1960,0)
+
+inst_500:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x55555554, 0x40, 3f, x3, 1964,0)
+
+inst_501:
+// rs1_val==2 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x2, 0x2, 3f, x3, 1968,0)
+
+inst_502:
+// rs1_val==2 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0xb504, 0x4, 1b, x3, 1972,0)
+
+inst_503:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:-0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, -0xb504, 0x8, 3f, x3, 1976,0)
+
+inst_504:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x66666666; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x66666666, 0x200, 3f, x3, 1980,0)
+
+inst_505:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x33333333, 0x0, 3f, x3, 1984,0)
+
+inst_506:
+// rs1_val==2 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x5, 0x8, 1b, x3, 1988,0)
+
+inst_507:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, -0x55555556, 0x40, 3f, x3, 1992,0)
+
+inst_508:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x55555555, 0x2, 3f, x3, 1996,0)
+
+inst_509:
+// rs1_val==2 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x2; op2val:0x3; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x2, 0x3, 0x100, 3f, x3, 2000,0)
+
+inst_510:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0xb505, 0x4, 3f, x3, 2004,0)
+
+inst_511:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, -0xb503, 0x100, 3f, x3, 2008,0)
+
+inst_512:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x66666667, 0x8, 1b, x3, 2012,0)
+
+inst_513:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x33333334, 0x6, 1b, x3, 2016,0)
+
+inst_514:
+// rs1_val==46340 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x6, 0x2, 1b, x3, 2020,0)
+
+inst_515:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, -0x55555555, 0x6, 3f, x3, 2024,0)
+
+inst_516:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x55555556, 0x8, 1b, x3, 2028,0)
+
+inst_517:
+// rs1_val==46340 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x4, 0x6, 1b, x3, 2032,0)
+
+inst_518:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0xb503, 0x6, 1b, x3, 2036,0)
+
+inst_519:
+// rs1_val==46340 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x0; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x0, 0x40, 3f, x3, 2040,0)
+
+inst_520:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x66666665, 0x4, 3f, x3, 2044,0)
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_521:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x33333332, 0xa, 1b, x3, 0,0)
+
+inst_522:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x55555554, 0x556, 1b, x3, 4,0)
+
+inst_523:
+// rs1_val==46340 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x2, 0x8, 1b, x3, 8,0)
+
+inst_524:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0xb504; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0xb504, 0xa, 1b, x3, 12,0)
+
+inst_525:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, -0xb504, 0x0, 1b, x3, 16,0)
+
+inst_526:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x66666666, 0x6, 1b, x3, 20,0)
+
+inst_527:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x33333333, 0xa, 1b, x3, 24,0)
+
+inst_528:
+// rs1_val==46340 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x5; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x5, 0x80, 3f, x3, 28,0)
+
+inst_529:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, -0x55555556, 0x80, 3f, x3, 32,0)
+
+inst_530:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x55555555, 0x6, 3f, x3, 36,0)
+
+inst_531:
+// rs1_val==46340 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0xb504; op2val:0x3; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0xb504, 0x3, 0x80, 3f, x3, 40,0)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0xb505, 0x0, 1b, x3, 44,0)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, -0xb503, 0x10, 3f, x3, 48,0)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x66666667, 0x8, 3f, x3, 52,0)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x33333334, 0xa, 1b, x3, 56,0)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x6; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x6, 0xa, 1b, x3, 60,0)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, -0x55555555, 0x0, 3f, x3, 64,0)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x55555556, 0x400, 3f, x3, 68,0)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x4; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x4, 0x80, 3f, x3, 72,0)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0xb503, 0x8, 3f, x3, 76,0)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x0, 0x0, 3f, x3, 80,0)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x66666665, 0x20, 3f, x3, 84,0)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x33333332, 0x400, 1b, x3, 88,0)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x55555554, 0x2, 3f, x3, 92,0)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x2, 0x100, 3f, x3, 96,0)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0xb504, 0x2, 1b, x3, 100,0)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, -0xb504, 0x200, 3f, x3, 104,0)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x66666666, 0x4, 3f, x3, 108,0)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x33333333, 0x556, 1b, x3, 112,0)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x5, 0x40, 3f, x3, 116,0)
+
+inst_551:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, -0x55555556, 0x0, 1b, x3, 120,0)
+
+inst_552:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x55555555, 0x10, 3f, x3, 124,0)
+
+inst_553:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:-0xb504; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, -0xb504, 0x3, 0x8, 1b, x3, 128,0)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0xb505, 0x20, 3f, x3, 132,0)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, -0xb503, 0xa, 1b, x3, 136,0)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x66666667, 0x400, 1b, x3, 140,0)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x33333334, 0x200, 3f, x3, 144,0)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x6, 0x0, 1b, x3, 148,0)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555; immval:0x40; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, -0x55555555, 0x40, 3f, x3, 152,0)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x55555556, 0x4, 1b, x3, 156,0)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x4, 0x400, 3f, x3, 160,0)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0xb503, 0x80, 3f, x3, 164,0)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x0; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x0, 0x20, 3f, x3, 168,0)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x66666665, 0x4, 1b, x3, 172,0)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x33333332, 0x10, 3f, x3, 176,0)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x55555554, 0x4, 1b, x3, 180,0)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x2, 0x2, 3f, x3, 184,0)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0xb504, 0x400, 1b, x3, 188,0)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, -0xb504, 0x400, 1b, x3, 192,0)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x66666666, 0x6, 3f, x3, 196,0)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x33333333, 0x8, 3f, x3, 200,0)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x5; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x5, 0x556, 1b, x3, 204,0)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, -0x55555556, 0x8, 1b, x3, 208,0)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x55555555, 0x0, 1b, x3, 212,0)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: blt, op1:x10; op2:x11; op1val:0x66666666; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x66666666, 0x3, 0x8, 1b, x3, 216,0)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0xb505, 0x10, 3f, x3, 220,0)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, -0xb503, 0x80, 3f, x3, 224,0)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667; immval:0x556; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x66666667, 0x556, 1b, x3, 228,0)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x33333334, 0x2, 1b, x3, 232,0)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x6, 0x2, 1b, x3, 236,0)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, -0x55555555, 0x400, 1b, x3, 240,0)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x55555556, 0x6, 3f, x3, 244,0)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0x4; immval:0x20; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0x4, 0x20, 3f, x3, 248,0)
+
+inst_584:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: blt, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x33333333, 0xb503, 0x80, 3f, x3, 252,0)
+
+inst_585:
+// rs2_val == -268435457, rs1_val == 1048576
+// opcode: blt, op1:x10; op2:x11; op1val:0x100000; op2val:-0x10000001; immval:0x200; align:0
+TEST_BRANCH_OP(blt, x1, x10, x11, 0x100000, -0x10000001, 0x200, 3f, x3, 256,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x6_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_1:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 65*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bltu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bltu-01.S
new file mode 100644
index 000000000..f8042b147
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bltu-01.S
@@ -0,0 +1,3715 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the bltu instruction of the RISC-V E extension for the bltu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",bltu)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 == rs2, rs1==x4, rs2==x4, rs1_val > 0 and rs2_val > 0, rs1_val == 3758096383, rs1_val > 0 and rs2_val > 0 and rs1_val > rs2_val and imm_val > 0 , rs2_val == 512
+// opcode: bltu, op1:x4; op2:x4; op1val:0xdfffffff; op2val:0xdfffffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x7, x4, x4, 0xdfffffff, 0xdfffffff, 0x6, 3f, x1, 0,0)
+
+inst_1:
+// rs1 != rs2, rs1==x5, rs2==x6, rs2_val == 2147483647, rs1_val == 268435456, rs1_val > 0 and rs2_val > 0 and rs1_val < rs2_val and imm_val > 0
+// opcode: bltu, op1:x5; op2:x6; op1val:0x10000000; op2val:0x7fffffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x7, x5, x6, 0x10000000, 0x7fffffff, 0x6, 3f, x1, 4,0)
+
+inst_2:
+// rs1==x15, rs2==x8, rs2_val == 3221225471, rs1_val > 0 and rs2_val > 0 and rs1_val > rs2_val and imm_val < 0
+// opcode: bltu, op1:x15; op2:x8; op1val:0xdfffffff; op2val:0xbfffffff; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x7, x15, x8, 0xdfffffff, 0xbfffffff, 0x8, 1b, x1, 8,0)
+
+inst_3:
+// rs1==x13, rs2==x15, rs2_val == 3758096383, rs1_val > 0 and rs2_val > 0 and rs1_val < rs2_val and imm_val < 0
+// opcode: bltu, op1:x13; op2:x15; op1val:0x3; op2val:0xdfffffff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x7, x13, x15, 0x3, 0xdfffffff, 0x0, 1b, x1, 12,0)
+
+inst_4:
+// rs1==x2, rs2==x14, rs2_val == 4026531839, rs1_val == 134217728
+// opcode: bltu, op1:x2; op2:x14; op1val:0x8000000; op2val:0xefffffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x7, x2, x14, 0x8000000, 0xefffffff, 0x6, 1b, x1, 16,0)
+
+inst_5:
+// rs1==x9, rs2==x11, rs2_val == 4160749567,
+// opcode: bltu, op1:x9; op2:x11; op1val:0x66666665; op2val:0xf7ffffff; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x7, x9, x11, 0x66666665, 0xf7ffffff, 0x4, 1b, x1, 20,0)
+
+inst_6:
+// rs1==x3, rs2==x2, rs2_val == 4227858431,
+// opcode: bltu, op1:x3; op2:x2; op1val:0xffffffff; op2val:0xfbffffff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x7, x3, x2, 0xffffffff, 0xfbffffff, 0x0, 1b, x1, 24,0)
+
+inst_7:
+// rs1==x7, rs2==x5, rs2_val == 4261412863, rs1_val == 2
+// opcode: bltu, op1:x7; op2:x5; op1val:0x2; op2val:0xfdffffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x4, x7, x5, 0x2, 0xfdffffff, 0x6, 3f, x1, 28,0)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_8:
+// rs1==x6, rs2==x12, rs2_val == 4278190079,
+// opcode: bltu, op1:x6; op2:x12; op1val:0x66666665; op2val:0xfeffffff; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x4, x6, x12, 0x66666665, 0xfeffffff, 0x8, 3f, x2, 0,0)
+
+inst_9:
+// rs1==x1, rs2==x9, rs2_val == 4286578687, rs1_val == 4294967167
+// opcode: bltu, op1:x1; op2:x9; op1val:0xffffff7f; op2val:0xff7fffff; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x4, x1, x9, 0xffffff7f, 0xff7fffff, 0x4, 3f, x2, 4,0)
+
+inst_10:
+// rs1==x12, rs2==x10, rs2_val == 4290772991, rs1_val == 2147483648
+// opcode: bltu, op1:x12; op2:x10; op1val:0x80000000; op2val:0xffbfffff; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x4, x12, x10, 0x80000000, 0xffbfffff, 0x20, 3f, x2, 8,0)
+
+inst_11:
+// rs1==x14, rs2==x13, rs2_val == 4292870143,
+// opcode: bltu, op1:x14; op2:x13; op1val:0x0; op2val:0xffdfffff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x4, x14, x13, 0x0, 0xffdfffff, 0x0, 3f, x2, 12,0)
+
+inst_12:
+// rs1==x10, rs2==x7, rs2_val == 4293918719,
+// opcode: bltu, op1:x10; op2:x7; op1val:0xffffff7f; op2val:0xffefffff; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x4, x10, x7, 0xffffff7f, 0xffefffff, 0x100, 3f, x2, 16,0)
+
+inst_13:
+// rs1==x0, rs2==x3, rs2_val == 4294443007, rs1_val == 4290772991
+// opcode: bltu, op1:x0; op2:x3; op1val:0x0; op2val:0xfff7ffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x4, x0, x3, 0x0, 0xfff7ffff, 0x6, 1b, x2, 20,0)
+
+inst_14:
+// rs1==x11, rs2==x0, rs2_val == 4294705151,
+// opcode: bltu, op1:x11; op2:x0; op1val:0x9; op2val:0x0; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x4, x11, x0, 0x9, 0x0, 0x40, 3f, x2, 24,0)
+
+inst_15:
+// rs1==x8, rs2==x1, rs2_val == 4294836223, rs1_val == 4294836223
+// opcode: bltu, op1:x8; op2:x1; op1val:0xfffdffff; op2val:0xfffdffff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x8, x1, 0xfffdffff, 0xfffdffff, 0x0, 3f, x2, 28,0)
+
+inst_16:
+// rs2_val == 4294901759, rs1_val == 2147483647
+// opcode: bltu, op1:x10; op2:x11; op1val:0x7fffffff; op2val:0xfffeffff; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x7fffffff, 0xfffeffff, 0x556, 1b, x2, 32,0)
+
+inst_17:
+// rs2_val == 4294934527,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xffff7fff; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xffff7fff, 0x8, 3f, x2, 36,0)
+
+inst_18:
+// rs2_val == 4294950911, rs1_val == 4026531839
+// opcode: bltu, op1:x10; op2:x11; op1val:0xefffffff; op2val:0xffffbfff; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xefffffff, 0xffffbfff, 0x80, 3f, x2, 40,0)
+
+inst_19:
+// rs2_val == 4294959103, rs1_val > 0 and rs2_val > 0 and rs1_val == rs2_val and imm_val < 0, rs1_val == 4294959103
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffdfff; op2val:0xffffdfff; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffdfff, 0xffffdfff, 0x8, 1b, x2, 44,0)
+
+inst_20:
+// rs2_val == 4294963199,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000000; op2val:0xffffefff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000000, 0xffffefff, 0x0, 1b, x2, 48,0)
+
+inst_21:
+// rs2_val == 4294965247, rs1_val == 8192
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2000; op2val:0xfffff7ff; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2000, 0xfffff7ff, 0xa, 1b, x2, 52,0)
+
+inst_22:
+// rs2_val == 4294966271, rs1_val == 1
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xfffffbff; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xfffffbff, 0x8, 1b, x2, 56,0)
+
+inst_23:
+// rs2_val == 4294966783,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x12; op2val:0xfffffdff; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x12, 0xfffffdff, 0x10, 3f, x2, 60,0)
+
+inst_24:
+// rs2_val == 4294967039, rs1_val == 16
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10; op2val:0xfffffeff; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10, 0xfffffeff, 0x4, 3f, x2, 64,0)
+
+inst_25:
+// rs2_val == 4294967167,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xffffff7f; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xffffff7f, 0x40, 3f, x2, 68,0)
+
+inst_26:
+// rs2_val == 4294967231,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xffffffbf; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xffffffbf, 0x6, 1b, x2, 72,0)
+
+inst_27:
+// rs2_val == 4294967263,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xffffffdf; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xffffffdf, 0x8, 3f, x2, 76,0)
+
+inst_28:
+// rs2_val == 4294967279, rs1_val == 64
+// opcode: bltu, op1:x10; op2:x11; op1val:0x40; op2val:0xffffffef; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x40, 0xffffffef, 0x6, 3f, x2, 80,0)
+
+inst_29:
+// rs2_val == 4294967287,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xe; op2val:0xfffffff7; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xe, 0xfffffff7, 0x40, 3f, x2, 84,0)
+
+inst_30:
+// rs2_val == 4294967291,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xfffffffb; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xfffffffb, 0x2, 3f, x2, 88,0)
+
+inst_31:
+// rs2_val == 4294967293, rs1_val == 131072
+// opcode: bltu, op1:x10; op2:x11; op1val:0x20000; op2val:0xfffffffd; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x20000, 0xfffffffd, 0x80, 3f, x2, 92,0)
+
+inst_32:
+// rs2_val == 4294967294,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x7; op2val:0xfffffffe; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x7, 0xfffffffe, 0x2, 1b, x2, 96,0)
+
+inst_33:
+// rs1_val == 3221225471, rs2_val == 8192
+// opcode: bltu, op1:x10; op2:x11; op1val:0xbfffffff; op2val:0x2000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xbfffffff, 0x2000, 0x4, 3f, x2, 100,0)
+
+inst_34:
+// rs1_val == 4160749567, rs2_val == 67108864
+// opcode: bltu, op1:x10; op2:x11; op1val:0xf7ffffff; op2val:0x4000000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xf7ffffff, 0x4000000, 0x4, 1b, x2, 104,0)
+
+inst_35:
+// rs1_val == 4227858431,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfbffffff; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfbffffff, 0x55555556, 0x6, 1b, x2, 108,0)
+
+inst_36:
+// rs1_val == 4261412863, rs2_val == 1431655765
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfdffffff; op2val:0x55555555; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfdffffff, 0x55555555, 0x40, 3f, x2, 112,0)
+
+inst_37:
+// rs1_val == 4278190079,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfeffffff; op2val:0xffff; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfeffffff, 0xffff, 0x8, 3f, x2, 116,0)
+
+inst_38:
+// rs1_val == 4286578687,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xff7fffff; op2val:0x200; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xff7fffff, 0x200, 0x4, 3f, x2, 120,0)
+
+inst_39:
+// rs1_val == 4292870143,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffdfffff; op2val:0x9; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffdfffff, 0x9, 0x2, 1b, x2, 124,0)
+
+inst_40:
+// rs1_val == 4293918719,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffefffff; op2val:0x7fffffff; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffefffff, 0x7fffffff, 0xa, 1b, x2, 128,0)
+
+inst_41:
+// rs1_val == 4294443007,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfff7ffff; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfff7ffff, 0x55555555, 0x0, 3f, x2, 132,0)
+
+inst_42:
+// rs1_val == 4294705151,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffbffff; op2val:0xfff7ffff; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffbffff, 0xfff7ffff, 0x40, 3f, x2, 136,0)
+
+inst_43:
+// rs1_val == 4294901759,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffeffff; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffeffff, 0x5, 0x4, 3f, x2, 140,0)
+
+inst_44:
+// rs1_val == 4294934527, rs2_val == 256
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff7fff; op2val:0x100; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff7fff, 0x100, 0x10, 3f, x2, 144,0)
+
+inst_45:
+// rs1_val == 4294950911,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffbfff; op2val:0x33333334; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffbfff, 0x33333334, 0x40, 3f, x2, 148,0)
+
+inst_46:
+// rs1_val == 4294963199,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffefff; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffefff, 0x55555556, 0x0, 1b, x2, 152,0)
+
+inst_47:
+// rs1_val == 4294965247, rs2_val == 8
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffff7ff; op2val:0x8; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffff7ff, 0x8, 0x556, 1b, x2, 156,0)
+
+inst_48:
+// rs1_val == 4294966271,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffffbff; op2val:0xfffdffff; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffffbff, 0xfffdffff, 0x100, 3f, x2, 160,0)
+
+inst_49:
+// rs1_val == 4294966783,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffffdff; op2val:0x8; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffffdff, 0x8, 0x4, 3f, x2, 164,0)
+
+inst_50:
+// rs1_val == 4294967039, rs2_val == 131072
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffffeff; op2val:0x20000; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffffeff, 0x20000, 0x6, 3f, x2, 168,0)
+
+inst_51:
+// rs1_val == 4294967231, rs2_val == 64
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffffbf; op2val:0x40; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffffbf, 0x40, 0x0, 3f, x2, 172,0)
+
+inst_52:
+// rs1_val == 4294967263, rs2_val == 2863311530
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffffdf; op2val:0xaaaaaaaa; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffffdf, 0xaaaaaaaa, 0x100, 3f, x2, 176,0)
+
+inst_53:
+// rs1_val == 4294967279,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffffef; op2val:0x11; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffffef, 0x11, 0x556, 1b, x2, 180,0)
+
+inst_54:
+// rs1_val == 4294967287,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffffff7; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffffff7, 0x33333332, 0x0, 1b, x2, 184,0)
+
+inst_55:
+// rs1_val == 4294967291, rs2_val == 2
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffffffb; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffffffb, 0x2, 0x100, 3f, x2, 188,0)
+
+inst_56:
+// rs1_val == 4294967293,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffffffd; op2val:0xfffe; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffffffd, 0xfffe, 0x100, 3f, x2, 192,0)
+
+inst_57:
+// rs1_val == 4294967294,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffffffe; op2val:0x66666667; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffffffe, 0x66666667, 0x200, 3f, x2, 196,0)
+
+inst_58:
+// rs2_val == 2147483648,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffdfff; op2val:0x80000000; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffdfff, 0x80000000, 0x6, 3f, x2, 200,0)
+
+inst_59:
+// rs2_val == 1073741824,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xbfffffff; op2val:0x40000000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xbfffffff, 0x40000000, 0x4, 3f, x2, 204,0)
+
+inst_60:
+// rs2_val == 536870912, rs1_val == 4
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x20000000; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x20000000, 0x0, 3f, x2, 208,0)
+
+inst_61:
+// rs2_val == 268435456,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x20000; op2val:0x10000000; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x20000, 0x10000000, 0x80, 3f, x2, 212,0)
+
+inst_62:
+// rs2_val == 134217728,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x11; op2val:0x8000000; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x11, 0x8000000, 0x8, 1b, x2, 216,0)
+
+inst_63:
+// rs2_val == 33554432, rs1_val == 536870912
+// opcode: bltu, op1:x10; op2:x11; op1val:0x20000000; op2val:0x2000000; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x20000000, 0x2000000, 0x556, 1b, x2, 220,0)
+
+inst_64:
+// rs2_val == 16777216,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffdffff; op2val:0x1000000; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffdffff, 0x1000000, 0x400, 1b, x2, 224,0)
+
+inst_65:
+// rs2_val == 8388608,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfff7ffff; op2val:0x800000; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfff7ffff, 0x800000, 0x0, 3f, x2, 228,0)
+
+inst_66:
+// rs2_val == 4194304,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xefffffff; op2val:0x400000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xefffffff, 0x400000, 0x4, 1b, x2, 232,0)
+
+inst_67:
+// rs2_val == 2097152,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x200000; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x200000, 0x20, 3f, x2, 236,0)
+
+inst_68:
+// rs2_val == 1048576,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x100000; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x100000, 0x556, 1b, x2, 240,0)
+
+inst_69:
+// rs2_val == 524288,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x80000; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x80000, 0x6, 3f, x2, 244,0)
+
+inst_70:
+// rs2_val == 262144,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x7; op2val:0x40000; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x7, 0x40000, 0x80, 3f, x2, 248,0)
+
+inst_71:
+// rs2_val == 65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfff7ffff; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfff7ffff, 0x10000, 0x4, 1b, x2, 252,0)
+
+inst_72:
+// rs2_val == 32768,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffefffff; op2val:0x8000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffefffff, 0x8000, 0x4, 3f, x2, 256,0)
+
+inst_73:
+// rs2_val == 16384,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xf; op2val:0x4000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xf, 0x4000, 0x4, 1b, x2, 260,0)
+
+inst_74:
+// rs2_val == 4096,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffefff; op2val:0x1000; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffefff, 0x1000, 0x400, 1b, x2, 264,0)
+
+inst_75:
+// rs2_val == 2048,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x800; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x800, 0x20, 3f, x2, 268,0)
+
+inst_76:
+// rs2_val == 1024, rs1_val == 1431655765
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x400; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x400, 0x6, 1b, x2, 272,0)
+
+inst_77:
+// rs2_val == 128,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x80; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x80, 0x8, 3f, x2, 276,0)
+
+inst_78:
+// rs2_val == 32, rs1_val == 4194304
+// opcode: bltu, op1:x10; op2:x11; op1val:0x400000; op2val:0x20; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x400000, 0x20, 0x2, 3f, x2, 280,0)
+
+inst_79:
+// rs2_val == 16,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffbfffff; op2val:0x10; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffbfffff, 0x10, 0x4, 1b, x2, 284,0)
+
+inst_80:
+// rs2_val == 4, rs1_val == 67108864
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4000000; op2val:0x4; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4000000, 0x4, 0x556, 1b, x2, 288,0)
+
+inst_81:
+// rs2_val == 1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffffdfff; op2val:0x1; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffffdfff, 0x1, 0x0, 3f, x2, 292,0)
+
+inst_82:
+// rs1_val == 1073741824,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x40000000; op2val:0x2000000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x40000000, 0x2000000, 0x4, 1b, x2, 296,0)
+
+inst_83:
+// rs1_val == 33554432,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2000000; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2000000, 0xaaaaaaab, 0x6, 1b, x2, 300,0)
+
+inst_84:
+// rs1_val == 16777216,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1000000; op2val:0x40000000; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1000000, 0x40000000, 0x40, 3f, x2, 304,0)
+
+inst_85:
+// rs1_val == 8388608,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x800000; op2val:0x40000; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x800000, 0x40000, 0x40, 3f, x2, 308,0)
+
+inst_86:
+// rs1_val == 2097152,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x200000; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x200000, 0x55555556, 0xa, 1b, x2, 312,0)
+
+inst_87:
+// rs1_val == 1048576,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x100000; op2val:0x80000000; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x100000, 0x80000000, 0x10, 3f, x2, 316,0)
+
+inst_88:
+// rs1_val == 524288,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x80000; op2val:0xb; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x80000, 0xb, 0x40, 3f, x2, 320,0)
+
+inst_89:
+// rs1_val == 262144,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x40000; op2val:0x1; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x40000, 0x1, 0x400, 1b, x2, 324,0)
+
+inst_90:
+// rs1_val == 65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xfffff7ff; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xfffff7ff, 0x556, 1b, x2, 328,0)
+
+inst_91:
+// rs1_val == 32768,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x8000; op2val:0xfffffdff; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x8000, 0xfffffdff, 0x80, 3f, x2, 332,0)
+
+inst_92:
+// rs1_val == 16384,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4000; op2val:0xfffffffe; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4000, 0xfffffffe, 0x0, 3f, x2, 336,0)
+
+inst_93:
+// rs1_val == 4096,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1000; op2val:0xfffffffb; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1000, 0xfffffffb, 0x0, 3f, x2, 340,0)
+
+inst_94:
+// rs1_val == 2048,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x800; op2val:0x4000000; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x800, 0x4000000, 0x6, 1b, x2, 344,0)
+
+inst_95:
+// rs1_val == 1024,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x400; op2val:0x13; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x400, 0x13, 0x0, 3f, x2, 348,0)
+
+inst_96:
+// rs1_val == 512,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x200; op2val:0x20; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x200, 0x20, 0x8, 3f, x2, 352,0)
+
+inst_97:
+// rs1_val == 256,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x100; op2val:0xfffff7ff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x100, 0xfffff7ff, 0x6, 3f, x2, 356,0)
+
+inst_98:
+// rs1_val == 128,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x80; op2val:0x7; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x80, 0x7, 0x10, 3f, x2, 360,0)
+
+inst_99:
+// rs1_val == 32,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x20; op2val:0x10000; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x20, 0x10000, 0x400, 1b, x2, 364,0)
+
+inst_100:
+// rs1_val == 8,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x8; op2val:0x10000; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x8, 0x10000, 0x100, 3f, x2, 368,0)
+
+inst_101:
+// rs1_val==65536 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x10000; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x10000, 0x2, 1b, x2, 372,0)
+
+inst_102:
+// rs1_val==65536 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x1, 0x6, 1b, x2, 376,0)
+
+inst_103:
+// rs1_val==65536 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xb505; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xb505, 0x556, 1b, x2, 380,0)
+
+inst_104:
+// rs1_val==65536 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x66666667, 0x2, 1b, x2, 384,0)
+
+inst_105:
+// rs1_val==65536 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x33333334, 0x4, 3f, x2, 388,0)
+
+inst_106:
+// rs1_val==65536 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x6, 0x4, 3f, x2, 392,0)
+
+inst_107:
+// rs1_val==65536 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xaaaaaaab; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xaaaaaaab, 0x20, 3f, x2, 396,0)
+
+inst_108:
+// rs1_val==65536 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x55555556, 0x100, 3f, x2, 400,0)
+
+inst_109:
+// rs1_val==65536 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x4; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x4, 0x20, 3f, x2, 404,0)
+
+inst_110:
+// rs1_val==65536 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xfffe; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xfffe, 0x20, 3f, x2, 408,0)
+
+inst_111:
+// rs1_val==65536 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x0, 0x0, 1b, x2, 412,0)
+
+inst_112:
+// rs1_val==65536 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xb503, 0x0, 1b, x2, 416,0)
+
+inst_113:
+// rs1_val==65536 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x66666665, 0x2, 1b, x2, 420,0)
+
+inst_114:
+// rs1_val==65536 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x33333332, 0x556, 1b, x2, 424,0)
+
+inst_115:
+// rs1_val==65536 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xaaaaaaa9; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xaaaaaaa9, 0x400, 3f, x2, 428,0)
+
+inst_116:
+// rs1_val==65536 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x55555554; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x55555554, 0x80, 3f, x2, 432,0)
+
+inst_117:
+// rs1_val==65536 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x2; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x2, 0x556, 1b, x2, 436,0)
+
+inst_118:
+// rs1_val==65536 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xffff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xffff, 0x0, 3f, x2, 440,0)
+
+inst_119:
+// rs1_val==65536 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xb504, 0x10, 3f, x2, 444,0)
+
+inst_120:
+// rs1_val==65536 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x66666666, 0x400, 1b, x2, 448,0)
+
+inst_121:
+// rs1_val==65536 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x33333333, 0x2, 3f, x2, 452,0)
+
+inst_122:
+// rs1_val==65536 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x5, 0x400, 1b, x2, 456,0)
+
+inst_123:
+// rs1_val==65536 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0xaaaaaaaa; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0xaaaaaaaa, 0x0, 1b, x2, 460,0)
+
+inst_124:
+// rs1_val==65536 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x55555555, 0x2, 1b, x2, 464,0)
+
+inst_125:
+// rs1_val==65536 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x10000; op2val:0x3; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x10000, 0x3, 0x80, 3f, x2, 468,0)
+
+inst_126:
+// rs1_val==1 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x10000; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x10000, 0x6, 1b, x2, 472,0)
+
+inst_127:
+// rs1_val==1 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x1; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x1, 0x0, 1b, x2, 476,0)
+
+inst_128:
+// rs1_val==1 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xb505, 0x2, 1b, x2, 480,0)
+
+inst_129:
+// rs1_val==1 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x66666667; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x66666667, 0x200, 3f, x2, 484,0)
+
+inst_130:
+// rs1_val==1 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x33333334, 0x4, 3f, x2, 488,0)
+
+inst_131:
+// rs1_val==1 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x6, 0x20, 3f, x2, 492,0)
+
+inst_132:
+// rs1_val==1 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xaaaaaaab; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xaaaaaaab, 0x80, 3f, x2, 496,0)
+
+inst_133:
+// rs1_val==1 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x55555556, 0x400, 3f, x2, 500,0)
+
+inst_134:
+// rs1_val==1 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x4, 0x4, 1b, x2, 504,0)
+
+inst_135:
+// rs1_val==1 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xfffe; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xfffe, 0x40, 3f, x2, 508,0)
+
+inst_136:
+// rs1_val==1 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x0, 0x0, 3f, x2, 512,0)
+
+inst_137:
+// rs1_val==1 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xb503, 0x10, 3f, x2, 516,0)
+
+inst_138:
+// rs1_val==1 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x66666665, 0x400, 3f, x2, 520,0)
+
+inst_139:
+// rs1_val==1 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x33333332, 0x8, 3f, x2, 524,0)
+
+inst_140:
+// rs1_val==1 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xaaaaaaa9; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xaaaaaaa9, 0x10, 3f, x2, 528,0)
+
+inst_141:
+// rs1_val==1 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x55555554, 0x4, 1b, x2, 532,0)
+
+inst_142:
+// rs1_val==1 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x2; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x2, 0x200, 3f, x2, 536,0)
+
+inst_143:
+// rs1_val==1 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xffff; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xffff, 0x400, 3f, x2, 540,0)
+
+inst_144:
+// rs1_val==1 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xb504, 0x6, 1b, x2, 544,0)
+
+inst_145:
+// rs1_val==1 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x66666666; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x66666666, 0x556, 1b, x2, 548,0)
+
+inst_146:
+// rs1_val==1 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x33333333, 0x0, 1b, x2, 552,0)
+
+inst_147:
+// rs1_val==1 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x5, 0x200, 3f, x2, 556,0)
+
+inst_148:
+// rs1_val==1 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0xaaaaaaaa; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0xaaaaaaaa, 0x8, 1b, x2, 560,0)
+
+inst_149:
+// rs1_val==1 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x55555555, 0x556, 1b, x2, 564,0)
+
+inst_150:
+// rs1_val==1 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x1; op2val:0x3; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x1, 0x3, 0x80, 3f, x2, 568,0)
+
+inst_151:
+// rs1_val==46341 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x10000; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x10000, 0x0, 3f, x2, 572,0)
+
+inst_152:
+// rs1_val==46341 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x1; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x1, 0x2, 3f, x2, 576,0)
+
+inst_153:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0xb505, 0x4, 1b, x2, 580,0)
+
+inst_154:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x66666667, 0x6, 3f, x2, 584,0)
+
+inst_155:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x33333334, 0x100, 3f, x2, 588,0)
+
+inst_156:
+// rs1_val==46341 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x6, 0x80, 3f, x2, 592,0)
+
+inst_157:
+// rs1_val==46341 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0xaaaaaaab; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0xaaaaaaab, 0x100, 3f, x2, 596,0)
+
+inst_158:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x55555556, 0x556, 1b, x2, 600,0)
+
+inst_159:
+// rs1_val==46341 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x4, 0x8, 1b, x2, 604,0)
+
+inst_160:
+// rs1_val==46341 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0xfffe; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0xfffe, 0x8, 3f, x2, 608,0)
+
+inst_161:
+// rs1_val==46341 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x0, 0x0, 3f, x2, 612,0)
+
+inst_162:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0xb503, 0x20, 3f, x2, 616,0)
+
+inst_163:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x66666665, 0x10, 3f, x2, 620,0)
+
+inst_164:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x33333332, 0x20, 3f, x2, 624,0)
+
+inst_165:
+// rs1_val==46341 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0xaaaaaaa9; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0xaaaaaaa9, 0xa, 1b, x2, 628,0)
+
+inst_166:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x55555554, 0x10, 3f, x2, 632,0)
+
+inst_167:
+// rs1_val==46341 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x2, 0x8, 1b, x2, 636,0)
+
+inst_168:
+// rs1_val==46341 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0xffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0xffff, 0x6, 1b, x2, 640,0)
+
+inst_169:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0xb504, 0x2, 1b, x2, 644,0)
+
+inst_170:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x66666666, 0x400, 3f, x2, 648,0)
+
+inst_171:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x33333333, 0x4, 3f, x2, 652,0)
+
+inst_172:
+// rs1_val==46341 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x5, 0x2, 3f, x2, 656,0)
+
+inst_173:
+// rs1_val==46341 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0xaaaaaaaa; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0xaaaaaaaa, 0x556, 1b, x2, 660,0)
+
+inst_174:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x55555555, 0x100, 3f, x2, 664,0)
+
+inst_175:
+// rs1_val==46341 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb505; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb505, 0x3, 0x6, 3f, x2, 668,0)
+
+inst_176:
+// rs1_val==1717986919 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x10000; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x10000, 0x10, 3f, x2, 672,0)
+
+inst_177:
+// rs1_val==1717986919 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x1; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x1, 0x4, 3f, x2, 676,0)
+
+inst_178:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0xb505, 0x556, 1b, x2, 680,0)
+
+inst_179:
+// rs1_val==1717986919 and rs2_val==1717986919, rs1_val > 0 and rs2_val > 0 and rs1_val == rs2_val and imm_val > 0
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x66666667, 0x80, 3f, x2, 684,0)
+
+inst_180:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x33333334, 0x0, 3f, x2, 688,0)
+
+inst_181:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x6, 0x0, 3f, x2, 692,0)
+
+inst_182:
+// rs1_val==1717986919 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0xaaaaaaab, 0x6, 3f, x2, 696,0)
+
+inst_183:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x55555556, 0x556, 1b, x2, 700,0)
+
+inst_184:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x4, 0x4, 1b, x2, 704,0)
+
+inst_185:
+// rs1_val==1717986919 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xfffe; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0xfffe, 0x20, 3f, x2, 708,0)
+
+inst_186:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x0, 0x0, 3f, x2, 712,0)
+
+inst_187:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0xb503, 0x6, 3f, x2, 716,0)
+
+inst_188:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x66666665, 0x400, 1b, x2, 720,0)
+
+inst_189:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x33333332, 0x556, 1b, x2, 724,0)
+
+inst_190:
+// rs1_val==1717986919 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xaaaaaaa9; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0xaaaaaaa9, 0x2, 1b, x2, 728,0)
+
+inst_191:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x55555554, 0x0, 1b, x2, 732,0)
+
+inst_192:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x2; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x2, 0xa, 1b, x2, 736,0)
+
+inst_193:
+// rs1_val==1717986919 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xffff; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0xffff, 0x40, 3f, x2, 740,0)
+
+inst_194:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0xb504, 0x8, 3f, x2, 744,0)
+
+inst_195:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x66666666, 0x100, 3f, x2, 748,0)
+
+inst_196:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x33333333, 0x40, 3f, x2, 752,0)
+
+inst_197:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x5, 0x40, 3f, x2, 756,0)
+
+inst_198:
+// rs1_val==1717986919 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0xaaaaaaaa; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0xaaaaaaaa, 0x8, 3f, x2, 760,0)
+
+inst_199:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x55555555, 0x4, 1b, x2, 764,0)
+
+inst_200:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666667; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666667, 0x3, 0x8, 3f, x2, 768,0)
+
+inst_201:
+// rs1_val==858993460 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x10000; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x10000, 0x2, 1b, x2, 772,0)
+
+inst_202:
+// rs1_val==858993460 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x1; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x1, 0x4, 3f, x2, 776,0)
+
+inst_203:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xb505, 0x4, 1b, x2, 780,0)
+
+inst_204:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x66666667, 0x10, 3f, x2, 784,0)
+
+inst_205:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x33333334, 0x0, 1b, x2, 788,0)
+
+inst_206:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x6, 0x6, 1b, x2, 792,0)
+
+inst_207:
+// rs1_val==858993460 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xaaaaaaab, 0x6, 1b, x2, 796,0)
+
+inst_208:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x55555556, 0x4, 1b, x2, 800,0)
+
+inst_209:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x4, 0x400, 3f, x2, 804,0)
+
+inst_210:
+// rs1_val==858993460 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xfffe; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xfffe, 0x4, 1b, x2, 808,0)
+
+inst_211:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x0, 0x2, 1b, x2, 812,0)
+
+inst_212:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xb503, 0x80, 3f, x2, 816,0)
+
+inst_213:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x66666665, 0x20, 3f, x2, 820,0)
+
+inst_214:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x33333332, 0xa, 1b, x2, 824,0)
+
+inst_215:
+// rs1_val==858993460 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xaaaaaaa9; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xaaaaaaa9, 0x4, 3f, x2, 828,0)
+
+inst_216:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x55555554, 0x4, 1b, x2, 832,0)
+
+inst_217:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x2, 0x2, 1b, x2, 836,0)
+
+inst_218:
+// rs1_val==858993460 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xffff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xffff, 0x0, 1b, x2, 840,0)
+
+inst_219:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xb504, 0x100, 3f, x2, 844,0)
+
+inst_220:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x66666666, 0x200, 3f, x2, 848,0)
+
+inst_221:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x33333333, 0x10, 3f, x2, 852,0)
+
+inst_222:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x5; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x5, 0x100, 3f, x2, 856,0)
+
+inst_223:
+// rs1_val==858993460 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0xaaaaaaaa; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0xaaaaaaaa, 0x6, 1b, x2, 860,0)
+
+inst_224:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x55555555, 0x6, 3f, x2, 864,0)
+
+inst_225:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333334; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333334, 0x3, 0x400, 1b, x2, 868,0)
+
+inst_226:
+// rs1_val==6 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x10000; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x10000, 0x40, 3f, x2, 872,0)
+
+inst_227:
+// rs1_val==6 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x1; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x1, 0x0, 3f, x2, 876,0)
+
+inst_228:
+// rs1_val==6 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0xb505; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0xb505, 0xa, 1b, x2, 880,0)
+
+inst_229:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x66666667, 0x4, 1b, x2, 884,0)
+
+inst_230:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x33333334; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x33333334, 0x10, 3f, x2, 888,0)
+
+inst_231:
+// rs1_val==6 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x6; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x6, 0x100, 3f, x2, 892,0)
+
+inst_232:
+// rs1_val==6 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0xaaaaaaab; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0xaaaaaaab, 0x10, 3f, x2, 896,0)
+
+inst_233:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x55555556, 0x4, 1b, x2, 900,0)
+
+inst_234:
+// rs1_val==6 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x4, 0x6, 3f, x2, 904,0)
+
+inst_235:
+// rs1_val==6 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0xfffe; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0xfffe, 0x2, 3f, x2, 908,0)
+
+inst_236:
+// rs1_val==6 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x0, 0x6, 3f, x2, 912,0)
+
+inst_237:
+// rs1_val==6 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0xb503, 0x8, 3f, x2, 916,0)
+
+inst_238:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x66666665, 0x4, 3f, x2, 920,0)
+
+inst_239:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x33333332, 0x10, 3f, x2, 924,0)
+
+inst_240:
+// rs1_val==6 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0xaaaaaaa9; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0xaaaaaaa9, 0x400, 3f, x2, 928,0)
+
+inst_241:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x55555554, 0x0, 3f, x2, 932,0)
+
+inst_242:
+// rs1_val==6 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x2, 0x0, 3f, x2, 936,0)
+
+inst_243:
+// rs1_val==6 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0xffff; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0xffff, 0x2, 1b, x2, 940,0)
+
+inst_244:
+// rs1_val==6 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0xb504, 0x10, 3f, x2, 944,0)
+
+inst_245:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x66666666, 0x0, 3f, x2, 948,0)
+
+inst_246:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x33333333, 0x8, 1b, x2, 952,0)
+
+inst_247:
+// rs1_val==6 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x5, 0x6, 1b, x2, 956,0)
+
+inst_248:
+// rs1_val==6 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0xaaaaaaaa; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0xaaaaaaaa, 0x40, 3f, x2, 960,0)
+
+inst_249:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x55555555, 0x400, 3f, x2, 964,0)
+
+inst_250:
+// rs1_val==6 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x6; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x6, 0x3, 0x400, 3f, x2, 968,0)
+
+inst_251:
+// rs1_val==2863311531 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x10000; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x10000, 0x0, 3f, x2, 972,0)
+
+inst_252:
+// rs1_val==2863311531 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x1; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x1, 0x0, 1b, x2, 976,0)
+
+inst_253:
+// rs1_val==2863311531 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xb505, 0x8, 3f, x2, 980,0)
+
+inst_254:
+// rs1_val==2863311531 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x66666667; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x66666667, 0x8, 3f, x2, 984,0)
+
+inst_255:
+// rs1_val==2863311531 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x33333334, 0x8, 3f, x2, 988,0)
+
+inst_256:
+// rs1_val==2863311531 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x6, 0x2, 1b, x2, 992,0)
+
+inst_257:
+// rs1_val==2863311531 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xaaaaaaab; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xaaaaaaab, 0x8, 3f, x2, 996,0)
+
+inst_258:
+// rs1_val==2863311531 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x55555556, 0xa, 1b, x2, 1000,0)
+
+inst_259:
+// rs1_val==2863311531 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x4, 0x0, 1b, x2, 1004,0)
+
+inst_260:
+// rs1_val==2863311531 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xfffe; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xfffe, 0x100, 3f, x2, 1008,0)
+
+inst_261:
+// rs1_val==2863311531 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x0, 0x2, 3f, x2, 1012,0)
+
+inst_262:
+// rs1_val==2863311531 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xb503, 0x6, 3f, x2, 1016,0)
+
+inst_263:
+// rs1_val==2863311531 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x66666665; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x66666665, 0x556, 1b, x2, 1020,0)
+
+inst_264:
+// rs1_val==2863311531 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x33333332; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x33333332, 0x4, 1b, x2, 1024,0)
+
+inst_265:
+// rs1_val==2863311531 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xaaaaaaa9; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xaaaaaaa9, 0x6, 3f, x2, 1028,0)
+
+inst_266:
+// rs1_val==2863311531 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x55555554, 0x8, 3f, x2, 1032,0)
+
+inst_267:
+// rs1_val==2863311531 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x2, 0x6, 3f, x2, 1036,0)
+
+inst_268:
+// rs1_val==2863311531 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xffff; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xffff, 0x100, 3f, x2, 1040,0)
+
+inst_269:
+// rs1_val==2863311531 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xb504, 0x0, 1b, x2, 1044,0)
+
+inst_270:
+// rs1_val==2863311531 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x66666666; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x66666666, 0x20, 3f, x2, 1048,0)
+
+inst_271:
+// rs1_val==2863311531 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x33333333, 0x4, 3f, x2, 1052,0)
+
+inst_272:
+// rs1_val==2863311531 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x5; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x5, 0x100, 3f, x2, 1056,0)
+
+inst_273:
+// rs1_val==2863311531 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0xaaaaaaaa; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0xaaaaaaaa, 0x2, 1b, x2, 1060,0)
+
+inst_274:
+// rs1_val==2863311531 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x55555555, 0x80, 3f, x2, 1064,0)
+
+inst_275:
+// rs1_val==2863311531 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaab; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaab, 0x3, 0x4, 3f, x2, 1068,0)
+
+inst_276:
+// rs1_val==1431655766 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x10000, 0x4, 3f, x2, 1072,0)
+
+inst_277:
+// rs1_val==1431655766 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x1; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x1, 0xa, 1b, x2, 1076,0)
+
+inst_278:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0xb505, 0x10, 3f, x2, 1080,0)
+
+inst_279:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x66666667, 0x0, 1b, x2, 1084,0)
+
+inst_280:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x33333334, 0x0, 3f, x2, 1088,0)
+
+inst_281:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x6, 0x6, 1b, x2, 1092,0)
+
+inst_282:
+// rs1_val==1431655766 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0xaaaaaaab, 0x6, 1b, x2, 1096,0)
+
+inst_283:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x55555556, 0x556, 1b, x2, 1100,0)
+
+inst_284:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x4, 0x6, 3f, x2, 1104,0)
+
+inst_285:
+// rs1_val==1431655766 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xfffe; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0xfffe, 0x0, 1b, x2, 1108,0)
+
+inst_286:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x0, 0x6, 1b, x2, 1112,0)
+
+inst_287:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0xb503, 0x8, 3f, x2, 1116,0)
+
+inst_288:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x66666665, 0xa, 1b, x2, 1120,0)
+
+inst_289:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x33333332, 0x20, 3f, x2, 1124,0)
+
+inst_290:
+// rs1_val==1431655766 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xaaaaaaa9; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0xaaaaaaa9, 0x8, 3f, x2, 1128,0)
+
+inst_291:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x55555554, 0x6, 3f, x2, 1132,0)
+
+inst_292:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x2, 0x100, 3f, x2, 1136,0)
+
+inst_293:
+// rs1_val==1431655766 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0xffff, 0x6, 1b, x2, 1140,0)
+
+inst_294:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0xb504, 0x200, 3f, x2, 1144,0)
+
+inst_295:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x66666666, 0x0, 3f, x2, 1148,0)
+
+inst_296:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x33333333, 0x2, 1b, x2, 1152,0)
+
+inst_297:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x5, 0x4, 3f, x2, 1156,0)
+
+inst_298:
+// rs1_val==1431655766 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0xaaaaaaaa; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0xaaaaaaaa, 0x0, 3f, x2, 1160,0)
+
+inst_299:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x55555555, 0x8, 3f, x2, 1164,0)
+
+inst_300:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555556; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555556, 0x3, 0x0, 3f, x2, 1168,0)
+
+inst_301:
+// rs1_val==4 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x10000; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x10000, 0x6, 1b, x2, 1172,0)
+
+inst_302:
+// rs1_val==4 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x1, 0x6, 1b, x2, 1176,0)
+
+inst_303:
+// rs1_val==4 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0xb505, 0x8, 3f, x2, 1180,0)
+
+inst_304:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x66666667, 0x0, 1b, x2, 1184,0)
+
+inst_305:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x33333334; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x33333334, 0x40, 3f, x2, 1188,0)
+
+inst_306:
+// rs1_val==4 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x6, 0x200, 3f, x2, 1192,0)
+
+inst_307:
+// rs1_val==4 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0xaaaaaaab; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0xaaaaaaab, 0x400, 1b, x2, 1196,0)
+
+inst_308:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x55555556, 0x0, 1b, x2, 1200,0)
+
+inst_309:
+// rs1_val==4 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x4; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x4, 0x40, 3f, x2, 1204,0)
+
+inst_310:
+// rs1_val==4 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0xfffe; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0xfffe, 0x6, 1b, x2, 1208,0)
+
+inst_311:
+// rs1_val==4 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x0, 0x8, 1b, x2, 1212,0)
+
+inst_312:
+// rs1_val==4 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0xb503, 0x8, 1b, x2, 1216,0)
+
+inst_313:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x66666665; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x66666665, 0x556, 1b, x2, 1220,0)
+
+inst_314:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x33333332, 0x8, 1b, x2, 1224,0)
+
+inst_315:
+// rs1_val==4 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0xaaaaaaa9; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0xaaaaaaa9, 0x0, 1b, x2, 1228,0)
+
+inst_316:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x55555554, 0x6, 1b, x2, 1232,0)
+
+inst_317:
+// rs1_val==4 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x2, 0x100, 3f, x2, 1236,0)
+
+inst_318:
+// rs1_val==4 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0xffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0xffff, 0x6, 3f, x2, 1240,0)
+
+inst_319:
+// rs1_val==4 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0xb504, 0x400, 3f, x2, 1244,0)
+
+inst_320:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x66666666, 0x100, 3f, x2, 1248,0)
+
+inst_321:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x33333333, 0x8, 1b, x2, 1252,0)
+
+inst_322:
+// rs1_val==4 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x5; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x5, 0x10, 3f, x2, 1256,0)
+
+inst_323:
+// rs1_val==4 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0xaaaaaaaa; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0xaaaaaaaa, 0x400, 1b, x2, 1260,0)
+
+inst_324:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x55555555, 0xa, 1b, x2, 1264,0)
+
+inst_325:
+// rs1_val==4 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x4; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x4, 0x3, 0x2, 3f, x2, 1268,0)
+
+inst_326:
+// rs1_val==65534 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x10000; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x10000, 0x0, 3f, x2, 1272,0)
+
+inst_327:
+// rs1_val==65534 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x1, 0x6, 1b, x2, 1276,0)
+
+inst_328:
+// rs1_val==65534 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0xb505, 0x2, 1b, x2, 1280,0)
+
+inst_329:
+// rs1_val==65534 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x66666667, 0x4, 1b, x2, 1284,0)
+
+inst_330:
+// rs1_val==65534 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x33333334, 0x8, 3f, x2, 1288,0)
+
+inst_331:
+// rs1_val==65534 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x6, 0x200, 3f, x2, 1292,0)
+
+inst_332:
+// rs1_val==65534 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0xaaaaaaab, 0x6, 3f, x2, 1296,0)
+
+inst_333:
+// rs1_val==65534 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x55555556, 0x0, 3f, x2, 1300,0)
+
+inst_334:
+// rs1_val==65534 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x4, 0x8, 1b, x2, 1304,0)
+
+inst_335:
+// rs1_val==65534 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xfffe; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0xfffe, 0x400, 3f, x2, 1308,0)
+
+inst_336:
+// rs1_val==65534 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x0; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x0, 0x80, 3f, x2, 1312,0)
+
+inst_337:
+// rs1_val==65534 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0xb503, 0x40, 3f, x2, 1316,0)
+
+inst_338:
+// rs1_val==65534 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x66666665, 0x6, 3f, x2, 1320,0)
+
+inst_339:
+// rs1_val==65534 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x33333332; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x33333332, 0x100, 3f, x2, 1324,0)
+
+inst_340:
+// rs1_val==65534 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xaaaaaaa9; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0xaaaaaaa9, 0xa, 1b, x2, 1328,0)
+
+inst_341:
+// rs1_val==65534 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x55555554, 0x0, 1b, x2, 1332,0)
+
+inst_342:
+// rs1_val==65534 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x2; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x2, 0x40, 3f, x2, 1336,0)
+
+inst_343:
+// rs1_val==65534 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xffff; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0xffff, 0x6, 3f, x2, 1340,0)
+
+inst_344:
+// rs1_val==65534 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0xb504, 0x6, 1b, x2, 1344,0)
+
+inst_345:
+// rs1_val==65534 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x66666666; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x66666666, 0x200, 3f, x2, 1348,0)
+
+inst_346:
+// rs1_val==65534 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x33333333, 0x6, 3f, x2, 1352,0)
+
+inst_347:
+// rs1_val==65534 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x5, 0x4, 3f, x2, 1356,0)
+
+inst_348:
+// rs1_val==65534 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0xaaaaaaaa; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0xaaaaaaaa, 0x8, 3f, x2, 1360,0)
+
+inst_349:
+// rs1_val==65534 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x55555555, 0x0, 3f, x2, 1364,0)
+
+inst_350:
+// rs1_val==65534 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xfffe; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xfffe, 0x3, 0x0, 1b, x2, 1368,0)
+
+inst_351:
+// rs1_val==0 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x10000; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x10000, 0x8, 3f, x2, 1372,0)
+
+inst_352:
+// rs1_val==0 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x1; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x1, 0x100, 3f, x2, 1376,0)
+
+inst_353:
+// rs1_val==0 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0xb505, 0x40, 3f, x2, 1380,0)
+
+inst_354:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x66666667, 0x400, 3f, x2, 1384,0)
+
+inst_355:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x33333334; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x33333334, 0x10, 3f, x2, 1388,0)
+
+inst_356:
+// rs1_val==0 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x6, 0x20, 3f, x2, 1392,0)
+
+inst_357:
+// rs1_val==0 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0xaaaaaaab; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0xaaaaaaab, 0x2, 3f, x2, 1396,0)
+
+inst_358:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x55555556, 0x8, 1b, x2, 1400,0)
+
+inst_359:
+// rs1_val==0 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x4, 0x400, 3f, x2, 1404,0)
+
+inst_360:
+// rs1_val==0 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0xfffe; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0xfffe, 0x400, 3f, x2, 1408,0)
+
+inst_361:
+// rs1_val==0 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x0, 0x0, 3f, x2, 1412,0)
+
+inst_362:
+// rs1_val==0 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0xb503, 0x400, 3f, x2, 1416,0)
+
+inst_363:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x66666665, 0x20, 3f, x2, 1420,0)
+
+inst_364:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x33333332, 0x2, 1b, x2, 1424,0)
+
+inst_365:
+// rs1_val==0 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0xaaaaaaa9; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0xaaaaaaa9, 0x80, 3f, x2, 1428,0)
+
+inst_366:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x55555554; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x55555554, 0xa, 1b, x2, 1432,0)
+
+inst_367:
+// rs1_val==0 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x2; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x2, 0x20, 3f, x2, 1436,0)
+
+inst_368:
+// rs1_val==0 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0xffff; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0xffff, 0x2, 3f, x2, 1440,0)
+
+inst_369:
+// rs1_val==0 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0xb504, 0x8, 1b, x2, 1444,0)
+
+inst_370:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x66666666, 0x8, 1b, x2, 1448,0)
+
+inst_371:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x33333333, 0x400, 3f, x2, 1452,0)
+
+inst_372:
+// rs1_val==0 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x5, 0x8, 3f, x2, 1456,0)
+
+inst_373:
+// rs1_val==0 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0xaaaaaaaa; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0xaaaaaaaa, 0x400, 1b, x2, 1460,0)
+
+inst_374:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x55555555, 0x2, 1b, x2, 1464,0)
+
+inst_375:
+// rs1_val==0 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x0; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x0, 0x3, 0x20, 3f, x2, 1468,0)
+
+inst_376:
+// rs1_val==46339 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x10000; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x10000, 0x200, 3f, x2, 1472,0)
+
+inst_377:
+// rs1_val==46339 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x1; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x1, 0x8, 3f, x2, 1476,0)
+
+inst_378:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xb505; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xb505, 0x400, 3f, x2, 1480,0)
+
+inst_379:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x66666667, 0x20, 3f, x2, 1484,0)
+
+inst_380:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x33333334, 0x2, 1b, x2, 1488,0)
+
+inst_381:
+// rs1_val==46339 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x6, 0x20, 3f, x2, 1492,0)
+
+inst_382:
+// rs1_val==46339 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xaaaaaaab; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xaaaaaaab, 0x8, 3f, x2, 1496,0)
+
+inst_383:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x55555556, 0x400, 3f, x2, 1500,0)
+
+inst_384:
+// rs1_val==46339 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x4, 0x0, 1b, x2, 1504,0)
+
+inst_385:
+// rs1_val==46339 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xfffe; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xfffe, 0x556, 1b, x2, 1508,0)
+
+inst_386:
+// rs1_val==46339 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x0, 0x6, 3f, x2, 1512,0)
+
+inst_387:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xb503, 0x20, 3f, x2, 1516,0)
+
+inst_388:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x66666665, 0x400, 1b, x2, 1520,0)
+
+inst_389:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x33333332, 0x100, 3f, x2, 1524,0)
+
+inst_390:
+// rs1_val==46339 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xaaaaaaa9; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xaaaaaaa9, 0x400, 1b, x2, 1528,0)
+
+inst_391:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x55555554, 0x8, 1b, x2, 1532,0)
+
+inst_392:
+// rs1_val==46339 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x2, 0x6, 3f, x2, 1536,0)
+
+inst_393:
+// rs1_val==46339 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xffff; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xffff, 0x4, 1b, x2, 1540,0)
+
+inst_394:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xb504, 0x8, 3f, x2, 1544,0)
+
+inst_395:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x66666666, 0x8, 1b, x2, 1548,0)
+
+inst_396:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x33333333, 0x20, 3f, x2, 1552,0)
+
+inst_397:
+// rs1_val==46339 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x5, 0x8, 1b, x2, 1556,0)
+
+inst_398:
+// rs1_val==46339 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0xaaaaaaaa; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0xaaaaaaaa, 0x200, 3f, x2, 1560,0)
+
+inst_399:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x55555555, 0x80, 3f, x2, 1564,0)
+
+inst_400:
+// rs1_val==46339 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb503; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb503, 0x3, 0x4, 3f, x2, 1568,0)
+
+inst_401:
+// rs1_val==1717986917 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x10000; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x10000, 0x10, 3f, x2, 1572,0)
+
+inst_402:
+// rs1_val==1717986917 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x1; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x1, 0x8, 3f, x2, 1576,0)
+
+inst_403:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xb505, 0x80, 3f, x2, 1580,0)
+
+inst_404:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x66666667, 0x4, 3f, x2, 1584,0)
+
+inst_405:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x33333334, 0x4, 1b, x2, 1588,0)
+
+inst_406:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x6, 0x10, 3f, x2, 1592,0)
+
+inst_407:
+// rs1_val==1717986917 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xaaaaaaab; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xaaaaaaab, 0x556, 1b, x2, 1596,0)
+
+inst_408:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x55555556, 0x2, 3f, x2, 1600,0)
+
+inst_409:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x4, 0x10, 3f, x2, 1604,0)
+
+inst_410:
+// rs1_val==1717986917 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xfffe; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xfffe, 0x4, 1b, x2, 1608,0)
+
+inst_411:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x0, 0x6, 1b, x2, 1612,0)
+
+inst_412:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xb503, 0x10, 3f, x2, 1616,0)
+
+inst_413:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x66666665, 0x40, 3f, x2, 1620,0)
+
+inst_414:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x33333332, 0x8, 1b, x2, 1624,0)
+
+inst_415:
+// rs1_val==1717986917 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xaaaaaaa9; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xaaaaaaa9, 0x0, 1b, x2, 1628,0)
+
+inst_416:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x55555554, 0x80, 3f, x2, 1632,0)
+
+inst_417:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x2, 0x400, 3f, x2, 1636,0)
+
+inst_418:
+// rs1_val==1717986917 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xffff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xffff, 0x0, 3f, x2, 1640,0)
+
+inst_419:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xb504, 0x10, 3f, x2, 1644,0)
+
+inst_420:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x66666666, 0x6, 3f, x2, 1648,0)
+
+inst_421:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x33333333, 0x400, 3f, x2, 1652,0)
+
+inst_422:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x5, 0x6, 3f, x2, 1656,0)
+
+inst_423:
+// rs1_val==1717986917 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0xaaaaaaaa; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0xaaaaaaaa, 0x4, 3f, x2, 1660,0)
+
+inst_424:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x55555555, 0x400, 1b, x2, 1664,0)
+
+inst_425:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666665; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666665, 0x3, 0x40, 3f, x2, 1668,0)
+
+inst_426:
+// rs1_val==858993458 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x10000; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x10000, 0x200, 3f, x2, 1672,0)
+
+inst_427:
+// rs1_val==858993458 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x1; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x1, 0x40, 3f, x2, 1676,0)
+
+inst_428:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0xb505, 0x40, 3f, x2, 1680,0)
+
+inst_429:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x66666667, 0x80, 3f, x2, 1684,0)
+
+inst_430:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x33333334, 0x4, 3f, x2, 1688,0)
+
+inst_431:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x6, 0x4, 1b, x2, 1692,0)
+
+inst_432:
+// rs1_val==858993458 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xaaaaaaab; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0xaaaaaaab, 0xa, 1b, x2, 1696,0)
+
+inst_433:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x55555556, 0x10, 3f, x2, 1700,0)
+
+inst_434:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x4, 0x2, 1b, x2, 1704,0)
+
+inst_435:
+// rs1_val==858993458 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xfffe; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0xfffe, 0x100, 3f, x2, 1708,0)
+
+inst_436:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x0, 0x556, 1b, x2, 1712,0)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0xb503, 0x2, 1b, x2, 1716,0)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x66666665, 0x4, 1b, x2, 1720,0)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x33333332, 0x80, 3f, x2, 1724,0)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xaaaaaaa9; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0xaaaaaaa9, 0x200, 3f, x2, 1728,0)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x55555554, 0x8, 3f, x2, 1732,0)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x2, 0x4, 3f, x2, 1736,0)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xffff; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0xffff, 0x10, 3f, x2, 1740,0)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0xb504, 0x4, 3f, x2, 1744,0)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x66666666, 0x4, 1b, x2, 1748,0)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x33333333, 0x8, 3f, x2, 1752,0)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x5, 0xa, 1b, x2, 1756,0)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0xaaaaaaaa; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0xaaaaaaaa, 0x4, 1b, x2, 1760,0)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x55555555, 0x100, 3f, x2, 1764,0)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333332; op2val:0x3; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333332, 0x3, 0x80, 3f, x2, 1768,0)
+
+inst_451:
+// rs1_val==2863311529 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x10000; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x10000, 0x100, 3f, x2, 1772,0)
+
+inst_452:
+// rs1_val==2863311529 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x1, 0x6, 3f, x2, 1776,0)
+
+inst_453:
+// rs1_val==2863311529 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0xb505, 0x2, 3f, x2, 1780,0)
+
+inst_454:
+// rs1_val==2863311529 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x66666667, 0x4, 3f, x2, 1784,0)
+
+inst_455:
+// rs1_val==2863311529 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x33333334, 0x4, 1b, x2, 1788,0)
+
+inst_456:
+// rs1_val==2863311529 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x6, 0x200, 3f, x2, 1792,0)
+
+inst_457:
+// rs1_val==2863311529 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xaaaaaaab; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0xaaaaaaab, 0x8, 3f, x2, 1796,0)
+
+inst_458:
+// rs1_val==2863311529 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x55555556, 0x556, 1b, x2, 1800,0)
+
+inst_459:
+// rs1_val==2863311529 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x4, 0x8, 3f, x2, 1804,0)
+
+inst_460:
+// rs1_val==2863311529 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xfffe; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0xfffe, 0x4, 3f, x2, 1808,0)
+
+inst_461:
+// rs1_val==2863311529 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x0; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x0, 0x40, 3f, x2, 1812,0)
+
+inst_462:
+// rs1_val==2863311529 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0xb503, 0x400, 1b, x2, 1816,0)
+
+inst_463:
+// rs1_val==2863311529 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x66666665, 0x8, 1b, x2, 1820,0)
+
+inst_464:
+// rs1_val==2863311529 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x33333332, 0x0, 1b, x2, 1824,0)
+
+inst_465:
+// rs1_val==2863311529 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xaaaaaaa9; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0xaaaaaaa9, 0x400, 1b, x2, 1828,0)
+
+inst_466:
+// rs1_val==2863311529 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x55555554, 0x2, 3f, x2, 1832,0)
+
+inst_467:
+// rs1_val==2863311529 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x2, 0x8, 1b, x2, 1836,0)
+
+inst_468:
+// rs1_val==2863311529 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xffff; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0xffff, 0x10, 3f, x2, 1840,0)
+
+inst_469:
+// rs1_val==2863311529 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0xb504, 0x8, 3f, x2, 1844,0)
+
+inst_470:
+// rs1_val==2863311529 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x66666666, 0x2, 1b, x2, 1848,0)
+
+inst_471:
+// rs1_val==2863311529 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x33333333; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x33333333, 0x80, 3f, x2, 1852,0)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x4, 0x4, 3f, x2, 1856,0)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xfffe; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0xfffe, 0x556, 1b, x2, 1860,0)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x0; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x0, 0x40, 3f, x2, 1864,0)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0xb503, 0x6, 1b, x2, 1868,0)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x66666665, 0x8, 3f, x2, 1872,0)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x33333332, 0x10, 3f, x2, 1876,0)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xaaaaaaa9; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0xaaaaaaa9, 0x80, 3f, x2, 1880,0)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x55555554, 0x0, 1b, x2, 1884,0)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x2, 0x0, 3f, x2, 1888,0)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xffff; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0xffff, 0x100, 3f, x2, 1892,0)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0xb504, 0x0, 1b, x2, 1896,0)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x66666666, 0x8, 1b, x2, 1900,0)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x33333333, 0x6, 3f, x2, 1904,0)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x5, 0x4, 1b, x2, 1908,0)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xaaaaaaaa; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0xaaaaaaaa, 0x400, 3f, x2, 1912,0)
+
+inst_487:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x55555555, 0x2, 1b, x2, 1916,0)
+
+inst_488:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x3, 0x20, 3f, x2, 1920,0)
+
+inst_489:
+// rs1_val==2 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x10000; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x10000, 0x2, 3f, x2, 1924,0)
+
+inst_490:
+// rs1_val==2 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x1; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x1, 0x6, 3f, x2, 1928,0)
+
+inst_491:
+// rs1_val==2 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0xb505, 0x10, 3f, x2, 1932,0)
+
+inst_492:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x66666667, 0x400, 3f, x2, 1936,0)
+
+inst_493:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x33333334, 0x400, 1b, x2, 1940,0)
+
+inst_494:
+// rs1_val==2 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x6, 0x6, 3f, x2, 1944,0)
+
+inst_495:
+// rs1_val==2 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0xaaaaaaab, 0x6, 3f, x2, 1948,0)
+
+inst_496:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x55555556, 0x10, 3f, x2, 1952,0)
+
+inst_497:
+// rs1_val==2 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x4, 0x8, 3f, x2, 1956,0)
+
+inst_498:
+// rs1_val==2 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0xfffe; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0xfffe, 0x0, 3f, x2, 1960,0)
+
+inst_499:
+// rs1_val==2 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x0, 0x400, 1b, x2, 1964,0)
+
+inst_500:
+// rs1_val==2 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0xb503, 0x0, 1b, x2, 1968,0)
+
+inst_501:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x66666665, 0x4, 3f, x2, 1972,0)
+
+inst_502:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x33333332, 0x400, 3f, x2, 1976,0)
+
+inst_503:
+// rs1_val==2 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0xaaaaaaa9; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0xaaaaaaa9, 0x2, 1b, x2, 1980,0)
+
+inst_504:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x55555554, 0x2, 1b, x2, 1984,0)
+
+inst_505:
+// rs1_val==2 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x2, 0x4, 1b, x2, 1988,0)
+
+inst_506:
+// rs1_val==2 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0xffff; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0xffff, 0x80, 3f, x2, 1992,0)
+
+inst_507:
+// rs1_val==2 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0xb504, 0x8, 3f, x2, 1996,0)
+
+inst_508:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x66666666; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x66666666, 0x40, 3f, x2, 2000,0)
+
+inst_509:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x33333333; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x33333333, 0x80, 3f, x2, 2004,0)
+
+inst_510:
+// rs1_val==2 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x5, 0x40, 3f, x2, 2008,0)
+
+inst_511:
+// rs1_val==2 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0xaaaaaaaa; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0xaaaaaaaa, 0x200, 3f, x2, 2012,0)
+
+inst_512:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x55555555, 0x2, 3f, x2, 2016,0)
+
+inst_513:
+// rs1_val==2 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x2; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x2, 0x3, 0x0, 3f, x2, 2020,0)
+
+inst_514:
+// rs1_val==65535 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x10000; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x10000, 0x400, 1b, x2, 2024,0)
+
+inst_515:
+// rs1_val==65535 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x1; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x1, 0x400, 1b, x2, 2028,0)
+
+inst_516:
+// rs1_val==65535 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0xb505; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0xb505, 0x80, 3f, x2, 2032,0)
+
+inst_517:
+// rs1_val==65535 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x66666667; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x66666667, 0x556, 1b, x2, 2036,0)
+
+inst_518:
+// rs1_val==65535 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x33333334; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x33333334, 0x200, 3f, x2, 2040,0)
+
+inst_519:
+// rs1_val==65535 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x6, 0x4, 1b, x2, 2044,0)
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_520:
+// rs1_val==65535 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0xaaaaaaab; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0xaaaaaaab, 0x20, 3f, x2, 0,0)
+
+inst_521:
+// rs1_val==65535 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x55555556, 0x100, 3f, x2, 4,0)
+
+inst_522:
+// rs1_val==65535 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x4, 0x6, 1b, x2, 8,0)
+
+inst_523:
+// rs1_val==65535 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0xfffe; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0xfffe, 0x6, 3f, x2, 12,0)
+
+inst_524:
+// rs1_val==65535 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x0; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x0, 0x40, 3f, x2, 16,0)
+
+inst_525:
+// rs1_val==65535 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0xb503, 0x0, 3f, x2, 20,0)
+
+inst_526:
+// rs1_val==65535 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x66666665; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x66666665, 0x200, 3f, x2, 24,0)
+
+inst_527:
+// rs1_val==65535 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x33333332; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x33333332, 0x100, 3f, x2, 28,0)
+
+inst_528:
+// rs1_val==65535 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0xaaaaaaa9; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0xaaaaaaa9, 0xa, 1b, x2, 32,0)
+
+inst_529:
+// rs1_val==65535 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x55555554, 0x200, 3f, x2, 36,0)
+
+inst_530:
+// rs1_val==65535 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x2, 0x0, 3f, x2, 40,0)
+
+inst_531:
+// rs1_val==65535 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0xffff; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0xffff, 0x20, 3f, x2, 44,0)
+
+inst_532:
+// rs1_val==65535 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0xb504, 0x8, 3f, x2, 48,0)
+
+inst_533:
+// rs1_val==65535 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x66666666, 0x0, 3f, x2, 52,0)
+
+inst_534:
+// rs1_val==65535 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x33333333; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x33333333, 0x40, 3f, x2, 56,0)
+
+inst_535:
+// rs1_val==65535 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x5, 0x2, 1b, x2, 60,0)
+
+inst_536:
+// rs1_val==65535 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0xaaaaaaaa; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0xaaaaaaaa, 0x4, 1b, x2, 64,0)
+
+inst_537:
+// rs1_val==65535 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x55555555, 0x0, 1b, x2, 68,0)
+
+inst_538:
+// rs1_val==65535 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xffff; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xffff, 0x3, 0x400, 3f, x2, 72,0)
+
+inst_539:
+// rs1_val==46340 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x10000; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x10000, 0x8, 1b, x2, 76,0)
+
+inst_540:
+// rs1_val==46340 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x1; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x1, 0x100, 3f, x2, 80,0)
+
+inst_541:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0xb505, 0x8, 1b, x2, 84,0)
+
+inst_542:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x66666667, 0x2, 1b, x2, 88,0)
+
+inst_543:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x33333334, 0x6, 3f, x2, 92,0)
+
+inst_544:
+// rs1_val==46340 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x6, 0x6, 1b, x2, 96,0)
+
+inst_545:
+// rs1_val==46340 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0xaaaaaaab; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0xaaaaaaab, 0x80, 3f, x2, 100,0)
+
+inst_546:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x55555556, 0x0, 3f, x2, 104,0)
+
+inst_547:
+// rs1_val==46340 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x4, 0x400, 3f, x2, 108,0)
+
+inst_548:
+// rs1_val==46340 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0xfffe; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0xfffe, 0x8, 3f, x2, 112,0)
+
+inst_549:
+// rs1_val==46340 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x0, 0x400, 1b, x2, 116,0)
+
+inst_550:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0xb503, 0x0, 1b, x2, 120,0)
+
+inst_551:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x66666665, 0xa, 1b, x2, 124,0)
+
+inst_552:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x33333332, 0x40, 3f, x2, 128,0)
+
+inst_553:
+// rs1_val==46340 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0xaaaaaaa9; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0xaaaaaaa9, 0x4, 1b, x2, 132,0)
+
+inst_554:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x55555554, 0x10, 3f, x2, 136,0)
+
+inst_555:
+// rs1_val==46340 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x2, 0x10, 3f, x2, 140,0)
+
+inst_556:
+// rs1_val==46340 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0xffff; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0xffff, 0x2, 1b, x2, 144,0)
+
+inst_557:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0xb504, 0x2, 3f, x2, 148,0)
+
+inst_558:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x66666666, 0x400, 1b, x2, 152,0)
+
+inst_559:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x33333333, 0x4, 1b, x2, 156,0)
+
+inst_560:
+// rs1_val==46340 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x5, 0x6, 1b, x2, 160,0)
+
+inst_561:
+// rs1_val==46340 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0xaaaaaaaa; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0xaaaaaaaa, 0x10, 3f, x2, 164,0)
+
+inst_562:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x55555555, 0x8, 3f, x2, 168,0)
+
+inst_563:
+// rs1_val==46340 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xb504; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xb504, 0x3, 0x0, 3f, x2, 172,0)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x10000; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x10000, 0x100, 3f, x2, 176,0)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x1; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x1, 0x80, 3f, x2, 180,0)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xb505, 0x0, 1b, x2, 184,0)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x66666667, 0x40, 3f, x2, 188,0)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x33333334, 0x6, 1b, x2, 192,0)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x6, 0x4, 1b, x2, 196,0)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xaaaaaaab; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xaaaaaaab, 0x4, 1b, x2, 200,0)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x55555556, 0x20, 3f, x2, 204,0)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x4, 0x10, 3f, x2, 208,0)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xfffe; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xfffe, 0x40, 3f, x2, 212,0)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x0; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x0, 0x10, 3f, x2, 216,0)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xb503, 0x40, 3f, x2, 220,0)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x66666665, 0x8, 1b, x2, 224,0)
+
+inst_577:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x33333332, 0x40, 3f, x2, 228,0)
+
+inst_578:
+// rs1_val==1717986918 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xaaaaaaa9; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xaaaaaaa9, 0x100, 3f, x2, 232,0)
+
+inst_579:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x55555554, 0x10, 3f, x2, 236,0)
+
+inst_580:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x2; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x2, 0x40, 3f, x2, 240,0)
+
+inst_581:
+// rs1_val==1717986918 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xffff; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xffff, 0x4, 1b, x2, 244,0)
+
+inst_582:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xb504, 0x80, 3f, x2, 248,0)
+
+inst_583:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x66666666, 0x4, 3f, x2, 252,0)
+
+inst_584:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x33333333, 0x2, 3f, x2, 256,0)
+
+inst_585:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x5, 0x0, 3f, x2, 260,0)
+
+inst_586:
+// rs1_val==1717986918 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0xaaaaaaaa; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0xaaaaaaaa, 0x6, 3f, x2, 264,0)
+
+inst_587:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x55555555, 0x20, 3f, x2, 268,0)
+
+inst_588:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x66666666; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x66666666, 0x3, 0x4, 3f, x2, 272,0)
+
+inst_589:
+// rs1_val==858993459 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x10000; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x10000, 0x0, 1b, x2, 276,0)
+
+inst_590:
+// rs1_val==858993459 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x1; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x1, 0x2, 3f, x2, 280,0)
+
+inst_591:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0xb505, 0xa, 1b, x2, 284,0)
+
+inst_592:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x66666667, 0x40, 3f, x2, 288,0)
+
+inst_593:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x33333334, 0x400, 3f, x2, 292,0)
+
+inst_594:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x6; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x6, 0x6, 3f, x2, 296,0)
+
+inst_595:
+// rs1_val==858993459 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xaaaaaaab; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0xaaaaaaab, 0xa, 1b, x2, 300,0)
+
+inst_596:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x55555556, 0x8, 3f, x2, 304,0)
+
+inst_597:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x4, 0x10, 3f, x2, 308,0)
+
+inst_598:
+// rs1_val==858993459 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xfffe; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0xfffe, 0x200, 3f, x2, 312,0)
+
+inst_599:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x0; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x0, 0x20, 3f, x2, 316,0)
+
+inst_600:
+// rs1_val==2863311529 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x3, 0x2, 1b, x2, 320,0)
+
+inst_601:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0xb503, 0x40, 3f, x2, 324,0)
+
+inst_602:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x66666665, 0x6, 1b, x2, 328,0)
+
+inst_603:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x33333332, 0x2, 1b, x2, 332,0)
+
+inst_604:
+// rs1_val==858993459 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xaaaaaaa9; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0xaaaaaaa9, 0x2, 3f, x2, 336,0)
+
+inst_605:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x55555554, 0x400, 1b, x2, 340,0)
+
+inst_606:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x2, 0x80, 3f, x2, 344,0)
+
+inst_607:
+// rs1_val==858993459 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xffff; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0xffff, 0x2, 3f, x2, 348,0)
+
+inst_608:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0xb504, 0x8, 3f, x2, 352,0)
+
+inst_609:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x66666666, 0x0, 1b, x2, 356,0)
+
+inst_610:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x33333333, 0x100, 3f, x2, 360,0)
+
+inst_611:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x5, 0x4, 1b, x2, 364,0)
+
+inst_612:
+// rs1_val==858993459 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0xaaaaaaaa; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0xaaaaaaaa, 0x80, 3f, x2, 368,0)
+
+inst_613:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x55555555, 0x4, 3f, x2, 372,0)
+
+inst_614:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x33333333; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x33333333, 0x3, 0x400, 1b, x2, 376,0)
+
+inst_615:
+// rs1_val==5 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x10000; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x10000, 0x400, 1b, x2, 380,0)
+
+inst_616:
+// rs1_val==5 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x1; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x1, 0x8, 1b, x2, 384,0)
+
+inst_617:
+// rs1_val==5 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0xb505, 0x2, 1b, x2, 388,0)
+
+inst_618:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x66666667, 0x400, 1b, x2, 392,0)
+
+inst_619:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x33333334; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x33333334, 0x10, 3f, x2, 396,0)
+
+inst_620:
+// rs1_val==5 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x6; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x6, 0x40, 3f, x2, 400,0)
+
+inst_621:
+// rs1_val==5 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0xaaaaaaab; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0xaaaaaaab, 0x6, 1b, x2, 404,0)
+
+inst_622:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x55555556, 0xa, 1b, x2, 408,0)
+
+inst_623:
+// rs1_val==5 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x4; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x4, 0x556, 1b, x2, 412,0)
+
+inst_624:
+// rs1_val==5 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0xfffe; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0xfffe, 0x10, 3f, x2, 416,0)
+
+inst_625:
+// rs1_val==5 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x0, 0x0, 1b, x2, 420,0)
+
+inst_626:
+// rs1_val==5 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0xb503, 0x400, 3f, x2, 424,0)
+
+inst_627:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x66666665, 0x20, 3f, x2, 428,0)
+
+inst_628:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x33333332; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x33333332, 0x10, 3f, x2, 432,0)
+
+inst_629:
+// rs1_val==5 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0xaaaaaaa9; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0xaaaaaaa9, 0x80, 3f, x2, 436,0)
+
+inst_630:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x55555554, 0x200, 3f, x2, 440,0)
+
+inst_631:
+// rs1_val==5 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x2, 0x100, 3f, x2, 444,0)
+
+inst_632:
+// rs1_val==5 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0xffff; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0xffff, 0x0, 3f, x2, 448,0)
+
+inst_633:
+// rs1_val==5 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0xb504, 0x40, 3f, x2, 452,0)
+
+inst_634:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x66666666; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x66666666, 0xa, 1b, x2, 456,0)
+
+inst_635:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x33333333, 0x8, 3f, x2, 460,0)
+
+inst_636:
+// rs1_val==5 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x5; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x5, 0x0, 1b, x2, 464,0)
+
+inst_637:
+// rs1_val==5 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0xaaaaaaaa; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0xaaaaaaaa, 0x4, 3f, x2, 468,0)
+
+inst_638:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x55555555, 0x80, 3f, x2, 472,0)
+
+inst_639:
+// rs1_val==5 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x5; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x5, 0x3, 0x0, 1b, x2, 476,0)
+
+inst_640:
+// rs1_val==2863311530 and rs2_val==65536, rs1_val == 2863311530
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x10000; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x10000, 0x20, 3f, x2, 480,0)
+
+inst_641:
+// rs1_val==2863311530 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x1; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x1, 0x8, 3f, x2, 484,0)
+
+inst_642:
+// rs1_val==2863311530 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0xb505, 0x0, 1b, x2, 488,0)
+
+inst_643:
+// rs1_val==2863311530 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x66666667, 0x2, 1b, x2, 492,0)
+
+inst_644:
+// rs1_val==2863311530 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x33333334, 0x400, 1b, x2, 496,0)
+
+inst_645:
+// rs1_val==2863311530 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x6; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x6, 0x200, 3f, x2, 500,0)
+
+inst_646:
+// rs1_val==2863311530 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xaaaaaaab; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0xaaaaaaab, 0x4, 3f, x2, 504,0)
+
+inst_647:
+// rs1_val==2863311530 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x55555556, 0x556, 1b, x2, 508,0)
+
+inst_648:
+// rs1_val==2863311530 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x4, 0x0, 1b, x2, 512,0)
+
+inst_649:
+// rs1_val==2863311530 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xfffe; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0xfffe, 0x40, 3f, x2, 516,0)
+
+inst_650:
+// rs1_val==2863311530 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x0, 0x4, 3f, x2, 520,0)
+
+inst_651:
+// rs1_val==2863311530 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0xb503, 0x0, 3f, x2, 524,0)
+
+inst_652:
+// rs1_val==2863311530 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x66666665; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x66666665, 0x200, 3f, x2, 528,0)
+
+inst_653:
+// rs1_val==2863311530 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x33333332; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x33333332, 0x20, 3f, x2, 532,0)
+
+inst_654:
+// rs1_val==2863311530 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xaaaaaaa9; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0xaaaaaaa9, 0x2, 1b, x2, 536,0)
+
+inst_655:
+// rs1_val==2863311530 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x55555554; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x55555554, 0x10, 3f, x2, 540,0)
+
+inst_656:
+// rs1_val==2863311530 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x2, 0x2, 1b, x2, 544,0)
+
+inst_657:
+// rs1_val==2863311530 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xffff; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0xffff, 0x100, 3f, x2, 548,0)
+
+inst_658:
+// rs1_val==2863311530 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0xb504, 0x200, 3f, x2, 552,0)
+
+inst_659:
+// rs1_val==2863311530 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x66666666; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x66666666, 0x10, 3f, x2, 556,0)
+
+inst_660:
+// rs1_val==2863311530 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x33333333, 0xa, 1b, x2, 560,0)
+
+inst_661:
+// rs1_val==2863311530 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x5, 0x200, 3f, x2, 564,0)
+
+inst_662:
+// rs1_val==2863311530 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0xaaaaaaaa; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0xaaaaaaaa, 0x4, 1b, x2, 568,0)
+
+inst_663:
+// rs1_val==2863311530 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x55555555, 0x4, 3f, x2, 572,0)
+
+inst_664:
+// rs1_val==2863311530 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaaa; op2val:0x3; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaaa, 0x3, 0x200, 3f, x2, 576,0)
+
+inst_665:
+// rs1_val==1431655765 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x10000; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x10000, 0x4, 1b, x2, 580,0)
+
+inst_666:
+// rs1_val==1431655765 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x1; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x1, 0x4, 3f, x2, 584,0)
+
+inst_667:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0xb505, 0x2, 1b, x2, 588,0)
+
+inst_668:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x66666667, 0xa, 1b, x2, 592,0)
+
+inst_669:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x33333334, 0x8, 3f, x2, 596,0)
+
+inst_670:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x6; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x6, 0x8, 3f, x2, 600,0)
+
+inst_671:
+// rs1_val==1431655765 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xaaaaaaab; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0xaaaaaaab, 0x4, 3f, x2, 604,0)
+
+inst_672:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x55555556, 0x20, 3f, x2, 608,0)
+
+inst_673:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x4, 0x6, 1b, x2, 612,0)
+
+inst_674:
+// rs1_val==1431655765 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xfffe; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0xfffe, 0x2, 3f, x2, 616,0)
+
+inst_675:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x0; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x0, 0x20, 3f, x2, 620,0)
+
+inst_676:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0xb503, 0xa, 1b, x2, 624,0)
+
+inst_677:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x66666665, 0x2, 3f, x2, 628,0)
+
+inst_678:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x33333332, 0x2, 1b, x2, 632,0)
+
+inst_679:
+// rs1_val==1431655765 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xaaaaaaa9; immval:0x20; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0xaaaaaaa9, 0x20, 3f, x2, 636,0)
+
+inst_680:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x55555554, 0xa, 1b, x2, 640,0)
+
+inst_681:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x2, 0x0, 1b, x2, 644,0)
+
+inst_682:
+// rs1_val==1431655765 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xffff; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0xffff, 0x2, 3f, x2, 648,0)
+
+inst_683:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0xb504, 0x2, 3f, x2, 652,0)
+
+inst_684:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x66666666, 0x40, 3f, x2, 656,0)
+
+inst_685:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x33333333, 0x2, 3f, x2, 660,0)
+
+inst_686:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x5; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x5, 0x100, 3f, x2, 664,0)
+
+inst_687:
+// rs1_val==1431655765 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0xaaaaaaaa; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0xaaaaaaaa, 0x556, 1b, x2, 668,0)
+
+inst_688:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x55555555, 0x400, 3f, x2, 672,0)
+
+inst_689:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555555; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555555, 0x3, 0x400, 1b, x2, 676,0)
+
+inst_690:
+// rs1_val==3 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x10000; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x10000, 0x2, 1b, x2, 680,0)
+
+inst_691:
+// rs1_val==3 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x1; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x1, 0x400, 3f, x2, 684,0)
+
+inst_692:
+// rs1_val==3 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0xb505, 0x10, 3f, x2, 688,0)
+
+inst_693:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x66666667, 0x0, 3f, x2, 692,0)
+
+inst_694:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x33333334, 0x4, 1b, x2, 696,0)
+
+inst_695:
+// rs1_val==3 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x6, 0x80, 3f, x2, 700,0)
+
+inst_696:
+// rs1_val==3 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0xaaaaaaab; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0xaaaaaaab, 0x4, 1b, x2, 704,0)
+
+inst_697:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x55555556, 0x10, 3f, x2, 708,0)
+
+inst_698:
+// rs1_val==3 and rs2_val==4,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x4, 0x8, 1b, x2, 712,0)
+
+inst_699:
+// rs1_val==3 and rs2_val==65534,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0xfffe; immval:0xa; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0xfffe, 0xa, 1b, x2, 716,0)
+
+inst_700:
+// rs1_val==3 and rs2_val==0,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x0, 0x400, 1b, x2, 720,0)
+
+inst_701:
+// rs1_val==3 and rs2_val==46339,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0xb503, 0x80, 3f, x2, 724,0)
+
+inst_702:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x66666665, 0x4, 1b, x2, 728,0)
+
+inst_703:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x33333332; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x33333332, 0x556, 1b, x2, 732,0)
+
+inst_704:
+// rs1_val==3 and rs2_val==2863311529,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0xaaaaaaa9; immval:0x10; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0xaaaaaaa9, 0x10, 3f, x2, 736,0)
+
+inst_705:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x55555554, 0x400, 3f, x2, 740,0)
+
+inst_706:
+// rs1_val==3 and rs2_val==2,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x2, 0x4, 3f, x2, 744,0)
+
+inst_707:
+// rs1_val==3 and rs2_val==65535,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0xffff; immval:0x200; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0xffff, 0x200, 3f, x2, 748,0)
+
+inst_708:
+// rs1_val==3 and rs2_val==46340,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0xb504; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0xb504, 0x40, 3f, x2, 752,0)
+
+inst_709:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x66666666, 0x8, 3f, x2, 756,0)
+
+inst_710:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x33333333; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x33333333, 0x80, 3f, x2, 760,0)
+
+inst_711:
+// rs1_val==3 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x5; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x5, 0x40, 3f, x2, 764,0)
+
+inst_712:
+// rs1_val==3 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0xaaaaaaaa; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0xaaaaaaaa, 0x6, 3f, x2, 768,0)
+
+inst_713:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x55555555, 0x8, 1b, x2, 772,0)
+
+inst_714:
+// rs1_val==3 and rs2_val==3,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x3; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x3, 0x3, 0x4, 3f, x2, 776,0)
+
+inst_715:
+// rs1_val==2863311529 and rs2_val==5,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x5, 0x8, 1b, x2, 780,0)
+
+inst_716:
+// rs1_val==2863311529 and rs2_val==2863311530,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0xaaaaaaaa; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0xaaaaaaaa, 0x6, 1b, x2, 784,0)
+
+inst_717:
+// rs1_val==2863311529 and rs2_val==1431655765,
+// opcode: bltu, op1:x10; op2:x11; op1val:0xaaaaaaa9; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0xaaaaaaa9, 0x55555555, 0x400, 3f, x2, 788,0)
+
+inst_718:
+// rs1_val==1431655764 and rs2_val==65536,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x10000; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x10000, 0x2, 1b, x2, 792,0)
+
+inst_719:
+// rs1_val==1431655764 and rs2_val==1,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x1; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x1, 0x556, 1b, x2, 796,0)
+
+inst_720:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0xb505, 0x0, 1b, x2, 800,0)
+
+inst_721:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667; immval:0x100; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x66666667, 0x100, 3f, x2, 804,0)
+
+inst_722:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x33333334, 0x6, 3f, x2, 808,0)
+
+inst_723:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x6, 0x2, 1b, x2, 812,0)
+
+inst_724:
+// rs1_val==1431655764 and rs2_val==2863311531,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0xaaaaaaab; immval:0x556; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0xaaaaaaab, 0x556, 1b, x2, 816,0)
+
+inst_725:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x55555554, 0x55555556, 0x80, 3f, x2, 820,0)
+
+inst_726:
+// rs2_val == 4294705151,
+// opcode: bltu, op1:x10; op2:x11; op1val:0x9; op2val:0xfffbffff; immval:0x40; align:0
+TEST_BRANCH_OP(bltu, x3, x10, x11, 0x9, 0xfffbffff, 0x40, 3f, x2, 824,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 207*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bne-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bne-01.S
new file mode 100644
index 000000000..58a333c0e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/bne-01.S
@@ -0,0 +1,3010 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the bne instruction of the RISC-V E extension for the bne covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",bne)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 == rs2, rs1==x14, rs2==x14, rs1_val < 0 and rs2_val < 0 and imm_val & 0x03 == 0, rs1_val > rs2_val and imm_val < 0 and imm_val & 0x03 == 0, rs2_val == -268435457, rs1_val == -33554433
+// opcode: bne, op1:x14; op2:x14; op1val:-0x2000001; op2val:-0x2000001; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x3, x14, x14, -0x2000001, -0x2000001, 0x8, 1b, x2, 0,0)
+
+inst_1:
+// rs1 != rs2, rs1==x9, rs2==x10, rs2_val == 2147483647,
+// opcode: bne, op1:x9; op2:x10; op1val:0x9; op2val:0x7fffffff; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x3, x9, x10, 0x9, 0x7fffffff, 0x6, 1b, x2, 4,0)
+
+inst_2:
+// rs1==x12, rs2==x4, rs2_val == -1073741825, rs1_val == -257, rs1_val > rs2_val and imm_val > 0 and imm_val & 0x03 == 0
+// opcode: bne, op1:x12; op2:x4; op1val:-0x101; op2val:-0x40000001; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x3, x12, x4, -0x101, -0x40000001, 0x10, 3f, x2, 8,0)
+
+inst_3:
+// rs1==x6, rs2==x5, rs2_val == -536870913, rs1_val == -2097153
+// opcode: bne, op1:x6; op2:x5; op1val:-0x200001; op2val:-0x20000001; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x3, x6, x5, -0x200001, -0x20000001, 0x2, 1b, x2, 12,0)
+
+inst_4:
+// rs1==x13, rs2==x0, rs2_val == -134217729, rs1_val == -16777217
+// opcode: bne, op1:x13; op2:x0; op1val:-0x1000001; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x3, x13, x0, -0x1000001, 0x0, 0x6, 1b, x2, 16,0)
+
+inst_5:
+// rs1==x7, rs2==x8, rs2_val == -67108865, rs1_val == 64, rs1_val > 0 and rs2_val < 0 and imm_val & 0x03 == 0
+// opcode: bne, op1:x7; op2:x8; op1val:0x40; op2val:-0x4000001; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x3, x7, x8, 0x40, -0x4000001, 0x100, 3f, x2, 20,0)
+
+inst_6:
+// rs1==x1, rs2==x13, rs2_val == -33554433, rs1_val == 4194304
+// opcode: bne, op1:x1; op2:x13; op1val:0x400000; op2val:-0x2000001; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x3, x1, x13, 0x400000, -0x2000001, 0x2, 1b, x2, 24,0)
+
+inst_7:
+// rs1==x5, rs2==x11, rs2_val == -16777217, rs1_val == 2147483647
+// opcode: bne, op1:x5; op2:x11; op1val:0x7fffffff; op2val:-0x1000001; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x13, x5, x11, 0x7fffffff, -0x1000001, 0x2, 3f, x2, 28,0)
+RVTEST_SIGBASE( x5,signature_x5_0)
+
+inst_8:
+// rs1==x0, rs2==x1, rs2_val == -8388609, rs1_val == 8192
+// opcode: bne, op1:x0; op2:x1; op1val:0x0; op2val:-0x800001; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x13, x0, x1, 0x0, -0x800001, 0x4, 1b, x5, 0,0)
+
+inst_9:
+// rs1==x4, rs2==x9, rs2_val == -4194305, rs1_val == -16385
+// opcode: bne, op1:x4; op2:x9; op1val:-0x4001; op2val:-0x400001; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x13, x4, x9, -0x4001, -0x400001, 0x10, 3f, x5, 4,0)
+
+inst_10:
+// rs1==x11, rs2==x15, rs2_val == -2097153, rs1_val < rs2_val and imm_val > 0 and imm_val & 0x03 == 0, rs1_val == -67108865
+// opcode: bne, op1:x11; op2:x15; op1val:-0x4000001; op2val:-0x200001; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x13, x11, x15, -0x4000001, -0x200001, 0x80, 3f, x5, 8,0)
+
+inst_11:
+// rs1==x15, rs2==x3, rs2_val == -1048577,
+// opcode: bne, op1:x15; op2:x3; op1val:0x6; op2val:-0x100001; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x13, x15, x3, 0x6, -0x100001, 0x6, 1b, x5, 12,0)
+
+inst_12:
+// rs1==x10, rs2==x7, rs2_val == -524289, rs1_val == -4097
+// opcode: bne, op1:x10; op2:x7; op1val:-0x1001; op2val:-0x80001; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x13, x10, x7, -0x1001, -0x80001, 0x556, 1b, x5, 16,0)
+
+inst_13:
+// rs1==x3, rs2==x2, rs2_val == -262145,
+// opcode: bne, op1:x3; op2:x2; op1val:0xb505; op2val:-0x40001; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x13, x3, x2, 0xb505, -0x40001, 0x0, 3f, x5, 20,0)
+
+inst_14:
+// rs1==x2, rs2==x12, rs2_val == -131073,
+// opcode: bne, op1:x2; op2:x12; op1val:-0x6; op2val:-0x20001; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x13, x2, x12, -0x6, -0x20001, 0x100, 3f, x5, 24,0)
+
+inst_15:
+// rs1==x8, rs2==x6, rs2_val == -65537,
+// opcode: bne, op1:x8; op2:x6; op1val:0x66666666; op2val:-0x10001; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x13, x8, x6, 0x66666666, -0x10001, 0x200, 3f, x5, 28,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_16:
+// rs2_val == -32769, rs1_val == -2147483648
+// opcode: bne, op1:x10; op2:x11; op1val:-0x80000000; op2val:-0x8001; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x80000000, -0x8001, 0x400, 3f, x1, 0,0)
+
+inst_17:
+// rs2_val == -16385, rs1_val == 32
+// opcode: bne, op1:x10; op2:x11; op1val:0x20; op2val:-0x4001; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x20, -0x4001, 0x6, 1b, x1, 4,0)
+
+inst_18:
+// rs2_val == -8193,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:-0x2001; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, -0x2001, 0x8, 3f, x1, 8,0)
+
+inst_19:
+// rs2_val == -4097, rs1_val == 2048
+// opcode: bne, op1:x10; op2:x11; op1val:0x800; op2val:-0x1001; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x800, -0x1001, 0x2, 3f, x1, 12,0)
+
+inst_20:
+// rs2_val == -2049, rs1_val == -65537
+// opcode: bne, op1:x10; op2:x11; op1val:-0x10001; op2val:-0x801; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x10001, -0x801, 0x0, 3f, x1, 16,0)
+
+inst_21:
+// rs2_val == -1025, rs1_val == -262145
+// opcode: bne, op1:x10; op2:x11; op1val:-0x40001; op2val:-0x401; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x40001, -0x401, 0x0, 3f, x1, 20,0)
+
+inst_22:
+// rs2_val == -513, rs1_val == -268435457
+// opcode: bne, op1:x10; op2:x11; op1val:-0x10000001; op2val:-0x201; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x10000001, -0x201, 0x2, 3f, x1, 24,0)
+
+inst_23:
+// rs2_val == -257,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3fffffff; op2val:-0x101; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3fffffff, -0x101, 0x8, 3f, x1, 28,0)
+
+inst_24:
+// rs2_val == -129, rs1_val < rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x81; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, -0x81, 0x4, 1b, x1, 32,0)
+
+inst_25:
+// rs2_val == -65, rs1_val == -2049
+// opcode: bne, op1:x10; op2:x11; op1val:-0x801; op2val:-0x41; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x801, -0x41, 0x8, 3f, x1, 36,0)
+
+inst_26:
+// rs2_val == -33,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x40000000; op2val:-0x21; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x40000000, -0x21, 0x20, 3f, x1, 40,0)
+
+inst_27:
+// rs2_val == -17, rs1_val == -1073741825
+// opcode: bne, op1:x10; op2:x11; op1val:-0x40000001; op2val:-0x11; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x40000001, -0x11, 0x400, 3f, x1, 44,0)
+
+inst_28:
+// rs2_val == -9,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x9; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, -0x9, 0x100, 3f, x1, 48,0)
+
+inst_29:
+// rs2_val == -5,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x1001; op2val:-0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x1001, -0x5, 0x4, 1b, x1, 52,0)
+
+inst_30:
+// rs2_val == -3, rs1_val == 134217728
+// opcode: bne, op1:x10; op2:x11; op1val:0x8000000; op2val:-0x3; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x8000000, -0x3, 0x556, 1b, x1, 56,0)
+
+inst_31:
+// rs2_val == -2,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x101; op2val:-0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x101, -0x2, 0x2, 3f, x1, 60,0)
+
+inst_32:
+// rs1_val == -536870913,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x20000001; op2val:-0x1001; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x20000001, -0x1001, 0x80, 3f, x1, 64,0)
+
+inst_33:
+// rs1_val == -134217729, rs1_val < 0 and rs2_val > 0 and imm_val & 0x03 == 0, rs2_val == 2
+// opcode: bne, op1:x10; op2:x11; op1val:-0x8000001; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x8000001, 0x2, 0x0, 1b, x1, 68,0)
+
+inst_34:
+// rs1_val == -8388609,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x800001; op2val:-0x11; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x800001, -0x11, 0x200, 3f, x1, 72,0)
+
+inst_35:
+// rs1_val == -4194305,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x400001; op2val:-0x20000001; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x400001, -0x20000001, 0x40, 3f, x1, 76,0)
+
+inst_36:
+// rs1_val == -1048577,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x100001; op2val:-0x800001; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x100001, -0x800001, 0x2, 1b, x1, 80,0)
+
+inst_37:
+// rs1_val == -524289,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x80001; op2val:-0x200001; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x80001, -0x200001, 0x10, 3f, x1, 84,0)
+
+inst_38:
+// rs1_val == -131073, rs2_val == 1024
+// opcode: bne, op1:x10; op2:x11; op1val:-0x20001; op2val:0x400; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x20001, 0x400, 0x10, 3f, x1, 88,0)
+
+inst_39:
+// rs1_val == -32769,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x8001; op2val:-0x80001; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x8001, -0x80001, 0x4, 3f, x1, 92,0)
+
+inst_40:
+// rs1_val == -8193,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x2001; op2val:-0x100001; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x2001, -0x100001, 0x2, 1b, x1, 96,0)
+
+inst_41:
+// rs1_val == -1025, rs2_val == -1431655766
+// opcode: bne, op1:x10; op2:x11; op1val:-0x401; op2val:-0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x401, -0x55555556, 0x556, 1b, x1, 100,0)
+
+inst_42:
+// rs1_val == -513,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x201; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x201, 0x6, 0x20, 3f, x1, 104,0)
+
+inst_43:
+// rs1_val == -129,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x81; op2val:-0x400001; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x81, -0x400001, 0x6, 1b, x1, 108,0)
+
+inst_44:
+// rs1_val == -65,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x41; op2val:-0x1001; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x41, -0x1001, 0x200, 3f, x1, 112,0)
+
+inst_45:
+// rs1_val == -33,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x21; op2val:-0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x21, -0x55555556, 0x80, 3f, x1, 116,0)
+
+inst_46:
+// rs1_val == -17,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x11; op2val:-0x101; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x11, -0x101, 0x6, 1b, x1, 120,0)
+
+inst_47:
+// rs1_val == -9,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x9; op2val:-0x40001; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x9, -0x40001, 0x400, 1b, x1, 124,0)
+
+inst_48:
+// rs1_val == -5,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x5; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x5, 0x6, 0x80, 3f, x1, 128,0)
+
+inst_49:
+// rs1_val == -3, rs2_val == 1431655765
+// opcode: bne, op1:x10; op2:x11; op1val:-0x3; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x3, 0x55555555, 0xa, 1b, x1, 132,0)
+
+inst_50:
+// rs1_val == -2, rs2_val == 524288
+// opcode: bne, op1:x10; op2:x11; op1val:-0x2; op2val:0x80000; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x2, 0x80000, 0x4, 3f, x1, 136,0)
+
+inst_51:
+// rs2_val == -2147483648, rs1_val == -1431655766
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x80000000; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, -0x80000000, 0x2, 1b, x1, 140,0)
+
+inst_52:
+// rs2_val == 1073741824,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x8001; op2val:0x40000000; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x8001, 0x40000000, 0x80, 3f, x1, 144,0)
+
+inst_53:
+// rs2_val == 536870912, rs1_val > 0 and rs2_val > 0 and imm_val & 0x03 == 0
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x20000000; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x20000000, 0x8, 1b, x1, 148,0)
+
+inst_54:
+// rs2_val == 268435456, rs1_val == 16384
+// opcode: bne, op1:x10; op2:x11; op1val:0x4000; op2val:0x10000000; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4000, 0x10000000, 0x2, 3f, x1, 152,0)
+
+inst_55:
+// rs2_val == 134217728,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x8000000; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x8000000, 0x2, 3f, x1, 156,0)
+
+inst_56:
+// rs2_val == 67108864, rs1_val == 8
+// opcode: bne, op1:x10; op2:x11; op1val:0x8; op2val:0x4000000; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x8, 0x4000000, 0xa, 1b, x1, 160,0)
+
+inst_57:
+// rs2_val == 33554432,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x2000000; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x2000000, 0xa, 1b, x1, 164,0)
+
+inst_58:
+// rs2_val == 16777216,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x4000001; op2val:0x1000000; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x4000001, 0x1000000, 0x2, 1b, x1, 168,0)
+
+inst_59:
+// rs2_val == 8388608,
+// opcode: bne, op1:x10; op2:x11; op1val:0x20; op2val:0x800000; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x20, 0x800000, 0x8, 3f, x1, 172,0)
+
+inst_60:
+// rs2_val == 4194304,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x6; op2val:0x400000; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x6, 0x400000, 0x200, 3f, x1, 176,0)
+
+inst_61:
+// rs2_val == 2097152,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x200000; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x200000, 0x20, 3f, x1, 180,0)
+
+inst_62:
+// rs2_val == 1048576,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x100000; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x100000, 0x0, 3f, x1, 184,0)
+
+inst_63:
+// rs2_val == 262144,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2000; op2val:0x40000; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2000, 0x40000, 0x80, 3f, x1, 188,0)
+
+inst_64:
+// rs2_val == 131072,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x9; op2val:0x20000; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x9, 0x20000, 0xa, 1b, x1, 192,0)
+
+inst_65:
+// rs2_val == 65536,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x10000; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x10000, 0xa, 1b, x1, 196,0)
+
+inst_66:
+// rs2_val == 32768,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x801; op2val:0x8000; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x801, 0x8000, 0x0, 1b, x1, 200,0)
+
+inst_67:
+// rs2_val == 16384,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3fffffff; op2val:0x4000; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3fffffff, 0x4000, 0xa, 1b, x1, 204,0)
+
+inst_68:
+// rs2_val == 8192,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x2000001; op2val:0x2000; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x2000001, 0x2000, 0xa, 1b, x1, 208,0)
+
+inst_69:
+// rs2_val == 4096, rs1_val == 32768
+// opcode: bne, op1:x10; op2:x11; op1val:0x8000; op2val:0x1000; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x8000, 0x1000, 0x6, 3f, x1, 212,0)
+
+inst_70:
+// rs2_val == 2048,
+// opcode: bne, op1:x10; op2:x11; op1val:0x40; op2val:0x800; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x40, 0x800, 0x6, 3f, x1, 216,0)
+
+inst_71:
+// rs2_val == 512,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x200; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x200, 0x400, 1b, x1, 220,0)
+
+inst_72:
+// rs2_val == 256,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x100; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x100, 0x200, 3f, x1, 224,0)
+
+inst_73:
+// rs2_val == 128, rs1_val == 65536
+// opcode: bne, op1:x10; op2:x11; op1val:0x10000; op2val:0x80; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x10000, 0x80, 0x80, 3f, x1, 228,0)
+
+inst_74:
+// rs2_val == 64,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x9; op2val:0x40; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x9, 0x40, 0x8, 3f, x1, 232,0)
+
+inst_75:
+// rs2_val == 32,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x201; op2val:0x20; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x201, 0x20, 0x40, 3f, x1, 236,0)
+
+inst_76:
+// rs2_val == 16,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x2000001; op2val:0x10; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x2000001, 0x10, 0x400, 3f, x1, 240,0)
+
+inst_77:
+// rs2_val == 8,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x8; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x8, 0x80, 3f, x1, 244,0)
+
+inst_78:
+// rs2_val == 4,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x80000000; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x80000000, 0x4, 0x2, 1b, x1, 248,0)
+
+inst_79:
+// rs2_val == 1, rs1_val == 2
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x1; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x1, 0x4, 3f, x1, 252,0)
+
+inst_80:
+// rs1_val == 1073741824,
+// opcode: bne, op1:x10; op2:x11; op1val:0x40000000; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x40000000, 0x33333333, 0x2, 1b, x1, 256,0)
+
+inst_81:
+// rs1_val == 536870912,
+// opcode: bne, op1:x10; op2:x11; op1val:0x20000000; op2val:-0x9; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x20000000, -0x9, 0x4, 3f, x1, 260,0)
+
+inst_82:
+// rs1_val == 268435456,
+// opcode: bne, op1:x10; op2:x11; op1val:0x10000000; op2val:0x4; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x10000000, 0x4, 0x10, 3f, x1, 264,0)
+
+inst_83:
+// rs1_val == 67108864,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4000000; op2val:0x800000; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4000000, 0x800000, 0x200, 3f, x1, 268,0)
+
+inst_84:
+// rs1_val == 33554432,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2000000; op2val:0x3fffffff; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2000000, 0x3fffffff, 0x2, 3f, x1, 272,0)
+
+inst_85:
+// rs1_val == 16777216,
+// opcode: bne, op1:x10; op2:x11; op1val:0x1000000; op2val:-0x100001; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x1000000, -0x100001, 0x0, 3f, x1, 276,0)
+
+inst_86:
+// rs1_val == 8388608,
+// opcode: bne, op1:x10; op2:x11; op1val:0x800000; op2val:0x1000; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x800000, 0x1000, 0x8, 1b, x1, 280,0)
+
+inst_87:
+// rs1_val == 2097152,
+// opcode: bne, op1:x10; op2:x11; op1val:0x200000; op2val:-0x401; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x200000, -0x401, 0x200, 3f, x1, 284,0)
+
+inst_88:
+// rs1_val == 1048576,
+// opcode: bne, op1:x10; op2:x11; op1val:0x100000; op2val:-0x1; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x100000, -0x1, 0x8, 3f, x1, 288,0)
+
+inst_89:
+// rs1_val == 524288,
+// opcode: bne, op1:x10; op2:x11; op1val:0x80000; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x80000, 0x0, 0x2, 3f, x1, 292,0)
+
+inst_90:
+// rs1_val == 262144,
+// opcode: bne, op1:x10; op2:x11; op1val:0x40000; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x40000, 0x33333333, 0x0, 3f, x1, 296,0)
+
+inst_91:
+// rs1_val == 131072,
+// opcode: bne, op1:x10; op2:x11; op1val:0x20000; op2val:-0x5; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x20000, -0x5, 0x100, 3f, x1, 300,0)
+
+inst_92:
+// rs1_val == 4096,
+// opcode: bne, op1:x10; op2:x11; op1val:0x1000; op2val:0x100000; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x1000, 0x100000, 0x20, 3f, x1, 304,0)
+
+inst_93:
+// rs1_val == 1024,
+// opcode: bne, op1:x10; op2:x11; op1val:0x400; op2val:0x80; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x400, 0x80, 0x400, 1b, x1, 308,0)
+
+inst_94:
+// rs1_val == 512,
+// opcode: bne, op1:x10; op2:x11; op1val:0x200; op2val:-0x9; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x200, -0x9, 0x0, 3f, x1, 312,0)
+
+inst_95:
+// rs1_val == 256,
+// opcode: bne, op1:x10; op2:x11; op1val:0x100; op2val:0x8000; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x100, 0x8000, 0x556, 1b, x1, 316,0)
+
+inst_96:
+// rs1_val == 128,
+// opcode: bne, op1:x10; op2:x11; op1val:0x80; op2val:0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x80, 0x55555556, 0x20, 3f, x1, 320,0)
+
+inst_97:
+// rs1_val == 16,
+// opcode: bne, op1:x10; op2:x11; op1val:0x10; op2val:-0x81; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x10, -0x81, 0x4, 1b, x1, 324,0)
+
+inst_98:
+// rs1_val == 4, rs1_val==4 and rs2_val==0
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x0, 0x556, 1b, x1, 328,0)
+
+inst_99:
+// rs1_val == 1,
+// opcode: bne, op1:x10; op2:x11; op1val:0x1; op2val:-0x4000001; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x1, -0x4000001, 0x200, 3f, x1, 332,0)
+
+inst_100:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0xb505; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0xb505, 0xa, 1b, x1, 336,0)
+
+inst_101:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, -0xb503, 0x4, 1b, x1, 340,0)
+
+inst_102:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666667; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x66666667, 0x200, 3f, x1, 344,0)
+
+inst_103:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333334; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x33333334, 0x200, 3f, x1, 348,0)
+
+inst_104:
+// rs1_val==46341 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x6, 0x4, 3f, x1, 352,0)
+
+inst_105:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, -0x55555555, 0x2, 3f, x1, 356,0)
+
+inst_106:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x55555556, 0x2, 3f, x1, 360,0)
+
+inst_107:
+// rs1_val==46341 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x4, 0x6, 3f, x1, 364,0)
+
+inst_108:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0xb503, 0x556, 1b, x1, 368,0)
+
+inst_109:
+// rs1_val==46341 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x0, 0x6, 1b, x1, 372,0)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x66666665, 0x6, 3f, x1, 376,0)
+
+inst_111:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x33333332, 0x400, 3f, x1, 380,0)
+
+inst_112:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555554; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x55555554, 0x40, 3f, x1, 384,0)
+
+inst_113:
+// rs1_val==46341 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x2; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x2, 0x20, 3f, x1, 388,0)
+
+inst_114:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0xb504, 0x200, 3f, x1, 392,0)
+
+inst_115:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, -0xb504, 0x6, 3f, x1, 396,0)
+
+inst_116:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x66666666, 0x100, 3f, x1, 400,0)
+
+inst_117:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x33333333; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x33333333, 0x10, 3f, x1, 404,0)
+
+inst_118:
+// rs1_val==46341 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x5, 0x2, 3f, x1, 408,0)
+
+inst_119:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, -0x55555556, 0x6, 1b, x1, 412,0)
+
+inst_120:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x55555555, 0xa, 1b, x1, 416,0)
+
+inst_121:
+// rs1_val==46341 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb505; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb505, 0x3, 0x6, 3f, x1, 420,0)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb505; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0xb505, 0x4, 1b, x1, 424,0)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==-46339, rs1_val == rs2_val and imm_val > 0 and imm_val & 0x03 == 0
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, -0xb503, 0x400, 3f, x1, 428,0)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666667; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x66666667, 0x100, 3f, x1, 432,0)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x33333334, 0x4, 3f, x1, 436,0)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x6, 0x10, 3f, x1, 440,0)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, -0x55555555, 0x556, 1b, x1, 444,0)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x55555556, 0x4, 1b, x1, 448,0)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x4, 0x400, 3f, x1, 452,0)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0xb503, 0x400, 3f, x1, 456,0)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x0, 0x4, 3f, x1, 460,0)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x66666665, 0x6, 1b, x1, 464,0)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333332; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x33333332, 0x6, 1b, x1, 468,0)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555554; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x55555554, 0x2, 1b, x1, 472,0)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x2, 0x400, 3f, x1, 476,0)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0xb504, 0x2, 1b, x1, 480,0)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, -0xb504, 0x400, 3f, x1, 484,0)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x66666666, 0x4, 1b, x1, 488,0)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x33333333, 0x2, 3f, x1, 492,0)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x5, 0x400, 3f, x1, 496,0)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, -0x55555556, 0x6, 1b, x1, 500,0)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x55555555, 0x20, 3f, x1, 504,0)
+
+inst_143:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb503; op2val:0x3; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb503, 0x3, 0x556, 1b, x1, 508,0)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb505; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0xb505, 0x6, 3f, x1, 512,0)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, -0xb503, 0x6, 1b, x1, 516,0)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x66666667, 0x2, 1b, x1, 520,0)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x33333334, 0x0, 3f, x1, 524,0)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x6, 0x0, 3f, x1, 528,0)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, -0x55555555, 0x10, 3f, x1, 532,0)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x55555556, 0x8, 1b, x1, 536,0)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x4, 0x4, 3f, x1, 540,0)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0xb503, 0x4, 1b, x1, 544,0)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x0; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x0, 0x556, 1b, x1, 548,0)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x66666665, 0x2, 3f, x1, 552,0)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333332; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x33333332, 0x20, 3f, x1, 556,0)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555554; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x55555554, 0x8, 3f, x1, 560,0)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x2, 0x6, 3f, x1, 564,0)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0xb504, 0x20, 3f, x1, 568,0)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, -0xb504, 0x2, 1b, x1, 572,0)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x66666666, 0x100, 3f, x1, 576,0)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x33333333, 0x8, 3f, x1, 580,0)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x5; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x5, 0x400, 3f, x1, 584,0)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:-0x55555556; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, -0x55555556, 0x40, 3f, x1, 588,0)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x55555555, 0x4, 3f, x1, 592,0)
+
+inst_165:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666667; op2val:0x3; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666667, 0x3, 0x2, 1b, x1, 596,0)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb505; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0xb505, 0x556, 1b, x1, 600,0)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb503; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, -0xb503, 0x100, 3f, x1, 604,0)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666667; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x66666667, 0x200, 3f, x1, 608,0)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x33333334, 0x100, 3f, x1, 612,0)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x6, 0x0, 1b, x1, 616,0)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, -0x55555555, 0x2, 3f, x1, 620,0)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x55555556, 0x8, 1b, x1, 624,0)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x4; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x4, 0x556, 1b, x1, 628,0)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0xb503, 0x40, 3f, x1, 632,0)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x0; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x0, 0x2, 1b, x1, 636,0)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666665; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x66666665, 0x40, 3f, x1, 640,0)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333332; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x33333332, 0x200, 3f, x1, 644,0)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555554; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x55555554, 0x6, 1b, x1, 648,0)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x2; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x2, 0x556, 1b, x1, 652,0)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0xb504, 0x2, 1b, x1, 656,0)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:-0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, -0xb504, 0x8, 3f, x1, 660,0)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x66666666, 0x0, 3f, x1, 664,0)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x33333333, 0x4, 3f, x1, 668,0)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x5; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x5, 0x6, 3f, x1, 672,0)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:-0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, -0x55555556, 0x200, 3f, x1, 676,0)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x55555555, 0x0, 3f, x1, 680,0)
+
+inst_187:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333334; op2val:0x3; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333334, 0x3, 0x80, 3f, x1, 684,0)
+
+inst_188:
+// rs1_val==6 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0xb505, 0x10, 3f, x1, 688,0)
+
+inst_189:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:-0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, -0xb503, 0x20, 3f, x1, 692,0)
+
+inst_190:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x66666667, 0x2, 3f, x1, 696,0)
+
+inst_191:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x33333334; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x33333334, 0x40, 3f, x1, 700,0)
+
+inst_192:
+// rs1_val==6 and rs2_val==6, rs1_val == rs2_val and imm_val < 0 and imm_val & 0x03 == 0
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x6, 0x4, 1b, x1, 704,0)
+
+inst_193:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, -0x55555555, 0x0, 1b, x1, 708,0)
+
+inst_194:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x55555556, 0x2, 1b, x1, 712,0)
+
+inst_195:
+// rs1_val==6 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x4; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x4, 0x20, 3f, x1, 716,0)
+
+inst_196:
+// rs1_val==6 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0xb503, 0x400, 1b, x1, 720,0)
+
+inst_197:
+// rs1_val==6 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x0; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x0, 0xa, 1b, x1, 724,0)
+
+inst_198:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x66666665, 0x4, 1b, x1, 728,0)
+
+inst_199:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x33333332, 0x0, 3f, x1, 732,0)
+
+inst_200:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x55555554, 0x4, 1b, x1, 736,0)
+
+inst_201:
+// rs1_val==6 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x2, 0x80, 3f, x1, 740,0)
+
+inst_202:
+// rs1_val==6 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0xb504, 0x4, 1b, x1, 744,0)
+
+inst_203:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, -0xb504, 0x6, 3f, x1, 748,0)
+
+inst_204:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x66666666, 0x2, 1b, x1, 752,0)
+
+inst_205:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x33333333, 0x8, 3f, x1, 756,0)
+
+inst_206:
+// rs1_val==6 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x5; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x5, 0x8, 3f, x1, 760,0)
+
+inst_207:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:-0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, -0x55555556, 0x80, 3f, x1, 764,0)
+
+inst_208:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x55555555, 0x556, 1b, x1, 768,0)
+
+inst_209:
+// rs1_val==6 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x6; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x6, 0x3, 0x6, 3f, x1, 772,0)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0xb505, 0x2, 3f, x1, 776,0)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb503; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, -0xb503, 0x40, 3f, x1, 780,0)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666667; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x66666667, 0xa, 1b, x1, 784,0)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x33333334, 0x400, 1b, x1, 788,0)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x6; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x6, 0x20, 3f, x1, 792,0)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555555; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, -0x55555555, 0x556, 1b, x1, 796,0)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x55555556, 0x0, 3f, x1, 800,0)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x4; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x4, 0x40, 3f, x1, 804,0)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb503; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0xb503, 0x556, 1b, x1, 808,0)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x0, 0x4, 3f, x1, 812,0)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666665; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x66666665, 0x80, 3f, x1, 816,0)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333332; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x33333332, 0x80, 3f, x1, 820,0)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x55555554, 0x0, 3f, x1, 824,0)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x2, 0x10, 3f, x1, 828,0)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0xb504, 0x8, 3f, x1, 832,0)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, -0xb504, 0x2, 3f, x1, 836,0)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x66666666; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x66666666, 0x20, 3f, x1, 840,0)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x33333333, 0x6, 1b, x1, 844,0)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x5, 0x2, 3f, x1, 848,0)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, -0x55555556, 0x8, 3f, x1, 852,0)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x55555555, 0x10, 3f, x1, 856,0)
+
+inst_231:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555555; op2val:0x3; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555555, 0x3, 0x20, 3f, x1, 860,0)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0xb505, 0x10, 3f, x1, 864,0)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, -0xb503, 0x2, 1b, x1, 868,0)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x66666667, 0x0, 1b, x1, 872,0)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333334; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x33333334, 0x556, 1b, x1, 876,0)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x6; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x6, 0x556, 1b, x1, 880,0)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, -0x55555555, 0xa, 1b, x1, 884,0)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x55555556, 0x6, 3f, x1, 888,0)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x4; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x4, 0x40, 3f, x1, 892,0)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0xb503, 0x4, 1b, x1, 896,0)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x0, 0x400, 1b, x1, 900,0)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x66666665, 0x2, 3f, x1, 904,0)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x33333332, 0x8, 3f, x1, 908,0)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x55555554, 0x0, 1b, x1, 912,0)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x2, 0x8, 1b, x1, 916,0)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0xb504; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0xb504, 0x100, 3f, x1, 920,0)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:-0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, -0xb504, 0x10, 3f, x1, 924,0)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x66666666, 0x8, 1b, x1, 928,0)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x33333333; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x33333333, 0x20, 3f, x1, 932,0)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x5, 0x4, 3f, x1, 936,0)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:-0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, -0x55555556, 0x400, 3f, x1, 940,0)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x55555555; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x55555555, 0x6, 3f, x1, 944,0)
+
+inst_253:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555556; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555556, 0x3, 0x400, 1b, x1, 948,0)
+
+inst_254:
+// rs1_val==4 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0xb505, 0x2, 1b, x1, 952,0)
+
+inst_255:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:-0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, -0xb503, 0x0, 3f, x1, 956,0)
+
+inst_256:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x66666667; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x66666667, 0x2, 1b, x1, 960,0)
+
+inst_257:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x33333334, 0x0, 3f, x1, 964,0)
+
+inst_258:
+// rs1_val==4 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x6, 0x4, 3f, x1, 968,0)
+
+inst_259:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, -0x55555555, 0x0, 1b, x1, 972,0)
+
+inst_260:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x55555556, 0x0, 3f, x1, 976,0)
+
+inst_261:
+// rs1_val==4 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x4, 0x0, 3f, x1, 980,0)
+
+inst_262:
+// rs1_val==4 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0xb503, 0x8, 3f, x1, 984,0)
+
+inst_263:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x66666665, 0x8, 1b, x1, 988,0)
+
+inst_264:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x33333332, 0x40, 3f, x1, 992,0)
+
+inst_265:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x55555554, 0x556, 1b, x1, 996,0)
+
+inst_266:
+// rs1_val==4 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x2, 0x8, 1b, x1, 1000,0)
+
+inst_267:
+// rs1_val==4 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0xb504, 0x20, 3f, x1, 1004,0)
+
+inst_268:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:-0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, -0xb504, 0x80, 3f, x1, 1008,0)
+
+inst_269:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x66666666; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x66666666, 0x556, 1b, x1, 1012,0)
+
+inst_270:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x33333333, 0x4, 1b, x1, 1016,0)
+
+inst_271:
+// rs1_val==4 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x5; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x5, 0x100, 3f, x1, 1020,0)
+
+inst_272:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:-0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, -0x55555556, 0x20, 3f, x1, 1024,0)
+
+inst_273:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x55555555, 0x8, 3f, x1, 1028,0)
+
+inst_274:
+// rs1_val==4 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x4; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x4, 0x3, 0x10, 3f, x1, 1032,0)
+
+inst_275:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0xb505; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0xb505, 0x80, 3f, x1, 1036,0)
+
+inst_276:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:-0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, -0xb503, 0x8, 1b, x1, 1040,0)
+
+inst_277:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x66666667, 0x400, 3f, x1, 1044,0)
+
+inst_278:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x33333334, 0x2, 3f, x1, 1048,0)
+
+inst_279:
+// rs1_val==46339 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x6, 0x10, 3f, x1, 1052,0)
+
+inst_280:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555555; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, -0x55555555, 0x10, 3f, x1, 1056,0)
+
+inst_281:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555556; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x55555556, 0x80, 3f, x1, 1060,0)
+
+inst_282:
+// rs1_val==46339 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x4, 0x400, 3f, x1, 1064,0)
+
+inst_283:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0xb503; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0xb503, 0xa, 1b, x1, 1068,0)
+
+inst_284:
+// rs1_val==46339 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x0; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x0, 0x40, 3f, x1, 1072,0)
+
+inst_285:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x66666665, 0x6, 3f, x1, 1076,0)
+
+inst_286:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333332; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x33333332, 0x0, 3f, x1, 1080,0)
+
+inst_287:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x55555554, 0x556, 1b, x1, 1084,0)
+
+inst_288:
+// rs1_val==46339 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x2; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x2, 0x10, 3f, x1, 1088,0)
+
+inst_289:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0xb504; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0xb504, 0x20, 3f, x1, 1092,0)
+
+inst_290:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, -0xb504, 0x2, 1b, x1, 1096,0)
+
+inst_291:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x66666666; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x66666666, 0x556, 1b, x1, 1100,0)
+
+inst_292:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x33333333, 0x4, 1b, x1, 1104,0)
+
+inst_293:
+// rs1_val==46339 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x5, 0x20, 3f, x1, 1108,0)
+
+inst_294:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, -0x55555556, 0x8, 3f, x1, 1112,0)
+
+inst_295:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x55555555, 0x2, 3f, x1, 1116,0)
+
+inst_296:
+// rs1_val==46339 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb503; op2val:0x3; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb503, 0x3, 0x0, 3f, x1, 1120,0)
+
+inst_297:
+// rs1_val==0 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0xb505; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0xb505, 0x0, 3f, x1, 1124,0)
+
+inst_298:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:-0xb503; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, -0xb503, 0x80, 3f, x1, 1128,0)
+
+inst_299:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x66666667; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x66666667, 0x10, 3f, x1, 1132,0)
+
+inst_300:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x33333334; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x33333334, 0x80, 3f, x1, 1136,0)
+
+inst_301:
+// rs1_val==0 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x6, 0x4, 1b, x1, 1140,0)
+
+inst_302:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, -0x55555555, 0x0, 1b, x1, 1144,0)
+
+inst_303:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x55555556, 0x0, 3f, x1, 1148,0)
+
+inst_304:
+// rs1_val==0 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x4; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x4, 0x556, 1b, x1, 1152,0)
+
+inst_305:
+// rs1_val==0 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0xb503, 0x400, 3f, x1, 1156,0)
+
+inst_306:
+// rs1_val==0 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x0, 0x8, 3f, x1, 1160,0)
+
+inst_307:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x66666665, 0x2, 1b, x1, 1164,0)
+
+inst_308:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x33333332; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x33333332, 0x400, 3f, x1, 1168,0)
+
+inst_309:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x55555554, 0x4, 3f, x1, 1172,0)
+
+inst_310:
+// rs1_val==0 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x2; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x2, 0x8, 3f, x1, 1176,0)
+
+inst_311:
+// rs1_val==0 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0xb504, 0x2, 1b, x1, 1180,0)
+
+inst_312:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:-0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, -0xb504, 0x400, 1b, x1, 1184,0)
+
+inst_313:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x66666666, 0x8, 1b, x1, 1188,0)
+
+inst_314:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x33333333; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x33333333, 0x200, 3f, x1, 1192,0)
+
+inst_315:
+// rs1_val==0 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x5, 0x2, 3f, x1, 1196,0)
+
+inst_316:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:-0x55555556; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, -0x55555556, 0x556, 1b, x1, 1200,0)
+
+inst_317:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x55555555, 0x0, 1b, x1, 1204,0)
+
+inst_318:
+// rs1_val==0 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x0; op2val:0x3; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x0, 0x3, 0xa, 1b, x1, 1208,0)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0xb505, 0x2, 3f, x1, 1212,0)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, -0xb503, 0x20, 3f, x1, 1216,0)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x66666667, 0x400, 3f, x1, 1220,0)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x33333334, 0x4, 1b, x1, 1224,0)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x6; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x6, 0x4, 3f, x1, 1228,0)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, -0x55555555, 0x0, 3f, x1, 1232,0)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x55555556, 0x6, 3f, x1, 1236,0)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x4, 0x8, 3f, x1, 1240,0)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0xb503, 0x6, 3f, x1, 1244,0)
+
+inst_328:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x0, 0x0, 3f, x1, 1248,0)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x0; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x0, 0x0, 3f, x1, 1252,0)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666665; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x66666665, 0x400, 3f, x1, 1256,0)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333332; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x33333332, 0x100, 3f, x1, 1260,0)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555554; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x55555554, 0xa, 1b, x1, 1264,0)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x2; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x2, 0x2, 3f, x1, 1268,0)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0xb504, 0x400, 1b, x1, 1272,0)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, -0xb504, 0x0, 1b, x1, 1276,0)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x66666666, 0x4, 3f, x1, 1280,0)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333333; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x33333333, 0xa, 1b, x1, 1284,0)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x5; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x5, 0x2, 1b, x1, 1288,0)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, -0x55555556, 0x4, 3f, x1, 1292,0)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x55555555, 0x4, 1b, x1, 1296,0)
+
+inst_341:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x3, 0x4, 1b, x1, 1300,0)
+
+inst_342:
+// rs1_val==5 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0xb505; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0xb505, 0x20, 3f, x1, 1304,0)
+
+inst_343:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, -0xb503, 0x400, 3f, x1, 1308,0)
+
+inst_344:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x66666667; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x66666667, 0x6, 1b, x1, 1312,0)
+
+inst_345:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x33333334, 0x100, 3f, x1, 1316,0)
+
+inst_346:
+// rs1_val==5 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x6, 0x80, 3f, x1, 1320,0)
+
+inst_347:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:-0x55555555; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, -0x55555555, 0x8, 3f, x1, 1324,0)
+
+inst_348:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x55555556, 0x10, 3f, x1, 1328,0)
+
+inst_349:
+// rs1_val==5 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x4, 0x400, 1b, x1, 1332,0)
+
+inst_350:
+// rs1_val==5 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0xb503, 0x8, 3f, x1, 1336,0)
+
+inst_351:
+// rs1_val==5 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x0; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x0, 0x8, 1b, x1, 1340,0)
+
+inst_352:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x66666665, 0x2, 1b, x1, 1344,0)
+
+inst_353:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x33333332; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x33333332, 0x6, 3f, x1, 1348,0)
+
+inst_354:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x55555554; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x55555554, 0x100, 3f, x1, 1352,0)
+
+inst_355:
+// rs1_val==5 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x2, 0x6, 3f, x1, 1356,0)
+
+inst_356:
+// rs1_val==5 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0xb504, 0x2, 1b, x1, 1360,0)
+
+inst_357:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, -0xb504, 0x6, 1b, x1, 1364,0)
+
+inst_358:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x66666666; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x66666666, 0x556, 1b, x1, 1368,0)
+
+inst_359:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x33333333; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x33333333, 0x4, 1b, x1, 1372,0)
+
+inst_360:
+// rs1_val==5 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x5, 0x20, 3f, x1, 1376,0)
+
+inst_361:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, -0x55555556, 0x0, 3f, x1, 1380,0)
+
+inst_362:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x55555555, 0x4, 3f, x1, 1384,0)
+
+inst_363:
+// rs1_val==5 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x5; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x5, 0x3, 0x8, 1b, x1, 1388,0)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb505; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0xb505, 0x80, 3f, x1, 1392,0)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, -0xb503, 0x0, 3f, x1, 1396,0)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666667; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x66666667, 0x40, 3f, x1, 1400,0)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x33333334, 0x4, 1b, x1, 1404,0)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x6, 0x80, 3f, x1, 1408,0)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, -0x55555555, 0x20, 3f, x1, 1412,0)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x55555556, 0x400, 1b, x1, 1416,0)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x4, 0x6, 1b, x1, 1420,0)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0xb503, 0x400, 3f, x1, 1424,0)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x0, 0x4, 3f, x1, 1428,0)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x66666665, 0x2, 1b, x1, 1432,0)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x33333332, 0x2, 1b, x1, 1436,0)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x55555554, 0x200, 3f, x1, 1440,0)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x2, 0x400, 3f, x1, 1444,0)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0xb504, 0x556, 1b, x1, 1448,0)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0xb504; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, -0xb504, 0x0, 1b, x1, 1452,0)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x66666666, 0x6, 1b, x1, 1456,0)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x33333333, 0x2, 3f, x1, 1460,0)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x5, 0x4, 1b, x1, 1464,0)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:-0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, -0x55555556, 0x6, 1b, x1, 1468,0)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x55555555, 0x4, 3f, x1, 1472,0)
+
+inst_385:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:-0x55555556; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x55555556, 0x3, 0x40, 3f, x1, 1476,0)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==46341, rs1_val == 1431655765
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb505; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0xb505, 0x6, 1b, x1, 1480,0)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, -0xb503, 0x10, 3f, x1, 1484,0)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666667; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x66666667, 0x8, 3f, x1, 1488,0)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x33333334, 0x6, 3f, x1, 1492,0)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x6; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x6, 0x556, 1b, x1, 1496,0)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, -0x55555555, 0xa, 1b, x1, 1500,0)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555556; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x55555556, 0x20, 3f, x1, 1504,0)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x4; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x4, 0x0, 1b, x1, 1508,0)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0xb503, 0x10, 3f, x1, 1512,0)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x0, 0x4, 1b, x1, 1516,0)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x66666665, 0x20, 3f, x1, 1520,0)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333332; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x33333332, 0x2, 1b, x1, 1524,0)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x55555554, 0x400, 3f, x1, 1528,0)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x2; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x2, 0x4, 3f, x1, 1532,0)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0xb504, 0x400, 1b, x1, 1536,0)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, -0xb504, 0x6, 3f, x1, 1540,0)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x66666666; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x66666666, 0x4, 1b, x1, 1544,0)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x33333333, 0x400, 1b, x1, 1548,0)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x5, 0x200, 3f, x1, 1552,0)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:-0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, -0x55555556, 0x100, 3f, x1, 1556,0)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x55555555, 0xa, 1b, x1, 1560,0)
+
+inst_407:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555555; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555555, 0x3, 0x8, 1b, x1, 1564,0)
+
+inst_408:
+// rs1_val==3 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0xb505; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0xb505, 0x200, 3f, x1, 1568,0)
+
+inst_409:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:-0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, -0xb503, 0x4, 1b, x1, 1572,0)
+
+inst_410:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x66666667; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x66666667, 0x40, 3f, x1, 1576,0)
+
+inst_411:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x33333334; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x33333334, 0x2, 3f, x1, 1580,0)
+
+inst_412:
+// rs1_val==3 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x6, 0x0, 3f, x1, 1584,0)
+
+inst_413:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:-0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, -0x55555555, 0x4, 1b, x1, 1588,0)
+
+inst_414:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x55555556, 0x8, 3f, x1, 1592,0)
+
+inst_415:
+// rs1_val==3 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x4, 0x4, 1b, x1, 1596,0)
+
+inst_416:
+// rs1_val==3 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0xb503, 0x0, 1b, x1, 1600,0)
+
+inst_417:
+// rs1_val==3 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x0, 0x200, 3f, x1, 1604,0)
+
+inst_418:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x66666665; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x66666665, 0x6, 3f, x1, 1608,0)
+
+inst_419:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x33333332; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x33333332, 0x4, 3f, x1, 1612,0)
+
+inst_420:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x55555554, 0x4, 1b, x1, 1616,0)
+
+inst_421:
+// rs1_val==3 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x2; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x2, 0x100, 3f, x1, 1620,0)
+
+inst_422:
+// rs1_val==3 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0xb504, 0x400, 1b, x1, 1624,0)
+
+inst_423:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:-0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, -0xb504, 0x10, 3f, x1, 1628,0)
+
+inst_424:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x66666666, 0x6, 3f, x1, 1632,0)
+
+inst_425:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x33333333; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x33333333, 0x6, 3f, x1, 1636,0)
+
+inst_426:
+// rs1_val==3 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x5; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x5, 0x4, 1b, x1, 1640,0)
+
+inst_427:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:-0x55555556; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, -0x55555556, 0x8, 1b, x1, 1644,0)
+
+inst_428:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x55555555; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x55555555, 0x2, 1b, x1, 1648,0)
+
+inst_429:
+// rs1_val==3 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x3; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x3, 0x3, 0x400, 3f, x1, 1652,0)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666665; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x66666665, 0x200, 3f, x1, 1656,0)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333332; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x33333332, 0x6, 3f, x1, 1660,0)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555554; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x55555554, 0x556, 1b, x1, 1664,0)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x2; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x2, 0x6, 1b, x1, 1668,0)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0xb504; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0xb504, 0x8, 1b, x1, 1672,0)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:-0xb504; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, -0xb504, 0xa, 1b, x1, 1676,0)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x66666666; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x66666666, 0x100, 3f, x1, 1680,0)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x33333333; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x33333333, 0x2, 1b, x1, 1684,0)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x5, 0x20, 3f, x1, 1688,0)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:-0x55555556; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, -0x55555556, 0xa, 1b, x1, 1692,0)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x55555555, 0xa, 1b, x1, 1696,0)
+
+inst_441:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666665; op2val:0x3; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666665, 0x3, 0x200, 3f, x1, 1700,0)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb505; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0xb505, 0xa, 1b, x1, 1704,0)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, -0xb503, 0x400, 3f, x1, 1708,0)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x66666667, 0x400, 3f, x1, 1712,0)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x33333334, 0x100, 3f, x1, 1716,0)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x6, 0x0, 1b, x1, 1720,0)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555555; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, -0x55555555, 0x40, 3f, x1, 1724,0)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x55555556, 0x4, 1b, x1, 1728,0)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x4; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x4, 0x2, 3f, x1, 1732,0)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0xb503, 0x20, 3f, x1, 1736,0)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x0; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x0, 0x4, 1b, x1, 1740,0)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666665; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x66666665, 0x20, 3f, x1, 1744,0)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333332; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x33333332, 0x20, 3f, x1, 1748,0)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x55555554, 0x0, 1b, x1, 1752,0)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x2; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x2, 0x400, 1b, x1, 1756,0)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0xb504, 0x2, 3f, x1, 1760,0)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:-0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, -0xb504, 0x6, 1b, x1, 1764,0)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x66666666; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x66666666, 0x2, 1b, x1, 1768,0)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x33333333; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x33333333, 0x400, 3f, x1, 1772,0)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x5; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x5, 0x200, 3f, x1, 1776,0)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, -0x55555556, 0x0, 3f, x1, 1780,0)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x55555555; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x55555555, 0x4, 3f, x1, 1784,0)
+
+inst_463:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333332; op2val:0x3; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333332, 0x3, 0x400, 1b, x1, 1788,0)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb505; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0xb505, 0x8, 1b, x1, 1792,0)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, -0xb503, 0x8, 3f, x1, 1796,0)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x66666667, 0x400, 1b, x1, 1800,0)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333334; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x33333334, 0x100, 3f, x1, 1804,0)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x6; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x6, 0x10, 3f, x1, 1808,0)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555555; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, -0x55555555, 0x0, 3f, x1, 1812,0)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x55555556, 0x0, 1b, x1, 1816,0)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x4; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x4, 0x8, 1b, x1, 1820,0)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0xb503, 0x4, 3f, x1, 1824,0)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x0; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x0, 0x200, 3f, x1, 1828,0)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x66666665, 0x4, 1b, x1, 1832,0)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333332; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x33333332, 0x6, 1b, x1, 1836,0)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555554; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x55555554, 0x4, 3f, x1, 1840,0)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x2, 0x0, 1b, x1, 1844,0)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0xb504, 0x80, 3f, x1, 1848,0)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:-0xb504; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, -0xb504, 0x10, 3f, x1, 1852,0)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x66666666; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x66666666, 0x80, 3f, x1, 1856,0)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x33333333; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x33333333, 0x10, 3f, x1, 1860,0)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x5, 0xa, 1b, x1, 1864,0)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:-0x55555556; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, -0x55555556, 0x2, 1b, x1, 1868,0)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x55555555, 0x400, 1b, x1, 1872,0)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x55555554; op2val:0x3; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x55555554, 0x3, 0x10, 3f, x1, 1876,0)
+
+inst_486:
+// rs1_val==2 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0xb505; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0xb505, 0x100, 3f, x1, 1880,0)
+
+inst_487:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, -0xb503, 0x400, 1b, x1, 1884,0)
+
+inst_488:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x66666667, 0x4, 1b, x1, 1888,0)
+
+inst_489:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x33333334; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x33333334, 0x6, 1b, x1, 1892,0)
+
+inst_490:
+// rs1_val==2 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x6, 0x2, 3f, x1, 1896,0)
+
+inst_491:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, -0x55555555, 0x400, 1b, x1, 1900,0)
+
+inst_492:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x55555556, 0x10, 3f, x1, 1904,0)
+
+inst_493:
+// rs1_val==2 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x4; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x4, 0x4, 3f, x1, 1908,0)
+
+inst_494:
+// rs1_val==2 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0xb503, 0x10, 3f, x1, 1912,0)
+
+inst_495:
+// rs1_val==2 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x0; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x0, 0x40, 3f, x1, 1916,0)
+
+inst_496:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x66666665; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x66666665, 0x2, 1b, x1, 1920,0)
+
+inst_497:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x33333332; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x33333332, 0x40, 3f, x1, 1924,0)
+
+inst_498:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x55555554; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x55555554, 0x0, 3f, x1, 1928,0)
+
+inst_499:
+// rs1_val==2 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x2; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x2, 0x80, 3f, x1, 1932,0)
+
+inst_500:
+// rs1_val==2 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0xb504; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0xb504, 0x4, 1b, x1, 1936,0)
+
+inst_501:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:-0xb504; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, -0xb504, 0x2, 1b, x1, 1940,0)
+
+inst_502:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x66666666, 0x0, 1b, x1, 1944,0)
+
+inst_503:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x33333333; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x33333333, 0x200, 3f, x1, 1948,0)
+
+inst_504:
+// rs1_val==2 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x5; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x5, 0x556, 1b, x1, 1952,0)
+
+inst_505:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:-0x55555556; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, -0x55555556, 0x200, 3f, x1, 1956,0)
+
+inst_506:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x55555555, 0xa, 1b, x1, 1960,0)
+
+inst_507:
+// rs1_val==2 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x2; op2val:0x3; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x2, 0x3, 0x6, 1b, x1, 1964,0)
+
+inst_508:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0xb505; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0xb505, 0x10, 3f, x1, 1968,0)
+
+inst_509:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:-0xb503; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, -0xb503, 0x10, 3f, x1, 1972,0)
+
+inst_510:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666667; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x66666667, 0x4, 3f, x1, 1976,0)
+
+inst_511:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333334; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x33333334, 0x556, 1b, x1, 1980,0)
+
+inst_512:
+// rs1_val==46340 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x6; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x6, 0x80, 3f, x1, 1984,0)
+
+inst_513:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555555; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, -0x55555555, 0x400, 3f, x1, 1988,0)
+
+inst_514:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555556; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x55555556, 0x4, 1b, x1, 1992,0)
+
+inst_515:
+// rs1_val==46340 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x4; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x4, 0x40, 3f, x1, 1996,0)
+
+inst_516:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0xb503; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0xb503, 0x20, 3f, x1, 2000,0)
+
+inst_517:
+// rs1_val==46340 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x0; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x0, 0x400, 1b, x1, 2004,0)
+
+inst_518:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666665; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x66666665, 0x4, 1b, x1, 2008,0)
+
+inst_519:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333332; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x33333332, 0x80, 3f, x1, 2012,0)
+
+inst_520:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x55555554, 0x400, 1b, x1, 2016,0)
+
+inst_521:
+// rs1_val==46340 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x2; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x2, 0xa, 1b, x1, 2020,0)
+
+inst_522:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0xb504; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0xb504, 0x200, 3f, x1, 2024,0)
+
+inst_523:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:-0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, -0xb504, 0x80, 3f, x1, 2028,0)
+
+inst_524:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x66666666; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x66666666, 0x0, 1b, x1, 2032,0)
+
+inst_525:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x33333333, 0x0, 1b, x1, 2036,0)
+
+inst_526:
+// rs1_val==46340 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x5; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x5, 0x20, 3f, x1, 2040,0)
+
+inst_527:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:-0x55555556; immval:0x10; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, -0x55555556, 0x10, 3f, x1, 2044,0)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_528:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x55555555, 0x20, 3f, x1, 0,0)
+
+inst_529:
+// rs1_val==46340 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0xb504; op2val:0x3; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0xb504, 0x3, 0x4, 3f, x1, 4,0)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb505; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0xb505, 0x6, 3f, x1, 8,0)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb503; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, -0xb503, 0x6, 1b, x1, 12,0)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666667; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x66666667, 0x400, 1b, x1, 16,0)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333334; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x33333334, 0x400, 3f, x1, 20,0)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x6, 0x2, 1b, x1, 24,0)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555555; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, -0x55555555, 0x20, 3f, x1, 28,0)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555556; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x55555556, 0x400, 1b, x1, 32,0)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x4; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x4, 0x6, 1b, x1, 36,0)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb503; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0xb503, 0x2, 3f, x1, 40,0)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x0; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x0, 0x100, 3f, x1, 44,0)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666665; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x66666665, 0x8, 1b, x1, 48,0)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333332; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x33333332, 0x6, 3f, x1, 52,0)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555554; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x55555554, 0x200, 3f, x1, 56,0)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x2; immval:0x20; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x2, 0x20, 3f, x1, 60,0)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0xb504; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0xb504, 0x400, 1b, x1, 64,0)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:-0xb504; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, -0xb504, 0x80, 3f, x1, 68,0)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x66666666; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x66666666, 0x8, 1b, x1, 72,0)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x33333333; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x33333333, 0x8, 3f, x1, 76,0)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x5; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x5, 0x100, 3f, x1, 80,0)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:-0x55555556; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, -0x55555556, 0x100, 3f, x1, 84,0)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x55555555; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x55555555, 0xa, 1b, x1, 88,0)
+
+inst_551:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:-0xb504; op2val:0x3; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0xb504, 0x3, 0x40, 3f, x1, 92,0)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb505; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0xb505, 0x100, 3f, x1, 96,0)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb503; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, -0xb503, 0x400, 3f, x1, 100,0)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666667; immval:0x200; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x66666667, 0x200, 3f, x1, 104,0)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333334; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x33333334, 0x0, 3f, x1, 108,0)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x6; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x6, 0x0, 3f, x1, 112,0)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555555; immval:0x80; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, -0x55555555, 0x80, 3f, x1, 116,0)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x55555556, 0x6, 3f, x1, 120,0)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x4; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x4, 0x400, 1b, x1, 124,0)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb503; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0xb503, 0x8, 3f, x1, 128,0)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x0; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x0, 0x6, 1b, x1, 132,0)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666665; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x66666665, 0x100, 3f, x1, 136,0)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333332; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x33333332, 0x8, 3f, x1, 140,0)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555554; immval:0x400; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x55555554, 0x400, 3f, x1, 144,0)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x2; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x2, 0x0, 1b, x1, 148,0)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0xb504; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0xb504, 0x6, 1b, x1, 152,0)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:-0xb504; immval:0x556; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, -0xb504, 0x556, 1b, x1, 156,0)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x66666666; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x66666666, 0x6, 1b, x1, 160,0)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x33333333; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x33333333, 0x0, 3f, x1, 164,0)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x5; immval:0xa; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x5, 0xa, 1b, x1, 168,0)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:-0x55555556; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, -0x55555556, 0x0, 1b, x1, 172,0)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x55555555; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x55555555, 0x40, 3f, x1, 176,0)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: bne, op1:x10; op2:x11; op1val:0x66666666; op2val:0x3; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x66666666, 0x3, 0x8, 1b, x1, 180,0)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb505; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0xb505, 0x2, 1b, x1, 184,0)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:-0xb503; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, -0xb503, 0x0, 1b, x1, 188,0)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x66666667; immval:0x0; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x66666667, 0x0, 1b, x1, 192,0)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x33333334; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x33333334, 0x4, 1b, x1, 196,0)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x6; immval:0x2; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x6, 0x2, 3f, x1, 200,0)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:-0x55555555; immval:0x40; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, -0x55555555, 0x40, 3f, x1, 204,0)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x55555556; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x55555556, 0x6, 3f, x1, 208,0)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0x4; immval:0x100; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0x4, 0x100, 3f, x1, 212,0)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: bne, op1:x10; op2:x11; op1val:0x33333333; op2val:0xb503; immval:0x4; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, 0x33333333, 0xb503, 0x4, 3f, x1, 216,0)
+
+inst_583:
+// rs1_val < 0 and rs2_val < 0 and imm_val & 0x03 == 0, rs1_val > rs2_val and imm_val < 0 and imm_val & 0x03 == 0, rs2_val == -268435457, rs1_val == -33554433
+// opcode: bne, op1:x10; op2:x11; op1val:-0x2000001; op2val:-0x10000001; immval:0x8; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x2000001, -0x10000001, 0x8, 1b, x1, 220,0)
+
+inst_584:
+// rs2_val == -134217729, rs1_val == -16777217
+// opcode: bne, op1:x10; op2:x11; op1val:-0x1000001; op2val:-0x8000001; immval:0x6; align:0
+TEST_BRANCH_OP(bne, x2, x10, x11, -0x1000001, -0x8000001, 0x6, 1b, x1, 224,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 57*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/jal-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/jal-01.S
new file mode 100644
index 000000000..b3870318b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/jal-01.S
@@ -0,0 +1,155 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the jal instruction of the RISC-V E extension for the jal covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",jal)
+
+RVTEST_SIGBASE( x7,signature_x7_1)
+
+inst_0:
+// rd==x8, imm_val < 0,
+// opcode: jal; dest:x8; immval:0x4; align:0
+TEST_JAL_OP(x2, x8, 0x4, 1b, x7, 0,0)
+
+inst_1:
+// rd==x14, imm_val == ((2**(18))), imm_val > 0
+// opcode: jal; dest:x14; immval:0x40000; align:0
+TEST_JAL_OP(x2, x14, 0x40000, 3f, x7, 4,0)
+
+inst_2:
+// rd==x9, imm_val == (-(2**(18))),
+// opcode: jal; dest:x9; immval:0x40000; align:0
+TEST_JAL_OP(x2, x9, 0x40000, 1b, x7, 8,0)
+
+inst_3:
+// rd==x12,
+// opcode: jal; dest:x12; immval:0x80000; align:0
+TEST_JAL_OP(x2, x12, 0x80000, 1b, x7, 12,0)
+
+inst_4:
+// rd==x0,
+// opcode: jal; dest:x0; immval:0x80000; align:0
+TEST_JAL_OP(x2, x0, 0x80000, 1b, x7, 16,0)
+
+inst_5:
+// rd==x3,
+// opcode: jal; dest:x3; immval:0x80000; align:0
+TEST_JAL_OP(x2, x3, 0x80000, 1b, x7, 20,0)
+
+inst_6:
+// rd==x4,
+// opcode: jal; dest:x4; immval:0x80000; align:0
+TEST_JAL_OP(x2, x4, 0x80000, 1b, x7, 24,0)
+
+inst_7:
+// rd==x5,
+// opcode: jal; dest:x5; immval:0x80000; align:0
+TEST_JAL_OP(x2, x5, 0x80000, 1b, x7, 28,0)
+
+inst_8:
+// rd==x13,
+// opcode: jal; dest:x13; immval:0x80000; align:0
+TEST_JAL_OP(x2, x13, 0x80000, 1b, x7, 32,0)
+
+inst_9:
+// rd==x6,
+// opcode: jal; dest:x6; immval:0x80000; align:0
+TEST_JAL_OP(x2, x6, 0x80000, 1b, x7, 36,0)
+
+inst_10:
+// rd==x15,
+// opcode: jal; dest:x15; immval:0x80000; align:0
+TEST_JAL_OP(x2, x15, 0x80000, 1b, x7, 40,0)
+
+inst_11:
+// rd==x1,
+// opcode: jal; dest:x1; immval:0x80000; align:0
+TEST_JAL_OP(x2, x1, 0x80000, 1b, x7, 44,0)
+
+inst_12:
+// rd==x2,
+// opcode: jal; dest:x2; immval:0x80000; align:0
+TEST_JAL_OP(x3, x2, 0x80000, 1b, x7, 48,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_13:
+// rd==x7,
+// opcode: jal; dest:x7; immval:0x80000; align:0
+TEST_JAL_OP(x3, x7, 0x80000, 1b, x1, 0,0)
+
+inst_14:
+// rd==x10,
+// opcode: jal; dest:x10; immval:0x80000; align:0
+TEST_JAL_OP(x3, x10, 0x80000, 1b, x1, 4,0)
+
+inst_15:
+// rd==x11,
+// opcode: jal; dest:x11; immval:0x80000; align:0
+TEST_JAL_OP(x3, x11, 0x80000, 1b, x1, 8,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x7_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x7_1:
+ .fill 13*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 3*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/jalr-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/jalr-01.S
new file mode 100644
index 000000000..2b58baf13
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/jalr-01.S
@@ -0,0 +1,215 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the jalr instruction of the RISC-V E extension for the jalr covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",jalr)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rd, rs1==x8, rd==x12, imm_val < 0, imm_val == -129
+// opcode: jalr; op1:x8; dest:x12; immval:-0x81; align:0
+TEST_JALR_OP(x6, x12, x8, -0x81, x1, 0,0)
+
+inst_1:
+// rs1 == rd, rs1==x5, rd==x5, imm_val == 2047, imm_val > 0
+// opcode: jalr; op1:x5; dest:x5; immval:0x7ff; align:0
+TEST_JALR_OP(x6, x5, x5, 0x7ff, x1, 4,0)
+
+inst_2:
+// rs1==x3, rd==x15, imm_val == -1025,
+// opcode: jalr; op1:x3; dest:x15; immval:-0x401; align:0
+TEST_JALR_OP(x6, x15, x3, -0x401, x1, 8,0)
+
+inst_3:
+// rs1==x2, rd==x3, imm_val == -513,
+// opcode: jalr; op1:x2; dest:x3; immval:-0x201; align:0
+TEST_JALR_OP(x6, x3, x2, -0x201, x1, 12,0)
+
+inst_4:
+// rs1==x4, rd==x9, imm_val == -257,
+// opcode: jalr; op1:x4; dest:x9; immval:-0x101; align:0
+TEST_JALR_OP(x6, x9, x4, -0x101, x1, 16,0)
+
+inst_5:
+// rs1==x9, rd==x7, imm_val == -65,
+// opcode: jalr; op1:x9; dest:x7; immval:-0x41; align:0
+TEST_JALR_OP(x6, x7, x9, -0x41, x1, 20,0)
+
+inst_6:
+// rs1==x10, rd==x13, imm_val == -33,
+// opcode: jalr; op1:x10; dest:x13; immval:-0x21; align:0
+TEST_JALR_OP(x6, x13, x10, -0x21, x1, 24,0)
+
+inst_7:
+// rs1==x14, rd==x0, imm_val == -17,
+// opcode: jalr; op1:x14; dest:x0; immval:-0x11; align:0
+TEST_JALR_OP(x5, x0, x14, -0x11, x1, 28,0)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_8:
+// rs1==x15, rd==x4, imm_val == -9,
+// opcode: jalr; op1:x15; dest:x4; immval:-0x9; align:0
+TEST_JALR_OP(x5, x4, x15, -0x9, x3, 0,0)
+
+inst_9:
+// rs1==x7, rd==x14, imm_val == -5,
+// opcode: jalr; op1:x7; dest:x14; immval:-0x5; align:0
+TEST_JALR_OP(x5, x14, x7, -0x5, x3, 4,0)
+
+inst_10:
+// rs1==x11, rd==x2, imm_val == -3,
+// opcode: jalr; op1:x11; dest:x2; immval:-0x3; align:0
+TEST_JALR_OP(x5, x2, x11, -0x3, x3, 8,0)
+
+inst_11:
+// rs1==x6, rd==x11, imm_val == -2,
+// opcode: jalr; op1:x6; dest:x11; immval:-0x2; align:0
+TEST_JALR_OP(x5, x11, x6, -0x2, x3, 12,0)
+
+inst_12:
+// rs1==x12, rd==x8, imm_val == -2048,
+// opcode: jalr; op1:x12; dest:x8; immval:-0x800; align:0
+TEST_JALR_OP(x5, x8, x12, -0x800, x3, 16,0)
+
+inst_13:
+// rs1==x13, rd==x1, imm_val == 1024,
+// opcode: jalr; op1:x13; dest:x1; immval:0x400; align:0
+TEST_JALR_OP(x5, x1, x13, 0x400, x3, 20,0)
+
+inst_14:
+// rs1==x1, rd==x10, imm_val == 512,
+// opcode: jalr; op1:x1; dest:x10; immval:0x200; align:0
+TEST_JALR_OP(x2, x10, x1, 0x200, x3, 24,0)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_15:
+// rd==x6, imm_val == 256,
+// opcode: jalr; op1:x13; dest:x6; immval:0x100; align:0
+TEST_JALR_OP(x2, x6, x13, 0x100, x1, 0,0)
+
+inst_16:
+// imm_val == 128,
+// opcode: jalr; op1:x10; dest:x11; immval:0x80; align:0
+TEST_JALR_OP(x2, x11, x10, 0x80, x1, 4,0)
+
+inst_17:
+// imm_val == 64,
+// opcode: jalr; op1:x10; dest:x11; immval:0x40; align:0
+TEST_JALR_OP(x2, x11, x10, 0x40, x1, 8,0)
+
+inst_18:
+// imm_val == 32,
+// opcode: jalr; op1:x10; dest:x11; immval:0x20; align:0
+TEST_JALR_OP(x2, x11, x10, 0x20, x1, 12,0)
+
+inst_19:
+// imm_val == 16,
+// opcode: jalr; op1:x10; dest:x11; immval:0x10; align:0
+TEST_JALR_OP(x2, x11, x10, 0x10, x1, 16,0)
+
+inst_20:
+// imm_val == 8,
+// opcode: jalr; op1:x10; dest:x11; immval:0x8; align:0
+TEST_JALR_OP(x2, x11, x10, 0x8, x1, 20,0)
+
+inst_21:
+// imm_val == 4,
+// opcode: jalr; op1:x10; dest:x11; immval:0x4; align:0
+TEST_JALR_OP(x2, x11, x10, 0x4, x1, 24,0)
+
+inst_22:
+// imm_val == 1,
+// opcode: jalr; op1:x10; dest:x11; immval:0x1; align:0
+TEST_JALR_OP(x2, x11, x10, 0x1, x1, 28,0)
+
+inst_23:
+// imm_val == -1366,
+// opcode: jalr; op1:x10; dest:x11; immval:-0x556; align:0
+TEST_JALR_OP(x2, x11, x10, -0x556, x1, 32,0)
+
+inst_24:
+// imm_val == 1365,
+// opcode: jalr; op1:x10; dest:x11; immval:0x555; align:0
+TEST_JALR_OP(x2, x11, x10, 0x555, x1, 36,0)
+
+inst_25:
+// imm_val == 2,
+// opcode: jalr; op1:x10; dest:x11; immval:0x2; align:0
+TEST_JALR_OP(x2, x11, x10, 0x2, x1, 40,0)
+
+inst_26:
+// imm_val == -17,
+// opcode: jalr; op1:x10; dest:x11; immval:-0x11; align:0
+TEST_JALR_OP(x2, x11, x10, -0x11, x1, 44,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 12*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lb-align-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lb-align-01.S
new file mode 100644
index 000000000..2b50abf21
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lb-align-01.S
@@ -0,0 +1,165 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the lb instruction of the RISC-V E extension for the lb-align covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",lb-align)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rd, rs1==x8, rd==x9, ea_align == 0 and (imm_val % 4) == 0, imm_val < 0
+// opcode:lb op1:x8; dest:x9; immval:-0x4; align:0
+TEST_LOAD(x1,x4,0,x8,x9,-0x4,0,lb,0)
+
+inst_1:
+// rs1 == rd, rs1==x15, rd==x15, ea_align == 0 and (imm_val % 4) == 1, imm_val > 0
+// opcode:lb op1:x15; dest:x15; immval:0x5; align:0
+TEST_LOAD(x1,x4,0,x15,x15,0x5,4,lb,0)
+
+inst_2:
+// rs1==x2, rd==x8, ea_align == 0 and (imm_val % 4) == 2,
+// opcode:lb op1:x2; dest:x8; immval:0x2; align:0
+TEST_LOAD(x1,x4,0,x2,x8,0x2,8,lb,0)
+
+inst_3:
+// rs1==x11, rd==x7, ea_align == 0 and (imm_val % 4) == 3,
+// opcode:lb op1:x11; dest:x7; immval:-0x101; align:0
+TEST_LOAD(x1,x4,0,x11,x7,-0x101,12,lb,0)
+
+inst_4:
+// rs1==x6, rd==x5, ea_align == 1 and (imm_val % 4) == 0,
+// opcode:lb op1:x6; dest:x5; immval:0x4; align:1
+TEST_LOAD(x1,x4,0,x6,x5,0x4,16,lb,1)
+
+inst_5:
+// rs1==x12, rd==x10, ea_align == 1 and (imm_val % 4) == 1,
+// opcode:lb op1:x12; dest:x10; immval:-0x3; align:1
+TEST_LOAD(x1,x4,0,x12,x10,-0x3,20,lb,1)
+
+inst_6:
+// rs1==x10, rd==x12, ea_align == 1 and (imm_val % 4) == 2,
+// opcode:lb op1:x10; dest:x12; immval:-0x2; align:1
+TEST_LOAD(x1,x4,0,x10,x12,-0x2,24,lb,1)
+
+inst_7:
+// rs1==x9, rd==x6, ea_align == 1 and (imm_val % 4) == 3,
+// opcode:lb op1:x9; dest:x6; immval:-0x401; align:1
+TEST_LOAD(x1,x4,0,x9,x6,-0x401,28,lb,1)
+
+inst_8:
+// rs1==x13, rd==x3, ea_align == 2 and (imm_val % 4) == 0,
+// opcode:lb op1:x13; dest:x3; immval:0x40; align:2
+TEST_LOAD(x1,x4,0,x13,x3,0x40,32,lb,2)
+RVTEST_SIGBASE( x6,signature_x6_0)
+
+inst_9:
+// rs1==x4, rd==x1, ea_align == 2 and (imm_val % 4) == 1,
+// opcode:lb op1:x4; dest:x1; immval:0x5; align:2
+TEST_LOAD(x6,x8,0,x4,x1,0x5,0,lb,2)
+
+inst_10:
+// rs1==x1, rd==x11, imm_val == 0,
+// opcode:lb op1:x1; dest:x11; immval:0x0; align:0
+TEST_LOAD(x6,x8,0,x1,x11,0x0,4,lb,0)
+
+inst_11:
+// rs1==x3, rd==x14, ea_align == 2 and (imm_val % 4) == 2,
+// opcode:lb op1:x3; dest:x14; immval:0x2; align:2
+TEST_LOAD(x6,x8,0,x3,x14,0x2,8,lb,2)
+
+inst_12:
+// rs1==x7, rd==x4, ea_align == 2 and (imm_val % 4) == 3,
+// opcode:lb op1:x7; dest:x4; immval:-0x1; align:2
+TEST_LOAD(x6,x8,0,x7,x4,-0x1,12,lb,2)
+
+inst_13:
+// rs1==x14, rd==x0, ea_align == 3 and (imm_val % 4) == 0,
+// opcode:lb op1:x14; dest:x0; immval:-0x8; align:3
+TEST_LOAD(x6,x8,0,x14,x0,-0x8,16,lb,3)
+
+inst_14:
+// rs1==x5, rd==x13, ea_align == 3 and (imm_val % 4) == 1,
+// opcode:lb op1:x5; dest:x13; immval:-0x3; align:3
+TEST_LOAD(x6,x8,0,x5,x13,-0x3,20,lb,3)
+
+inst_15:
+// rd==x2, ea_align == 3 and (imm_val % 4) == 2,
+// opcode:lb op1:x5; dest:x2; immval:-0x556; align:3
+TEST_LOAD(x6,x8,0,x5,x2,-0x556,24,lb,3)
+
+inst_16:
+// ea_align == 3 and (imm_val % 4) == 3,
+// opcode:lb op1:x10; dest:x11; immval:-0x401; align:3
+TEST_LOAD(x6,x8,0,x10,x11,-0x401,28,lb,3)
+
+inst_17:
+// ea_align == 3 and (imm_val % 4) == 0,
+// opcode:lb op1:x10; dest:x11; immval:-0x8; align:3
+TEST_LOAD(x6,x8,0,x10,x11,-0x8,32,lb,3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_0:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lbu-align-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lbu-align-01.S
new file mode 100644
index 000000000..0e73a6815
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lbu-align-01.S
@@ -0,0 +1,165 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the lbu instruction of the RISC-V E extension for the lbu-align covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",lbu-align)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rd, rs1==x14, rd==x0, ea_align == 0 and (imm_val % 4) == 0, imm_val > 0
+// opcode:lbu op1:x14; dest:x0; immval:0x100; align:0
+TEST_LOAD(x1,x8,0,x14,x0,0x100,0,lbu,0)
+
+inst_1:
+// rs1 == rd, rs1==x13, rd==x13, ea_align == 0 and (imm_val % 4) == 1, imm_val < 0
+// opcode:lbu op1:x13; dest:x13; immval:-0x7; align:0
+TEST_LOAD(x1,x8,0,x13,x13,-0x7,4,lbu,0)
+
+inst_2:
+// rs1==x2, rd==x3, ea_align == 0 and (imm_val % 4) == 2,
+// opcode:lbu op1:x2; dest:x3; immval:0x6; align:0
+TEST_LOAD(x1,x8,0,x2,x3,0x6,8,lbu,0)
+
+inst_3:
+// rs1==x5, rd==x11, ea_align == 0 and (imm_val % 4) == 3,
+// opcode:lbu op1:x5; dest:x11; immval:-0x9; align:0
+TEST_LOAD(x1,x8,0,x5,x11,-0x9,12,lbu,0)
+
+inst_4:
+// rs1==x4, rd==x15, ea_align == 1 and (imm_val % 4) == 0,
+// opcode:lbu op1:x4; dest:x15; immval:-0x4; align:1
+TEST_LOAD(x1,x8,0,x4,x15,-0x4,16,lbu,1)
+
+inst_5:
+// rs1==x6, rd==x9, ea_align == 1 and (imm_val % 4) == 1,
+// opcode:lbu op1:x6; dest:x9; immval:0x1; align:1
+TEST_LOAD(x1,x8,0,x6,x9,0x1,20,lbu,1)
+
+inst_6:
+// rs1==x9, rd==x7, ea_align == 1 and (imm_val % 4) == 2,
+// opcode:lbu op1:x9; dest:x7; immval:0x6; align:1
+TEST_LOAD(x1,x8,0,x9,x7,0x6,24,lbu,1)
+
+inst_7:
+// rs1==x10, rd==x8, ea_align == 1 and (imm_val % 4) == 3,
+// opcode:lbu op1:x10; dest:x8; immval:-0x201; align:1
+TEST_LOAD(x1,x13,0,x10,x8,-0x201,28,lbu,1)
+RVTEST_SIGBASE( x9,signature_x9_0)
+
+inst_8:
+// rs1==x11, rd==x1, ea_align == 2 and (imm_val % 4) == 0,
+// opcode:lbu op1:x11; dest:x1; immval:0x4; align:2
+TEST_LOAD(x9,x13,0,x11,x1,0x4,0,lbu,2)
+
+inst_9:
+// rs1==x3, rd==x4, ea_align == 2 and (imm_val % 4) == 1,
+// opcode:lbu op1:x3; dest:x4; immval:-0x7; align:2
+TEST_LOAD(x9,x13,0,x3,x4,-0x7,4,lbu,2)
+
+inst_10:
+// rs1==x1, rd==x6, imm_val == 0,
+// opcode:lbu op1:x1; dest:x6; immval:0x0; align:0
+TEST_LOAD(x9,x13,0,x1,x6,0x0,8,lbu,0)
+
+inst_11:
+// rs1==x8, rd==x10, ea_align == 2 and (imm_val % 4) == 2,
+// opcode:lbu op1:x8; dest:x10; immval:-0x2; align:2
+TEST_LOAD(x9,x13,0,x8,x10,-0x2,12,lbu,2)
+
+inst_12:
+// rs1==x12, rd==x2, ea_align == 2 and (imm_val % 4) == 3,
+// opcode:lbu op1:x12; dest:x2; immval:-0x401; align:2
+TEST_LOAD(x9,x13,0,x12,x2,-0x401,16,lbu,2)
+
+inst_13:
+// rs1==x7, rd==x5, ea_align == 3 and (imm_val % 4) == 0,
+// opcode:lbu op1:x7; dest:x5; immval:0x4; align:3
+TEST_LOAD(x9,x13,0,x7,x5,0x4,20,lbu,3)
+
+inst_14:
+// rs1==x15, rd==x14, ea_align == 3 and (imm_val % 4) == 1,
+// opcode:lbu op1:x15; dest:x14; immval:0x9; align:3
+TEST_LOAD(x9,x2,0,x15,x14,0x9,24,lbu,3)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_15:
+// rd==x12, ea_align == 3 and (imm_val % 4) == 2,
+// opcode:lbu op1:x14; dest:x12; immval:-0x2; align:3
+TEST_LOAD(x1,x2,0,x14,x12,-0x2,0,lbu,3)
+
+inst_16:
+// ea_align == 3 and (imm_val % 4) == 3,
+// opcode:lbu op1:x10; dest:x11; immval:-0x5; align:3
+TEST_LOAD(x1,x2,0,x10,x11,-0x5,4,lbu,3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x9_0:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 2*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lh-align-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lh-align-01.S
new file mode 100644
index 000000000..516273335
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lh-align-01.S
@@ -0,0 +1,155 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the lh instruction of the RISC-V E extension for the lh-align covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",lh-align)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs1 != rd, rs1==x3, rd==x2, ea_align == 0 and (imm_val % 4) == 0, imm_val == 0
+// opcode:lh op1:x3; dest:x2; immval:0x0; align:0
+TEST_LOAD(x4,x5,0,x3,x2,0x0,0,lh,0)
+
+inst_1:
+// rs1 == rd, rs1==x15, rd==x15, ea_align == 0 and (imm_val % 4) == 1, imm_val > 0
+// opcode:lh op1:x15; dest:x15; immval:0x5; align:0
+TEST_LOAD(x4,x5,0,x15,x15,0x5,4,lh,0)
+
+inst_2:
+// rs1==x12, rd==x14, ea_align == 0 and (imm_val % 4) == 2, imm_val < 0
+// opcode:lh op1:x12; dest:x14; immval:-0x556; align:0
+TEST_LOAD(x4,x5,0,x12,x14,-0x556,8,lh,0)
+
+inst_3:
+// rs1==x14, rd==x8, ea_align == 0 and (imm_val % 4) == 3,
+// opcode:lh op1:x14; dest:x8; immval:0x3ff; align:0
+TEST_LOAD(x4,x5,0,x14,x8,0x3ff,12,lh,0)
+
+inst_4:
+// rs1==x10, rd==x3, ea_align == 2 and (imm_val % 4) == 0,
+// opcode:lh op1:x10; dest:x3; immval:-0x8; align:2
+TEST_LOAD(x4,x5,0,x10,x3,-0x8,16,lh,2)
+
+inst_5:
+// rs1==x6, rd==x1, ea_align == 2 and (imm_val % 4) == 1,
+// opcode:lh op1:x6; dest:x1; immval:0x555; align:2
+TEST_LOAD(x4,x5,0,x6,x1,0x555,20,lh,2)
+
+inst_6:
+// rs1==x13, rd==x6, ea_align == 2 and (imm_val % 4) == 2,
+// opcode:lh op1:x13; dest:x6; immval:-0x6; align:2
+TEST_LOAD(x4,x5,0,x13,x6,-0x6,24,lh,2)
+
+inst_7:
+// rs1==x1, rd==x9, ea_align == 2 and (imm_val % 4) == 3,
+// opcode:lh op1:x1; dest:x9; immval:0x7ff; align:2
+TEST_LOAD(x4,x5,0,x1,x9,0x7ff,28,lh,2)
+
+inst_8:
+// rs1==x9, rd==x0,
+// opcode:lh op1:x9; dest:x0; immval:-0x800; align:0
+TEST_LOAD(x4,x3,0,x9,x0,-0x800,32,lh,0)
+
+inst_9:
+// rs1==x5, rd==x12,
+// opcode:lh op1:x5; dest:x12; immval:-0x800; align:0
+TEST_LOAD(x4,x3,0,x5,x12,-0x800,36,lh,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_10:
+// rs1==x8, rd==x11,
+// opcode:lh op1:x8; dest:x11; immval:-0x800; align:0
+TEST_LOAD(x1,x3,0,x8,x11,-0x800,0,lh,0)
+
+inst_11:
+// rs1==x11, rd==x4,
+// opcode:lh op1:x11; dest:x4; immval:-0x800; align:0
+TEST_LOAD(x1,x3,0,x11,x4,-0x800,4,lh,0)
+
+inst_12:
+// rs1==x2, rd==x7,
+// opcode:lh op1:x2; dest:x7; immval:-0x800; align:0
+TEST_LOAD(x1,x3,0,x2,x7,-0x800,8,lh,0)
+
+inst_13:
+// rs1==x4, rd==x10,
+// opcode:lh op1:x4; dest:x10; immval:-0x800; align:0
+TEST_LOAD(x1,x3,0,x4,x10,-0x800,12,lh,0)
+
+inst_14:
+// rs1==x7, rd==x5,
+// opcode:lh op1:x7; dest:x5; immval:-0x800; align:0
+TEST_LOAD(x1,x3,0,x7,x5,-0x800,16,lh,0)
+
+inst_15:
+// rd==x13,
+// opcode:lh op1:x12; dest:x13; immval:-0x800; align:0
+TEST_LOAD(x1,x3,0,x12,x13,-0x800,20,lh,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 10*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lhu-align-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lhu-align-01.S
new file mode 100644
index 000000000..8d4c28e77
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lhu-align-01.S
@@ -0,0 +1,160 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the lhu instruction of the RISC-V E extension for the lhu-align covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",lhu-align)
+
+RVTEST_SIGBASE( x7,signature_x7_1)
+
+inst_0:
+// rs1 != rd, rs1==x15, rd==x9, ea_align == 0 and (imm_val % 4) == 0, imm_val < 0
+// opcode:lhu op1:x15; dest:x9; immval:-0x4; align:0
+TEST_LOAD(x7,x1,0,x15,x9,-0x4,0,lhu,0)
+
+inst_1:
+// rs1 == rd, rs1==x3, rd==x3, ea_align == 0 and (imm_val % 4) == 1, imm_val > 0
+// opcode:lhu op1:x3; dest:x3; immval:0x5; align:0
+TEST_LOAD(x7,x1,0,x3,x3,0x5,4,lhu,0)
+
+inst_2:
+// rs1==x13, rd==x2, ea_align == 0 and (imm_val % 4) == 2,
+// opcode:lhu op1:x13; dest:x2; immval:-0x556; align:0
+TEST_LOAD(x7,x1,0,x13,x2,-0x556,8,lhu,0)
+
+inst_3:
+// rs1==x4, rd==x11, ea_align == 0 and (imm_val % 4) == 3,
+// opcode:lhu op1:x4; dest:x11; immval:-0x5; align:0
+TEST_LOAD(x7,x1,0,x4,x11,-0x5,12,lhu,0)
+
+inst_4:
+// rs1==x8, rd==x5, ea_align == 2 and (imm_val % 4) == 0,
+// opcode:lhu op1:x8; dest:x5; immval:0x80; align:2
+TEST_LOAD(x7,x1,0,x8,x5,0x80,16,lhu,2)
+
+inst_5:
+// rs1==x6, rd==x10, imm_val == 0,
+// opcode:lhu op1:x6; dest:x10; immval:0x0; align:0
+TEST_LOAD(x7,x1,0,x6,x10,0x0,20,lhu,0)
+
+inst_6:
+// rs1==x10, rd==x1, ea_align == 2 and (imm_val % 4) == 1,
+// opcode:lhu op1:x10; dest:x1; immval:0x9; align:2
+TEST_LOAD(x7,x2,0,x10,x1,0x9,24,lhu,2)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_7:
+// rs1==x1, rd==x13, ea_align == 2 and (imm_val % 4) == 2,
+// opcode:lhu op1:x1; dest:x13; immval:-0xa; align:2
+TEST_LOAD(x3,x2,0,x1,x13,-0xa,0,lhu,2)
+
+inst_8:
+// rs1==x14, rd==x4, ea_align == 2 and (imm_val % 4) == 3,
+// opcode:lhu op1:x14; dest:x4; immval:-0x11; align:2
+TEST_LOAD(x3,x2,0,x14,x4,-0x11,4,lhu,2)
+
+inst_9:
+// rs1==x11, rd==x8,
+// opcode:lhu op1:x11; dest:x8; immval:-0x800; align:0
+TEST_LOAD(x3,x2,0,x11,x8,-0x800,8,lhu,0)
+
+inst_10:
+// rs1==x5, rd==x12,
+// opcode:lhu op1:x5; dest:x12; immval:-0x800; align:0
+TEST_LOAD(x3,x2,0,x5,x12,-0x800,12,lhu,0)
+
+inst_11:
+// rs1==x9, rd==x7,
+// opcode:lhu op1:x9; dest:x7; immval:-0x800; align:0
+TEST_LOAD(x3,x2,0,x9,x7,-0x800,16,lhu,0)
+
+inst_12:
+// rs1==x12, rd==x15,
+// opcode:lhu op1:x12; dest:x15; immval:-0x800; align:0
+TEST_LOAD(x3,x4,0,x12,x15,-0x800,20,lhu,0)
+
+inst_13:
+// rs1==x7, rd==x0,
+// opcode:lhu op1:x7; dest:x0; immval:-0x800; align:0
+TEST_LOAD(x3,x4,0,x7,x0,-0x800,24,lhu,0)
+
+inst_14:
+// rs1==x2, rd==x14,
+// opcode:lhu op1:x2; dest:x14; immval:-0x800; align:0
+TEST_LOAD(x3,x4,0,x2,x14,-0x800,28,lhu,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_15:
+// rd==x6,
+// opcode:lhu op1:x14; dest:x6; immval:-0x800; align:0
+TEST_LOAD(x1,x4,0,x14,x6,-0x800,0,lhu,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x7_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x7_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 1*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lui-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lui-01.S
new file mode 100644
index 000000000..81fbc741d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lui-01.S
@@ -0,0 +1,390 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the lui instruction of the RISC-V E extension for the lui covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",lui)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rd==x3, imm_val == ((2**20)-1), imm_val > 0
+// opcode: lui ; dest:x3; immval:0xfffff
+TEST_CASE(x5, x3, -0x1000, x4, 0, lui x3,0xfffff)
+
+inst_1:
+// rd==x2, imm_val == 524287,
+// opcode: lui ; dest:x2; immval:0x7ffff
+TEST_CASE(x5, x2, 0x7ffff000, x4, 4, lui x2,0x7ffff)
+
+inst_2:
+// rd==x1, imm_val == 786431,
+// opcode: lui ; dest:x1; immval:0xbffff
+TEST_CASE(x5, x1, -0x40001000, x4, 8, lui x1,0xbffff)
+
+inst_3:
+// rd==x8, imm_val == 917503,
+// opcode: lui ; dest:x8; immval:0xdffff
+TEST_CASE(x5, x8, -0x20001000, x4, 12, lui x8,0xdffff)
+
+inst_4:
+// rd==x14, imm_val == 983039,
+// opcode: lui ; dest:x14; immval:0xeffff
+TEST_CASE(x5, x14, -0x10001000, x4, 16, lui x14,0xeffff)
+
+inst_5:
+// rd==x7, imm_val == 1015807,
+// opcode: lui ; dest:x7; immval:0xf7fff
+TEST_CASE(x5, x7, -0x8001000, x4, 20, lui x7,0xf7fff)
+
+inst_6:
+// rd==x13, imm_val == 1032191,
+// opcode: lui ; dest:x13; immval:0xfbfff
+TEST_CASE(x5, x13, -0x4001000, x4, 24, lui x13,0xfbfff)
+
+inst_7:
+// rd==x12, imm_val == 1040383,
+// opcode: lui ; dest:x12; immval:0xfdfff
+TEST_CASE(x5, x12, -0x2001000, x4, 28, lui x12,0xfdfff)
+
+inst_8:
+// rd==x15, imm_val == 1044479,
+// opcode: lui ; dest:x15; immval:0xfefff
+TEST_CASE(x5, x15, -0x1001000, x4, 32, lui x15,0xfefff)
+
+inst_9:
+// rd==x10, imm_val == 1046527,
+// opcode: lui ; dest:x10; immval:0xff7ff
+TEST_CASE(x5, x10, -0x801000, x4, 36, lui x10,0xff7ff)
+
+inst_10:
+// rd==x6, imm_val == 1047551,
+// opcode: lui ; dest:x6; immval:0xffbff
+TEST_CASE(x5, x6, -0x401000, x4, 40, lui x6,0xffbff)
+
+inst_11:
+// rd==x9, imm_val == 1048063,
+// opcode: lui ; dest:x9; immval:0xffdff
+TEST_CASE(x2, x9, -0x201000, x4, 44, lui x9,0xffdff)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_12:
+// rd==x4, imm_val == 1048319,
+// opcode: lui ; dest:x4; immval:0xffeff
+TEST_CASE(x2, x4, -0x101000, x1, 0, lui x4,0xffeff)
+
+inst_13:
+// rd==x0, imm_val == 1048447,
+// opcode: lui ; dest:x0; immval:0xfff7f
+TEST_CASE(x2, x0, 0, x1, 4, lui x0,0xfff7f)
+
+inst_14:
+// rd==x5, imm_val == 1048511,
+// opcode: lui ; dest:x5; immval:0xfffbf
+TEST_CASE(x2, x5, -0x41000, x1, 8, lui x5,0xfffbf)
+
+inst_15:
+// rd==x11, imm_val == 1048543,
+// opcode: lui ; dest:x11; immval:0xfffdf
+TEST_CASE(x2, x11, -0x21000, x1, 12, lui x11,0xfffdf)
+
+inst_16:
+// imm_val == 1048559,
+// opcode: lui ; dest:x10; immval:0xfffef
+TEST_CASE(x2, x10, -0x11000, x1, 16, lui x10,0xfffef)
+
+inst_17:
+// imm_val == 1048567,
+// opcode: lui ; dest:x10; immval:0xffff7
+TEST_CASE(x2, x10, -0x9000, x1, 20, lui x10,0xffff7)
+
+inst_18:
+// imm_val == 1048571,
+// opcode: lui ; dest:x10; immval:0xffffb
+TEST_CASE(x2, x10, -0x5000, x1, 24, lui x10,0xffffb)
+
+inst_19:
+// imm_val == 1048573,
+// opcode: lui ; dest:x10; immval:0xffffd
+TEST_CASE(x2, x10, -0x3000, x1, 28, lui x10,0xffffd)
+
+inst_20:
+// imm_val == 1048574,
+// opcode: lui ; dest:x10; immval:0xffffe
+TEST_CASE(x2, x10, -0x2000, x1, 32, lui x10,0xffffe)
+
+inst_21:
+// imm_val == 524288,
+// opcode: lui ; dest:x10; immval:0x80000
+TEST_CASE(x2, x10, -0x80000000, x1, 36, lui x10,0x80000)
+
+inst_22:
+// imm_val == 262144,
+// opcode: lui ; dest:x10; immval:0x40000
+TEST_CASE(x2, x10, 0x40000000, x1, 40, lui x10,0x40000)
+
+inst_23:
+// imm_val == 131072,
+// opcode: lui ; dest:x10; immval:0x20000
+TEST_CASE(x2, x10, 0x20000000, x1, 44, lui x10,0x20000)
+
+inst_24:
+// imm_val == 65536,
+// opcode: lui ; dest:x10; immval:0x10000
+TEST_CASE(x2, x10, 0x10000000, x1, 48, lui x10,0x10000)
+
+inst_25:
+// imm_val == 32768,
+// opcode: lui ; dest:x10; immval:0x8000
+TEST_CASE(x2, x10, 0x8000000, x1, 52, lui x10,0x8000)
+
+inst_26:
+// imm_val == 16384,
+// opcode: lui ; dest:x10; immval:0x4000
+TEST_CASE(x2, x10, 0x4000000, x1, 56, lui x10,0x4000)
+
+inst_27:
+// imm_val == 8192,
+// opcode: lui ; dest:x10; immval:0x2000
+TEST_CASE(x2, x10, 0x2000000, x1, 60, lui x10,0x2000)
+
+inst_28:
+// imm_val == 4096,
+// opcode: lui ; dest:x10; immval:0x1000
+TEST_CASE(x2, x10, 0x1000000, x1, 64, lui x10,0x1000)
+
+inst_29:
+// imm_val == 2048,
+// opcode: lui ; dest:x10; immval:0x800
+TEST_CASE(x2, x10, 0x800000, x1, 68, lui x10,0x800)
+
+inst_30:
+// imm_val == 1024, imm_val==1024
+// opcode: lui ; dest:x10; immval:0x400
+TEST_CASE(x2, x10, 0x400000, x1, 72, lui x10,0x400)
+
+inst_31:
+// imm_val == 512,
+// opcode: lui ; dest:x10; immval:0x200
+TEST_CASE(x2, x10, 0x200000, x1, 76, lui x10,0x200)
+
+inst_32:
+// imm_val == 256,
+// opcode: lui ; dest:x10; immval:0x100
+TEST_CASE(x2, x10, 0x100000, x1, 80, lui x10,0x100)
+
+inst_33:
+// imm_val == 128,
+// opcode: lui ; dest:x10; immval:0x80
+TEST_CASE(x2, x10, 0x80000, x1, 84, lui x10,0x80)
+
+inst_34:
+// imm_val == 64,
+// opcode: lui ; dest:x10; immval:0x40
+TEST_CASE(x2, x10, 0x40000, x1, 88, lui x10,0x40)
+
+inst_35:
+// imm_val == 32,
+// opcode: lui ; dest:x10; immval:0x20
+TEST_CASE(x2, x10, 0x20000, x1, 92, lui x10,0x20)
+
+inst_36:
+// imm_val == 16,
+// opcode: lui ; dest:x10; immval:0x10
+TEST_CASE(x2, x10, 0x10000, x1, 96, lui x10,0x10)
+
+inst_37:
+// imm_val==349525, imm_val == 349525
+// opcode: lui ; dest:x10; immval:0x55555
+TEST_CASE(x2, x10, 0x55555000, x1, 100, lui x10,0x55555)
+
+inst_38:
+// imm_val==3,
+// opcode: lui ; dest:x10; immval:0x3
+TEST_CASE(x2, x10, 0x3000, x1, 104, lui x10,0x3)
+
+inst_39:
+// imm_val == 699050, imm_val==699050
+// opcode: lui ; dest:x10; immval:0xaaaaa
+TEST_CASE(x2, x10, -0x55556000, x1, 108, lui x10,0xaaaaa)
+
+inst_40:
+// imm_val == 0, imm_val==0
+// opcode: lui ; dest:x10; immval:0x0
+TEST_CASE(x2, x10, 0x0, x1, 112, lui x10,0x0)
+
+inst_41:
+// imm_val == 8,
+// opcode: lui ; dest:x10; immval:0x8
+TEST_CASE(x2, x10, 0x8000, x1, 116, lui x10,0x8)
+
+inst_42:
+// imm_val == 4, imm_val==4
+// opcode: lui ; dest:x10; immval:0x4
+TEST_CASE(x2, x10, 0x4000, x1, 120, lui x10,0x4)
+
+inst_43:
+// imm_val == 2, imm_val==2
+// opcode: lui ; dest:x10; immval:0x2
+TEST_CASE(x2, x10, 0x2000, x1, 124, lui x10,0x2)
+
+inst_44:
+// imm_val == 1, imm_val==1
+// opcode: lui ; dest:x10; immval:0x1
+TEST_CASE(x2, x10, 0x1000, x1, 128, lui x10,0x1)
+
+inst_45:
+// imm_val==725,
+// opcode: lui ; dest:x10; immval:0x2d5
+TEST_CASE(x2, x10, 0x2d5000, x1, 132, lui x10,0x2d5)
+
+inst_46:
+// imm_val==419431,
+// opcode: lui ; dest:x10; immval:0x66667
+TEST_CASE(x2, x10, 0x66667000, x1, 136, lui x10,0x66667)
+
+inst_47:
+// imm_val==209716,
+// opcode: lui ; dest:x10; immval:0x33334
+TEST_CASE(x2, x10, 0x33334000, x1, 140, lui x10,0x33334)
+
+inst_48:
+// imm_val==6,
+// opcode: lui ; dest:x10; immval:0x6
+TEST_CASE(x2, x10, 0x6000, x1, 144, lui x10,0x6)
+
+inst_49:
+// imm_val==699051,
+// opcode: lui ; dest:x10; immval:0xaaaab
+TEST_CASE(x2, x10, -0x55555000, x1, 148, lui x10,0xaaaab)
+
+inst_50:
+// imm_val==349526,
+// opcode: lui ; dest:x10; immval:0x55556
+TEST_CASE(x2, x10, 0x55556000, x1, 152, lui x10,0x55556)
+
+inst_51:
+// imm_val==1022,
+// opcode: lui ; dest:x10; immval:0x3fe
+TEST_CASE(x2, x10, 0x3fe000, x1, 156, lui x10,0x3fe)
+
+inst_52:
+// imm_val==723,
+// opcode: lui ; dest:x10; immval:0x2d3
+TEST_CASE(x2, x10, 0x2d3000, x1, 160, lui x10,0x2d3)
+
+inst_53:
+// imm_val==419429,
+// opcode: lui ; dest:x10; immval:0x66665
+TEST_CASE(x2, x10, 0x66665000, x1, 164, lui x10,0x66665)
+
+inst_54:
+// imm_val==209714,
+// opcode: lui ; dest:x10; immval:0x33332
+TEST_CASE(x2, x10, 0x33332000, x1, 168, lui x10,0x33332)
+
+inst_55:
+// imm_val==699049,
+// opcode: lui ; dest:x10; immval:0xaaaa9
+TEST_CASE(x2, x10, -0x55557000, x1, 172, lui x10,0xaaaa9)
+
+inst_56:
+// imm_val==349524,
+// opcode: lui ; dest:x10; immval:0x55554
+TEST_CASE(x2, x10, 0x55554000, x1, 176, lui x10,0x55554)
+
+inst_57:
+// imm_val==1023,
+// opcode: lui ; dest:x10; immval:0x3ff
+TEST_CASE(x2, x10, 0x3ff000, x1, 180, lui x10,0x3ff)
+
+inst_58:
+// imm_val==724,
+// opcode: lui ; dest:x10; immval:0x2d4
+TEST_CASE(x2, x10, 0x2d4000, x1, 184, lui x10,0x2d4)
+
+inst_59:
+// imm_val==419430,
+// opcode: lui ; dest:x10; immval:0x66666
+TEST_CASE(x2, x10, 0x66666000, x1, 188, lui x10,0x66666)
+
+inst_60:
+// imm_val==209715,
+// opcode: lui ; dest:x10; immval:0x33333
+TEST_CASE(x2, x10, 0x33333000, x1, 192, lui x10,0x33333)
+
+inst_61:
+// imm_val==5,
+// opcode: lui ; dest:x10; immval:0x5
+TEST_CASE(x2, x10, 0x5000, x1, 196, lui x10,0x5)
+
+inst_62:
+// imm_val == 1048447,
+// opcode: lui ; dest:x10; immval:0xfff7f
+TEST_CASE(x2, x10, -0x81000, x1, 200, lui x10,0xfff7f)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 12*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 51*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lw-align-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lw-align-01.S
new file mode 100644
index 000000000..a8dafa825
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/lw-align-01.S
@@ -0,0 +1,160 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the lw instruction of the RISC-V E extension for the lw-align covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",lw-align)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 != rd, rs1==x11, rd==x1, ea_align == 0 and (imm_val % 4) == 0, imm_val < 0
+// opcode:lw op1:x11; dest:x1; immval:-0x400; align:0
+TEST_LOAD(x2,x6,0,x11,x1,-0x400,0,lw,0)
+
+inst_1:
+// rs1 == rd, rs1==x14, rd==x14, ea_align == 0 and (imm_val % 4) == 1,
+// opcode:lw op1:x14; dest:x14; immval:-0x3; align:0
+TEST_LOAD(x2,x6,0,x14,x14,-0x3,4,lw,0)
+
+inst_2:
+// rs1==x4, rd==x8, ea_align == 0 and (imm_val % 4) == 2,
+// opcode:lw op1:x4; dest:x8; immval:-0x556; align:0
+TEST_LOAD(x2,x6,0,x4,x8,-0x556,8,lw,0)
+
+inst_3:
+// rs1==x1, rd==x10, ea_align == 0 and (imm_val % 4) == 3,
+// opcode:lw op1:x1; dest:x10; immval:-0x5; align:0
+TEST_LOAD(x2,x6,0,x1,x10,-0x5,12,lw,0)
+
+inst_4:
+// rs1==x12, rd==x15, imm_val == 0,
+// opcode:lw op1:x12; dest:x15; immval:0x0; align:0
+TEST_LOAD(x2,x6,0,x12,x15,0x0,16,lw,0)
+
+inst_5:
+// rs1==x7, rd==x13, imm_val > 0,
+// opcode:lw op1:x7; dest:x13; immval:0x20; align:0
+TEST_LOAD(x2,x6,0,x7,x13,0x20,20,lw,0)
+
+inst_6:
+// rs1==x5, rd==x3,
+// opcode:lw op1:x5; dest:x3; immval:-0x800; align:0
+TEST_LOAD(x2,x6,0,x5,x3,-0x800,24,lw,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_7:
+// rs1==x8, rd==x0,
+// opcode:lw op1:x8; dest:x0; immval:-0x800; align:0
+TEST_LOAD(x1,x11,0,x8,x0,-0x800,0,lw,0)
+
+inst_8:
+// rs1==x3, rd==x12,
+// opcode:lw op1:x3; dest:x12; immval:-0x800; align:0
+TEST_LOAD(x1,x11,0,x3,x12,-0x800,4,lw,0)
+
+inst_9:
+// rs1==x13, rd==x4,
+// opcode:lw op1:x13; dest:x4; immval:-0x800; align:0
+TEST_LOAD(x1,x11,0,x13,x4,-0x800,8,lw,0)
+
+inst_10:
+// rs1==x15, rd==x7,
+// opcode:lw op1:x15; dest:x7; immval:-0x800; align:0
+TEST_LOAD(x1,x11,0,x15,x7,-0x800,12,lw,0)
+
+inst_11:
+// rs1==x9, rd==x5,
+// opcode:lw op1:x9; dest:x5; immval:-0x800; align:0
+TEST_LOAD(x1,x11,0,x9,x5,-0x800,16,lw,0)
+
+inst_12:
+// rs1==x6, rd==x9,
+// opcode:lw op1:x6; dest:x9; immval:-0x800; align:0
+TEST_LOAD(x1,x11,0,x6,x9,-0x800,20,lw,0)
+
+inst_13:
+// rs1==x10, rd==x2,
+// opcode:lw op1:x10; dest:x2; immval:-0x800; align:0
+TEST_LOAD(x1,x11,0,x10,x2,-0x800,24,lw,0)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_14:
+// rs1==x2, rd==x6,
+// opcode:lw op1:x2; dest:x6; immval:-0x800; align:0
+TEST_LOAD(x1,x3,0,x2,x6,-0x800,0,lw,0)
+
+inst_15:
+// rd==x11,
+// opcode:lw op1:x5; dest:x11; immval:-0x800; align:0
+TEST_LOAD(x1,x3,0,x5,x11,-0x800,4,lw,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 2*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/or-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/or-01.S
new file mode 100644
index 000000000..e5032b059
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/or-01.S
@@ -0,0 +1,3035 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the or instruction of the RISC-V E extension for the or covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",or)
+
+RVTEST_SIGBASE( x5,signature_x5_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x10, rs2==x3, rd==x2, rs1_val != rs2_val, rs2_val == 536870912, rs1_val == -2097153, rs1_val < 0 and rs2_val > 0
+// opcode: or ; op1:x10; op2:x3; dest:x2; op1val:-0x200001; op2val:0x20000000
+TEST_RR_OP(or, x2, x10, x3, 0xffdfffff, -0x200001, 0x20000000, x5, 0, x4)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x14, rs2==x10, rd==x14, rs2_val == 2147483647, rs1_val > 0 and rs2_val > 0, rs2_val == (2**(xlen-1)-1)
+// opcode: or ; op1:x14; op2:x10; dest:x14; op1val:0x5; op2val:0x7fffffff
+TEST_RR_OP(or, x14, x14, x10, 0x7fffffff, 0x5, 0x7fffffff, x5, 4, x4)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x1, rs2==x6, rd==x6, rs2_val == -1073741825, rs1_val < 0 and rs2_val < 0
+// opcode: or ; op1:x1; op2:x6; dest:x6; op1val:-0xb504; op2val:-0x40000001
+TEST_RR_OP(or, x6, x1, x6, 0xffffffff, -0xb504, -0x40000001, x5, 8, x4)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x11, rs2==x11, rd==x9, rs2_val == -536870913,
+// opcode: or ; op1:x11; op2:x11; dest:x9; op1val:-0x40000000; op2val:-0x40000000
+TEST_RR_OP(or, x9, x11, x11, 0xc0000000, -0x40000000, -0x40000000, x5, 12, x4)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x8, rs2==x8, rd==x8, rs2_val == -268435457, rs1_val == 16384, rs1_val > 0 and rs2_val < 0
+// opcode: or ; op1:x8; op2:x8; dest:x8; op1val:0x4000; op2val:0x4000
+TEST_RR_OP(or, x8, x8, x8, 0x4000, 0x4000, 0x4000, x5, 16, x4)
+
+inst_5:
+// rs1==x7, rs2==x9, rd==x12, rs2_val == -134217729, rs1_val == -8193
+// opcode: or ; op1:x7; op2:x9; dest:x12; op1val:-0x2001; op2val:-0x8000001
+TEST_RR_OP(or, x12, x7, x9, 0xffffffff, -0x2001, -0x8000001, x5, 20, x4)
+
+inst_6:
+// rs1==x4, rs2==x1, rd==x15, rs2_val == -67108865, rs1_val == -3
+// opcode: or ; op1:x4; op2:x1; dest:x15; op1val:-0x3; op2val:-0x4000001
+TEST_RR_OP(or, x15, x4, x1, 0xffffffff, -0x3, -0x4000001, x5, 24, x3)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_7:
+// rs1==x6, rs2==x13, rd==x10, rs2_val == -33554433, rs1_val == 1024
+// opcode: or ; op1:x6; op2:x13; dest:x10; op1val:0x400; op2val:-0x2000001
+TEST_RR_OP(or, x10, x6, x13, 0xfdffffff, 0x400, -0x2000001, x4, 0, x3)
+
+inst_8:
+// rs1==x5, rs2==x14, rd==x0, rs2_val == -16777217, rs1_val == 0
+// opcode: or ; op1:x5; op2:x14; dest:x0; op1val:0x0; op2val:-0x1000001
+TEST_RR_OP(or, x0, x5, x14, 0, 0x0, -0x1000001, x4, 4, x3)
+
+inst_9:
+// rs1==x9, rs2==x0, rd==x1, rs2_val == -8388609,
+// opcode: or ; op1:x9; op2:x0; dest:x1; op1val:0x6; op2val:0x0
+TEST_RR_OP(or, x1, x9, x0, 0x6, 0x6, 0x0, x4, 8, x3)
+
+inst_10:
+// rs1==x13, rs2==x5, rd==x11, rs2_val == -4194305,
+// opcode: or ; op1:x13; op2:x5; dest:x11; op1val:0x6; op2val:-0x400001
+TEST_RR_OP(or, x11, x13, x5, 0xffbfffff, 0x6, -0x400001, x4, 12, x3)
+
+inst_11:
+// rs1==x12, rs2==x2, rd==x5, rs2_val == -2097153, rs1_val == 134217728
+// opcode: or ; op1:x12; op2:x2; dest:x5; op1val:0x8000000; op2val:-0x200001
+TEST_RR_OP(or, x5, x12, x2, 0xffdfffff, 0x8000000, -0x200001, x4, 16, x3)
+
+inst_12:
+// rs1==x3, rs2==x12, rd==x7, rs2_val == -1048577,
+// opcode: or ; op1:x3; op2:x12; dest:x7; op1val:0xb504; op2val:-0x100001
+TEST_RR_OP(or, x7, x3, x12, 0xffefffff, 0xb504, -0x100001, x4, 20, x6)
+RVTEST_SIGBASE( x5,signature_x5_2)
+
+inst_13:
+// rs1==x0, rs2==x15, rd==x13, rs2_val == -524289, rs1_val == -33
+// opcode: or ; op1:x0; op2:x15; dest:x13; op1val:0x0; op2val:-0x80001
+TEST_RR_OP(or, x13, x0, x15, 0xfff7ffff, 0x0, -0x80001, x5, 0, x6)
+
+inst_14:
+// rs1==x15, rs2==x7, rd==x3, rs2_val == -262145, rs1_val == -1431655766
+// opcode: or ; op1:x15; op2:x7; dest:x3; op1val:-0x55555556; op2val:-0x40001
+TEST_RR_OP(or, x3, x15, x7, 0xfffbffff, -0x55555556, -0x40001, x5, 4, x6)
+
+inst_15:
+// rs1==x2, rs2_val == -131073,
+// opcode: or ; op1:x2; op2:x12; dest:x1; op1val:-0x55555555; op2val:-0x20001
+TEST_RR_OP(or, x1, x2, x12, 0xffffffff, -0x55555555, -0x20001, x5, 8, x6)
+
+inst_16:
+// rs2==x4, rs2_val == -65537,
+// opcode: or ; op1:x9; op2:x4; dest:x10; op1val:0x9; op2val:-0x10001
+TEST_RR_OP(or, x10, x9, x4, 0xfffeffff, 0x9, -0x10001, x5, 12, x6)
+
+inst_17:
+// rd==x4, rs2_val == -32769,
+// opcode: or ; op1:x3; op2:x8; dest:x4; op1val:-0xb504; op2val:-0x8001
+TEST_RR_OP(or, x4, x3, x8, 0xffff7fff, -0xb504, -0x8001, x5, 16, x6)
+
+inst_18:
+// rs2_val == -16385, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:-0x4001
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, 0x7fffffff, -0x4001, x5, 20, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_19:
+// rs2_val == -8193, rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:-0x2001
+TEST_RR_OP(or, x12, x10, x11, 0xffffdfff, -0x80000000, -0x2001, x1, 0, x2)
+
+inst_20:
+// rs2_val == -4097,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x1001
+TEST_RR_OP(or, x12, x10, x11, 0xffffefff, 0x0, -0x1001, x1, 4, x2)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x801
+TEST_RR_OP(or, x12, x10, x11, 0xfffff7ff, 0x66666665, -0x801, x1, 8, x2)
+
+inst_22:
+// rs2_val == -1025, rs1_val == -513
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:-0x401
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x201, -0x401, x1, 12, x2)
+
+inst_23:
+// rs2_val == -513, rs1_val == 64
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:-0x201
+TEST_RR_OP(or, x12, x10, x11, 0xfffffdff, 0x40, -0x201, x1, 16, x2)
+
+inst_24:
+// rs2_val == -257, rs1_val == 128
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:-0x101
+TEST_RR_OP(or, x12, x10, x11, 0xfffffeff, 0x80, -0x101, x1, 20, x2)
+
+inst_25:
+// rs2_val == -129,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x81
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x200001, -0x81, x1, 24, x2)
+
+inst_26:
+// rs2_val == -65,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x41
+TEST_RR_OP(or, x12, x10, x11, 0xffffffbf, -0x55555555, -0x41, x1, 28, x2)
+
+inst_27:
+// rs2_val == -33,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x21
+TEST_RR_OP(or, x12, x10, x11, 0xffffffdf, 0x6, -0x21, x1, 32, x2)
+
+inst_28:
+// rs2_val == -17, rs1_val == -134217729
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x11
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x8000001, -0x11, x1, 36, x2)
+
+inst_29:
+// rs2_val == -9, rs1_val == -2
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:-0x9
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x2, -0x9, x1, 40, x2)
+
+inst_30:
+// rs2_val == -5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x8; op2val:-0x5
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffb, -0x8, -0x5, x1, 44, x2)
+
+inst_31:
+// rs2_val == -3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:-0x3
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, 0x7fffffff, -0x3, x1, 48, x2)
+
+inst_32:
+// rs2_val == -2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x2
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffe, 0x6, -0x2, x1, 52, x2)
+
+inst_33:
+// rs1_val == -1073741825, rs2_val == 32
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:0x20
+TEST_RR_OP(or, x12, x10, x11, 0xbfffffff, -0x40000001, 0x20, x1, 56, x2)
+
+inst_34:
+// rs1_val == -536870913,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:-0x41
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x20000001, -0x41, x1, 60, x2)
+
+inst_35:
+// rs1_val == -268435457,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:-0x100001
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x10000001, -0x100001, x1, 64, x2)
+
+inst_36:
+// rs1_val == -67108865,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:-0x201
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x4000001, -0x201, x1, 68, x2)
+
+inst_37:
+// rs1_val == -33554433, rs2_val == 65536
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:0x10000
+TEST_RR_OP(or, x12, x10, x11, 0xfdffffff, -0x2000001, 0x10000, x1, 72, x2)
+
+inst_38:
+// rs1_val == -16777217,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:-0x801
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x1000001, -0x801, x1, 76, x2)
+
+inst_39:
+// rs1_val == -8388609,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0xff7fffff, -0x800001, 0x33333332, x1, 80, x2)
+
+inst_40:
+// rs1_val == -4194305, rs2_val == 1431655765
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x400001, 0x55555555, x1, 84, x2)
+
+inst_41:
+// rs1_val == -1048577, rs2_val == 1024
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x400
+TEST_RR_OP(or, x12, x10, x11, 0xffefffff, -0x100001, 0x400, x1, 88, x2)
+
+inst_42:
+// rs1_val == -524289, rs2_val == 524288
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:0x80000
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x80001, 0x80000, x1, 92, x2)
+
+inst_43:
+// rs1_val == -262145,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x40001, 0x55555555, x1, 96, x2)
+
+inst_44:
+// rs1_val == -131073,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:-0x2001
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x20001, -0x2001, x1, 100, x2)
+
+inst_45:
+// rs1_val == -65537,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x400001
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x10001, -0x400001, x1, 104, x2)
+
+inst_46:
+// rs1_val == -32769,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0xffff7fff, -0x8001, 0x5, x1, 108, x2)
+
+inst_47:
+// rs1_val == -16385,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0x400
+TEST_RR_OP(or, x12, x10, x11, 0xffffbfff, -0x4001, 0x400, x1, 112, x2)
+
+inst_48:
+// rs1_val == -4097, rs2_val == 256
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0x100
+TEST_RR_OP(or, x12, x10, x11, 0xffffefff, -0x1001, 0x100, x1, 116, x2)
+
+inst_49:
+// rs1_val == -2049,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:-0x6
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x801, -0x6, x1, 120, x2)
+
+inst_50:
+// rs1_val == -1025, rs2_val == 8
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x8
+TEST_RR_OP(or, x12, x10, x11, 0xfffffbff, -0x401, 0x8, x1, 124, x2)
+
+inst_51:
+// rs1_val == -257, rs2_val == 32768
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0x8000
+TEST_RR_OP(or, x12, x10, x11, 0xfffffeff, -0x101, 0x8000, x1, 128, x2)
+
+inst_52:
+// rs1_val == -129,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:-0x1
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x81, -0x1, x1, 132, x2)
+
+inst_53:
+// rs1_val == -65,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:-0x1
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x41, -0x1, x1, 136, x2)
+
+inst_54:
+// rs1_val == -17,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:-0x101
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x11, -0x101, x1, 140, x2)
+
+inst_55:
+// rs1_val == -9,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:-0x6
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x9, -0x6, x1, 144, x2)
+
+inst_56:
+// rs1_val == -5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x20000000
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffb, -0x5, 0x20000000, x1, 148, x2)
+
+inst_57:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x80000000
+TEST_RR_OP(or, x12, x10, x11, 0x80000005, 0x5, -0x80000000, x1, 152, x2)
+
+inst_58:
+// rs2_val == 1073741824, rs1_val == 32768
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x40000000
+TEST_RR_OP(or, x12, x10, x11, 0x40008000, 0x8000, 0x40000000, x1, 156, x2)
+
+inst_59:
+// rs2_val == 268435456,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x10000000
+TEST_RR_OP(or, x12, x10, x11, 0xfffff7ff, -0x801, 0x10000000, x1, 160, x2)
+
+inst_60:
+// rs2_val == 134217728, rs1_val == 8
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x8000000
+TEST_RR_OP(or, x12, x10, x11, 0x8000008, 0x8, 0x8000000, x1, 164, x2)
+
+inst_61:
+// rs2_val == 67108864,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4000000
+TEST_RR_OP(or, x12, x10, x11, 0xaeaaaaaa, -0x55555556, 0x4000000, x1, 168, x2)
+
+inst_62:
+// rs2_val == 33554432,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2000000
+TEST_RR_OP(or, x12, x10, x11, 0x200b504, 0xb504, 0x2000000, x1, 172, x2)
+
+inst_63:
+// rs2_val == 16777216,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0x1000000
+TEST_RR_OP(or, x12, x10, x11, 0xffffdfff, -0x2001, 0x1000000, x1, 176, x2)
+
+inst_64:
+// rs2_val == 8388608,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x7; op2val:0x800000
+TEST_RR_OP(or, x12, x10, x11, 0xfffffff9, -0x7, 0x800000, x1, 180, x2)
+
+inst_65:
+// rs2_val == 4194304, rs1_val == 16
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x400000
+TEST_RR_OP(or, x12, x10, x11, 0x400010, 0x10, 0x400000, x1, 184, x2)
+
+inst_66:
+// rs2_val == 2097152,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0x200000
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x200001, 0x200000, x1, 188, x2)
+
+inst_67:
+// rs2_val == 1048576,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x100000
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, -0xb503, 0x100000, x1, 192, x2)
+
+inst_68:
+// rs2_val == 262144,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x40000
+TEST_RR_OP(or, x12, x10, x11, 0x4b503, 0xb503, 0x40000, x1, 196, x2)
+
+inst_69:
+// rs2_val == 131072,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x20000
+TEST_RR_OP(or, x12, x10, x11, 0x20008, 0x8, 0x20000, x1, 200, x2)
+
+inst_70:
+// rs2_val == 16384,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x4000
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffe, -0x2, 0x4000, x1, 204, x2)
+
+inst_71:
+// rs2_val == 8192,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2000
+TEST_RR_OP(or, x12, x10, x11, 0x55557556, 0x55555556, 0x2000, x1, 208, x2)
+
+inst_72:
+// rs2_val == 4096, rs1_val == 2
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x1000
+TEST_RR_OP(or, x12, x10, x11, 0x1002, 0x2, 0x1000, x1, 212, x2)
+
+inst_73:
+// rs2_val == 2048, rs1_val == 4
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x800
+TEST_RR_OP(or, x12, x10, x11, 0x804, 0x4, 0x800, x1, 216, x2)
+
+inst_74:
+// rs2_val == 512,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x200
+TEST_RR_OP(or, x12, x10, x11, 0x80000200, -0x80000000, 0x200, x1, 220, x2)
+
+inst_75:
+// rs2_val == 128,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3fffffff; op2val:0x80
+TEST_RR_OP(or, x12, x10, x11, 0x3fffffff, 0x3fffffff, 0x80, x1, 224, x2)
+
+inst_76:
+// rs2_val == 64, rs1_val == 32
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x40
+TEST_RR_OP(or, x12, x10, x11, 0x60, 0x20, 0x40, x1, 228, x2)
+
+inst_77:
+// rs2_val == 16,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x10
+TEST_RR_OP(or, x12, x10, x11, 0xfffff7ff, -0x801, 0x10, x1, 232, x2)
+
+inst_78:
+// rs2_val == 4, rs1_val == 524288
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x80004, 0x80000, 0x4, x1, 236, x2)
+
+inst_79:
+// rs2_val == 2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0xfffffdff, -0x201, 0x2, x1, 240, x2)
+
+inst_80:
+// rs2_val == 1,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1
+TEST_RR_OP(or, x12, x10, x11, 0x1, 0x0, 0x1, x1, 244, x2)
+
+inst_81:
+// rs1_val == 1073741824,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:-0x81
+TEST_RR_OP(or, x12, x10, x11, 0xffffff7f, 0x40000000, -0x81, x1, 248, x2)
+
+inst_82:
+// rs1_val == 536870912,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x2000000
+TEST_RR_OP(or, x12, x10, x11, 0x22000000, 0x20000000, 0x2000000, x1, 252, x2)
+
+inst_83:
+// rs1_val == 268435456, rs2_val == 0
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x10000000, 0x10000000, 0x0, x1, 256, x2)
+
+inst_84:
+// rs1_val == 67108864,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0x20000000
+TEST_RR_OP(or, x12, x10, x11, 0x24000000, 0x4000000, 0x20000000, x1, 260, x2)
+
+inst_85:
+// rs1_val == 33554432,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:-0x6
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffa, 0x2000000, -0x6, x1, 264, x2)
+
+inst_86:
+// rs1_val == 16777216,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x400000
+TEST_RR_OP(or, x12, x10, x11, 0x1400000, 0x1000000, 0x400000, x1, 268, x2)
+
+inst_87:
+// rs1_val == 8388608,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55d55555, 0x800000, 0x55555555, x1, 272, x2)
+
+inst_88:
+// rs1_val == 4194304,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:-0xa
+TEST_RR_OP(or, x12, x10, x11, 0xfffffff6, 0x400000, -0xa, x1, 276, x2)
+
+inst_89:
+// rs1_val == 2097152,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333334, 0x200000, 0x33333334, x1, 280, x2)
+
+inst_90:
+// rs1_val == 1048576,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x80
+TEST_RR_OP(or, x12, x10, x11, 0x100080, 0x100000, 0x80, x1, 284, x2)
+
+inst_91:
+// rs1_val == 262144,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x10000
+TEST_RR_OP(or, x12, x10, x11, 0x50000, 0x40000, 0x10000, x1, 288, x2)
+
+inst_92:
+// rs1_val == 131072,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x1000
+TEST_RR_OP(or, x12, x10, x11, 0x21000, 0x20000, 0x1000, x1, 292, x2)
+
+inst_93:
+// rs1_val == 65536,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x10006, 0x10000, 0x6, x1, 296, x2)
+
+inst_94:
+// rs1_val == 8192,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x8
+TEST_RR_OP(or, x12, x10, x11, 0x2008, 0x2000, 0x8, x1, 300, x2)
+
+inst_95:
+// rs1_val == 4096,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:-0x3
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffd, 0x1000, -0x3, x1, 304, x2)
+
+inst_96:
+// rs1_val == 2048,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555d55, 0x800, 0x55555555, x1, 308, x2)
+
+inst_97:
+// rs1_val == 512,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x20
+TEST_RR_OP(or, x12, x10, x11, 0x220, 0x200, 0x20, x1, 312, x2)
+
+inst_98:
+// rs1_val == 256,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:-0x81
+TEST_RR_OP(or, x12, x10, x11, 0xffffff7f, 0x100, -0x81, x1, 316, x2)
+
+inst_99:
+// rs1_val == 1,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x2000000
+TEST_RR_OP(or, x12, x10, x11, 0x2000001, 0x1, 0x2000000, x1, 320, x2)
+
+inst_100:
+// rs1_val==46341 and rs2_val==46341, rs1_val == rs2_val
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0xb505, 0xb505, x1, 324, x2)
+
+inst_101:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffd, 0xb505, -0xb503, x1, 328, x2)
+
+inst_102:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0xb505, 0x66666667, x1, 332, x2)
+
+inst_103:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x3333b735, 0xb505, 0x33333334, x1, 336, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb505, 0x6, x1, 340, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfaf, 0xb505, -0x55555555, x1, 344, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x5555f557, 0xb505, 0x55555556, x1, 348, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0xb505, 0x4, x1, 352, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb505, 0xb503, x1, 356, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0xb505, 0x0, x1, 360, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x6666f765, 0xb505, 0x66666665, x1, 364, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x3333b737, 0xb505, 0x33333332, x1, 368, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x5555f555, 0xb505, 0x55555554, x1, 372, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb505, 0x2, x1, 376, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0xb505, 0xb504, x1, 380, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffd, 0xb505, -0xb504, x1, 384, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0xb505, 0x66666666, x1, 388, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x3333b737, 0xb505, 0x33333333, x1, 392, x2)
+
+inst_118:
+// rs1_val==46341 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0xb505, 0x5, x1, 396, x2)
+
+inst_119:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfaf, 0xb505, -0x55555556, x1, 400, x2)
+
+inst_120:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x5555f555, 0xb505, 0x55555555, x1, 404, x2)
+
+inst_121:
+// rs1_val==46341 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb505, 0x3, x1, 408, x2)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffd, -0xb503, 0xb505, x1, 412, x2)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, -0xb503, -0xb503, x1, 416, x2)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0xffff6eff, -0xb503, 0x66666667, x1, 420, x2)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bfd, -0xb503, 0x33333334, x1, 424, x2)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0xffff4aff, -0xb503, 0x6, x1, 428, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffeaff, -0xb503, -0x55555555, x1, 432, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xffff5fff, -0xb503, 0x55555556, x1, 436, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, -0xb503, 0x4, x1, 440, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0xb503, 0xb503, x1, 444, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, -0xb503, 0x0, x1, 448, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0xffff6efd, -0xb503, 0x66666665, x1, 452, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bff, -0xb503, 0x33333332, x1, 456, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffd, -0xb503, 0x55555554, x1, 460, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0xffff4aff, -0xb503, 0x2, x1, 464, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffd, -0xb503, 0xb504, x1, 468, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, -0xb503, -0xb504, x1, 472, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0xffff6eff, -0xb503, 0x66666666, x1, 476, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bff, -0xb503, 0x33333333, x1, 480, x2)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, -0xb503, 0x5, x1, 484, x2)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xffffeaff, -0xb503, -0x55555556, x1, 488, x2)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffd, -0xb503, 0x55555555, x1, 492, x2)
+
+inst_143:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0xffff4aff, -0xb503, 0x3, x1, 496, x2)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0x66666667, 0xb505, x1, 500, x2)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff6eff, 0x66666667, -0xb503, x1, 504, x2)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x66666667, x1, 508, x2)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666667, 0x33333334, x1, 512, x2)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x6, x1, 516, x2)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, 0x66666667, -0x55555555, x1, 520, x2)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666667, 0x55555556, x1, 524, x2)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x4, x1, 528, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0x66666667, 0xb503, x1, 532, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x0, x1, 536, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x66666665, x1, 540, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666667, 0x33333332, x1, 544, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666667, 0x55555554, x1, 548, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x2, x1, 552, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0x66666667, 0xb504, x1, 556, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff6eff, 0x66666667, -0xb504, x1, 560, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x66666666, x1, 564, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666667, 0x33333333, x1, 568, x2)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x5, x1, 572, x2)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, 0x66666667, -0x55555556, x1, 576, x2)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666667, 0x55555555, x1, 580, x2)
+
+inst_165:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666667, 0x3, x1, 584, x2)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x3333b735, 0x33333334, 0xb505, x1, 588, x2)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bfd, 0x33333334, -0xb503, x1, 592, x2)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333334, 0x66666667, x1, 596, x2)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333334, 0x33333334, 0x33333334, x1, 600, x2)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x33333334, 0x6, x1, 604, x2)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbf, 0x33333334, -0x55555555, x1, 608, x2)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x33333334, 0x55555556, x1, 612, x2)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x33333334, 0x33333334, 0x4, x1, 616, x2)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x3333b737, 0x33333334, 0xb503, x1, 620, x2)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x33333334, 0x33333334, 0x0, x1, 624, x2)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x77777775, 0x33333334, 0x66666665, x1, 628, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x33333334, 0x33333332, x1, 632, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x77777774, 0x33333334, 0x55555554, x1, 636, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x33333334, 0x2, x1, 640, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x3333b734, 0x33333334, 0xb504, x1, 644, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bfc, 0x33333334, -0xb504, x1, 648, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x33333334, 0x66666666, x1, 652, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x33333334, 0x33333333, x1, 656, x2)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x33333335, 0x33333334, 0x5, x1, 660, x2)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbe, 0x33333334, -0x55555556, x1, 664, x2)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x77777775, 0x33333334, 0x55555555, x1, 668, x2)
+
+inst_187:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x33333334, 0x3, x1, 672, x2)
+
+inst_188:
+// rs1_val==6 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0x6, 0xb505, x1, 676, x2)
+
+inst_189:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff4aff, 0x6, -0xb503, x1, 680, x2)
+
+inst_190:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x6, 0x66666667, x1, 684, x2)
+
+inst_191:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x6, 0x33333334, x1, 688, x2)
+
+inst_192:
+// rs1_val==6 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x6, 0x6, x1, 692, x2)
+
+inst_193:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaf, 0x6, -0x55555555, x1, 696, x2)
+
+inst_194:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x6, 0x55555556, x1, 700, x2)
+
+inst_195:
+// rs1_val==6 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x6, 0x4, x1, 704, x2)
+
+inst_196:
+// rs1_val==6 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0x6, 0xb503, x1, 708, x2)
+
+inst_197:
+// rs1_val==6 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x6, 0x0, x1, 712, x2)
+
+inst_198:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x6, 0x66666665, x1, 716, x2)
+
+inst_199:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x6, 0x33333332, x1, 720, x2)
+
+inst_200:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x6, 0x55555554, x1, 724, x2)
+
+inst_201:
+// rs1_val==6 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x6, 0x2, x1, 728, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb506, 0x6, 0xb504, x1, 732, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afe, 0x6, -0xb504, x1, 736, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x6, 0x66666666, x1, 740, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x6, 0x33333333, x1, 744, x2)
+
+inst_206:
+// rs1_val==6 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x6, 0x5, x1, 748, x2)
+
+inst_207:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaae, 0x6, -0x55555556, x1, 752, x2)
+
+inst_208:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x6, 0x55555555, x1, 756, x2)
+
+inst_209:
+// rs1_val==6 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x6, 0x3, x1, 760, x2)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfaf, -0x55555555, 0xb505, x1, 764, x2)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffffeaff, -0x55555555, -0xb503, x1, 768, x2)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, -0x55555555, 0x66666667, x1, 772, x2)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbf, -0x55555555, 0x33333334, x1, 776, x2)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaf, -0x55555555, 0x6, x1, 780, x2)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, -0x55555555, -0x55555555, x1, 784, x2)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x55555555, 0x55555556, x1, 788, x2)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaf, -0x55555555, 0x4, x1, 792, x2)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfab, -0x55555555, 0xb503, x1, 796, x2)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, -0x55555555, 0x0, x1, 800, x2)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, -0x55555555, 0x66666665, x1, 804, x2)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbb, -0x55555555, 0x33333332, x1, 808, x2)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x55555555, 0x55555554, x1, 812, x2)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, -0x55555555, 0x2, x1, 816, x2)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfaf, -0x55555555, 0xb504, x1, 820, x2)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffffeaff, -0x55555555, -0xb504, x1, 824, x2)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, -0x55555555, 0x66666666, x1, 828, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbb, -0x55555555, 0x33333333, x1, 832, x2)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaf, -0x55555555, 0x5, x1, 836, x2)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, -0x55555555, -0x55555556, x1, 840, x2)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x55555555, 0x55555555, x1, 844, x2)
+
+inst_231:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, -0x55555555, 0x3, x1, 848, x2)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x5555f557, 0x55555556, 0xb505, x1, 852, x2)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff5fff, 0x55555556, -0xb503, x1, 856, x2)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555556, 0x66666667, x1, 860, x2)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x55555556, 0x33333334, x1, 864, x2)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555556, 0x6, x1, 868, x2)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, 0x55555556, -0x55555555, x1, 872, x2)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555556, 0x55555556, x1, 876, x2)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555556, 0x4, x1, 880, x2)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x5555f557, 0x55555556, 0xb503, x1, 884, x2)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 888, x2)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555556, 0x66666665, x1, 892, x2)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x55555556, 0x33333332, x1, 896, x2)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555556, 0x55555554, x1, 900, x2)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555556, 0x2, x1, 904, x2)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x5555f556, 0x55555556, 0xb504, x1, 908, x2)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffe, 0x55555556, -0xb504, x1, 912, x2)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x55555556, 0x66666666, x1, 916, x2)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555556, 0x33333333, x1, 920, x2)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x55555556, 0x5, x1, 924, x2)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffe, 0x55555556, -0x55555556, x1, 928, x2)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x55555556, 0x55555555, x1, 932, x2)
+
+inst_253:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x55555556, 0x3, x1, 936, x2)
+
+inst_254:
+// rs1_val==4 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0x4, 0xb505, x1, 940, x2)
+
+inst_255:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, 0x4, -0xb503, x1, 944, x2)
+
+inst_256:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x4, 0x66666667, x1, 948, x2)
+
+inst_257:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333334, 0x4, 0x33333334, x1, 952, x2)
+
+inst_258:
+// rs1_val==4 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x4, 0x6, x1, 956, x2)
+
+inst_259:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaf, 0x4, -0x55555555, x1, 960, x2)
+
+inst_260:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x4, 0x55555556, x1, 964, x2)
+
+inst_261:
+// rs1_val==4 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x4, 0x4, 0x4, x1, 968, x2)
+
+inst_262:
+// rs1_val==4 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0x4, 0xb503, x1, 972, x2)
+
+inst_263:
+// rs1_val==4 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x4, 0x4, 0x0, x1, 976, x2)
+
+inst_264:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666665, 0x4, 0x66666665, x1, 980, x2)
+
+inst_265:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x4, 0x33333332, x1, 984, x2)
+
+inst_266:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555554, 0x4, 0x55555554, x1, 988, x2)
+
+inst_267:
+// rs1_val==4 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x4, 0x2, x1, 992, x2)
+
+inst_268:
+// rs1_val==4 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb504, 0x4, 0xb504, x1, 996, x2)
+
+inst_269:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afc, 0x4, -0xb504, x1, 1000, x2)
+
+inst_270:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x4, 0x66666666, x1, 1004, x2)
+
+inst_271:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x4, 0x33333333, x1, 1008, x2)
+
+inst_272:
+// rs1_val==4 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x5, 0x4, 0x5, x1, 1012, x2)
+
+inst_273:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaae, 0x4, -0x55555556, x1, 1016, x2)
+
+inst_274:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x4, 0x55555555, x1, 1020, x2)
+
+inst_275:
+// rs1_val==4 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x4, 0x3, x1, 1024, x2)
+
+inst_276:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb503, 0xb505, x1, 1028, x2)
+
+inst_277:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, 0xb503, -0xb503, x1, 1032, x2)
+
+inst_278:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0xb503, 0x66666667, x1, 1036, x2)
+
+inst_279:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x3333b737, 0xb503, 0x33333334, x1, 1040, x2)
+
+inst_280:
+// rs1_val==46339 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb503, 0x6, x1, 1044, x2)
+
+inst_281:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfab, 0xb503, -0x55555555, x1, 1048, x2)
+
+inst_282:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x5555f557, 0xb503, 0x55555556, x1, 1052, x2)
+
+inst_283:
+// rs1_val==46339 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb503, 0x4, x1, 1056, x2)
+
+inst_284:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb503, 0xb503, 0xb503, x1, 1060, x2)
+
+inst_285:
+// rs1_val==46339 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0xb503, 0xb503, 0x0, x1, 1064, x2)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0xb503, 0x66666665, x1, 1068, x2)
+
+inst_287:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x3333b733, 0xb503, 0x33333332, x1, 1072, x2)
+
+inst_288:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x5555f557, 0xb503, 0x55555554, x1, 1076, x2)
+
+inst_289:
+// rs1_val==46339 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0xb503, 0xb503, 0x2, x1, 1080, x2)
+
+inst_290:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb503, 0xb504, x1, 1084, x2)
+
+inst_291:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, 0xb503, -0xb504, x1, 1088, x2)
+
+inst_292:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0xb503, 0x66666666, x1, 1092, x2)
+
+inst_293:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x3333b733, 0xb503, 0x33333333, x1, 1096, x2)
+
+inst_294:
+// rs1_val==46339 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb503, 0x5, x1, 1100, x2)
+
+inst_295:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfab, 0xb503, -0x55555556, x1, 1104, x2)
+
+inst_296:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x5555f557, 0xb503, 0x55555555, x1, 1108, x2)
+
+inst_297:
+// rs1_val==46339 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0xb503, 0xb503, 0x3, x1, 1112, x2)
+
+inst_298:
+// rs1_val==0 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0x0, 0xb505, x1, 1116, x2)
+
+inst_299:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, 0x0, -0xb503, x1, 1120, x2)
+
+inst_300:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x0, 0x66666667, x1, 1124, x2)
+
+inst_301:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333334, 0x0, 0x33333334, x1, 1128, x2)
+
+inst_302:
+// rs1_val==0 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x0, 0x6, x1, 1132, x2)
+
+inst_303:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, 0x0, -0x55555555, x1, 1136, x2)
+
+inst_304:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x0, 0x55555556, x1, 1140, x2)
+
+inst_305:
+// rs1_val==0 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x4, 0x0, 0x4, x1, 1144, x2)
+
+inst_306:
+// rs1_val==0 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb503, 0x0, 0xb503, x1, 1148, x2)
+
+inst_307:
+// rs1_val==0 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1152, x2)
+
+inst_308:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666665, 0x0, 0x66666665, x1, 1156, x2)
+
+inst_309:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333332, 0x0, 0x33333332, x1, 1160, x2)
+
+inst_310:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555554, 0x0, 0x55555554, x1, 1164, x2)
+
+inst_311:
+// rs1_val==0 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x2, 0x0, 0x2, x1, 1168, x2)
+
+inst_312:
+// rs1_val==0 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb504, 0x0, 0xb504, x1, 1172, x2)
+
+inst_313:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afc, 0x0, -0xb504, x1, 1176, x2)
+
+inst_314:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x0, 0x66666666, x1, 1180, x2)
+
+inst_315:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x0, 0x33333333, x1, 1184, x2)
+
+inst_316:
+// rs1_val==0 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x5, 0x0, 0x5, x1, 1188, x2)
+
+inst_317:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaa, 0x0, -0x55555556, x1, 1192, x2)
+
+inst_318:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x0, 0x55555555, x1, 1196, x2)
+
+inst_319:
+// rs1_val==0 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x3, 0x0, 0x3, x1, 1200, x2)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x6666f765, 0x66666665, 0xb505, x1, 1204, x2)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff6efd, 0x66666665, -0xb503, x1, 1208, x2)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666665, 0x66666667, x1, 1212, x2)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x77777775, 0x66666665, 0x33333334, x1, 1216, x2)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666665, 0x6, x1, 1220, x2)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, 0x66666665, -0x55555555, x1, 1224, x2)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666665, 0x55555556, x1, 1228, x2)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x66666665, 0x66666665, 0x4, x1, 1232, x2)
+
+inst_328:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0x66666665, 0xb503, x1, 1236, x2)
+
+inst_329:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x66666665, 0x66666665, 0x0, x1, 1240, x2)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x33333333, 0x0, x1, 1244, x2)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333333, 0x66666665, x1, 1248, x2)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x33333333, 0x33333332, x1, 1252, x2)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333333, 0x55555554, x1, 1256, x2)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x33333333, 0x2, x1, 1260, x2)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x3333b737, 0x33333333, 0xb504, x1, 1264, x2)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bff, 0x33333333, -0xb504, x1, 1268, x2)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333333, 0x66666666, x1, 1272, x2)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x33333333, 0x33333333, x1, 1276, x2)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x33333333, 0x5, x1, 1280, x2)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbb, 0x33333333, -0x55555556, x1, 1284, x2)
+
+inst_341:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333333, 0x55555555, x1, 1288, x2)
+
+inst_342:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x33333333, 0x3, x1, 1292, x2)
+
+inst_343:
+// rs1_val==5 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0x5, 0xb505, x1, 1296, x2)
+
+inst_344:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, 0x5, -0xb503, x1, 1300, x2)
+
+inst_345:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x5, 0x66666667, x1, 1304, x2)
+
+inst_346:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333335, 0x5, 0x33333334, x1, 1308, x2)
+
+inst_347:
+// rs1_val==5 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x5, 0x6, x1, 1312, x2)
+
+inst_348:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaf, 0x5, -0x55555555, x1, 1316, x2)
+
+inst_349:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x5, 0x55555556, x1, 1320, x2)
+
+inst_350:
+// rs1_val==5 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x5, 0x5, 0x4, x1, 1324, x2)
+
+inst_351:
+// rs1_val==5 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0x5, 0xb503, x1, 1328, x2)
+
+inst_352:
+// rs1_val==5 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x5, 0x5, 0x0, x1, 1332, x2)
+
+inst_353:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666665, 0x5, 0x66666665, x1, 1336, x2)
+
+inst_354:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x5, 0x33333332, x1, 1340, x2)
+
+inst_355:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x5, 0x55555554, x1, 1344, x2)
+
+inst_356:
+// rs1_val==5 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x5, 0x2, x1, 1348, x2)
+
+inst_357:
+// rs1_val==5 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0x5, 0xb504, x1, 1352, x2)
+
+inst_358:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, 0x5, -0xb504, x1, 1356, x2)
+
+inst_359:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x5, 0x66666666, x1, 1360, x2)
+
+inst_360:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x5, 0x33333333, x1, 1364, x2)
+
+inst_361:
+// rs1_val==5 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x5, 0x5, 0x5, x1, 1368, x2)
+
+inst_362:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaf, 0x5, -0x55555556, x1, 1372, x2)
+
+inst_363:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x5, 0x55555555, x1, 1376, x2)
+
+inst_364:
+// rs1_val==5 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x5, 0x3, x1, 1380, x2)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfaf, -0x55555556, 0xb505, x1, 1384, x2)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffffeaff, -0x55555556, -0xb503, x1, 1388, x2)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, -0x55555556, 0x66666667, x1, 1392, x2)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbe, -0x55555556, 0x33333334, x1, 1396, x2)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaae, -0x55555556, 0x6, x1, 1400, x2)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, -0x55555556, -0x55555555, x1, 1404, x2)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffe, -0x55555556, 0x55555556, x1, 1408, x2)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaae, -0x55555556, 0x4, x1, 1412, x2)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfab, -0x55555556, 0xb503, x1, 1416, x2)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1420, x2)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, -0x55555556, 0x66666665, x1, 1424, x2)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbba, -0x55555556, 0x33333332, x1, 1428, x2)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffe, -0x55555556, 0x55555554, x1, 1432, x2)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaa, -0x55555556, 0x2, x1, 1436, x2)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfae, -0x55555556, 0xb504, x1, 1440, x2)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffffeafe, -0x55555556, -0xb504, x1, 1444, x2)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeee, -0x55555556, 0x66666666, x1, 1448, x2)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbb, -0x55555556, 0x33333333, x1, 1452, x2)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaf, -0x55555556, 0x5, x1, 1456, x2)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaa, -0x55555556, -0x55555556, x1, 1460, x2)
+
+inst_385:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x55555556, 0x55555555, x1, 1464, x2)
+
+inst_386:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, -0x55555556, 0x3, x1, 1468, x2)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==46341, rs1_val == 1431655765
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x5555f555, 0x55555555, 0xb505, x1, 1472, x2)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffd, 0x55555555, -0xb503, x1, 1476, x2)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555555, 0x66666667, x1, 1480, x2)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x77777775, 0x55555555, 0x33333334, x1, 1484, x2)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x55555555, 0x6, x1, 1488, x2)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, 0x55555555, -0x55555555, x1, 1492, x2)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x55555555, 0x55555556, x1, 1496, x2)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x55555555, 0x4, x1, 1500, x2)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x5555f557, 0x55555555, 0xb503, x1, 1504, x2)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x55555555, 0x0, x1, 1508, x2)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x77777775, 0x55555555, 0x66666665, x1, 1512, x2)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555555, 0x33333332, x1, 1516, x2)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x55555555, 0x55555554, x1, 1520, x2)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x55555555, 0x2, x1, 1524, x2)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x5555f555, 0x55555555, 0xb504, x1, 1528, x2)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffd, 0x55555555, -0xb504, x1, 1532, x2)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555555, 0x66666666, x1, 1536, x2)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555555, 0x33333333, x1, 1540, x2)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x55555555, 0x5, x1, 1544, x2)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, 0x55555555, -0x55555556, x1, 1548, x2)
+
+inst_407:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x55555555, 0x55555555, x1, 1552, x2)
+
+inst_408:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x55555555, 0x3, x1, 1556, x2)
+
+inst_409:
+// rs1_val==3 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0x3, 0xb505, x1, 1560, x2)
+
+inst_410:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff4aff, 0x3, -0xb503, x1, 1564, x2)
+
+inst_411:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x3, 0x66666667, x1, 1568, x2)
+
+inst_412:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x3, 0x33333334, x1, 1572, x2)
+
+inst_413:
+// rs1_val==3 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x3, 0x6, x1, 1576, x2)
+
+inst_414:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, 0x3, -0x55555555, x1, 1580, x2)
+
+inst_415:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x3, 0x55555556, x1, 1584, x2)
+
+inst_416:
+// rs1_val==3 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x3, 0x4, x1, 1588, x2)
+
+inst_417:
+// rs1_val==3 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb503, 0x3, 0xb503, x1, 1592, x2)
+
+inst_418:
+// rs1_val==3 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x3, 0x3, 0x0, x1, 1596, x2)
+
+inst_419:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x3, 0x66666665, x1, 1600, x2)
+
+inst_420:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x3, 0x33333332, x1, 1604, x2)
+
+inst_421:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x3, 0x55555554, x1, 1608, x2)
+
+inst_422:
+// rs1_val==3 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x3, 0x3, 0x2, x1, 1612, x2)
+
+inst_423:
+// rs1_val==3 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0x3, 0xb504, x1, 1616, x2)
+
+inst_424:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff4aff, 0x3, -0xb504, x1, 1620, x2)
+
+inst_425:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x3, 0x66666666, x1, 1624, x2)
+
+inst_426:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x3, 0x33333333, x1, 1628, x2)
+
+inst_427:
+// rs1_val==3 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x3, 0x5, x1, 1632, x2)
+
+inst_428:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, 0x3, -0x55555556, x1, 1636, x2)
+
+inst_429:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x3, 0x55555555, x1, 1640, x2)
+
+inst_430:
+// rs1_val==3 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x3, 0x3, 0x3, x1, 1644, x2)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666665, 0x66666665, 0x66666665, x1, 1648, x2)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666665, 0x33333332, x1, 1652, x2)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x77777775, 0x66666665, 0x55555554, x1, 1656, x2)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666665, 0x2, x1, 1660, x2)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x6666f765, 0x66666665, 0xb504, x1, 1664, x2)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff6efd, 0x66666665, -0xb504, x1, 1668, x2)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666665, 0x66666666, x1, 1672, x2)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666665, 0x33333333, x1, 1676, x2)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x66666665, 0x66666665, 0x5, x1, 1680, x2)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, 0x66666665, -0x55555556, x1, 1684, x2)
+
+inst_441:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x77777775, 0x66666665, 0x55555555, x1, 1688, x2)
+
+inst_442:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666665, 0x3, x1, 1692, x2)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x3333b737, 0x33333332, 0xb505, x1, 1696, x2)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bff, 0x33333332, -0xb503, x1, 1700, x2)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333332, 0x66666667, x1, 1704, x2)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x33333332, 0x33333334, x1, 1708, x2)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x33333332, 0x6, x1, 1712, x2)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbb, 0x33333332, -0x55555555, x1, 1716, x2)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x33333332, 0x55555556, x1, 1720, x2)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x33333332, 0x4, x1, 1724, x2)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x3333b733, 0x33333332, 0xb503, x1, 1728, x2)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x33333332, 0x33333332, 0x0, x1, 1732, x2)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333332, 0x66666665, x1, 1736, x2)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333332, 0x33333332, 0x33333332, x1, 1740, x2)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x33333332, 0x55555554, x1, 1744, x2)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x33333332, 0x33333332, 0x2, x1, 1748, x2)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x3333b736, 0x33333332, 0xb504, x1, 1752, x2)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bfe, 0x33333332, -0xb504, x1, 1756, x2)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x33333332, 0x66666666, x1, 1760, x2)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x33333332, 0x33333333, x1, 1764, x2)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x33333332, 0x5, x1, 1768, x2)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbba, 0x33333332, -0x55555556, x1, 1772, x2)
+
+inst_463:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333332, 0x55555555, x1, 1776, x2)
+
+inst_464:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x33333332, 0x3, x1, 1780, x2)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x5555f555, 0x55555554, 0xb505, x1, 1784, x2)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffd, 0x55555554, -0xb503, x1, 1788, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555554, 0x66666667, x1, 1792, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x77777774, 0x55555554, 0x33333334, x1, 1796, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555554, 0x6, x1, 1800, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, 0x55555554, -0x55555555, x1, 1804, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555554, 0x55555556, x1, 1808, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x55555554, 0x55555554, 0x4, x1, 1812, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x5555f557, 0x55555554, 0xb503, x1, 1816, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 1820, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x77777775, 0x55555554, 0x66666665, x1, 1824, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x55555554, 0x33333332, x1, 1828, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555554, 0x55555554, 0x55555554, x1, 1832, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x55555554, 0x2, x1, 1836, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x5555f554, 0x55555554, 0xb504, x1, 1840, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffc, 0x55555554, -0xb504, x1, 1844, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x55555554, 0x66666666, x1, 1848, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x55555554, 0x33333333, x1, 1852, x2)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x55555554, 0x5, x1, 1856, x2)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffe, 0x55555554, -0x55555556, x1, 1860, x2)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555555, 0x55555554, 0x55555555, x1, 1864, x2)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x55555554, 0x3, x1, 1868, x2)
+
+inst_487:
+// rs1_val==2 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0x2, 0xb505, x1, 1872, x2)
+
+inst_488:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff4aff, 0x2, -0xb503, x1, 1876, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x2, 0x66666667, x1, 1880, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333336, 0x2, 0x33333334, x1, 1884, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x2, 0x6, x1, 1888, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaab, 0x2, -0x55555555, x1, 1892, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x2, 0x55555556, x1, 1896, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x6, 0x2, 0x4, x1, 1900, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb503, 0x2, 0xb503, x1, 1904, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x2, 0x2, 0x0, x1, 1908, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x2, 0x66666665, x1, 1912, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x33333332, 0x2, 0x33333332, x1, 1916, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x55555556, 0x2, 0x55555554, x1, 1920, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x2, 0x2, 0x2, x1, 1924, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb506, 0x2, 0xb504, x1, 1928, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afe, 0x2, -0xb504, x1, 1932, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x2, 0x66666666, x1, 1936, x2)
+
+inst_504:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x33333333, 0x2, 0x33333333, x1, 1940, x2)
+
+inst_505:
+// rs1_val==2 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x7, 0x2, 0x5, x1, 1944, x2)
+
+inst_506:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaaaaaa, 0x2, -0x55555556, x1, 1948, x2)
+
+inst_507:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x55555557, 0x2, 0x55555555, x1, 1952, x2)
+
+inst_508:
+// rs1_val==2 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x3, 0x2, 0x3, x1, 1956, x2)
+
+inst_509:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0xb504, 0xb505, x1, 1960, x2)
+
+inst_510:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffd, 0xb504, -0xb503, x1, 1964, x2)
+
+inst_511:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0xb504, 0x66666667, x1, 1968, x2)
+
+inst_512:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x3333b734, 0xb504, 0x33333334, x1, 1972, x2)
+
+inst_513:
+// rs1_val==46340 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0xb506, 0xb504, 0x6, x1, 1976, x2)
+
+inst_514:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfaf, 0xb504, -0x55555555, x1, 1980, x2)
+
+inst_515:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x5555f556, 0xb504, 0x55555556, x1, 1984, x2)
+
+inst_516:
+// rs1_val==46340 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0xb504, 0xb504, 0x4, x1, 1988, x2)
+
+inst_517:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb504, 0xb503, x1, 1992, x2)
+
+inst_518:
+// rs1_val==46340 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0xb504, 0xb504, 0x0, x1, 1996, x2)
+
+inst_519:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x6666f765, 0xb504, 0x66666665, x1, 2000, x2)
+
+inst_520:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x3333b736, 0xb504, 0x33333332, x1, 2004, x2)
+
+inst_521:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x5555f554, 0xb504, 0x55555554, x1, 2008, x2)
+
+inst_522:
+// rs1_val==46340 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0xb506, 0xb504, 0x2, x1, 2012, x2)
+
+inst_523:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xb504, 0xb504, 0xb504, x1, 2016, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffc, 0xb504, -0xb504, x1, 2020, x2)
+
+inst_525:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x6666f766, 0xb504, 0x66666666, x1, 2024, x2)
+
+inst_526:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x3333b737, 0xb504, 0x33333333, x1, 2028, x2)
+
+inst_527:
+// rs1_val==46340 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0xb505, 0xb504, 0x5, x1, 2032, x2)
+
+inst_528:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xaaaabfae, 0xb504, -0x55555556, x1, 2036, x2)
+
+inst_529:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x5555f555, 0xb504, 0x55555555, x1, 2040, x2)
+
+inst_530:
+// rs1_val==46340 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0xb507, 0xb504, 0x3, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffd, -0xb504, 0xb505, x1, 0, x2)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, -0xb504, -0xb503, x1, 4, x2)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0xffff6eff, -0xb504, 0x66666667, x1, 8, x2)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bfc, -0xb504, 0x33333334, x1, 12, x2)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afe, -0xb504, 0x6, x1, 16, x2)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffffeaff, -0xb504, -0x55555555, x1, 20, x2)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffe, -0xb504, 0x55555556, x1, 24, x2)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afc, -0xb504, 0x4, x1, 28, x2)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0xb504, 0xb503, x1, 32, x2)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afc, -0xb504, 0x0, x1, 36, x2)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0xffff6efd, -0xb504, 0x66666665, x1, 40, x2)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bfe, -0xb504, 0x33333332, x1, 44, x2)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffc, -0xb504, 0x55555554, x1, 48, x2)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afe, -0xb504, 0x2, x1, 52, x2)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xfffffffc, -0xb504, 0xb504, x1, 56, x2)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afc, -0xb504, -0xb504, x1, 60, x2)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0xffff6efe, -0xb504, 0x66666666, x1, 64, x2)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bff, -0xb504, 0x33333333, x1, 68, x2)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0xffff4afd, -0xb504, 0x5, x1, 72, x2)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xffffeafe, -0xb504, -0x55555556, x1, 76, x2)
+
+inst_551:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xffff5ffd, -0xb504, 0x55555555, x1, 80, x2)
+
+inst_552:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0xffff4aff, -0xb504, 0x3, x1, 84, x2)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0x66666666, 0xb505, x1, 88, x2)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff6eff, 0x66666666, -0xb503, x1, 92, x2)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666666, 0x66666667, x1, 96, x2)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x66666666, 0x33333334, x1, 100, x2)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x66666666, 0x6, x1, 104, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeef, 0x66666666, -0x55555555, x1, 108, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x66666666, 0x55555556, x1, 112, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x66666666, 0x4, x1, 116, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x6666f767, 0x66666666, 0xb503, x1, 120, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x66666666, 0x0, x1, 124, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666666, 0x66666665, x1, 128, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x66666666, 0x33333332, x1, 132, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(or, x12, x10, x11, 0x77777776, 0x66666666, 0x55555554, x1, 136, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x66666666, 0x2, x1, 140, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(or, x12, x10, x11, 0x6666f766, 0x66666666, 0xb504, x1, 144, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(or, x12, x10, x11, 0xffff6efe, 0x66666666, -0xb504, x1, 148, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(or, x12, x10, x11, 0x66666666, 0x66666666, 0x66666666, x1, 152, x2)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666666, 0x33333333, x1, 156, x2)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666666, 0x5, x1, 160, x2)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0xeeeeeeee, 0x66666666, -0x55555556, x1, 164, x2)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x66666666, 0x55555555, x1, 168, x2)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(or, x12, x10, x11, 0x66666667, 0x66666666, 0x3, x1, 172, x2)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(or, x12, x10, x11, 0x3333b737, 0x33333333, 0xb505, x1, 176, x2)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(or, x12, x10, x11, 0xffff7bff, 0x33333333, -0xb503, x1, 180, x2)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333333, 0x66666667, x1, 184, x2)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x33333333, 0x33333334, x1, 188, x2)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x33333333, 0x6, x1, 192, x2)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(or, x12, x10, x11, 0xbbbbbbbb, 0x33333333, -0x55555555, x1, 196, x2)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(or, x12, x10, x11, 0x77777777, 0x33333333, 0x55555556, x1, 200, x2)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(or, x12, x10, x11, 0x33333337, 0x33333333, 0x4, x1, 204, x2)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(or, x12, x10, x11, 0x3333b733, 0x33333333, 0xb503, x1, 208, x2)
+
+inst_584:
+// rs2_val == -536870913,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x40000000; op2val:-0x20000001
+TEST_RR_OP(or, x12, x10, x11, 0xdfffffff, -0x40000000, -0x20000001, x1, 212, x2)
+
+inst_585:
+// rs2_val == -268435457, rs1_val == 16384, rs1_val > 0 and rs2_val < 0
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:-0x10000001
+TEST_RR_OP(or, x12, x10, x11, 0xefffffff, 0x4000, -0x10000001, x1, 216, x2)
+
+inst_586:
+// rs2_val == -16777217, rs1_val == 0
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x1000001
+TEST_RR_OP(or, x12, x10, x11, 0xfeffffff, 0x0, -0x1000001, x1, 220, x2)
+
+inst_587:
+// rs2_val == -8388609,
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x800001
+TEST_RR_OP(or, x12, x10, x11, 0xff7fffff, 0x6, -0x800001, x1, 224, x2)
+
+inst_588:
+// rs2_val == -524289, rs1_val == -33
+// opcode: or ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:-0x80001
+TEST_RR_OP(or, x12, x10, x11, 0xffffffff, -0x21, -0x80001, x1, 228, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x5_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_2:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 58*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/ori-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/ori-01.S
new file mode 100644
index 000000000..fa55b6bf3
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/ori-01.S
@@ -0,0 +1,2865 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the ori instruction of the RISC-V E extension for the ori covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",ori)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rd, rs1==x12, rd==x9, imm_val == (-2**(12-1)), rs1_val > 0 and imm_val < 0, rs1_val != imm_val, imm_val == -2048, rs1_val == 2097152
+// opcode: ori ; op1:x12; dest:x9; op1val:0x200000; immval:-0x800
+TEST_IMM_OP( ori, x9, x12, 0xfffff800, 0x200000, -0x800, x1, 0, x2)
+
+inst_1:
+// rs1 == rd, rs1==x0, rd==x0, rs1_val == 2147483647, rs1_val > 0 and imm_val > 0, rs1_val == (2**(xlen-1)-1)
+// opcode: ori ; op1:x0; dest:x0; op1val:0x0; immval:0x3ff
+TEST_IMM_OP( ori, x0, x0, 0, 0x0, 0x3ff, x1, 4, x2)
+
+inst_2:
+// rs1==x6, rd==x7, rs1_val == -1073741825, rs1_val < 0 and imm_val > 0, imm_val == 1024
+// opcode: ori ; op1:x6; dest:x7; op1val:-0x40000001; immval:0x400
+TEST_IMM_OP( ori, x7, x6, 0xbfffffff, -0x40000001, 0x400, x1, 8, x2)
+
+inst_3:
+// rs1==x9, rd==x3, rs1_val == -536870913,
+// opcode: ori ; op1:x9; dest:x3; op1val:-0x20000001; immval:0x2d
+TEST_IMM_OP( ori, x3, x9, 0xdfffffff, -0x20000001, 0x2d, x1, 12, x2)
+
+inst_4:
+// rs1==x5, rd==x14, rs1_val == -268435457,
+// opcode: ori ; op1:x5; dest:x14; op1val:-0x10000001; immval:0x666
+TEST_IMM_OP( ori, x14, x5, 0xefffffff, -0x10000001, 0x666, x1, 16, x2)
+
+inst_5:
+// rs1==x13, rd==x11, rs1_val == -134217729, imm_val == 2
+// opcode: ori ; op1:x13; dest:x11; op1val:-0x8000001; immval:0x2
+TEST_IMM_OP( ori, x11, x13, 0xf7ffffff, -0x8000001, 0x2, x1, 20, x2)
+
+inst_6:
+// rs1==x3, rd==x5, rs1_val == -67108865,
+// opcode: ori ; op1:x3; dest:x5; op1val:-0x4000001; immval:0x2
+TEST_IMM_OP( ori, x5, x3, 0xfbffffff, -0x4000001, 0x2, x1, 24, x2)
+
+inst_7:
+// rs1==x11, rd==x12, rs1_val == -33554433,
+// opcode: ori ; op1:x11; dest:x12; op1val:-0x2000001; immval:0x3
+TEST_IMM_OP( ori, x12, x11, 0xfdffffff, -0x2000001, 0x3, x1, 28, x2)
+
+inst_8:
+// rs1==x10, rd==x15, rs1_val == -16777217, imm_val == 1
+// opcode: ori ; op1:x10; dest:x15; op1val:-0x1000001; immval:0x1
+TEST_IMM_OP( ori, x15, x10, 0xfeffffff, -0x1000001, 0x1, x1, 32, x2)
+
+inst_9:
+// rs1==x4, rd==x13, rs1_val == -8388609, rs1_val < 0 and imm_val < 0
+// opcode: ori ; op1:x4; dest:x13; op1val:-0x800001; immval:-0x555
+TEST_IMM_OP( ori, x13, x4, 0xffffffff, -0x800001, -0x555, x1, 36, x5)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_10:
+// rs1==x15, rd==x10, rs1_val == -4194305, imm_val == -3
+// opcode: ori ; op1:x15; dest:x10; op1val:-0x400001; immval:-0x3
+TEST_IMM_OP( ori, x10, x15, 0xffffffff, -0x400001, -0x3, x3, 0, x5)
+
+inst_11:
+// rs1==x7, rd==x4, rs1_val == -2097153, imm_val == 1365
+// opcode: ori ; op1:x7; dest:x4; op1val:-0x200001; immval:0x555
+TEST_IMM_OP( ori, x4, x7, 0xffdfffff, -0x200001, 0x555, x3, 4, x5)
+
+inst_12:
+// rs1==x2, rd==x6, rs1_val == -1048577, imm_val == -5
+// opcode: ori ; op1:x2; dest:x6; op1val:-0x100001; immval:-0x5
+TEST_IMM_OP( ori, x6, x2, 0xffffffff, -0x100001, -0x5, x3, 8, x5)
+
+inst_13:
+// rs1==x8, rd==x1, rs1_val == -524289,
+// opcode: ori ; op1:x8; dest:x1; op1val:-0x80001; immval:-0x3
+TEST_IMM_OP( ori, x1, x8, 0xffffffff, -0x80001, -0x3, x3, 12, x5)
+
+inst_14:
+// rs1==x1, rd==x2, rs1_val == -262145,
+// opcode: ori ; op1:x1; dest:x2; op1val:-0x40001; immval:0x333
+TEST_IMM_OP( ori, x2, x1, 0xfffbffff, -0x40001, 0x333, x3, 16, x5)
+
+inst_15:
+// rs1==x14, rd==x8, rs1_val == -131073,
+// opcode: ori ; op1:x14; dest:x8; op1val:-0x20001; immval:0x332
+TEST_IMM_OP( ori, x8, x14, 0xfffdffff, -0x20001, 0x332, x3, 20, x5)
+
+inst_16:
+// rs1_val == -65537, imm_val == 4
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x10001; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xfffeffff, -0x10001, 0x4, x3, 24, x5)
+
+inst_17:
+// rs1_val == -32769,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x8001; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xffff7fff, -0x8001, 0x555, x3, 28, x1)
+
+inst_18:
+// rs1_val == -16385,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x4001; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xffffbfff, -0x4001, 0x666, x3, 32, x1)
+
+inst_19:
+// rs1_val == -8193, imm_val == -9
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x2001; immval:-0x9
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x2001, -0x9, x3, 36, x1)
+
+inst_20:
+// rs1_val == -4097,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x1001; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x1001, -0x2d, x3, 40, x1)
+
+inst_21:
+// rs1_val == -2049,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x801; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xfffff7ff, -0x801, 0x666, x3, 44, x1)
+
+inst_22:
+// rs1_val == -1025,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x401; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x401, -0x2c, x3, 48, x1)
+
+inst_23:
+// rs1_val == -513,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x201; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffdff, -0x201, 0x555, x3, 52, x1)
+
+inst_24:
+// rs1_val == -257,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x101; immval:-0x3
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x101, -0x3, x3, 56, x1)
+
+inst_25:
+// rs1_val == -129,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x81; immval:-0x9
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x81, -0x9, x3, 60, x1)
+
+inst_26:
+// rs1_val == -65,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x41; immval:-0x4
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x41, -0x4, x3, 64, x1)
+
+inst_27:
+// rs1_val == -33, imm_val == -17
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x21; immval:-0x11
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x21, -0x11, x3, 68, x1)
+
+inst_28:
+// rs1_val == -17,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x11; immval:-0x5
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x11, -0x5, x3, 72, x1)
+
+inst_29:
+// rs1_val == -9,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x9; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xfffffff7, -0x9, 0x4, x3, 76, x1)
+
+inst_30:
+// rs1_val == -5,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x5; immval:-0x7
+TEST_IMM_OP( ori, x11, x10, 0xfffffffb, -0x5, -0x7, x3, 80, x1)
+
+inst_31:
+// rs1_val == -3, imm_val == -65
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x3; immval:-0x41
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x3, -0x41, x3, 84, x1)
+
+inst_32:
+// rs1_val == -2, imm_val == -129
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x2; immval:-0x81
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x2, -0x81, x3, 88, x1)
+
+inst_33:
+// imm_val == 2047, imm_val == (2**(12-1)-1), rs1_val == 8192
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2000; immval:0x7ff
+TEST_IMM_OP( ori, x11, x10, 0x27ff, 0x2000, 0x7ff, x3, 92, x1)
+
+inst_34:
+// imm_val == -1025,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:-0x401
+TEST_IMM_OP( ori, x11, x10, 0xfffffbff, 0x6, -0x401, x3, 96, x1)
+
+inst_35:
+// imm_val == -513, rs1_val == 131072
+// opcode: ori ; op1:x10; dest:x11; op1val:0x20000; immval:-0x201
+TEST_IMM_OP( ori, x11, x10, 0xfffffdff, 0x20000, -0x201, x3, 100, x1)
+
+inst_36:
+// imm_val == -257, rs1_val == 1431655765
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x101
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, 0x55555555, -0x101, x3, 104, x1)
+
+inst_37:
+// imm_val == -33,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x21
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x55555555, -0x21, x3, 108, x1)
+
+inst_38:
+// imm_val == -2,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x200001; immval:-0x2
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x200001, -0x2, x3, 112, x1)
+
+inst_39:
+// rs1_val == -2147483648, imm_val == 0, rs1_val == (-2**(xlen-1))
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x80000000; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x80000000, -0x80000000, 0x0, x3, 116, x1)
+
+inst_40:
+// rs1_val == 1073741824,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x40000000; immval:-0x2
+TEST_IMM_OP( ori, x11, x10, 0xfffffffe, 0x40000000, -0x2, x3, 120, x1)
+
+inst_41:
+// rs1_val == 536870912,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x20000000; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x20000555, 0x20000000, 0x555, x3, 124, x1)
+
+inst_42:
+// rs1_val == 268435456, imm_val == -1366
+// opcode: ori ; op1:x10; dest:x11; op1val:0x10000000; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaaa, 0x10000000, -0x556, x3, 128, x1)
+
+inst_43:
+// rs1_val == 134217728,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x8000000; immval:-0x1
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, 0x8000000, -0x1, x3, 132, x1)
+
+inst_44:
+// rs1_val == 67108864,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4000000; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x4000332, 0x4000000, 0x332, x3, 136, x1)
+
+inst_45:
+// rs1_val == 33554432,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2000000; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x2000556, 0x2000000, 0x556, x3, 140, x1)
+
+inst_46:
+// rs1_val == 16777216,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x1000000; immval:-0x401
+TEST_IMM_OP( ori, x11, x10, 0xfffffbff, 0x1000000, -0x401, x3, 144, x1)
+
+inst_47:
+// rs1_val == 8388608,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x800000; immval:-0x101
+TEST_IMM_OP( ori, x11, x10, 0xfffffeff, 0x800000, -0x101, x3, 148, x1)
+
+inst_48:
+// rs1_val == 4194304,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x400000; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x400000, 0x400000, 0x0, x3, 152, x1)
+
+inst_49:
+// rs1_val == 1048576,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x100000; immval:-0x21
+TEST_IMM_OP( ori, x11, x10, 0xffffffdf, 0x100000, -0x21, x3, 156, x1)
+
+inst_50:
+// rs1_val == 524288,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x80000; immval:-0x401
+TEST_IMM_OP( ori, x11, x10, 0xfffffbff, 0x80000, -0x401, x3, 160, x1)
+
+inst_51:
+// rs1_val == 262144,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x40000; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x40556, 0x40000, 0x556, x3, 164, x1)
+
+inst_52:
+// rs1_val == 65536,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x10000; immval:0x1
+TEST_IMM_OP( ori, x11, x10, 0x10001, 0x10000, 0x1, x3, 168, x1)
+
+inst_53:
+// rs1_val == 32768, imm_val == 512
+// opcode: ori ; op1:x10; dest:x11; op1val:0x8000; immval:0x200
+TEST_IMM_OP( ori, x11, x10, 0x8200, 0x8000, 0x200, x3, 172, x1)
+
+inst_54:
+// rs1_val == 16384,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4000; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd4, 0x4000, -0x2c, x3, 176, x1)
+
+inst_55:
+// rs1_val == 4096,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x1000; immval:-0x8
+TEST_IMM_OP( ori, x11, x10, 0xfffffff8, 0x1000, -0x8, x3, 180, x1)
+
+inst_56:
+// rs1_val == 2048,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x800; immval:-0x8
+TEST_IMM_OP( ori, x11, x10, 0xfffffff8, 0x800, -0x8, x3, 184, x1)
+
+inst_57:
+// rs1_val == 1024,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x400; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd3, 0x400, -0x2d, x3, 188, x1)
+
+inst_58:
+// rs1_val == 512,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x200; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd4, 0x200, -0x2c, x3, 192, x1)
+
+inst_59:
+// rs1_val == 256,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x100; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x102, 0x100, 0x2, x3, 196, x1)
+
+inst_60:
+// rs1_val == 128, rs1_val == imm_val, imm_val == 128
+// opcode: ori ; op1:x10; dest:x11; op1val:0x80; immval:0x80
+TEST_IMM_OP( ori, x11, x10, 0x80, 0x80, 0x80, x3, 200, x1)
+
+inst_61:
+// rs1_val == 64,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x40; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x46, 0x40, 0x6, x3, 204, x1)
+
+inst_62:
+// rs1_val == 32,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x20; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffff4, 0x20, -0x2c, x3, 208, x1)
+
+inst_63:
+// rs1_val == 16,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x10; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x555, 0x10, 0x555, x3, 212, x1)
+
+inst_64:
+// rs1_val == 8,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x8; immval:-0xa
+TEST_IMM_OP( ori, x11, x10, 0xfffffffe, 0x8, -0xa, x3, 216, x1)
+
+inst_65:
+// rs1_val == 4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x3ff
+TEST_IMM_OP( ori, x11, x10, 0x3ff, 0x4, 0x3ff, x3, 220, x1)
+
+inst_66:
+// rs1_val == 2, rs1_val==2 and imm_val==2
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x2, 0x2, 0x2, x3, 224, x1)
+
+inst_67:
+// rs1_val == 1,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x1; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x1, 0x1, 0x0, x3, 228, x1)
+
+inst_68:
+// imm_val == 256,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x20000000; immval:0x100
+TEST_IMM_OP( ori, x11, x10, 0x20000100, 0x20000000, 0x100, x3, 232, x1)
+
+inst_69:
+// imm_val == 64,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x40
+TEST_IMM_OP( ori, x11, x10, 0x44, 0x4, 0x40, x3, 236, x1)
+
+inst_70:
+// imm_val == 32,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x20
+TEST_IMM_OP( ori, x11, x10, 0x33333334, 0x33333334, 0x20, x3, 240, x1)
+
+inst_71:
+// imm_val == 16,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x10
+TEST_IMM_OP( ori, x11, x10, 0x33333333, 0x33333333, 0x10, x3, 244, x1)
+
+inst_72:
+// imm_val == 8,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x8; immval:0x8
+TEST_IMM_OP( ori, x11, x10, 0xfffffff8, -0x8, 0x8, x3, 248, x1)
+
+inst_73:
+// rs1_val==46341 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0xb52f, 0xb505, 0x2e, x3, 252, x1)
+
+inst_74:
+// rs1_val==46341 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd5, 0xb505, -0x2c, x3, 256, x1)
+
+inst_75:
+// rs1_val==46341 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0xb767, 0xb505, 0x667, x3, 260, x1)
+
+inst_76:
+// rs1_val==46341 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0xb735, 0xb505, 0x334, x3, 264, x1)
+
+inst_77:
+// rs1_val==46341 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0xb507, 0xb505, 0x6, x3, 268, x1)
+
+inst_78:
+// rs1_val==46341 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xffffffaf, 0xb505, -0x555, x3, 272, x1)
+
+inst_79:
+// rs1_val==46341 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0xb557, 0xb505, 0x556, x3, 276, x1)
+
+inst_80:
+// rs1_val==46341 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xb505, 0xb505, 0x4, x3, 280, x1)
+
+inst_81:
+// rs1_val==46341 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0xb52d, 0xb505, 0x2c, x3, 284, x1)
+
+inst_82:
+// rs1_val==46341 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0xb505, 0xb505, 0x0, x3, 288, x1)
+
+inst_83:
+// rs1_val==46341 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0xb765, 0xb505, 0x665, x3, 292, x1)
+
+inst_84:
+// rs1_val==46341 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0xb737, 0xb505, 0x332, x3, 296, x1)
+
+inst_85:
+// rs1_val==46341 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0xb555, 0xb505, 0x554, x3, 300, x1)
+
+inst_86:
+// rs1_val==46341 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0xb507, 0xb505, 0x2, x3, 304, x1)
+
+inst_87:
+// rs1_val==46341 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0xb52d, 0xb505, 0x2d, x3, 308, x1)
+
+inst_88:
+// rs1_val==46341 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0xb505, -0x2d, x3, 312, x1)
+
+inst_89:
+// rs1_val==46341 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xb767, 0xb505, 0x666, x3, 316, x1)
+
+inst_90:
+// rs1_val==46341 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0xb737, 0xb505, 0x333, x3, 320, x1)
+
+inst_91:
+// rs1_val==46341 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0xb505, 0xb505, 0x5, x3, 324, x1)
+
+inst_92:
+// rs1_val==46341 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xffffffaf, 0xb505, -0x556, x3, 328, x1)
+
+inst_93:
+// rs1_val==46341 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xb555, 0xb505, 0x555, x3, 332, x1)
+
+inst_94:
+// rs1_val==46341 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb505; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0xb507, 0xb505, 0x3, x3, 336, x1)
+
+inst_95:
+// rs1_val==-46339 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0xffff4aff, -0xb503, 0x2e, x3, 340, x1)
+
+inst_96:
+// rs1_val==-46339 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffffd, -0xb503, -0x2c, x3, 344, x1)
+
+inst_97:
+// rs1_val==-46339 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0xffff4eff, -0xb503, 0x667, x3, 348, x1)
+
+inst_98:
+// rs1_val==-46339 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0xffff4bfd, -0xb503, 0x334, x3, 352, x1)
+
+inst_99:
+// rs1_val==-46339 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0xffff4aff, -0xb503, 0x6, x3, 356, x1)
+
+inst_100:
+// rs1_val==-46339 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaff, -0xb503, -0x555, x3, 360, x1)
+
+inst_101:
+// rs1_val==-46339 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0xffff4fff, -0xb503, 0x556, x3, 364, x1)
+
+inst_102:
+// rs1_val==-46339 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xffff4afd, -0xb503, 0x4, x3, 368, x1)
+
+inst_103:
+// rs1_val==-46339 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffff4afd, -0xb503, 0x2c, x3, 372, x1)
+
+inst_104:
+// rs1_val==-46339 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0xffff4afd, -0xb503, 0x0, x3, 376, x1)
+
+inst_105:
+// rs1_val==-46339 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0xffff4efd, -0xb503, 0x665, x3, 380, x1)
+
+inst_106:
+// rs1_val==-46339 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0xffff4bff, -0xb503, 0x332, x3, 384, x1)
+
+inst_107:
+// rs1_val==-46339 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0xffff4ffd, -0xb503, 0x554, x3, 388, x1)
+
+inst_108:
+// rs1_val==-46339 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0xffff4aff, -0xb503, 0x2, x3, 392, x1)
+
+inst_109:
+// rs1_val==-46339 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffff4afd, -0xb503, 0x2d, x3, 396, x1)
+
+inst_110:
+// rs1_val==-46339 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0xb503, -0x2d, x3, 400, x1)
+
+inst_111:
+// rs1_val==-46339 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xffff4eff, -0xb503, 0x666, x3, 404, x1)
+
+inst_112:
+// rs1_val==-46339 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0xffff4bff, -0xb503, 0x333, x3, 408, x1)
+
+inst_113:
+// rs1_val==-46339 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0xffff4afd, -0xb503, 0x5, x3, 412, x1)
+
+inst_114:
+// rs1_val==-46339 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaff, -0xb503, -0x556, x3, 416, x1)
+
+inst_115:
+// rs1_val==-46339 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xffff4ffd, -0xb503, 0x555, x3, 420, x1)
+
+inst_116:
+// rs1_val==-46339 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0xffff4aff, -0xb503, 0x3, x3, 424, x1)
+
+inst_117:
+// rs1_val==1717986919 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x6666666f, 0x66666667, 0x2e, x3, 428, x1)
+
+inst_118:
+// rs1_val==1717986919 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffff7, 0x66666667, -0x2c, x3, 432, x1)
+
+inst_119:
+// rs1_val==1717986919 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x667, x3, 436, x1)
+
+inst_120:
+// rs1_val==1717986919 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666667, 0x334, x3, 440, x1)
+
+inst_121:
+// rs1_val==1717986919 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x6, x3, 444, x1)
+
+inst_122:
+// rs1_val==1717986919 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffeef, 0x66666667, -0x555, x3, 448, x1)
+
+inst_123:
+// rs1_val==1717986919 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666667, 0x556, x3, 452, x1)
+
+inst_124:
+// rs1_val==1717986919 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x4, x3, 456, x1)
+
+inst_125:
+// rs1_val==1717986919 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x6666666f, 0x66666667, 0x2c, x3, 460, x1)
+
+inst_126:
+// rs1_val==1717986919 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x0, x3, 464, x1)
+
+inst_127:
+// rs1_val==1717986919 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x665, x3, 468, x1)
+
+inst_128:
+// rs1_val==1717986919 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666667, 0x332, x3, 472, x1)
+
+inst_129:
+// rs1_val==1717986919 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666667, 0x554, x3, 476, x1)
+
+inst_130:
+// rs1_val==1717986919 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x2, x3, 480, x1)
+
+inst_131:
+// rs1_val==1717986919 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x6666666f, 0x66666667, 0x2d, x3, 484, x1)
+
+inst_132:
+// rs1_val==1717986919 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xfffffff7, 0x66666667, -0x2d, x3, 488, x1)
+
+inst_133:
+// rs1_val==1717986919 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x666, x3, 492, x1)
+
+inst_134:
+// rs1_val==1717986919 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666667, 0x333, x3, 496, x1)
+
+inst_135:
+// rs1_val==1717986919 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x5, x3, 500, x1)
+
+inst_136:
+// rs1_val==1717986919 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffeef, 0x66666667, -0x556, x3, 504, x1)
+
+inst_137:
+// rs1_val==1717986919 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666667, 0x555, x3, 508, x1)
+
+inst_138:
+// rs1_val==1717986919 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666667, 0x3, x3, 512, x1)
+
+inst_139:
+// rs1_val==858993460 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x3333333e, 0x33333334, 0x2e, x3, 516, x1)
+
+inst_140:
+// rs1_val==858993460 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffff4, 0x33333334, -0x2c, x3, 520, x1)
+
+inst_141:
+// rs1_val==858993460 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333334, 0x667, x3, 524, x1)
+
+inst_142:
+// rs1_val==858993460 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x33333334, 0x33333334, 0x334, x3, 528, x1)
+
+inst_143:
+// rs1_val==858993460 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x33333336, 0x33333334, 0x6, x3, 532, x1)
+
+inst_144:
+// rs1_val==858993460 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffbbf, 0x33333334, -0x555, x3, 536, x1)
+
+inst_145:
+// rs1_val==858993460 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x33333776, 0x33333334, 0x556, x3, 540, x1)
+
+inst_146:
+// rs1_val==858993460 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x33333334, 0x33333334, 0x4, x3, 544, x1)
+
+inst_147:
+// rs1_val==858993460 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x3333333c, 0x33333334, 0x2c, x3, 548, x1)
+
+inst_148:
+// rs1_val==858993460 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x33333334, 0x33333334, 0x0, x3, 552, x1)
+
+inst_149:
+// rs1_val==858993460 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x33333775, 0x33333334, 0x665, x3, 556, x1)
+
+inst_150:
+// rs1_val==858993460 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x33333336, 0x33333334, 0x332, x3, 560, x1)
+
+inst_151:
+// rs1_val==858993460 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x33333774, 0x33333334, 0x554, x3, 564, x1)
+
+inst_152:
+// rs1_val==858993460 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x33333336, 0x33333334, 0x2, x3, 568, x1)
+
+inst_153:
+// rs1_val==858993460 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x3333333d, 0x33333334, 0x2d, x3, 572, x1)
+
+inst_154:
+// rs1_val==858993460 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xfffffff7, 0x33333334, -0x2d, x3, 576, x1)
+
+inst_155:
+// rs1_val==858993460 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x33333776, 0x33333334, 0x666, x3, 580, x1)
+
+inst_156:
+// rs1_val==858993460 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x33333337, 0x33333334, 0x333, x3, 584, x1)
+
+inst_157:
+// rs1_val==858993460 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x33333335, 0x33333334, 0x5, x3, 588, x1)
+
+inst_158:
+// rs1_val==858993460 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffbbe, 0x33333334, -0x556, x3, 592, x1)
+
+inst_159:
+// rs1_val==858993460 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x33333775, 0x33333334, 0x555, x3, 596, x1)
+
+inst_160:
+// rs1_val==858993460 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x33333337, 0x33333334, 0x3, x3, 600, x1)
+
+inst_161:
+// rs1_val==6 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x2e, 0x6, 0x2e, x3, 604, x1)
+
+inst_162:
+// rs1_val==6 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd6, 0x6, -0x2c, x3, 608, x1)
+
+inst_163:
+// rs1_val==6 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x6, 0x667, x3, 612, x1)
+
+inst_164:
+// rs1_val==6 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x336, 0x6, 0x334, x3, 616, x1)
+
+inst_165:
+// rs1_val==6 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x6, 0x6, x3, 620, x1)
+
+inst_166:
+// rs1_val==6 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaaf, 0x6, -0x555, x3, 624, x1)
+
+inst_167:
+// rs1_val==6 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x556, 0x6, 0x556, x3, 628, x1)
+
+inst_168:
+// rs1_val==6 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x6, 0x4, x3, 632, x1)
+
+inst_169:
+// rs1_val==6 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x2e, 0x6, 0x2c, x3, 636, x1)
+
+inst_170:
+// rs1_val==6 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x6, 0x0, x3, 640, x1)
+
+inst_171:
+// rs1_val==6 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x6, 0x665, x3, 644, x1)
+
+inst_172:
+// rs1_val==6 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x336, 0x6, 0x332, x3, 648, x1)
+
+inst_173:
+// rs1_val==6 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x556, 0x6, 0x554, x3, 652, x1)
+
+inst_174:
+// rs1_val==6 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x6, 0x2, x3, 656, x1)
+
+inst_175:
+// rs1_val==6 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x2f, 0x6, 0x2d, x3, 660, x1)
+
+inst_176:
+// rs1_val==6 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0x6, -0x2d, x3, 664, x1)
+
+inst_177:
+// rs1_val==6 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x666, 0x6, 0x666, x3, 668, x1)
+
+inst_178:
+// rs1_val==6 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x337, 0x6, 0x333, x3, 672, x1)
+
+inst_179:
+// rs1_val==6 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x6, 0x5, x3, 676, x1)
+
+inst_180:
+// rs1_val==6 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaae, 0x6, -0x556, x3, 680, x1)
+
+inst_181:
+// rs1_val==6 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x557, 0x6, 0x555, x3, 684, x1)
+
+inst_182:
+// rs1_val==6 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x6; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x6, 0x3, x3, 688, x1)
+
+inst_183:
+// rs1_val==-1431655765 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaf, -0x55555555, 0x2e, x3, 692, x1)
+
+inst_184:
+// rs1_val==-1431655765 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0x55555555, -0x2c, x3, 696, x1)
+
+inst_185:
+// rs1_val==-1431655765 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaeef, -0x55555555, 0x667, x3, 700, x1)
+
+inst_186:
+// rs1_val==-1431655765 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0xaaaaabbf, -0x55555555, 0x334, x3, 704, x1)
+
+inst_187:
+// rs1_val==-1431655765 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaf, -0x55555555, 0x6, x3, 708, x1)
+
+inst_188:
+// rs1_val==-1431655765 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaab, -0x55555555, -0x555, x3, 712, x1)
+
+inst_189:
+// rs1_val==-1431655765 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0xaaaaafff, -0x55555555, 0x556, x3, 716, x1)
+
+inst_190:
+// rs1_val==-1431655765 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaf, -0x55555555, 0x4, x3, 720, x1)
+
+inst_191:
+// rs1_val==-1431655765 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaf, -0x55555555, 0x2c, x3, 724, x1)
+
+inst_192:
+// rs1_val==-1431655765 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaab, -0x55555555, 0x0, x3, 728, x1)
+
+inst_193:
+// rs1_val==-1431655765 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaeef, -0x55555555, 0x665, x3, 732, x1)
+
+inst_194:
+// rs1_val==-1431655765 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0xaaaaabbb, -0x55555555, 0x332, x3, 736, x1)
+
+inst_195:
+// rs1_val==-1431655765 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0xaaaaafff, -0x55555555, 0x554, x3, 740, x1)
+
+inst_196:
+// rs1_val==-1431655765 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaab, -0x55555555, 0x2, x3, 744, x1)
+
+inst_197:
+// rs1_val==-1431655765 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaf, -0x55555555, 0x2d, x3, 748, x1)
+
+inst_198:
+// rs1_val==-1431655765 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xfffffffb, -0x55555555, -0x2d, x3, 752, x1)
+
+inst_199:
+// rs1_val==-1431655765 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaeef, -0x55555555, 0x666, x3, 756, x1)
+
+inst_200:
+// rs1_val==-1431655765 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0xaaaaabbb, -0x55555555, 0x333, x3, 760, x1)
+
+inst_201:
+// rs1_val==-1431655765 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaf, -0x55555555, 0x5, x3, 764, x1)
+
+inst_202:
+// rs1_val==-1431655765 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaab, -0x55555555, -0x556, x3, 768, x1)
+
+inst_203:
+// rs1_val==-1431655765 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xaaaaafff, -0x55555555, 0x555, x3, 772, x1)
+
+inst_204:
+// rs1_val==-1431655765 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaab, -0x55555555, 0x3, x3, 776, x1)
+
+inst_205:
+// rs1_val==1431655766 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x5555557e, 0x55555556, 0x2e, x3, 780, x1)
+
+inst_206:
+// rs1_val==1431655766 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd6, 0x55555556, -0x2c, x3, 784, x1)
+
+inst_207:
+// rs1_val==1431655766 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555556, 0x667, x3, 788, x1)
+
+inst_208:
+// rs1_val==1431655766 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x55555776, 0x55555556, 0x334, x3, 792, x1)
+
+inst_209:
+// rs1_val==1431655766 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555556, 0x6, x3, 796, x1)
+
+inst_210:
+// rs1_val==1431655766 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, 0x55555556, -0x555, x3, 800, x1)
+
+inst_211:
+// rs1_val==1431655766 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555556, 0x556, x3, 804, x1)
+
+inst_212:
+// rs1_val==1431655766 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555556, 0x4, x3, 808, x1)
+
+inst_213:
+// rs1_val==1431655766 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x5555557e, 0x55555556, 0x2c, x3, 812, x1)
+
+inst_214:
+// rs1_val==1431655766 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555556, 0x0, x3, 816, x1)
+
+inst_215:
+// rs1_val==1431655766 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555556, 0x665, x3, 820, x1)
+
+inst_216:
+// rs1_val==1431655766 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x55555776, 0x55555556, 0x332, x3, 824, x1)
+
+inst_217:
+// rs1_val==1431655766 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555556, 0x554, x3, 828, x1)
+
+inst_218:
+// rs1_val==1431655766 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555556, 0x2, x3, 832, x1)
+
+inst_219:
+// rs1_val==1431655766 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x5555557f, 0x55555556, 0x2d, x3, 836, x1)
+
+inst_220:
+// rs1_val==1431655766 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0x55555556, -0x2d, x3, 840, x1)
+
+inst_221:
+// rs1_val==1431655766 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x55555776, 0x55555556, 0x666, x3, 844, x1)
+
+inst_222:
+// rs1_val==1431655766 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555556, 0x333, x3, 848, x1)
+
+inst_223:
+// rs1_val==1431655766 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x55555557, 0x55555556, 0x5, x3, 852, x1)
+
+inst_224:
+// rs1_val==1431655766 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffffe, 0x55555556, -0x556, x3, 856, x1)
+
+inst_225:
+// rs1_val==1431655766 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x55555557, 0x55555556, 0x555, x3, 860, x1)
+
+inst_226:
+// rs1_val==1431655766 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x55555557, 0x55555556, 0x3, x3, 864, x1)
+
+inst_227:
+// rs1_val==4 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x2e, 0x4, 0x2e, x3, 868, x1)
+
+inst_228:
+// rs1_val==4 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd4, 0x4, -0x2c, x3, 872, x1)
+
+inst_229:
+// rs1_val==4 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x4, 0x667, x3, 876, x1)
+
+inst_230:
+// rs1_val==4 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x334, 0x4, 0x334, x3, 880, x1)
+
+inst_231:
+// rs1_val==4 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x4, 0x6, x3, 884, x1)
+
+inst_232:
+// rs1_val==4 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaaf, 0x4, -0x555, x3, 888, x1)
+
+inst_233:
+// rs1_val==4 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x556, 0x4, 0x556, x3, 892, x1)
+
+inst_234:
+// rs1_val==4 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x4, 0x4, 0x4, x3, 896, x1)
+
+inst_235:
+// rs1_val==4 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x2c, 0x4, 0x2c, x3, 900, x1)
+
+inst_236:
+// rs1_val==4 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x4, 0x4, 0x0, x3, 904, x1)
+
+inst_237:
+// rs1_val==4 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x665, 0x4, 0x665, x3, 908, x1)
+
+inst_238:
+// rs1_val==4 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x336, 0x4, 0x332, x3, 912, x1)
+
+inst_239:
+// rs1_val==4 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x554, 0x4, 0x554, x3, 916, x1)
+
+inst_240:
+// rs1_val==4 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x4, 0x2, x3, 920, x1)
+
+inst_241:
+// rs1_val==4 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x2d, 0x4, 0x2d, x3, 924, x1)
+
+inst_242:
+// rs1_val==4 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0x4, -0x2d, x3, 928, x1)
+
+inst_243:
+// rs1_val==4 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x666, 0x4, 0x666, x3, 932, x1)
+
+inst_244:
+// rs1_val==4 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x337, 0x4, 0x333, x3, 936, x1)
+
+inst_245:
+// rs1_val==4 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x5, 0x4, 0x5, x3, 940, x1)
+
+inst_246:
+// rs1_val==4 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaae, 0x4, -0x556, x3, 944, x1)
+
+inst_247:
+// rs1_val==4 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x555, 0x4, 0x555, x3, 948, x1)
+
+inst_248:
+// rs1_val==4 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x4; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x4, 0x3, x3, 952, x1)
+
+inst_249:
+// rs1_val==46339 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0xb52f, 0xb503, 0x2e, x3, 956, x1)
+
+inst_250:
+// rs1_val==46339 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0xb503, -0x2c, x3, 960, x1)
+
+inst_251:
+// rs1_val==46339 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0xb767, 0xb503, 0x667, x3, 964, x1)
+
+inst_252:
+// rs1_val==46339 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0xb737, 0xb503, 0x334, x3, 968, x1)
+
+inst_253:
+// rs1_val==46339 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0xb507, 0xb503, 0x6, x3, 972, x1)
+
+inst_254:
+// rs1_val==46339 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xffffffab, 0xb503, -0x555, x3, 976, x1)
+
+inst_255:
+// rs1_val==46339 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0xb557, 0xb503, 0x556, x3, 980, x1)
+
+inst_256:
+// rs1_val==46339 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xb507, 0xb503, 0x4, x3, 984, x1)
+
+inst_257:
+// rs1_val==46339 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0xb52f, 0xb503, 0x2c, x3, 988, x1)
+
+inst_258:
+// rs1_val==46339 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0xb503, 0xb503, 0x0, x3, 992, x1)
+
+inst_259:
+// rs1_val==46339 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0xb767, 0xb503, 0x665, x3, 996, x1)
+
+inst_260:
+// rs1_val==46339 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0xb733, 0xb503, 0x332, x3, 1000, x1)
+
+inst_261:
+// rs1_val==46339 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0xb557, 0xb503, 0x554, x3, 1004, x1)
+
+inst_262:
+// rs1_val==46339 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0xb503, 0xb503, 0x2, x3, 1008, x1)
+
+inst_263:
+// rs1_val==46339 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0xb52f, 0xb503, 0x2d, x3, 1012, x1)
+
+inst_264:
+// rs1_val==46339 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd3, 0xb503, -0x2d, x3, 1016, x1)
+
+inst_265:
+// rs1_val==46339 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xb767, 0xb503, 0x666, x3, 1020, x1)
+
+inst_266:
+// rs1_val==46339 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0xb733, 0xb503, 0x333, x3, 1024, x1)
+
+inst_267:
+// rs1_val==46339 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0xb507, 0xb503, 0x5, x3, 1028, x1)
+
+inst_268:
+// rs1_val==46339 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xffffffab, 0xb503, -0x556, x3, 1032, x1)
+
+inst_269:
+// rs1_val==46339 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xb557, 0xb503, 0x555, x3, 1036, x1)
+
+inst_270:
+// rs1_val==46339 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb503; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0xb503, 0xb503, 0x3, x3, 1040, x1)
+
+inst_271:
+// rs1_val==0 and imm_val==46, rs1_val == 0
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x2e, 0x0, 0x2e, x3, 1044, x1)
+
+inst_272:
+// rs1_val==0 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd4, 0x0, -0x2c, x3, 1048, x1)
+
+inst_273:
+// rs1_val==0 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x0, 0x667, x3, 1052, x1)
+
+inst_274:
+// rs1_val==0 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x334, 0x0, 0x334, x3, 1056, x1)
+
+inst_275:
+// rs1_val==0 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x0, 0x6, x3, 1060, x1)
+
+inst_276:
+// rs1_val==0 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaab, 0x0, -0x555, x3, 1064, x1)
+
+inst_277:
+// rs1_val==0 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x556, 0x0, 0x556, x3, 1068, x1)
+
+inst_278:
+// rs1_val==0 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x4, 0x0, 0x4, x3, 1072, x1)
+
+inst_279:
+// rs1_val==0 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x2c, 0x0, 0x2c, x3, 1076, x1)
+
+inst_280:
+// rs1_val==0 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x0, 0x0, 0x0, x3, 1080, x1)
+
+inst_281:
+// rs1_val==0 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x665, 0x0, 0x665, x3, 1084, x1)
+
+inst_282:
+// rs1_val==0 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x332, 0x0, 0x332, x3, 1088, x1)
+
+inst_283:
+// rs1_val==0 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x554, 0x0, 0x554, x3, 1092, x1)
+
+inst_284:
+// rs1_val==0 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x2, 0x0, 0x2, x3, 1096, x1)
+
+inst_285:
+// rs1_val==0 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x2d, 0x0, 0x2d, x3, 1100, x1)
+
+inst_286:
+// rs1_val==0 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd3, 0x0, -0x2d, x3, 1104, x1)
+
+inst_287:
+// rs1_val==0 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x666, 0x0, 0x666, x3, 1108, x1)
+
+inst_288:
+// rs1_val==0 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x333, 0x0, 0x333, x3, 1112, x1)
+
+inst_289:
+// rs1_val==0 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x5, 0x0, 0x5, x3, 1116, x1)
+
+inst_290:
+// rs1_val==0 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaaa, 0x0, -0x556, x3, 1120, x1)
+
+inst_291:
+// rs1_val==0 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x555, 0x0, 0x555, x3, 1124, x1)
+
+inst_292:
+// rs1_val==0 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x0; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x3, 0x0, 0x3, x3, 1128, x1)
+
+inst_293:
+// rs1_val==1717986917 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x6666666f, 0x66666665, 0x2e, x3, 1132, x1)
+
+inst_294:
+// rs1_val==1717986917 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffff5, 0x66666665, -0x2c, x3, 1136, x1)
+
+inst_295:
+// rs1_val==1717986917 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666665, 0x667, x3, 1140, x1)
+
+inst_296:
+// rs1_val==1717986917 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x66666775, 0x66666665, 0x334, x3, 1144, x1)
+
+inst_297:
+// rs1_val==1717986917 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666665, 0x6, x3, 1148, x1)
+
+inst_298:
+// rs1_val==1717986917 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffeef, 0x66666665, -0x555, x3, 1152, x1)
+
+inst_299:
+// rs1_val==1717986917 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666665, 0x556, x3, 1156, x1)
+
+inst_300:
+// rs1_val==1717986917 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x66666665, 0x66666665, 0x4, x3, 1160, x1)
+
+inst_301:
+// rs1_val==1717986917 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x6666666d, 0x66666665, 0x2c, x3, 1164, x1)
+
+inst_302:
+// rs1_val==-1431655766 and imm_val==-1365, rs1_val == -1431655766
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaab, -0x55555556, -0x555, x3, 1168, x1)
+
+inst_303:
+// rs1_val==-1431655766 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaffe, -0x55555556, 0x556, x3, 1172, x1)
+
+inst_304:
+// rs1_val==-1431655766 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaae, -0x55555556, 0x4, x3, 1176, x1)
+
+inst_305:
+// rs1_val==-1431655766 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaae, -0x55555556, 0x2c, x3, 1180, x1)
+
+inst_306:
+// rs1_val==-1431655766 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaa, -0x55555556, 0x0, x3, 1184, x1)
+
+inst_307:
+// rs1_val==-1431655766 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaeef, -0x55555556, 0x665, x3, 1188, x1)
+
+inst_308:
+// rs1_val==-1431655766 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0xaaaaabba, -0x55555556, 0x332, x3, 1192, x1)
+
+inst_309:
+// rs1_val==-1431655766 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaffe, -0x55555556, 0x554, x3, 1196, x1)
+
+inst_310:
+// rs1_val==-1431655766 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaa, -0x55555556, 0x2, x3, 1200, x1)
+
+inst_311:
+// rs1_val==-1431655766 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaf, -0x55555556, 0x2d, x3, 1204, x1)
+
+inst_312:
+// rs1_val==-1431655766 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xfffffffb, -0x55555556, -0x2d, x3, 1208, x1)
+
+inst_313:
+// rs1_val==-1431655766 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaeee, -0x55555556, 0x666, x3, 1212, x1)
+
+inst_314:
+// rs1_val==-1431655766 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0xaaaaabbb, -0x55555556, 0x333, x3, 1216, x1)
+
+inst_315:
+// rs1_val==-1431655766 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaaf, -0x55555556, 0x5, x3, 1220, x1)
+
+inst_316:
+// rs1_val==-1431655766 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaaa, -0x55555556, -0x556, x3, 1224, x1)
+
+inst_317:
+// rs1_val==-1431655766 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xaaaaafff, -0x55555556, 0x555, x3, 1228, x1)
+
+inst_318:
+// rs1_val==-1431655766 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaab, -0x55555556, 0x3, x3, 1232, x1)
+
+inst_319:
+// rs1_val==1431655765 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x5555557f, 0x55555555, 0x2e, x3, 1236, x1)
+
+inst_320:
+// rs1_val==1431655765 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd5, 0x55555555, -0x2c, x3, 1240, x1)
+
+inst_321:
+// rs1_val==1431655765 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555555, 0x667, x3, 1244, x1)
+
+inst_322:
+// rs1_val==1431655765 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x55555775, 0x55555555, 0x334, x3, 1248, x1)
+
+inst_323:
+// rs1_val==1431655765 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x55555557, 0x55555555, 0x6, x3, 1252, x1)
+
+inst_324:
+// rs1_val==1431655765 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, 0x55555555, -0x555, x3, 1256, x1)
+
+inst_325:
+// rs1_val==1431655765 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x55555557, 0x55555555, 0x556, x3, 1260, x1)
+
+inst_326:
+// rs1_val==1431655765 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x55555555, 0x55555555, 0x4, x3, 1264, x1)
+
+inst_327:
+// rs1_val==1431655765 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x5555557d, 0x55555555, 0x2c, x3, 1268, x1)
+
+inst_328:
+// rs1_val==1431655765 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x55555555, 0x55555555, 0x0, x3, 1272, x1)
+
+inst_329:
+// rs1_val==1431655765 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x55555775, 0x55555555, 0x665, x3, 1276, x1)
+
+inst_330:
+// rs1_val==1431655765 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555555, 0x332, x3, 1280, x1)
+
+inst_331:
+// rs1_val==1431655765 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x55555555, 0x55555555, 0x554, x3, 1284, x1)
+
+inst_332:
+// rs1_val==1431655765 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x55555557, 0x55555555, 0x2, x3, 1288, x1)
+
+inst_333:
+// rs1_val==1431655765 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x5555557d, 0x55555555, 0x2d, x3, 1292, x1)
+
+inst_334:
+// rs1_val==1431655765 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0x55555555, -0x2d, x3, 1296, x1)
+
+inst_335:
+// rs1_val==1431655765 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555555, 0x666, x3, 1300, x1)
+
+inst_336:
+// rs1_val==1431655765 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555555, 0x333, x3, 1304, x1)
+
+inst_337:
+// rs1_val==1431655765 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x55555555, 0x55555555, 0x5, x3, 1308, x1)
+
+inst_338:
+// rs1_val==1431655765 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, 0x55555555, -0x556, x3, 1312, x1)
+
+inst_339:
+// rs1_val==1431655765 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x55555555, 0x55555555, 0x555, x3, 1316, x1)
+
+inst_340:
+// rs1_val==1431655765 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x55555557, 0x55555555, 0x3, x3, 1320, x1)
+
+inst_341:
+// rs1_val==3 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x2f, 0x3, 0x2e, x3, 1324, x1)
+
+inst_342:
+// rs1_val==3 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0x3, -0x2c, x3, 1328, x1)
+
+inst_343:
+// rs1_val==3 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x3, 0x667, x3, 1332, x1)
+
+inst_344:
+// rs1_val==3 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x337, 0x3, 0x334, x3, 1336, x1)
+
+inst_345:
+// rs1_val==3 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x3, 0x6, x3, 1340, x1)
+
+inst_346:
+// rs1_val==3 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaab, 0x3, -0x555, x3, 1344, x1)
+
+inst_347:
+// rs1_val==3 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x557, 0x3, 0x556, x3, 1348, x1)
+
+inst_348:
+// rs1_val==3 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x3, 0x4, x3, 1352, x1)
+
+inst_349:
+// rs1_val==3 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x2f, 0x3, 0x2c, x3, 1356, x1)
+
+inst_350:
+// rs1_val==3 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x3, 0x3, 0x0, x3, 1360, x1)
+
+inst_351:
+// rs1_val==3 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x3, 0x665, x3, 1364, x1)
+
+inst_352:
+// rs1_val==3 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x333, 0x3, 0x332, x3, 1368, x1)
+
+inst_353:
+// rs1_val==3 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x557, 0x3, 0x554, x3, 1372, x1)
+
+inst_354:
+// rs1_val==3 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x3, 0x3, 0x2, x3, 1376, x1)
+
+inst_355:
+// rs1_val==3 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x2f, 0x3, 0x2d, x3, 1380, x1)
+
+inst_356:
+// rs1_val==3 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd3, 0x3, -0x2d, x3, 1384, x1)
+
+inst_357:
+// rs1_val==3 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x3, 0x666, x3, 1388, x1)
+
+inst_358:
+// rs1_val==3 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x333, 0x3, 0x333, x3, 1392, x1)
+
+inst_359:
+// rs1_val==3 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x3, 0x5, x3, 1396, x1)
+
+inst_360:
+// rs1_val==3 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaab, 0x3, -0x556, x3, 1400, x1)
+
+inst_361:
+// rs1_val==3 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x557, 0x3, 0x555, x3, 1404, x1)
+
+inst_362:
+// rs1_val==3 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x3; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x3, 0x3, 0x3, x3, 1408, x1)
+
+inst_363:
+// rs1_val==1717986917 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x66666665, 0x66666665, 0x0, x3, 1412, x1)
+
+inst_364:
+// rs1_val==1717986917 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x66666665, 0x66666665, 0x665, x3, 1416, x1)
+
+inst_365:
+// rs1_val==1717986917 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666665, 0x332, x3, 1420, x1)
+
+inst_366:
+// rs1_val==1717986917 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x66666775, 0x66666665, 0x554, x3, 1424, x1)
+
+inst_367:
+// rs1_val==1717986917 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666665, 0x2, x3, 1428, x1)
+
+inst_368:
+// rs1_val==1717986917 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x6666666d, 0x66666665, 0x2d, x3, 1432, x1)
+
+inst_369:
+// rs1_val==1717986917 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xfffffff7, 0x66666665, -0x2d, x3, 1436, x1)
+
+inst_370:
+// rs1_val==1717986917 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666665, 0x666, x3, 1440, x1)
+
+inst_371:
+// rs1_val==1717986917 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666665, 0x333, x3, 1444, x1)
+
+inst_372:
+// rs1_val==1717986917 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x66666665, 0x66666665, 0x5, x3, 1448, x1)
+
+inst_373:
+// rs1_val==1717986917 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffeef, 0x66666665, -0x556, x3, 1452, x1)
+
+inst_374:
+// rs1_val==1717986917 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x66666775, 0x66666665, 0x555, x3, 1456, x1)
+
+inst_375:
+// rs1_val==1717986917 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666665, 0x3, x3, 1460, x1)
+
+inst_376:
+// rs1_val==858993458 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x3333333e, 0x33333332, 0x2e, x3, 1464, x1)
+
+inst_377:
+// rs1_val==858993458 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffff6, 0x33333332, -0x2c, x3, 1468, x1)
+
+inst_378:
+// rs1_val==858993458 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333332, 0x667, x3, 1472, x1)
+
+inst_379:
+// rs1_val==858993458 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x33333336, 0x33333332, 0x334, x3, 1476, x1)
+
+inst_380:
+// rs1_val==858993458 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x33333336, 0x33333332, 0x6, x3, 1480, x1)
+
+inst_381:
+// rs1_val==858993458 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffbbb, 0x33333332, -0x555, x3, 1484, x1)
+
+inst_382:
+// rs1_val==858993458 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x33333776, 0x33333332, 0x556, x3, 1488, x1)
+
+inst_383:
+// rs1_val==858993458 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x33333336, 0x33333332, 0x4, x3, 1492, x1)
+
+inst_384:
+// rs1_val==858993458 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x3333333e, 0x33333332, 0x2c, x3, 1496, x1)
+
+inst_385:
+// rs1_val==858993458 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x33333332, 0x33333332, 0x0, x3, 1500, x1)
+
+inst_386:
+// rs1_val==858993458 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333332, 0x665, x3, 1504, x1)
+
+inst_387:
+// rs1_val==858993458 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x33333332, 0x33333332, 0x332, x3, 1508, x1)
+
+inst_388:
+// rs1_val==858993458 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x33333776, 0x33333332, 0x554, x3, 1512, x1)
+
+inst_389:
+// rs1_val==858993458 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x33333332, 0x33333332, 0x2, x3, 1516, x1)
+
+inst_390:
+// rs1_val==858993458 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x3333333f, 0x33333332, 0x2d, x3, 1520, x1)
+
+inst_391:
+// rs1_val==858993458 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xfffffff3, 0x33333332, -0x2d, x3, 1524, x1)
+
+inst_392:
+// rs1_val==858993458 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x33333776, 0x33333332, 0x666, x3, 1528, x1)
+
+inst_393:
+// rs1_val==858993458 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x33333333, 0x33333332, 0x333, x3, 1532, x1)
+
+inst_394:
+// rs1_val==858993458 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x33333337, 0x33333332, 0x5, x3, 1536, x1)
+
+inst_395:
+// rs1_val==858993458 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffbba, 0x33333332, -0x556, x3, 1540, x1)
+
+inst_396:
+// rs1_val==858993458 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333332, 0x555, x3, 1544, x1)
+
+inst_397:
+// rs1_val==858993458 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x33333333, 0x33333332, 0x3, x3, 1548, x1)
+
+inst_398:
+// rs1_val==1431655764 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x5555557e, 0x55555554, 0x2e, x3, 1552, x1)
+
+inst_399:
+// rs1_val==1431655764 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd4, 0x55555554, -0x2c, x3, 1556, x1)
+
+inst_400:
+// rs1_val==1431655764 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555554, 0x667, x3, 1560, x1)
+
+inst_401:
+// rs1_val==1431655764 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x55555774, 0x55555554, 0x334, x3, 1564, x1)
+
+inst_402:
+// rs1_val==1431655764 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555554, 0x6, x3, 1568, x1)
+
+inst_403:
+// rs1_val==1431655764 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, 0x55555554, -0x555, x3, 1572, x1)
+
+inst_404:
+// rs1_val==1431655764 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555554, 0x556, x3, 1576, x1)
+
+inst_405:
+// rs1_val==1431655764 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x55555554, 0x55555554, 0x4, x3, 1580, x1)
+
+inst_406:
+// rs1_val==1431655764 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x5555557c, 0x55555554, 0x2c, x3, 1584, x1)
+
+inst_407:
+// rs1_val==1431655764 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x55555554, 0x55555554, 0x0, x3, 1588, x1)
+
+inst_408:
+// rs1_val==1431655764 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x55555775, 0x55555554, 0x665, x3, 1592, x1)
+
+inst_409:
+// rs1_val==1431655764 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x55555776, 0x55555554, 0x332, x3, 1596, x1)
+
+inst_410:
+// rs1_val==1431655764 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x55555554, 0x55555554, 0x554, x3, 1600, x1)
+
+inst_411:
+// rs1_val==1431655764 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x55555556, 0x55555554, 0x2, x3, 1604, x1)
+
+inst_412:
+// rs1_val==1431655764 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x5555557d, 0x55555554, 0x2d, x3, 1608, x1)
+
+inst_413:
+// rs1_val==1431655764 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0x55555554, -0x2d, x3, 1612, x1)
+
+inst_414:
+// rs1_val==1431655764 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x55555776, 0x55555554, 0x666, x3, 1616, x1)
+
+inst_415:
+// rs1_val==1431655764 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x55555777, 0x55555554, 0x333, x3, 1620, x1)
+
+inst_416:
+// rs1_val==1431655764 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x55555555, 0x55555554, 0x5, x3, 1624, x1)
+
+inst_417:
+// rs1_val==1431655764 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffffe, 0x55555554, -0x556, x3, 1628, x1)
+
+inst_418:
+// rs1_val==1431655764 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x55555555, 0x55555554, 0x555, x3, 1632, x1)
+
+inst_419:
+// rs1_val==1431655764 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x55555557, 0x55555554, 0x3, x3, 1636, x1)
+
+inst_420:
+// rs1_val==2 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x2e, 0x2, 0x2e, x3, 1640, x1)
+
+inst_421:
+// rs1_val==2 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd6, 0x2, -0x2c, x3, 1644, x1)
+
+inst_422:
+// rs1_val==2 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x2, 0x667, x3, 1648, x1)
+
+inst_423:
+// rs1_val==2 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x336, 0x2, 0x334, x3, 1652, x1)
+
+inst_424:
+// rs1_val==2 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x2, 0x6, x3, 1656, x1)
+
+inst_425:
+// rs1_val==2 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaab, 0x2, -0x555, x3, 1660, x1)
+
+inst_426:
+// rs1_val==2 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x556, 0x2, 0x556, x3, 1664, x1)
+
+inst_427:
+// rs1_val==2 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x6, 0x2, 0x4, x3, 1668, x1)
+
+inst_428:
+// rs1_val==2 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x2e, 0x2, 0x2c, x3, 1672, x1)
+
+inst_429:
+// rs1_val==2 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x2, 0x2, 0x0, x3, 1676, x1)
+
+inst_430:
+// rs1_val==2 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x2, 0x665, x3, 1680, x1)
+
+inst_431:
+// rs1_val==2 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x332, 0x2, 0x332, x3, 1684, x1)
+
+inst_432:
+// rs1_val==2 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x556, 0x2, 0x554, x3, 1688, x1)
+
+inst_433:
+// rs1_val==2 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x2f, 0x2, 0x2d, x3, 1692, x1)
+
+inst_434:
+// rs1_val==2 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd3, 0x2, -0x2d, x3, 1696, x1)
+
+inst_435:
+// rs1_val==2 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x666, 0x2, 0x666, x3, 1700, x1)
+
+inst_436:
+// rs1_val==2 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x333, 0x2, 0x333, x3, 1704, x1)
+
+inst_437:
+// rs1_val==2 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x2, 0x5, x3, 1708, x1)
+
+inst_438:
+// rs1_val==2 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaaa, 0x2, -0x556, x3, 1712, x1)
+
+inst_439:
+// rs1_val==2 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x557, 0x2, 0x555, x3, 1716, x1)
+
+inst_440:
+// rs1_val==2 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x2; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x3, 0x2, 0x3, x3, 1720, x1)
+
+inst_441:
+// rs1_val==46340 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0xb52e, 0xb504, 0x2e, x3, 1724, x1)
+
+inst_442:
+// rs1_val==46340 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd4, 0xb504, -0x2c, x3, 1728, x1)
+
+inst_443:
+// rs1_val==46340 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0xb767, 0xb504, 0x667, x3, 1732, x1)
+
+inst_444:
+// rs1_val==46340 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0xb734, 0xb504, 0x334, x3, 1736, x1)
+
+inst_445:
+// rs1_val==46340 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0xb506, 0xb504, 0x6, x3, 1740, x1)
+
+inst_446:
+// rs1_val==46340 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xffffffaf, 0xb504, -0x555, x3, 1744, x1)
+
+inst_447:
+// rs1_val==46340 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0xb556, 0xb504, 0x556, x3, 1748, x1)
+
+inst_448:
+// rs1_val==46340 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xb504, 0xb504, 0x4, x3, 1752, x1)
+
+inst_449:
+// rs1_val==46340 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0xb52c, 0xb504, 0x2c, x3, 1756, x1)
+
+inst_450:
+// rs1_val==46340 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0xb504, 0xb504, 0x0, x3, 1760, x1)
+
+inst_451:
+// rs1_val==46340 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0xb765, 0xb504, 0x665, x3, 1764, x1)
+
+inst_452:
+// rs1_val==46340 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0xb736, 0xb504, 0x332, x3, 1768, x1)
+
+inst_453:
+// rs1_val==46340 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0xb554, 0xb504, 0x554, x3, 1772, x1)
+
+inst_454:
+// rs1_val==46340 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0xb506, 0xb504, 0x2, x3, 1776, x1)
+
+inst_455:
+// rs1_val==46340 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0xb52d, 0xb504, 0x2d, x3, 1780, x1)
+
+inst_456:
+// rs1_val==46340 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0xb504, -0x2d, x3, 1784, x1)
+
+inst_457:
+// rs1_val==46340 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xb766, 0xb504, 0x666, x3, 1788, x1)
+
+inst_458:
+// rs1_val==46340 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0xb737, 0xb504, 0x333, x3, 1792, x1)
+
+inst_459:
+// rs1_val==46340 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0xb505, 0xb504, 0x5, x3, 1796, x1)
+
+inst_460:
+// rs1_val==46340 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xffffffae, 0xb504, -0x556, x3, 1800, x1)
+
+inst_461:
+// rs1_val==46340 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xb555, 0xb504, 0x555, x3, 1804, x1)
+
+inst_462:
+// rs1_val==46340 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0xb504; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0xb507, 0xb504, 0x3, x3, 1808, x1)
+
+inst_463:
+// rs1_val==-46340 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0xffff4afe, -0xb504, 0x2e, x3, 1812, x1)
+
+inst_464:
+// rs1_val==-46340 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffffc, -0xb504, -0x2c, x3, 1816, x1)
+
+inst_465:
+// rs1_val==-46340 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0xffff4eff, -0xb504, 0x667, x3, 1820, x1)
+
+inst_466:
+// rs1_val==-46340 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0xffff4bfc, -0xb504, 0x334, x3, 1824, x1)
+
+inst_467:
+// rs1_val==-46340 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0xffff4afe, -0xb504, 0x6, x3, 1828, x1)
+
+inst_468:
+// rs1_val==-46340 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaff, -0xb504, -0x555, x3, 1832, x1)
+
+inst_469:
+// rs1_val==-46340 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0xffff4ffe, -0xb504, 0x556, x3, 1836, x1)
+
+inst_470:
+// rs1_val==-46340 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0xffff4afc, -0xb504, 0x4, x3, 1840, x1)
+
+inst_471:
+// rs1_val==-46340 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffff4afc, -0xb504, 0x2c, x3, 1844, x1)
+
+inst_472:
+// rs1_val==-46340 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0xffff4afc, -0xb504, 0x0, x3, 1848, x1)
+
+inst_473:
+// rs1_val==-46340 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0xffff4efd, -0xb504, 0x665, x3, 1852, x1)
+
+inst_474:
+// rs1_val==-46340 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0xffff4bfe, -0xb504, 0x332, x3, 1856, x1)
+
+inst_475:
+// rs1_val==-46340 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0xffff4ffc, -0xb504, 0x554, x3, 1860, x1)
+
+inst_476:
+// rs1_val==-46340 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0xffff4afe, -0xb504, 0x2, x3, 1864, x1)
+
+inst_477:
+// rs1_val==-46340 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffff4afd, -0xb504, 0x2d, x3, 1868, x1)
+
+inst_478:
+// rs1_val==-46340 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffff, -0xb504, -0x2d, x3, 1872, x1)
+
+inst_479:
+// rs1_val==-46340 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0xffff4efe, -0xb504, 0x666, x3, 1876, x1)
+
+inst_480:
+// rs1_val==-46340 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0xffff4bff, -0xb504, 0x333, x3, 1880, x1)
+
+inst_481:
+// rs1_val==-46340 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0xffff4afd, -0xb504, 0x5, x3, 1884, x1)
+
+inst_482:
+// rs1_val==-46340 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffafe, -0xb504, -0x556, x3, 1888, x1)
+
+inst_483:
+// rs1_val==-46340 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0xffff4ffd, -0xb504, 0x555, x3, 1892, x1)
+
+inst_484:
+// rs1_val==-46340 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0xffff4aff, -0xb504, 0x3, x3, 1896, x1)
+
+inst_485:
+// rs1_val==1717986918 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x6666666e, 0x66666666, 0x2e, x3, 1900, x1)
+
+inst_486:
+// rs1_val==1717986918 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffff6, 0x66666666, -0x2c, x3, 1904, x1)
+
+inst_487:
+// rs1_val==1717986918 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666666, 0x667, x3, 1908, x1)
+
+inst_488:
+// rs1_val==1717986918 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x66666776, 0x66666666, 0x334, x3, 1912, x1)
+
+inst_489:
+// rs1_val==1717986918 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x66666666, 0x66666666, 0x6, x3, 1916, x1)
+
+inst_490:
+// rs1_val==1717986918 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffeef, 0x66666666, -0x555, x3, 1920, x1)
+
+inst_491:
+// rs1_val==1717986918 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x66666776, 0x66666666, 0x556, x3, 1924, x1)
+
+inst_492:
+// rs1_val==1717986918 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x66666666, 0x66666666, 0x4, x3, 1928, x1)
+
+inst_493:
+// rs1_val==1717986918 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x6666666e, 0x66666666, 0x2c, x3, 1932, x1)
+
+inst_494:
+// rs1_val==1717986918 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x66666666, 0x66666666, 0x0, x3, 1936, x1)
+
+inst_495:
+// rs1_val==1717986918 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666666, 0x665, x3, 1940, x1)
+
+inst_496:
+// rs1_val==1717986918 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x66666776, 0x66666666, 0x332, x3, 1944, x1)
+
+inst_497:
+// rs1_val==1717986918 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x66666776, 0x66666666, 0x554, x3, 1948, x1)
+
+inst_498:
+// rs1_val==1717986918 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x66666666, 0x66666666, 0x2, x3, 1952, x1)
+
+inst_499:
+// rs1_val==1717986918 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x6666666f, 0x66666666, 0x2d, x3, 1956, x1)
+
+inst_500:
+// rs1_val==1717986918 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xfffffff7, 0x66666666, -0x2d, x3, 1960, x1)
+
+inst_501:
+// rs1_val==1717986918 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x66666666, 0x66666666, 0x666, x3, 1964, x1)
+
+inst_502:
+// rs1_val==1717986918 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666666, 0x333, x3, 1968, x1)
+
+inst_503:
+// rs1_val==1717986918 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666666, 0x5, x3, 1972, x1)
+
+inst_504:
+// rs1_val==1717986918 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffeee, 0x66666666, -0x556, x3, 1976, x1)
+
+inst_505:
+// rs1_val==1717986918 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x66666777, 0x66666666, 0x555, x3, 1980, x1)
+
+inst_506:
+// rs1_val==1717986918 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x66666667, 0x66666666, 0x3, x3, 1984, x1)
+
+inst_507:
+// rs1_val==858993459 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x3333333f, 0x33333333, 0x2e, x3, 1988, x1)
+
+inst_508:
+// rs1_val==858993459 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffff7, 0x33333333, -0x2c, x3, 1992, x1)
+
+inst_509:
+// rs1_val==858993459 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333333, 0x667, x3, 1996, x1)
+
+inst_510:
+// rs1_val==858993459 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x33333337, 0x33333333, 0x334, x3, 2000, x1)
+
+inst_511:
+// rs1_val==858993459 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x33333337, 0x33333333, 0x6, x3, 2004, x1)
+
+inst_512:
+// rs1_val==858993459 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffbbb, 0x33333333, -0x555, x3, 2008, x1)
+
+inst_513:
+// rs1_val==858993459 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333333, 0x556, x3, 2012, x1)
+
+inst_514:
+// rs1_val==858993459 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x33333337, 0x33333333, 0x4, x3, 2016, x1)
+
+inst_515:
+// rs1_val==858993459 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x3333333f, 0x33333333, 0x2c, x3, 2020, x1)
+
+inst_516:
+// rs1_val==858993459 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x33333333, 0x33333333, 0x0, x3, 2024, x1)
+
+inst_517:
+// rs1_val==858993459 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333333, 0x665, x3, 2028, x1)
+
+inst_518:
+// rs1_val==858993459 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x33333333, 0x33333333, 0x332, x3, 2032, x1)
+
+inst_519:
+// rs1_val==858993459 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333333, 0x554, x3, 2036, x1)
+
+inst_520:
+// rs1_val==858993459 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x33333333, 0x33333333, 0x2, x3, 2040, x1)
+
+inst_521:
+// rs1_val==858993459 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x3333333f, 0x33333333, 0x2d, x3, 2044, x1)
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_522:
+// rs1_val==858993459 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xfffffff3, 0x33333333, -0x2d, x3, 0, x1)
+
+inst_523:
+// rs1_val==858993459 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333333, 0x666, x3, 4, x1)
+
+inst_524:
+// rs1_val==858993459 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x33333333, 0x33333333, 0x333, x3, 8, x1)
+
+inst_525:
+// rs1_val==858993459 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x33333337, 0x33333333, 0x5, x3, 12, x1)
+
+inst_526:
+// rs1_val==858993459 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffbbb, 0x33333333, -0x556, x3, 16, x1)
+
+inst_527:
+// rs1_val==858993459 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x33333777, 0x33333333, 0x555, x3, 20, x1)
+
+inst_528:
+// rs1_val==858993459 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x33333333, 0x33333333, 0x3, x3, 24, x1)
+
+inst_529:
+// rs1_val==5 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0x2f, 0x5, 0x2e, x3, 28, x1)
+
+inst_530:
+// rs1_val==5 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xffffffd5, 0x5, -0x2c, x3, 32, x1)
+
+inst_531:
+// rs1_val==5 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x5, 0x667, x3, 36, x1)
+
+inst_532:
+// rs1_val==5 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0x335, 0x5, 0x334, x3, 40, x1)
+
+inst_533:
+// rs1_val==5 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x5, 0x6, x3, 44, x1)
+
+inst_534:
+// rs1_val==5 and imm_val==-1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:-0x555
+TEST_IMM_OP( ori, x11, x10, 0xfffffaaf, 0x5, -0x555, x3, 48, x1)
+
+inst_535:
+// rs1_val==5 and imm_val==1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x556
+TEST_IMM_OP( ori, x11, x10, 0x557, 0x5, 0x556, x3, 52, x1)
+
+inst_536:
+// rs1_val==5 and imm_val==4,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x4
+TEST_IMM_OP( ori, x11, x10, 0x5, 0x5, 0x4, x3, 56, x1)
+
+inst_537:
+// rs1_val==5 and imm_val==44,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x2c
+TEST_IMM_OP( ori, x11, x10, 0x2d, 0x5, 0x2c, x3, 60, x1)
+
+inst_538:
+// rs1_val==5 and imm_val==0,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x0
+TEST_IMM_OP( ori, x11, x10, 0x5, 0x5, 0x0, x3, 64, x1)
+
+inst_539:
+// rs1_val==5 and imm_val==1637,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x665
+TEST_IMM_OP( ori, x11, x10, 0x665, 0x5, 0x665, x3, 68, x1)
+
+inst_540:
+// rs1_val==5 and imm_val==818,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x332
+TEST_IMM_OP( ori, x11, x10, 0x337, 0x5, 0x332, x3, 72, x1)
+
+inst_541:
+// rs1_val==5 and imm_val==1364,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x554
+TEST_IMM_OP( ori, x11, x10, 0x555, 0x5, 0x554, x3, 76, x1)
+
+inst_542:
+// rs1_val==5 and imm_val==2,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x2
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x5, 0x2, x3, 80, x1)
+
+inst_543:
+// rs1_val==5 and imm_val==45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x2d
+TEST_IMM_OP( ori, x11, x10, 0x2d, 0x5, 0x2d, x3, 84, x1)
+
+inst_544:
+// rs1_val==5 and imm_val==-45,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:-0x2d
+TEST_IMM_OP( ori, x11, x10, 0xffffffd7, 0x5, -0x2d, x3, 88, x1)
+
+inst_545:
+// rs1_val==5 and imm_val==1638,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x666
+TEST_IMM_OP( ori, x11, x10, 0x667, 0x5, 0x666, x3, 92, x1)
+
+inst_546:
+// rs1_val==5 and imm_val==819,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x333
+TEST_IMM_OP( ori, x11, x10, 0x337, 0x5, 0x333, x3, 96, x1)
+
+inst_547:
+// rs1_val==5 and imm_val==5,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x5
+TEST_IMM_OP( ori, x11, x10, 0x5, 0x5, 0x5, x3, 100, x1)
+
+inst_548:
+// rs1_val==5 and imm_val==-1366,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:-0x556
+TEST_IMM_OP( ori, x11, x10, 0xfffffaaf, 0x5, -0x556, x3, 104, x1)
+
+inst_549:
+// rs1_val==5 and imm_val==1365,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x555
+TEST_IMM_OP( ori, x11, x10, 0x555, 0x5, 0x555, x3, 108, x1)
+
+inst_550:
+// rs1_val==5 and imm_val==3,
+// opcode: ori ; op1:x10; dest:x11; op1val:0x5; immval:0x3
+TEST_IMM_OP( ori, x11, x10, 0x7, 0x5, 0x3, x3, 112, x1)
+
+inst_551:
+// rs1_val==-1431655766 and imm_val==46,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2e
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaae, -0x55555556, 0x2e, x3, 116, x1)
+
+inst_552:
+// rs1_val==-1431655766 and imm_val==-44,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2c
+TEST_IMM_OP( ori, x11, x10, 0xfffffffe, -0x55555556, -0x2c, x3, 120, x1)
+
+inst_553:
+// rs1_val==-1431655766 and imm_val==1639,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x667
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaeef, -0x55555556, 0x667, x3, 124, x1)
+
+inst_554:
+// rs1_val==-1431655766 and imm_val==820,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x334
+TEST_IMM_OP( ori, x11, x10, 0xaaaaabbe, -0x55555556, 0x334, x3, 128, x1)
+
+inst_555:
+// rs1_val==-1431655766 and imm_val==6,
+// opcode: ori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x6
+TEST_IMM_OP( ori, x11, x10, 0xaaaaaaae, -0x55555556, 0x6, x3, 132, x1)
+
+inst_556:
+// rs1_val == 2147483647, rs1_val > 0 and imm_val > 0, rs1_val == (2**(xlen-1)-1)
+// opcode: ori ; op1:x10; dest:x11; op1val:0x7fffffff; immval:0x3ff
+TEST_IMM_OP( ori, x11, x10, 0x7fffffff, 0x7fffffff, 0x3ff, x3, 136, x1)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 10*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 35*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sb-align-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sb-align-01.S
new file mode 100644
index 000000000..2684e12d0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sb-align-01.S
@@ -0,0 +1,465 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sb instruction of the RISC-V E extension for the sb-align covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",sb-align)
+
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_0:
+// rs1 != rs2, rs1==x4, rs2==x0, ea_align == 0 and (imm_val % 4) == 0, imm_val > 0
+// opcode: sb; op1:x4; op2:x0; op2val:0x0; immval:0x8; align:0
+TEST_STORE(x3,x5,0,x4,x0,0x0,0x8,0,sb,0)
+
+inst_1:
+// rs1==x8, rs2==x11, rs2_val == 2147483647, imm_val < 0, ea_align == 0 and (imm_val % 4) == 3, rs2_val == (2**(xlen-1)-1)
+// opcode: sb; op1:x8; op2:x11; op2val:0x7fffffff; immval:-0x41; align:0
+TEST_STORE(x3,x5,0,x8,x11,0x7fffffff,-0x41,4,sb,0)
+
+inst_2:
+// rs1==x1, rs2==x15, rs2_val == -1073741825,
+// opcode: sb; op1:x1; op2:x15; op2val:-0x40000001; immval:-0x11; align:0
+TEST_STORE(x3,x5,0,x1,x15,-0x40000001,-0x11,8,sb,0)
+
+inst_3:
+// rs1==x14, rs2==x2, rs2_val == -536870913,
+// opcode: sb; op1:x14; op2:x2; op2val:-0x20000001; immval:-0x101; align:0
+TEST_STORE(x3,x5,0,x14,x2,-0x20000001,-0x101,12,sb,0)
+
+inst_4:
+// rs1==x15, rs2==x8, rs2_val == -268435457, ea_align == 0 and (imm_val % 4) == 1
+// opcode: sb; op1:x15; op2:x8; op2val:-0x10000001; immval:-0x3; align:0
+TEST_STORE(x3,x5,0,x15,x8,-0x10000001,-0x3,16,sb,0)
+
+inst_5:
+// rs1==x6, rs2==x7, rs2_val == -134217729,
+// opcode: sb; op1:x6; op2:x7; op2val:-0x8000001; immval:-0x8; align:0
+TEST_STORE(x3,x5,0,x6,x7,-0x8000001,-0x8,20,sb,0)
+
+inst_6:
+// rs1==x2, rs2==x10, rs2_val == -67108865,
+// opcode: sb; op1:x2; op2:x10; op2val:-0x4000001; immval:0x7ff; align:0
+TEST_STORE(x3,x5,0,x2,x10,-0x4000001,0x7ff,24,sb,0)
+
+inst_7:
+// rs1==x13, rs2==x6, rs2_val == -33554433,
+// opcode: sb; op1:x13; op2:x6; op2val:-0x2000001; immval:0x555; align:0
+TEST_STORE(x3,x5,0,x13,x6,-0x2000001,0x555,28,sb,0)
+
+inst_8:
+// rs1==x7, rs2==x4, rs2_val == -16777217,
+// opcode: sb; op1:x7; op2:x4; op2val:-0x1000001; immval:0x100; align:0
+TEST_STORE(x3,x2,0,x7,x4,-0x1000001,0x100,32,sb,0)
+
+inst_9:
+// rs1==x9, rs2==x1, rs2_val == -8388609,
+// opcode: sb; op1:x9; op2:x1; op2val:-0x800001; immval:-0x3; align:0
+TEST_STORE(x3,x2,0,x9,x1,-0x800001,-0x3,36,sb,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_10:
+// rs1==x10, rs2==x12, rs2_val == -4194305,
+// opcode: sb; op1:x10; op2:x12; op2val:-0x400001; immval:0x1; align:0
+TEST_STORE(x1,x2,0,x10,x12,-0x400001,0x1,0,sb,0)
+
+inst_11:
+// rs1==x3, rs2==x13, rs2_val == -2097153,
+// opcode: sb; op1:x3; op2:x13; op2val:-0x200001; immval:0x80; align:0
+TEST_STORE(x1,x2,0,x3,x13,-0x200001,0x80,4,sb,0)
+
+inst_12:
+// rs1==x11, rs2==x5, rs2_val == -1048577,
+// opcode: sb; op1:x11; op2:x5; op2val:-0x100001; immval:-0x401; align:0
+TEST_STORE(x1,x2,0,x11,x5,-0x100001,-0x401,8,sb,0)
+
+inst_13:
+// rs1==x5, rs2==x9, rs2_val == -524289,
+// opcode: sb; op1:x5; op2:x9; op2val:-0x80001; immval:-0x800; align:0
+TEST_STORE(x1,x2,0,x5,x9,-0x80001,-0x800,12,sb,0)
+
+inst_14:
+// rs1==x12, rs2==x3, rs2_val == -262145,
+// opcode: sb; op1:x12; op2:x3; op2val:-0x40001; immval:-0x9; align:0
+TEST_STORE(x1,x2,0,x12,x3,-0x40001,-0x9,16,sb,0)
+
+inst_15:
+// rs2==x14, rs2_val == -131073,
+// opcode: sb; op1:x4; op2:x14; op2val:-0x20001; immval:0x8; align:0
+TEST_STORE(x1,x2,0,x4,x14,-0x20001,0x8,20,sb,0)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x10001; immval:-0x800; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x10001,-0x800,24,sb,0)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x8001; immval:0x9; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x8001,0x9,28,sb,0)
+
+inst_18:
+// rs2_val == -16385, ea_align == 0 and (imm_val % 4) == 2
+// opcode: sb; op1:x10; op2:x11; op2val:-0x4001; immval:-0x556; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x4001,-0x556,32,sb,0)
+
+inst_19:
+// rs2_val == -8193,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x2001; immval:0x7ff; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x2001,0x7ff,36,sb,0)
+
+inst_20:
+// rs2_val == -4097,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x1001; immval:0x7; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x1001,0x7,40,sb,0)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x801; immval:-0x800; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x801,-0x800,44,sb,0)
+
+inst_22:
+// rs2_val == -1025,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x401; immval:0x9; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x401,0x9,48,sb,0)
+
+inst_23:
+// rs2_val == -513,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x201; immval:-0x3; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x201,-0x3,52,sb,0)
+
+inst_24:
+// rs2_val == -257,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x101; immval:-0x41; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x101,-0x41,56,sb,0)
+
+inst_25:
+// rs2_val == -129,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x81; immval:0x2; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x81,0x2,60,sb,0)
+
+inst_26:
+// rs2_val == -65,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x41; immval:-0xa; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x41,-0xa,64,sb,0)
+
+inst_27:
+// rs2_val == -33,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x21; immval:-0x41; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x21,-0x41,68,sb,0)
+
+inst_28:
+// rs2_val == -17,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x11; immval:0x3; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x11,0x3,72,sb,0)
+
+inst_29:
+// rs2_val == -9,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x9; immval:0x10; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x9,0x10,76,sb,0)
+
+inst_30:
+// rs2_val == -5,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x5; immval:-0x7; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x5,-0x7,80,sb,0)
+
+inst_31:
+// rs2_val == -3,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x3; immval:0x555; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x3,0x555,84,sb,0)
+
+inst_32:
+// rs2_val == -2,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x2; immval:-0xa; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x2,-0xa,88,sb,0)
+
+inst_33:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: sb; op1:x10; op2:x11; op2val:-0x80000000; immval:-0x8; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x80000000,-0x8,92,sb,0)
+
+inst_34:
+// rs2_val == 1073741824,
+// opcode: sb; op1:x10; op2:x11; op2val:0x40000000; immval:-0x5; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x40000000,-0x5,96,sb,0)
+
+inst_35:
+// rs2_val == 536870912,
+// opcode: sb; op1:x10; op2:x11; op2val:0x20000000; immval:-0x41; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x20000000,-0x41,100,sb,0)
+
+inst_36:
+// rs2_val == 268435456,
+// opcode: sb; op1:x10; op2:x11; op2val:0x10000000; immval:-0xa; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x10000000,-0xa,104,sb,0)
+
+inst_37:
+// rs2_val == 134217728,
+// opcode: sb; op1:x10; op2:x11; op2val:0x8000000; immval:0x555; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x8000000,0x555,108,sb,0)
+
+inst_38:
+// rs2_val == 67108864,
+// opcode: sb; op1:x10; op2:x11; op2val:0x4000000; immval:-0x81; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x4000000,-0x81,112,sb,0)
+
+inst_39:
+// rs2_val == 33554432,
+// opcode: sb; op1:x10; op2:x11; op2val:0x2000000; immval:-0x400; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x2000000,-0x400,116,sb,0)
+
+inst_40:
+// rs2_val == 16777216,
+// opcode: sb; op1:x10; op2:x11; op2val:0x1000000; immval:-0x41; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x1000000,-0x41,120,sb,0)
+
+inst_41:
+// rs2_val == 8388608,
+// opcode: sb; op1:x10; op2:x11; op2val:0x800000; immval:-0x5; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x800000,-0x5,124,sb,0)
+
+inst_42:
+// rs2_val == 4194304,
+// opcode: sb; op1:x10; op2:x11; op2val:0x400000; immval:-0x9; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x400000,-0x9,128,sb,0)
+
+inst_43:
+// rs2_val == 2097152,
+// opcode: sb; op1:x10; op2:x11; op2val:0x200000; immval:0x7ff; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x200000,0x7ff,132,sb,0)
+
+inst_44:
+// rs2_val == 1048576,
+// opcode: sb; op1:x10; op2:x11; op2val:0x100000; immval:-0x41; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x100000,-0x41,136,sb,0)
+
+inst_45:
+// rs2_val == 524288,
+// opcode: sb; op1:x10; op2:x11; op2val:0x80000; immval:-0x3; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x80000,-0x3,140,sb,0)
+
+inst_46:
+// rs2_val == 262144,
+// opcode: sb; op1:x10; op2:x11; op2val:0x40000; immval:0x6; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x40000,0x6,144,sb,0)
+
+inst_47:
+// rs2_val == 131072,
+// opcode: sb; op1:x10; op2:x11; op2val:0x20000; immval:0x80; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x20000,0x80,148,sb,0)
+
+inst_48:
+// rs2_val == 65536,
+// opcode: sb; op1:x10; op2:x11; op2val:0x10000; immval:0x555; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x10000,0x555,152,sb,0)
+
+inst_49:
+// rs2_val == 32768,
+// opcode: sb; op1:x10; op2:x11; op2val:0x8000; immval:0x5; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x8000,0x5,156,sb,0)
+
+inst_50:
+// rs2_val == 1,
+// opcode: sb; op1:x10; op2:x11; op2val:0x1; immval:0x400; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x1,0x400,160,sb,0)
+
+inst_51:
+// rs2_val == -1431655766,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x55555556; immval:-0x6; align:0
+TEST_STORE(x1,x2,0,x10,x11,-0x55555556,-0x6,164,sb,0)
+
+inst_52:
+// rs2_val == 1431655765,
+// opcode: sb; op1:x10; op2:x11; op2val:0x55555555; immval:0x555; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x55555555,0x555,168,sb,0)
+
+inst_53:
+// ea_align == 1 and (imm_val % 4) == 0,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x5; immval:0x20; align:1
+TEST_STORE(x1,x2,0,x10,x11,-0x5,0x20,172,sb,1)
+
+inst_54:
+// ea_align == 1 and (imm_val % 4) == 1,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x101; immval:0x5; align:1
+TEST_STORE(x1,x2,0,x10,x11,-0x101,0x5,176,sb,1)
+
+inst_55:
+// ea_align == 1 and (imm_val % 4) == 2, rs2_val == 8
+// opcode: sb; op1:x10; op2:x11; op2val:0x8; immval:-0x2; align:1
+TEST_STORE(x1,x2,0,x10,x11,0x8,-0x2,180,sb,1)
+
+inst_56:
+// ea_align == 1 and (imm_val % 4) == 3,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x8; immval:-0x201; align:1
+TEST_STORE(x1,x2,0,x10,x11,-0x8,-0x201,184,sb,1)
+
+inst_57:
+// ea_align == 2 and (imm_val % 4) == 0,
+// opcode: sb; op1:x10; op2:x11; op2val:0x2000000; immval:-0x400; align:2
+TEST_STORE(x1,x2,0,x10,x11,0x2000000,-0x400,188,sb,2)
+
+inst_58:
+// ea_align == 2 and (imm_val % 4) == 1,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x41; immval:0x9; align:2
+TEST_STORE(x1,x2,0,x10,x11,-0x41,0x9,192,sb,2)
+
+inst_59:
+// ea_align == 2 and (imm_val % 4) == 2,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x8; immval:0x2; align:2
+TEST_STORE(x1,x2,0,x10,x11,-0x8,0x2,196,sb,2)
+
+inst_60:
+// ea_align == 2 and (imm_val % 4) == 3,
+// opcode: sb; op1:x10; op2:x11; op2val:0x9; immval:-0x5; align:2
+TEST_STORE(x1,x2,0,x10,x11,0x9,-0x5,200,sb,2)
+
+inst_61:
+// ea_align == 3 and (imm_val % 4) == 0, rs2_val == 16
+// opcode: sb; op1:x10; op2:x11; op2val:0x10; immval:0x400; align:3
+TEST_STORE(x1,x2,0,x10,x11,0x10,0x400,204,sb,3)
+
+inst_62:
+// ea_align == 3 and (imm_val % 4) == 1,
+// opcode: sb; op1:x10; op2:x11; op2val:-0x200001; immval:0x555; align:3
+TEST_STORE(x1,x2,0,x10,x11,-0x200001,0x555,208,sb,3)
+
+inst_63:
+// ea_align == 3 and (imm_val % 4) == 2,
+// opcode: sb; op1:x10; op2:x11; op2val:0x10000000; immval:-0x556; align:3
+TEST_STORE(x1,x2,0,x10,x11,0x10000000,-0x556,212,sb,3)
+
+inst_64:
+// rs2_val == 64,
+// opcode: sb; op1:x10; op2:x11; op2val:0x40; immval:0x20; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x40,0x20,216,sb,0)
+
+inst_65:
+// ea_align == 3 and (imm_val % 4) == 3,
+// opcode: sb; op1:x10; op2:x11; op2val:0x8000; immval:0x3ff; align:3
+TEST_STORE(x1,x2,0,x10,x11,0x8000,0x3ff,220,sb,3)
+
+inst_66:
+// rs2_val == 16384, imm_val == 0
+// opcode: sb; op1:x10; op2:x11; op2val:0x4000; immval:0x0; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x4000,0x0,224,sb,0)
+
+inst_67:
+// rs2_val == 8192,
+// opcode: sb; op1:x10; op2:x11; op2val:0x2000; immval:0x40; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x2000,0x40,228,sb,0)
+
+inst_68:
+// rs2_val == 4096,
+// opcode: sb; op1:x10; op2:x11; op2val:0x1000; immval:0x9; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x1000,0x9,232,sb,0)
+
+inst_69:
+// rs2_val == 2048,
+// opcode: sb; op1:x10; op2:x11; op2val:0x800; immval:-0x556; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x800,-0x556,236,sb,0)
+
+inst_70:
+// rs2_val == 512,
+// opcode: sb; op1:x10; op2:x11; op2val:0x200; immval:0x5; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x200,0x5,240,sb,0)
+
+inst_71:
+// rs2_val == 1024,
+// opcode: sb; op1:x10; op2:x11; op2val:0x400; immval:-0x11; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x400,-0x11,244,sb,0)
+
+inst_72:
+// rs2_val == 0,
+// opcode: sb; op1:x10; op2:x11; op2val:0x0; immval:-0x11; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x0,-0x11,248,sb,0)
+
+inst_73:
+// rs2_val == 256,
+// opcode: sb; op1:x10; op2:x11; op2val:0x100; immval:0x80; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x100,0x80,252,sb,0)
+
+inst_74:
+// rs2_val == 128,
+// opcode: sb; op1:x10; op2:x11; op2val:0x80; immval:0x7; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x80,0x7,256,sb,0)
+
+inst_75:
+// rs2_val == 32,
+// opcode: sb; op1:x10; op2:x11; op2val:0x20; immval:0x200; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x20,0x200,260,sb,0)
+
+inst_76:
+// rs2_val == 4,
+// opcode: sb; op1:x10; op2:x11; op2val:0x4; immval:0x3; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x4,0x3,264,sb,0)
+
+inst_77:
+// rs2_val == 2,
+// opcode: sb; op1:x10; op2:x11; op2val:0x2; immval:0x400; align:0
+TEST_STORE(x1,x2,0,x10,x11,0x2,0x400,268,sb,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x3_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 10*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 68*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sh-align-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sh-align-01.S
new file mode 100644
index 000000000..6dd42781a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sh-align-01.S
@@ -0,0 +1,435 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sh instruction of the RISC-V E extension for the sh-align covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",sh-align)
+
+RVTEST_SIGBASE( x8,signature_x8_1)
+
+inst_0:
+// rs1 != rs2, rs1==x6, rs2==x4, ea_align == 0 and (imm_val % 4) == 0, rs2_val == 1, imm_val > 0
+// opcode: sh; op1:x6; op2:x4; op2val:0x1; immval:0x4; align:0
+TEST_STORE(x8,x12,0,x6,x4,0x1,0x4,0,sh,0)
+
+inst_1:
+// rs1==x10, rs2==x5, rs2_val == 2147483647, imm_val == 0, rs2_val == (2**(xlen-1)-1)
+// opcode: sh; op1:x10; op2:x5; op2val:0x7fffffff; immval:0x0; align:0
+TEST_STORE(x8,x12,0,x10,x5,0x7fffffff,0x0,4,sh,0)
+
+inst_2:
+// rs1==x9, rs2==x10, rs2_val == -1073741825, ea_align == 0 and (imm_val % 4) == 2
+// opcode: sh; op1:x9; op2:x10; op2val:-0x40000001; immval:0x2; align:0
+TEST_STORE(x8,x12,0,x9,x10,-0x40000001,0x2,8,sh,0)
+
+inst_3:
+// rs1==x2, rs2==x11, rs2_val == -536870913, imm_val < 0
+// opcode: sh; op1:x2; op2:x11; op2val:-0x20000001; immval:-0x8; align:0
+TEST_STORE(x8,x12,0,x2,x11,-0x20000001,-0x8,12,sh,0)
+
+inst_4:
+// rs1==x13, rs2==x1, rs2_val == -268435457,
+// opcode: sh; op1:x13; op2:x1; op2val:-0x10000001; immval:0x8; align:0
+TEST_STORE(x8,x12,0,x13,x1,-0x10000001,0x8,16,sh,0)
+
+inst_5:
+// rs1==x7, rs2==x3, rs2_val == -134217729,
+// opcode: sh; op1:x7; op2:x3; op2val:-0x8000001; immval:0x80; align:0
+TEST_STORE(x8,x12,0,x7,x3,-0x8000001,0x80,20,sh,0)
+
+inst_6:
+// rs1==x3, rs2==x6, rs2_val == -67108865,
+// opcode: sh; op1:x3; op2:x6; op2val:-0x4000001; immval:0x6; align:0
+TEST_STORE(x8,x9,0,x3,x6,-0x4000001,0x6,24,sh,0)
+
+inst_7:
+// rs1==x12, rs2==x2, rs2_val == -33554433, ea_align == 0 and (imm_val % 4) == 3
+// opcode: sh; op1:x12; op2:x2; op2val:-0x2000001; immval:0x7; align:0
+TEST_STORE(x8,x9,0,x12,x2,-0x2000001,0x7,28,sh,0)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_8:
+// rs1==x5, rs2==x13, rs2_val == -16777217,
+// opcode: sh; op1:x5; op2:x13; op2val:-0x1000001; immval:-0x800; align:0
+TEST_STORE(x2,x9,0,x5,x13,-0x1000001,-0x800,0,sh,0)
+
+inst_9:
+// rs1==x1, rs2==x15, rs2_val == -8388609,
+// opcode: sh; op1:x1; op2:x15; op2val:-0x800001; immval:0x3; align:0
+TEST_STORE(x2,x9,0,x1,x15,-0x800001,0x3,4,sh,0)
+
+inst_10:
+// rs1==x15, rs2==x7, rs2_val == -4194305,
+// opcode: sh; op1:x15; op2:x7; op2val:-0x400001; immval:0x40; align:0
+TEST_STORE(x2,x9,0,x15,x7,-0x400001,0x40,8,sh,0)
+
+inst_11:
+// rs1==x14, rs2==x12, rs2_val == -2097153, ea_align == 0 and (imm_val % 4) == 1
+// opcode: sh; op1:x14; op2:x12; op2val:-0x200001; immval:0x5; align:0
+TEST_STORE(x2,x9,0,x14,x12,-0x200001,0x5,12,sh,0)
+
+inst_12:
+// rs1==x4, rs2==x14, rs2_val == -1048577,
+// opcode: sh; op1:x4; op2:x14; op2val:-0x100001; immval:-0x41; align:0
+TEST_STORE(x2,x9,0,x4,x14,-0x100001,-0x41,16,sh,0)
+
+inst_13:
+// rs1==x11, rs2==x0, rs2_val == -524289,
+// opcode: sh; op1:x11; op2:x0; op2val:0x0; immval:-0x5; align:0
+TEST_STORE(x2,x3,0,x11,x0,0x0,-0x5,20,sh,0)
+
+inst_14:
+// rs1==x8, rs2==x9, rs2_val == -262145,
+// opcode: sh; op1:x8; op2:x9; op2val:-0x40001; immval:-0x400; align:0
+TEST_STORE(x2,x3,0,x8,x9,-0x40001,-0x400,24,sh,0)
+
+inst_15:
+// rs2==x8, rs2_val == -131073,
+// opcode: sh; op1:x11; op2:x8; op2val:-0x20001; immval:0x20; align:0
+TEST_STORE(x2,x3,0,x11,x8,-0x20001,0x20,28,sh,0)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x10001; immval:-0x9; align:0
+TEST_STORE(x2,x3,0,x10,x11,-0x10001,-0x9,32,sh,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x8001; immval:-0x9; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x8001,-0x9,0,sh,0)
+
+inst_18:
+// rs2_val == -16385,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x4001; immval:0x0; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x4001,0x0,4,sh,0)
+
+inst_19:
+// rs2_val == -8193,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x2001; immval:-0x2; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x2001,-0x2,8,sh,0)
+
+inst_20:
+// rs2_val == -4097,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x1001; immval:0x10; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x1001,0x10,12,sh,0)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x801; immval:-0x556; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x801,-0x556,16,sh,0)
+
+inst_22:
+// rs2_val == -1025,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x401; immval:-0x8; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x401,-0x8,20,sh,0)
+
+inst_23:
+// rs2_val == -513,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x201; immval:-0x800; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x201,-0x800,24,sh,0)
+
+inst_24:
+// rs2_val == -257,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x101; immval:-0x2; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x101,-0x2,28,sh,0)
+
+inst_25:
+// rs2_val == -129,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x81; immval:0x40; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x81,0x40,32,sh,0)
+
+inst_26:
+// rs2_val == -65,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x41; immval:0x100; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x41,0x100,36,sh,0)
+
+inst_27:
+// rs2_val == -33,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x21; immval:-0x81; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x21,-0x81,40,sh,0)
+
+inst_28:
+// rs2_val == -17,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x11; immval:-0x401; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x11,-0x401,44,sh,0)
+
+inst_29:
+// rs2_val == -9,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x9; immval:-0x800; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x9,-0x800,48,sh,0)
+
+inst_30:
+// rs2_val == -5,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x5; immval:-0x800; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x5,-0x800,52,sh,0)
+
+inst_31:
+// rs2_val == -3,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x3; immval:0x200; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x3,0x200,56,sh,0)
+
+inst_32:
+// rs2_val == -2,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x2; immval:-0x21; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x2,-0x21,60,sh,0)
+
+inst_33:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: sh; op1:x10; op2:x11; op2val:-0x80000000; immval:0x40; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x80000000,0x40,64,sh,0)
+
+inst_34:
+// rs2_val == 1073741824,
+// opcode: sh; op1:x10; op2:x11; op2val:0x40000000; immval:-0x101; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x40000000,-0x101,68,sh,0)
+
+inst_35:
+// rs2_val == 536870912,
+// opcode: sh; op1:x10; op2:x11; op2val:0x20000000; immval:0x2; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x20000000,0x2,72,sh,0)
+
+inst_36:
+// rs2_val == 268435456,
+// opcode: sh; op1:x10; op2:x11; op2val:0x10000000; immval:-0x401; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x10000000,-0x401,76,sh,0)
+
+inst_37:
+// rs2_val == 134217728,
+// opcode: sh; op1:x10; op2:x11; op2val:0x8000000; immval:-0xa; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x8000000,-0xa,80,sh,0)
+
+inst_38:
+// rs2_val == 67108864,
+// opcode: sh; op1:x10; op2:x11; op2val:0x4000000; immval:0x200; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x4000000,0x200,84,sh,0)
+
+inst_39:
+// rs2_val == 33554432,
+// opcode: sh; op1:x10; op2:x11; op2val:0x2000000; immval:-0x81; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x2000000,-0x81,88,sh,0)
+
+inst_40:
+// rs2_val == -1431655766,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x55555556; immval:-0x556; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x55555556,-0x556,92,sh,0)
+
+inst_41:
+// rs2_val == 1431655765,
+// opcode: sh; op1:x10; op2:x11; op2val:0x55555555; immval:-0x9; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x55555555,-0x9,96,sh,0)
+
+inst_42:
+// ea_align == 2 and (imm_val % 4) == 0,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x1000001; immval:-0x400; align:2
+TEST_STORE(x1,x3,0,x10,x11,-0x1000001,-0x400,100,sh,2)
+
+inst_43:
+// ea_align == 2 and (imm_val % 4) == 1, rs2_val == 2048
+// opcode: sh; op1:x10; op2:x11; op2val:0x800; immval:-0x7; align:2
+TEST_STORE(x1,x3,0,x10,x11,0x800,-0x7,104,sh,2)
+
+inst_44:
+// ea_align == 2 and (imm_val % 4) == 2,
+// opcode: sh; op1:x10; op2:x11; op2val:0x3; immval:-0x556; align:2
+TEST_STORE(x1,x3,0,x10,x11,0x3,-0x556,108,sh,2)
+
+inst_45:
+// ea_align == 2 and (imm_val % 4) == 3,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x6; immval:-0x1; align:2
+TEST_STORE(x1,x3,0,x10,x11,-0x6,-0x1,112,sh,2)
+
+inst_46:
+// rs2_val == 0,
+// opcode: sh; op1:x10; op2:x11; op2val:0x0; immval:-0x81; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x0,-0x81,116,sh,0)
+
+inst_47:
+// rs2_val == 16777216,
+// opcode: sh; op1:x10; op2:x11; op2val:0x1000000; immval:-0x9; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x1000000,-0x9,120,sh,0)
+
+inst_48:
+// rs2_val == 8388608,
+// opcode: sh; op1:x10; op2:x11; op2val:0x800000; immval:-0x2; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x800000,-0x2,124,sh,0)
+
+inst_49:
+// rs2_val == 4194304,
+// opcode: sh; op1:x10; op2:x11; op2val:0x400000; immval:-0x11; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x400000,-0x11,128,sh,0)
+
+inst_50:
+// rs2_val == 2097152,
+// opcode: sh; op1:x10; op2:x11; op2val:0x200000; immval:0x9; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x200000,0x9,132,sh,0)
+
+inst_51:
+// rs2_val == 1048576,
+// opcode: sh; op1:x10; op2:x11; op2val:0x100000; immval:0x4; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x100000,0x4,136,sh,0)
+
+inst_52:
+// rs2_val == 524288,
+// opcode: sh; op1:x10; op2:x11; op2val:0x80000; immval:-0x3; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x80000,-0x3,140,sh,0)
+
+inst_53:
+// rs2_val == 262144,
+// opcode: sh; op1:x10; op2:x11; op2val:0x40000; immval:0x100; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x40000,0x100,144,sh,0)
+
+inst_54:
+// rs2_val == 131072,
+// opcode: sh; op1:x10; op2:x11; op2val:0x20000; immval:-0x201; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x20000,-0x201,148,sh,0)
+
+inst_55:
+// rs2_val == 65536,
+// opcode: sh; op1:x10; op2:x11; op2val:0x10000; immval:-0x6; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x10000,-0x6,152,sh,0)
+
+inst_56:
+// rs2_val == 32768,
+// opcode: sh; op1:x10; op2:x11; op2val:0x8000; immval:0x100; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x8000,0x100,156,sh,0)
+
+inst_57:
+// rs2_val == 16384,
+// opcode: sh; op1:x10; op2:x11; op2val:0x4000; immval:-0x400; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x4000,-0x400,160,sh,0)
+
+inst_58:
+// rs2_val == 8192,
+// opcode: sh; op1:x10; op2:x11; op2val:0x2000; immval:-0x201; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x2000,-0x201,164,sh,0)
+
+inst_59:
+// rs2_val == 4096,
+// opcode: sh; op1:x10; op2:x11; op2val:0x1000; immval:-0x3; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x1000,-0x3,168,sh,0)
+
+inst_60:
+// rs2_val == 1024,
+// opcode: sh; op1:x10; op2:x11; op2val:0x400; immval:-0x81; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x400,-0x81,172,sh,0)
+
+inst_61:
+// rs2_val == 512,
+// opcode: sh; op1:x10; op2:x11; op2val:0x200; immval:0x40; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x200,0x40,176,sh,0)
+
+inst_62:
+// rs2_val == 256,
+// opcode: sh; op1:x10; op2:x11; op2val:0x100; immval:-0x800; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x100,-0x800,180,sh,0)
+
+inst_63:
+// rs2_val == 128,
+// opcode: sh; op1:x10; op2:x11; op2val:0x80; immval:-0x6; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x80,-0x6,184,sh,0)
+
+inst_64:
+// rs2_val == 64,
+// opcode: sh; op1:x10; op2:x11; op2val:0x40; immval:-0x11; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x40,-0x11,188,sh,0)
+
+inst_65:
+// rs2_val == 32,
+// opcode: sh; op1:x10; op2:x11; op2val:0x20; immval:0x9; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x20,0x9,192,sh,0)
+
+inst_66:
+// rs2_val == 16,
+// opcode: sh; op1:x10; op2:x11; op2val:0x10; immval:-0x7; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x10,-0x7,196,sh,0)
+
+inst_67:
+// rs2_val == 8,
+// opcode: sh; op1:x10; op2:x11; op2val:0x8; immval:-0x3; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x8,-0x3,200,sh,0)
+
+inst_68:
+// rs2_val == 4,
+// opcode: sh; op1:x10; op2:x11; op2val:0x4; immval:-0x4; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x4,-0x4,204,sh,0)
+
+inst_69:
+// rs2_val == 2,
+// opcode: sh; op1:x10; op2:x11; op2val:0x2; immval:0x400; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x2,0x400,208,sh,0)
+
+inst_70:
+// rs2_val == -524289,
+// opcode: sh; op1:x10; op2:x11; op2val:-0x80001; immval:-0x5; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x80001,-0x5,212,sh,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x8_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 54*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sll-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sll-01.S
new file mode 100644
index 000000000..af03abc7f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sll-01.S
@@ -0,0 +1,520 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sll instruction of the RISC-V E extension for the sll covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",sll)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x6, rs2==x13, rd==x1, rs1_val < 0 and rs2_val == 0,
+// opcode: sll ; op1:x6; op2:x13; dest:x1; op1val:-0x40000000; op2val:0x0
+TEST_RR_OP(sll, x1, x6, x13, 0xc0000000, -0x40000000, 0x0, x2, 0, x7)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x4, rs2==x1, rd==x4, rs2_val == 15, rs1_val == -17, rs1_val < 0 and rs2_val > 0 and rs2_val < xlen
+// opcode: sll ; op1:x4; op2:x1; dest:x4; op1val:-0x11; op2val:0xf
+TEST_RR_OP(sll, x4, x4, x1, 0xfff78000, -0x11, 0xf, x2, 4, x7)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x9, rs2==x11, rd==x11, rs2_val == 23, rs1_val == -257
+// opcode: sll ; op1:x9; op2:x11; dest:x11; op1val:-0x101; op2val:0x17
+TEST_RR_OP(sll, x11, x9, x11, 0x7f800000, -0x101, 0x17, x2, 8, x7)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x12, rs2==x12, rd==x9, rs2_val == 27, rs1_val==-46340
+// opcode: sll ; op1:x12; op2:x12; dest:x9; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(sll, x9, x12, x12, 0xc0000000, -0xb504, -0xb504, x2, 12, x7)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x0, rs2==x0, rd==x0, rs2_val == 29, rs1_val == 4, rs1_val==4, rs1_val > 0 and rs2_val > 0 and rs2_val < xlen
+// opcode: sll ; op1:x0; op2:x0; dest:x0; op1val:0x0; op2val:0x0
+TEST_RR_OP(sll, x0, x0, x0, 0, 0x0, 0x0, x2, 16, x7)
+
+inst_5:
+// rs1==x5, rs2==x4, rd==x15, rs2_val == 30, rs1_val == -65
+// opcode: sll ; op1:x5; op2:x4; dest:x15; op1val:-0x41; op2val:0x1e
+TEST_RR_OP(sll, x15, x5, x4, 0xc0000000, -0x41, 0x1e, x2, 20, x7)
+
+inst_6:
+// rs1==x1, rs2==x10, rd==x3, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1) and rs2_val >= 0 and rs2_val < xlen
+// opcode: sll ; op1:x1; op2:x10; dest:x3; op1val:0x7fffffff; op2val:0x9
+TEST_RR_OP(sll, x3, x1, x10, 0xfffffe00, 0x7fffffff, 0x9, x2, 24, x7)
+
+inst_7:
+// rs1==x8, rs2==x15, rd==x10, rs1_val == -1073741825,
+// opcode: sll ; op1:x8; op2:x15; dest:x10; op1val:-0x40000001; op2val:0x11
+TEST_RR_OP(sll, x10, x8, x15, 0xfffe0000, -0x40000001, 0x11, x2, 28, x4)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_8:
+// rs1==x13, rs2==x6, rd==x12, rs1_val == -536870913, rs2_val == 1
+// opcode: sll ; op1:x13; op2:x6; dest:x12; op1val:-0x20000001; op2val:0x1
+TEST_RR_OP(sll, x12, x13, x6, 0xbffffffe, -0x20000001, 0x1, x1, 0, x4)
+
+inst_9:
+// rs1==x3, rs2==x9, rd==x5, rs1_val == -268435457,
+// opcode: sll ; op1:x3; op2:x9; dest:x5; op1val:-0x10000001; op2val:0xe
+TEST_RR_OP(sll, x5, x3, x9, 0xffffc000, -0x10000001, 0xe, x1, 4, x4)
+
+inst_10:
+// rs1==x7, rs2==x2, rd==x13, rs1_val == -134217729,
+// opcode: sll ; op1:x7; op2:x2; dest:x13; op1val:-0x8000001; op2val:0x1e
+TEST_RR_OP(sll, x13, x7, x2, 0xc0000000, -0x8000001, 0x1e, x1, 8, x4)
+
+inst_11:
+// rs1==x11, rs2==x7, rd==x8, rs1_val == -67108865,
+// opcode: sll ; op1:x11; op2:x7; dest:x8; op1val:-0x4000001; op2val:0x17
+TEST_RR_OP(sll, x8, x11, x7, 0xff800000, -0x4000001, 0x17, x1, 12, x4)
+
+inst_12:
+// rs1==x10, rs2==x14, rd==x7, rs1_val == -33554433, rs2_val == 8
+// opcode: sll ; op1:x10; op2:x14; dest:x7; op1val:-0x2000001; op2val:0x8
+TEST_RR_OP(sll, x7, x10, x14, 0xffffff00, -0x2000001, 0x8, x1, 16, x4)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_13:
+// rs1==x14, rs2==x8, rd==x6, rs1_val == -16777217,
+// opcode: sll ; op1:x14; op2:x8; dest:x6; op1val:-0x1000001; op2val:0xd
+TEST_RR_OP(sll, x6, x14, x8, 0xffffe000, -0x1000001, 0xd, x1, 0, x4)
+
+inst_14:
+// rs1==x15, rs2==x3, rd==x2, rs1_val == -8388609, rs2_val == 21
+// opcode: sll ; op1:x15; op2:x3; dest:x2; op1val:-0x800001; op2val:0x15
+TEST_RR_OP(sll, x2, x15, x3, 0xffe00000, -0x800001, 0x15, x1, 4, x4)
+
+inst_15:
+// rs1==x2, rs2==x5, rd==x14, rs1_val == -4194305,
+// opcode: sll ; op1:x2; op2:x5; dest:x14; op1val:-0x400001; op2val:0xb
+TEST_RR_OP(sll, x14, x2, x5, 0xfffff800, -0x400001, 0xb, x1, 8, x4)
+
+inst_16:
+// rs1_val == -2097153,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0xb
+TEST_RR_OP(sll, x12, x10, x11, 0xfffff800, -0x200001, 0xb, x1, 12, x4)
+
+inst_17:
+// rs1_val == -1048577, rs2_val == 2
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x2
+TEST_RR_OP(sll, x12, x10, x11, 0xffbffffc, -0x100001, 0x2, x1, 16, x2)
+
+inst_18:
+// rs1_val == -524289,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:0x9
+TEST_RR_OP(sll, x12, x10, x11, 0xeffffe00, -0x80001, 0x9, x1, 20, x2)
+
+inst_19:
+// rs1_val == -262145,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0xf
+TEST_RR_OP(sll, x12, x10, x11, 0xffff8000, -0x40001, 0xf, x1, 24, x2)
+
+inst_20:
+// rs1_val == -131073, rs2_val == 10
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0xa
+TEST_RR_OP(sll, x12, x10, x11, 0xf7fffc00, -0x20001, 0xa, x1, 28, x2)
+
+inst_21:
+// rs1_val == -65537,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:0x2
+TEST_RR_OP(sll, x12, x10, x11, 0xfffbfffc, -0x10001, 0x2, x1, 32, x2)
+
+inst_22:
+// rs1_val == -32769, rs2_val == 4
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x4
+TEST_RR_OP(sll, x12, x10, x11, 0xfff7fff0, -0x8001, 0x4, x1, 36, x2)
+
+inst_23:
+// rs1_val == -16385,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0x0
+TEST_RR_OP(sll, x12, x10, x11, 0xffffbfff, -0x4001, 0x0, x1, 40, x2)
+
+inst_24:
+// rs1_val == -8193,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0xd
+TEST_RR_OP(sll, x12, x10, x11, 0xfbffe000, -0x2001, 0xd, x1, 44, x2)
+
+inst_25:
+// rs1_val == -4097,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0x1e
+TEST_RR_OP(sll, x12, x10, x11, 0xc0000000, -0x1001, 0x1e, x1, 48, x2)
+
+inst_26:
+// rs1_val == -2049, rs2_val == 16
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x10
+TEST_RR_OP(sll, x12, x10, x11, 0xf7ff0000, -0x801, 0x10, x1, 52, x2)
+
+inst_27:
+// rs1_val == -1025,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x5
+TEST_RR_OP(sll, x12, x10, x11, 0xffff7fe0, -0x401, 0x5, x1, 56, x2)
+
+inst_28:
+// rs1_val == -513,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x5
+TEST_RR_OP(sll, x12, x10, x11, 0xffffbfe0, -0x201, 0x5, x1, 60, x2)
+
+inst_29:
+// rs1_val == -129,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x10
+TEST_RR_OP(sll, x12, x10, x11, 0xff7f0000, -0x81, 0x10, x1, 64, x2)
+
+inst_30:
+// rs1_val == -33,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x10
+TEST_RR_OP(sll, x12, x10, x11, 0xffdf0000, -0x21, 0x10, x1, 68, x2)
+
+inst_31:
+// rs1_val == -9,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x10
+TEST_RR_OP(sll, x12, x10, x11, 0xfff70000, -0x9, 0x10, x1, 72, x2)
+
+inst_32:
+// rs1_val == -5,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0xf
+TEST_RR_OP(sll, x12, x10, x11, 0xfffd8000, -0x5, 0xf, x1, 76, x2)
+
+inst_33:
+// rs1_val == -3,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:0x4
+TEST_RR_OP(sll, x12, x10, x11, 0xffffffd0, -0x3, 0x4, x1, 80, x2)
+
+inst_34:
+// rs1_val == -2,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x2
+TEST_RR_OP(sll, x12, x10, x11, 0xfffffff8, -0x2, 0x2, x1, 84, x2)
+
+inst_35:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and rs2_val >= 0 and rs2_val < xlen
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x1f
+TEST_RR_OP(sll, x12, x10, x11, 0x0, -0x80000000, 0x1f, x1, 88, x2)
+
+inst_36:
+// rs1_val == 1073741824,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x17
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x40000000, 0x17, x1, 92, x2)
+
+inst_37:
+// rs1_val == 536870912,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0xb
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x20000000, 0xb, x1, 96, x2)
+
+inst_38:
+// rs1_val == 268435456,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x1
+TEST_RR_OP(sll, x12, x10, x11, 0x20000000, 0x10000000, 0x1, x1, 100, x2)
+
+inst_39:
+// rs1_val == 134217728,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x13
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x8000000, 0x13, x1, 104, x2)
+
+inst_40:
+// rs1_val == 67108864,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0x5
+TEST_RR_OP(sll, x12, x10, x11, 0x80000000, 0x4000000, 0x5, x1, 108, x2)
+
+inst_41:
+// rs1_val == 33554432,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x3
+TEST_RR_OP(sll, x12, x10, x11, 0x10000000, 0x2000000, 0x3, x1, 112, x2)
+
+inst_42:
+// rs1_val == 16777216,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0xa
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x1000000, 0xa, x1, 116, x2)
+
+inst_43:
+// rs1_val == 8388608,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x4
+TEST_RR_OP(sll, x12, x10, x11, 0x8000000, 0x800000, 0x4, x1, 120, x2)
+
+inst_44:
+// rs1_val == 4194304, rs1_val > 0 and rs2_val == 0
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x0
+TEST_RR_OP(sll, x12, x10, x11, 0x400000, 0x400000, 0x0, x1, 124, x2)
+
+inst_45:
+// rs1_val == 2097152,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x12
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x200000, 0x12, x1, 128, x2)
+
+inst_46:
+// rs1_val == 1048576,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x1f
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x100000, 0x1f, x1, 132, x2)
+
+inst_47:
+// rs1_val == 524288,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x7
+TEST_RR_OP(sll, x12, x10, x11, 0x4000000, 0x80000, 0x7, x1, 136, x2)
+
+inst_48:
+// rs1_val == 262144,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x1b
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x40000, 0x1b, x1, 140, x2)
+
+inst_49:
+// rs1_val == 131072,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x10
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x20000, 0x10, x1, 144, x2)
+
+inst_50:
+// rs1_val == 65536,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x11
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x10000, 0x11, x1, 148, x2)
+
+inst_51:
+// rs1_val == 32768,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0xc
+TEST_RR_OP(sll, x12, x10, x11, 0x8000000, 0x8000, 0xc, x1, 152, x2)
+
+inst_52:
+// rs1_val == 16384,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0x12
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x4000, 0x12, x1, 156, x2)
+
+inst_53:
+// rs1_val == 8192,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x8
+TEST_RR_OP(sll, x12, x10, x11, 0x200000, 0x2000, 0x8, x1, 160, x2)
+
+inst_54:
+// rs1_val == 4096,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0xa
+TEST_RR_OP(sll, x12, x10, x11, 0x400000, 0x1000, 0xa, x1, 164, x2)
+
+inst_55:
+// rs1_val == 2048,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0xa
+TEST_RR_OP(sll, x12, x10, x11, 0x200000, 0x800, 0xa, x1, 168, x2)
+
+inst_56:
+// rs1_val == 1024,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x11
+TEST_RR_OP(sll, x12, x10, x11, 0x8000000, 0x400, 0x11, x1, 172, x2)
+
+inst_57:
+// rs1_val == 512,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x17
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x200, 0x17, x1, 176, x2)
+
+inst_58:
+// rs1_val == 256,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x7
+TEST_RR_OP(sll, x12, x10, x11, 0x8000, 0x100, 0x7, x1, 180, x2)
+
+inst_59:
+// rs1_val == 128,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x1f
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x80, 0x1f, x1, 184, x2)
+
+inst_60:
+// rs1_val == 64,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0xa
+TEST_RR_OP(sll, x12, x10, x11, 0x10000, 0x40, 0xa, x1, 188, x2)
+
+inst_61:
+// rs1_val == 32,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0xa
+TEST_RR_OP(sll, x12, x10, x11, 0x8000, 0x20, 0xa, x1, 192, x2)
+
+inst_62:
+// rs1_val == 16,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x17
+TEST_RR_OP(sll, x12, x10, x11, 0x8000000, 0x10, 0x17, x1, 196, x2)
+
+inst_63:
+// rs1_val == 8,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x1d
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x8, 0x1d, x1, 200, x2)
+
+inst_64:
+// rs1_val == 2, rs1_val==2
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x1b
+TEST_RR_OP(sll, x12, x10, x11, 0x10000000, 0x2, 0x1b, x1, 204, x2)
+
+inst_65:
+// rs1_val == 1, rs1_val == 1 and rs2_val >= 0 and rs2_val < xlen
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x1f
+TEST_RR_OP(sll, x12, x10, x11, 0x80000000, 0x1, 0x1f, x1, 208, x2)
+
+inst_66:
+// rs1_val==46341,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x13
+TEST_RR_OP(sll, x12, x10, x11, 0xa8280000, 0xb505, 0x13, x1, 212, x2)
+
+inst_67:
+// rs1_val==-46339,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x8
+TEST_RR_OP(sll, x12, x10, x11, 0xff4afd00, -0xb503, 0x8, x1, 216, x2)
+
+inst_68:
+// rs1_val==1717986919,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(sll, x12, x10, x11, 0x9999999c, 0x66666667, 0x2, x1, 220, x2)
+
+inst_69:
+// rs1_val==858993460,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(sll, x12, x10, x11, 0x66666680, 0x33333334, 0x5, x1, 224, x2)
+
+inst_70:
+// rs1_val==6,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x11
+TEST_RR_OP(sll, x12, x10, x11, 0xc0000, 0x6, 0x11, x1, 228, x2)
+
+inst_71:
+// rs1_val==-1431655765,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x11
+TEST_RR_OP(sll, x12, x10, x11, 0x55560000, -0x55555555, 0x11, x1, 232, x2)
+
+inst_72:
+// rs1_val==1431655766,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x13
+TEST_RR_OP(sll, x12, x10, x11, 0xaab00000, 0x55555556, 0x13, x1, 236, x2)
+
+inst_73:
+// rs1_val==46339,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(sll, x12, x10, x11, 0xb503, 0xb503, 0x0, x1, 240, x2)
+
+inst_74:
+// rs1_val==3,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x11
+TEST_RR_OP(sll, x12, x10, x11, 0x60000, 0x3, 0x11, x1, 244, x2)
+
+inst_75:
+// rs1_val == -1431655766, rs1_val==-1431655766
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x10
+TEST_RR_OP(sll, x12, x10, x11, 0xaaaa0000, -0x55555556, 0x10, x1, 248, x2)
+
+inst_76:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x12
+TEST_RR_OP(sll, x12, x10, x11, 0x55540000, 0x55555555, 0x12, x1, 252, x2)
+
+inst_77:
+// rs1_val == 0 and rs2_val >= 0 and rs2_val < xlen, rs1_val==0
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xc
+TEST_RR_OP(sll, x12, x10, x11, 0x0, 0x0, 0xc, x1, 256, x2)
+
+inst_78:
+// rs1_val == rs2_val and rs2_val > 0 and rs2_val < xlen,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(sll, x12, x10, x11, 0x8, 0x2, 0x2, x1, 260, x2)
+
+inst_79:
+// rs1_val==1717986917,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x8
+TEST_RR_OP(sll, x12, x10, x11, 0x66666500, 0x66666665, 0x8, x1, 264, x2)
+
+inst_80:
+// rs1_val==858993458,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xe
+TEST_RR_OP(sll, x12, x10, x11, 0xcccc8000, 0x33333332, 0xe, x1, 268, x2)
+
+inst_81:
+// rs1_val==1431655764,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(sll, x12, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 272, x2)
+
+inst_82:
+// rs1_val==46340,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x12
+TEST_RR_OP(sll, x12, x10, x11, 0xd4100000, 0xb504, 0x12, x1, 276, x2)
+
+inst_83:
+// rs1_val==1717986918,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x15
+TEST_RR_OP(sll, x12, x10, x11, 0xccc00000, 0x66666666, 0x15, x1, 280, x2)
+
+inst_84:
+// rs1_val==858993459,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(sll, x12, x10, x11, 0xccccccc0, 0x33333333, 0x6, x1, 284, x2)
+
+inst_85:
+// rs1_val==5,
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xa
+TEST_RR_OP(sll, x12, x10, x11, 0x1400, 0x5, 0xa, x1, 288, x2)
+
+inst_86:
+// rs2_val == 27, rs1_val==-46340
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x1b
+TEST_RR_OP(sll, x12, x10, x11, 0xe0000000, -0xb504, 0x1b, x1, 292, x2)
+
+inst_87:
+// rs2_val == 29, rs1_val == 4, rs1_val==4, rs1_val > 0 and rs2_val > 0 and rs2_val < xlen
+// opcode: sll ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x1d
+TEST_RR_OP(sll, x12, x10, x11, 0x80000000, 0x4, 0x1d, x1, 296, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 5*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 75*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slli-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slli-01.S
new file mode 100644
index 000000000..13226b35c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slli-01.S
@@ -0,0 +1,525 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the slli instruction of the RISC-V E extension for the slli covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",slli)
+
+RVTEST_SIGBASE( x5,signature_x5_1)
+
+inst_0:
+// rs1 != rd, rs1==x2, rd==x10, rs1_val < 0 and imm_val == (xlen-1), rs1_val < 0 and imm_val > 0 and imm_val < xlen
+// opcode: slli ; op1:x2; dest:x10; op1val:-0x1; immval:0x1f
+TEST_IMM_OP( slli, x10, x2, 0x80000000, -0x1, 0x1f, x5, 0, x12)
+
+inst_1:
+// rs1 == rd, rs1==x3, rd==x3, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1) and imm_val >= 0 and imm_val < xlen, imm_val == 27, rs1_val > 0 and imm_val > 0 and imm_val < xlen
+// opcode: slli ; op1:x3; dest:x3; op1val:0x7fffffff; immval:0x1b
+TEST_IMM_OP( slli, x3, x3, 0xf8000000, 0x7fffffff, 0x1b, x5, 4, x12)
+
+inst_2:
+// rs1==x9, rd==x14, rs1_val == -1073741825,
+// opcode: slli ; op1:x9; dest:x14; op1val:-0x40000001; immval:0x7
+TEST_IMM_OP( slli, x14, x9, 0xffffff80, -0x40000001, 0x7, x5, 8, x12)
+
+inst_3:
+// rs1==x7, rd==x8, rs1_val == -536870913, imm_val == 1
+// opcode: slli ; op1:x7; dest:x8; op1val:-0x20000001; immval:0x1
+TEST_IMM_OP( slli, x8, x7, 0xbffffffe, -0x20000001, 0x1, x5, 12, x12)
+
+inst_4:
+// rs1==x4, rd==x6, rs1_val == -268435457,
+// opcode: slli ; op1:x4; dest:x6; op1val:-0x10000001; immval:0x12
+TEST_IMM_OP( slli, x6, x4, 0xfffc0000, -0x10000001, 0x12, x5, 16, x12)
+
+inst_5:
+// rs1==x11, rd==x7, rs1_val == -134217729, rs1_val < 0 and imm_val == 0
+// opcode: slli ; op1:x11; dest:x7; op1val:-0x8000001; immval:0x0
+TEST_IMM_OP( slli, x7, x11, 0xf7ffffff, -0x8000001, 0x0, x5, 20, x12)
+
+inst_6:
+// rs1==x0, rd==x1, rs1_val == -67108865,
+// opcode: slli ; op1:x0; dest:x1; op1val:0x0; immval:0x7
+TEST_IMM_OP( slli, x1, x0, 0x0, 0x0, 0x7, x5, 24, x12)
+
+inst_7:
+// rs1==x1, rd==x11, rs1_val == -33554433, imm_val == 15
+// opcode: slli ; op1:x1; dest:x11; op1val:-0x2000001; immval:0xf
+TEST_IMM_OP( slli, x11, x1, 0xffff8000, -0x2000001, 0xf, x5, 28, x3)
+
+inst_8:
+// rs1==x10, rd==x12, rs1_val == -16777217,
+// opcode: slli ; op1:x10; dest:x12; op1val:-0x1000001; immval:0x13
+TEST_IMM_OP( slli, x12, x10, 0xfff80000, -0x1000001, 0x13, x5, 32, x3)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_9:
+// rs1==x13, rd==x9, rs1_val == -8388609, imm_val == 16
+// opcode: slli ; op1:x13; dest:x9; op1val:-0x800001; immval:0x10
+TEST_IMM_OP( slli, x9, x13, 0xffff0000, -0x800001, 0x10, x1, 0, x3)
+
+inst_10:
+// rs1==x5, rd==x13, rs1_val == -4194305,
+// opcode: slli ; op1:x5; dest:x13; op1val:-0x400001; immval:0x1f
+TEST_IMM_OP( slli, x13, x5, 0x80000000, -0x400001, 0x1f, x1, 4, x3)
+
+inst_11:
+// rs1==x8, rd==x15, rs1_val == -2097153,
+// opcode: slli ; op1:x8; dest:x15; op1val:-0x200001; immval:0x1b
+TEST_IMM_OP( slli, x15, x8, 0xf8000000, -0x200001, 0x1b, x1, 8, x3)
+
+inst_12:
+// rs1==x15, rd==x4, rs1_val == -1048577,
+// opcode: slli ; op1:x15; dest:x4; op1val:-0x100001; immval:0xc
+TEST_IMM_OP( slli, x4, x15, 0xfffff000, -0x100001, 0xc, x1, 12, x3)
+
+inst_13:
+// rs1==x14, rd==x5, rs1_val == -524289,
+// opcode: slli ; op1:x14; dest:x5; op1val:-0x80001; immval:0x9
+TEST_IMM_OP( slli, x5, x14, 0xeffffe00, -0x80001, 0x9, x1, 16, x3)
+
+inst_14:
+// rs1==x6, rd==x2, rs1_val == -262145,
+// opcode: slli ; op1:x6; dest:x2; op1val:-0x40001; immval:0x0
+TEST_IMM_OP( slli, x2, x6, 0xfffbffff, -0x40001, 0x0, x1, 20, x3)
+
+inst_15:
+// rs1==x12, rd==x0, rs1_val == -131073,
+// opcode: slli ; op1:x12; dest:x0; op1val:-0x20001; immval:0x10
+TEST_IMM_OP( slli, x0, x12, 0, -0x20001, 0x10, x1, 24, x2)
+
+inst_16:
+// rs1_val == -65537,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x10001; immval:0xb
+TEST_IMM_OP( slli, x11, x10, 0xf7fff800, -0x10001, 0xb, x1, 28, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_17:
+// rs1_val == -32769,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x8001; immval:0x11
+TEST_IMM_OP( slli, x11, x10, 0xfffe0000, -0x8001, 0x11, x1, 0, x2)
+
+inst_18:
+// rs1_val == -16385,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x4001; immval:0x1b
+TEST_IMM_OP( slli, x11, x10, 0xf8000000, -0x4001, 0x1b, x1, 4, x2)
+
+inst_19:
+// rs1_val == -8193,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x2001; immval:0x11
+TEST_IMM_OP( slli, x11, x10, 0xbffe0000, -0x2001, 0x11, x1, 8, x2)
+
+inst_20:
+// rs1_val == -4097, imm_val == 29
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x1001; immval:0x1d
+TEST_IMM_OP( slli, x11, x10, 0xe0000000, -0x1001, 0x1d, x1, 12, x2)
+
+inst_21:
+// rs1_val == -2049,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x801; immval:0xe
+TEST_IMM_OP( slli, x11, x10, 0xfdffc000, -0x801, 0xe, x1, 16, x2)
+
+inst_22:
+// rs1_val == -1025, imm_val == 23
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x401; immval:0x17
+TEST_IMM_OP( slli, x11, x10, 0xff800000, -0x401, 0x17, x1, 20, x2)
+
+inst_23:
+// rs1_val == -513,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x201; immval:0xe
+TEST_IMM_OP( slli, x11, x10, 0xff7fc000, -0x201, 0xe, x1, 24, x2)
+
+inst_24:
+// rs1_val == -257,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x101; immval:0x11
+TEST_IMM_OP( slli, x11, x10, 0xfdfe0000, -0x101, 0x11, x1, 28, x2)
+
+inst_25:
+// rs1_val == -129,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x81; immval:0xe
+TEST_IMM_OP( slli, x11, x10, 0xffdfc000, -0x81, 0xe, x1, 32, x2)
+
+inst_26:
+// rs1_val == -65,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x41; immval:0xe
+TEST_IMM_OP( slli, x11, x10, 0xffefc000, -0x41, 0xe, x1, 36, x2)
+
+inst_27:
+// rs1_val == -33, imm_val == 8
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x21; immval:0x8
+TEST_IMM_OP( slli, x11, x10, 0xffffdf00, -0x21, 0x8, x1, 40, x2)
+
+inst_28:
+// rs1_val == -17,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x11; immval:0x6
+TEST_IMM_OP( slli, x11, x10, 0xfffffbc0, -0x11, 0x6, x1, 44, x2)
+
+inst_29:
+// rs1_val == -9, imm_val == 4
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x9; immval:0x4
+TEST_IMM_OP( slli, x11, x10, 0xffffff70, -0x9, 0x4, x1, 48, x2)
+
+inst_30:
+// rs1_val == -5,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x5; immval:0x10
+TEST_IMM_OP( slli, x11, x10, 0xfffb0000, -0x5, 0x10, x1, 52, x2)
+
+inst_31:
+// rs1_val == -3,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x3; immval:0x9
+TEST_IMM_OP( slli, x11, x10, 0xfffffa00, -0x3, 0x9, x1, 56, x2)
+
+inst_32:
+// rs1_val == -2,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x2; immval:0x7
+TEST_IMM_OP( slli, x11, x10, 0xffffff00, -0x2, 0x7, x1, 60, x2)
+
+inst_33:
+// imm_val == 30, rs1_val == 0 and imm_val >= 0 and imm_val < xlen, rs1_val==0
+// opcode: slli ; op1:x10; dest:x11; op1val:0x0; immval:0x1e
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x0, 0x1e, x1, 64, x2)
+
+inst_34:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and imm_val >= 0 and imm_val < xlen
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x80000000; immval:0x17
+TEST_IMM_OP( slli, x11, x10, 0x0, -0x80000000, 0x17, x1, 68, x2)
+
+inst_35:
+// rs1_val == 1073741824, imm_val == 21
+// opcode: slli ; op1:x10; dest:x11; op1val:0x40000000; immval:0x15
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x40000000, 0x15, x1, 72, x2)
+
+inst_36:
+// rs1_val == 536870912,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x20000000; immval:0x10
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x20000000, 0x10, x1, 76, x2)
+
+inst_37:
+// rs1_val == 268435456,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x10000000; immval:0x7
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x10000000, 0x7, x1, 80, x2)
+
+inst_38:
+// rs1_val == 134217728,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x8000000; immval:0x1e
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x8000000, 0x1e, x1, 84, x2)
+
+inst_39:
+// rs1_val == 67108864,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x4000000; immval:0xf
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x4000000, 0xf, x1, 88, x2)
+
+inst_40:
+// rs1_val == 33554432,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x2000000; immval:0x1e
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x2000000, 0x1e, x1, 92, x2)
+
+inst_41:
+// rs1_val == 16777216, rs1_val > 0 and imm_val == (xlen-1)
+// opcode: slli ; op1:x10; dest:x11; op1val:0x1000000; immval:0x1f
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x1000000, 0x1f, x1, 96, x2)
+
+inst_42:
+// rs1_val == 8388608,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x800000; immval:0x15
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x800000, 0x15, x1, 100, x2)
+
+inst_43:
+// rs1_val == 4194304, rs1_val > 0 and imm_val == 0
+// opcode: slli ; op1:x10; dest:x11; op1val:0x400000; immval:0x0
+TEST_IMM_OP( slli, x11, x10, 0x400000, 0x400000, 0x0, x1, 104, x2)
+
+inst_44:
+// rs1_val == 2097152,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x200000; immval:0x6
+TEST_IMM_OP( slli, x11, x10, 0x8000000, 0x200000, 0x6, x1, 108, x2)
+
+inst_45:
+// rs1_val == 1048576,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x100000; immval:0x11
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x100000, 0x11, x1, 112, x2)
+
+inst_46:
+// rs1_val == 524288,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x80000; immval:0x1e
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x80000, 0x1e, x1, 116, x2)
+
+inst_47:
+// rs1_val == 262144,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x40000; immval:0x13
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x40000, 0x13, x1, 120, x2)
+
+inst_48:
+// rs1_val == 131072,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x20000; immval:0xf
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x20000, 0xf, x1, 124, x2)
+
+inst_49:
+// rs1_val == 65536,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x10000; immval:0xe
+TEST_IMM_OP( slli, x11, x10, 0x40000000, 0x10000, 0xe, x1, 128, x2)
+
+inst_50:
+// rs1_val == 32768,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x8000; immval:0xc
+TEST_IMM_OP( slli, x11, x10, 0x8000000, 0x8000, 0xc, x1, 132, x2)
+
+inst_51:
+// rs1_val == 16384,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x4000; immval:0x0
+TEST_IMM_OP( slli, x11, x10, 0x4000, 0x4000, 0x0, x1, 136, x2)
+
+inst_52:
+// rs1_val == 8192,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x2000; immval:0x0
+TEST_IMM_OP( slli, x11, x10, 0x2000, 0x2000, 0x0, x1, 140, x2)
+
+inst_53:
+// rs1_val == 4096,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x1000; immval:0x1
+TEST_IMM_OP( slli, x11, x10, 0x2000, 0x1000, 0x1, x1, 144, x2)
+
+inst_54:
+// rs1_val == 2048,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x800; immval:0x15
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x800, 0x15, x1, 148, x2)
+
+inst_55:
+// rs1_val == 1024,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x400; immval:0xc
+TEST_IMM_OP( slli, x11, x10, 0x400000, 0x400, 0xc, x1, 152, x2)
+
+inst_56:
+// rs1_val == 512,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x200; immval:0x3
+TEST_IMM_OP( slli, x11, x10, 0x1000, 0x200, 0x3, x1, 156, x2)
+
+inst_57:
+// rs1_val == 256,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x100; immval:0x15
+TEST_IMM_OP( slli, x11, x10, 0x20000000, 0x100, 0x15, x1, 160, x2)
+
+inst_58:
+// rs1_val == 128,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x80; immval:0x1d
+TEST_IMM_OP( slli, x11, x10, 0x0, 0x80, 0x1d, x1, 164, x2)
+
+inst_59:
+// rs1_val == 64,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x40; immval:0x6
+TEST_IMM_OP( slli, x11, x10, 0x1000, 0x40, 0x6, x1, 168, x2)
+
+inst_60:
+// rs1_val == 32,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x20; immval:0xb
+TEST_IMM_OP( slli, x11, x10, 0x10000, 0x20, 0xb, x1, 172, x2)
+
+inst_61:
+// rs1_val == 16,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x10; immval:0x0
+TEST_IMM_OP( slli, x11, x10, 0x10, 0x10, 0x0, x1, 176, x2)
+
+inst_62:
+// rs1_val == 8,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x8; immval:0x13
+TEST_IMM_OP( slli, x11, x10, 0x400000, 0x8, 0x13, x1, 180, x2)
+
+inst_63:
+// rs1_val == 4, rs1_val==4, rs1_val == imm_val and imm_val > 0 and imm_val < xlen
+// opcode: slli ; op1:x10; dest:x11; op1val:0x4; immval:0x4
+TEST_IMM_OP( slli, x11, x10, 0x40, 0x4, 0x4, x1, 184, x2)
+
+inst_64:
+// rs1_val == 2, rs1_val==2
+// opcode: slli ; op1:x10; dest:x11; op1val:0x2; immval:0xb
+TEST_IMM_OP( slli, x11, x10, 0x1000, 0x2, 0xb, x1, 188, x2)
+
+inst_65:
+// rs1_val == 1, rs1_val == 1 and imm_val >= 0 and imm_val < xlen
+// opcode: slli ; op1:x10; dest:x11; op1val:0x1; immval:0xe
+TEST_IMM_OP( slli, x11, x10, 0x4000, 0x1, 0xe, x1, 192, x2)
+
+inst_66:
+// imm_val == 2,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x81; immval:0x2
+TEST_IMM_OP( slli, x11, x10, 0xfffffdfc, -0x81, 0x2, x1, 196, x2)
+
+inst_67:
+// rs1_val==46341,
+// opcode: slli ; op1:x10; dest:x11; op1val:0xb505; immval:0xf
+TEST_IMM_OP( slli, x11, x10, 0x5a828000, 0xb505, 0xf, x1, 200, x2)
+
+inst_68:
+// rs1_val==-46339,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0xb503; immval:0x17
+TEST_IMM_OP( slli, x11, x10, 0x7e800000, -0xb503, 0x17, x1, 204, x2)
+
+inst_69:
+// rs1_val==1717986919,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x66666667; immval:0x1b
+TEST_IMM_OP( slli, x11, x10, 0x38000000, 0x66666667, 0x1b, x1, 208, x2)
+
+inst_70:
+// rs1_val==858993460,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x33333334; immval:0x13
+TEST_IMM_OP( slli, x11, x10, 0x99a00000, 0x33333334, 0x13, x1, 212, x2)
+
+inst_71:
+// rs1_val==6,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x6; immval:0xb
+TEST_IMM_OP( slli, x11, x10, 0x3000, 0x6, 0xb, x1, 216, x2)
+
+inst_72:
+// rs1_val==-1431655765,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x12
+TEST_IMM_OP( slli, x11, x10, 0xaaac0000, -0x55555555, 0x12, x1, 220, x2)
+
+inst_73:
+// rs1_val==1431655766,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x55555556; immval:0x1e
+TEST_IMM_OP( slli, x11, x10, 0x80000000, 0x55555556, 0x1e, x1, 224, x2)
+
+inst_74:
+// rs1_val==3,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x3; immval:0x12
+TEST_IMM_OP( slli, x11, x10, 0xc0000, 0x3, 0x12, x1, 228, x2)
+
+inst_75:
+// rs1_val == -1431655766, rs1_val==-1431655766
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x10
+TEST_IMM_OP( slli, x11, x10, 0xaaaa0000, -0x55555556, 0x10, x1, 232, x2)
+
+inst_76:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode: slli ; op1:x10; dest:x11; op1val:0x55555555; immval:0x7
+TEST_IMM_OP( slli, x11, x10, 0xaaaaaa80, 0x55555555, 0x7, x1, 236, x2)
+
+inst_77:
+// imm_val == 10,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x1001; immval:0xa
+TEST_IMM_OP( slli, x11, x10, 0xffbffc00, -0x1001, 0xa, x1, 240, x2)
+
+inst_78:
+// rs1_val==46339,
+// opcode: slli ; op1:x10; dest:x11; op1val:0xb503; immval:0x6
+TEST_IMM_OP( slli, x11, x10, 0x2d40c0, 0xb503, 0x6, x1, 244, x2)
+
+inst_79:
+// rs1_val==1717986917,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x66666665; immval:0xd
+TEST_IMM_OP( slli, x11, x10, 0xcccca000, 0x66666665, 0xd, x1, 248, x2)
+
+inst_80:
+// rs1_val==858993458,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x33333332; immval:0x1
+TEST_IMM_OP( slli, x11, x10, 0x66666664, 0x33333332, 0x1, x1, 252, x2)
+
+inst_81:
+// rs1_val==1431655764,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x55555554; immval:0x1d
+TEST_IMM_OP( slli, x11, x10, 0x80000000, 0x55555554, 0x1d, x1, 256, x2)
+
+inst_82:
+// rs1_val==46340,
+// opcode: slli ; op1:x10; dest:x11; op1val:0xb504; immval:0x11
+TEST_IMM_OP( slli, x11, x10, 0x6a080000, 0xb504, 0x11, x1, 260, x2)
+
+inst_83:
+// rs1_val==-46340,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0xb504; immval:0x13
+TEST_IMM_OP( slli, x11, x10, 0x57e00000, -0xb504, 0x13, x1, 264, x2)
+
+inst_84:
+// rs1_val==1717986918,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x66666666; immval:0x1d
+TEST_IMM_OP( slli, x11, x10, 0xc0000000, 0x66666666, 0x1d, x1, 268, x2)
+
+inst_85:
+// rs1_val==858993459,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x33333333; immval:0xa
+TEST_IMM_OP( slli, x11, x10, 0xcccccc00, 0x33333333, 0xa, x1, 272, x2)
+
+inst_86:
+// rs1_val==5,
+// opcode: slli ; op1:x10; dest:x11; op1val:0x5; immval:0x1b
+TEST_IMM_OP( slli, x11, x10, 0x28000000, 0x5, 0x1b, x1, 276, x2)
+
+inst_87:
+// rs1_val == -67108865,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x4000001; immval:0x7
+TEST_IMM_OP( slli, x11, x10, 0xffffff80, -0x4000001, 0x7, x1, 280, x2)
+
+inst_88:
+// rs1_val == -131073,
+// opcode: slli ; op1:x10; dest:x11; op1val:-0x20001; immval:0x10
+TEST_IMM_OP( slli, x11, x10, 0xffff0000, -0x20001, 0x10, x1, 284, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x5_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_1:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 72*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slt-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slt-01.S
new file mode 100644
index 000000000..9a17362b8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slt-01.S
@@ -0,0 +1,2990 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the slt instruction of the RISC-V E extension for the slt covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",slt)
+
+RVTEST_SIGBASE( x12,signature_x12_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x5, rs2==x10, rd==x7, rs1_val != rs2_val, rs2_val == -65537, rs1_val == -129, rs1_val < 0 and rs2_val < 0
+// opcode: slt ; op1:x5; op2:x10; dest:x7; op1val:-0x81; op2val:-0x10001
+TEST_RR_OP(slt, x7, x5, x10, 0x0, -0x81, -0x10001, x12, 0, x13)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x0, rs2==x6, rd==x0, rs2_val == 2147483647, rs1_val == -4194305, rs1_val < 0 and rs2_val > 0, rs2_val == (2**(xlen-1)-1)
+// opcode: slt ; op1:x0; op2:x6; dest:x0; op1val:0x0; op2val:0x7fffffff
+TEST_RR_OP(slt, x0, x0, x6, 0, 0x0, 0x7fffffff, x12, 4, x13)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x9, rs2==x8, rd==x8, rs2_val == -1073741825, rs1_val > 0 and rs2_val < 0, rs1_val == 512
+// opcode: slt ; op1:x9; op2:x8; dest:x8; op1val:0x200; op2val:-0x40000001
+TEST_RR_OP(slt, x8, x9, x8, 0x0, 0x200, -0x40000001, x12, 8, x13)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x4, rs2==x4, rd==x11, rs2_val == -536870913, rs1_val == -4097
+// opcode: slt ; op1:x4; op2:x4; dest:x11; op1val:-0x1001; op2val:-0x1001
+TEST_RR_OP(slt, x11, x4, x4, 0x0, -0x1001, -0x1001, x12, 12, x13)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x3, rs2==x3, rd==x3, rs2_val == -268435457,
+// opcode: slt ; op1:x3; op2:x3; dest:x3; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(slt, x3, x3, x3, 0x0, -0x55555555, -0x55555555, x12, 16, x13)
+
+inst_5:
+// rs1==x1, rs2==x0, rd==x4, rs2_val == -134217729, rs1_val == -65537
+// opcode: slt ; op1:x1; op2:x0; dest:x4; op1val:-0x10001; op2val:0x0
+TEST_RR_OP(slt, x4, x1, x0, 0x1, -0x10001, 0x0, x12, 20, x13)
+
+inst_6:
+// rs1==x6, rs2==x2, rd==x5, rs2_val == -67108865, rs1_val == -33554433
+// opcode: slt ; op1:x6; op2:x2; dest:x5; op1val:-0x2000001; op2val:-0x4000001
+TEST_RR_OP(slt, x5, x6, x2, 0x0, -0x2000001, -0x4000001, x12, 24, x13)
+
+inst_7:
+// rs1==x7, rs2==x11, rd==x13, rs2_val == -33554433, rs1_val == -2
+// opcode: slt ; op1:x7; op2:x11; dest:x13; op1val:-0x2; op2val:-0x2000001
+TEST_RR_OP(slt, x13, x7, x11, 0x0, -0x2, -0x2000001, x12, 28, x1)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_8:
+// rs1==x15, rs2==x7, rd==x12, rs2_val == -16777217, rs1_val == 4096
+// opcode: slt ; op1:x15; op2:x7; dest:x12; op1val:0x1000; op2val:-0x1000001
+TEST_RR_OP(slt, x12, x15, x7, 0x0, 0x1000, -0x1000001, x3, 0, x1)
+
+inst_9:
+// rs1==x13, rs2==x5, rd==x2, rs2_val == -8388609, rs1_val == -268435457
+// opcode: slt ; op1:x13; op2:x5; dest:x2; op1val:-0x10000001; op2val:-0x800001
+TEST_RR_OP(slt, x2, x13, x5, 0x1, -0x10000001, -0x800001, x3, 4, x1)
+
+inst_10:
+// rs1==x2, rs2==x9, rd==x15, rs2_val == -4194305, rs1_val == -1431655766
+// opcode: slt ; op1:x2; op2:x9; dest:x15; op1val:-0x55555556; op2val:-0x400001
+TEST_RR_OP(slt, x15, x2, x9, 0x1, -0x55555556, -0x400001, x3, 8, x1)
+
+inst_11:
+// rs1==x8, rs2==x15, rd==x14, rs2_val == -2097153, rs1_val == -513
+// opcode: slt ; op1:x8; op2:x15; dest:x14; op1val:-0x201; op2val:-0x200001
+TEST_RR_OP(slt, x14, x8, x15, 0x0, -0x201, -0x200001, x3, 12, x1)
+
+inst_12:
+// rs1==x10, rs2==x13, rd==x9, rs2_val == -1048577, rs1_val == 524288
+// opcode: slt ; op1:x10; op2:x13; dest:x9; op1val:0x80000; op2val:-0x100001
+TEST_RR_OP(slt, x9, x10, x13, 0x0, 0x80000, -0x100001, x3, 16, x1)
+
+inst_13:
+// rs1==x12, rs2==x14, rd==x6, rs2_val == -524289, rs1_val == 0
+// opcode: slt ; op1:x12; op2:x14; dest:x6; op1val:0x0; op2val:-0x80001
+TEST_RR_OP(slt, x6, x12, x14, 0x0, 0x0, -0x80001, x3, 20, x4)
+
+inst_14:
+// rs1==x14, rs2==x1, rd==x10, rs2_val == -262145, rs1_val == -2049
+// opcode: slt ; op1:x14; op2:x1; dest:x10; op1val:-0x801; op2val:-0x40001
+TEST_RR_OP(slt, x10, x14, x1, 0x0, -0x801, -0x40001, x3, 24, x4)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_15:
+// rs1==x11, rs2==x12, rd==x1, rs2_val == -131073,
+// opcode: slt ; op1:x11; op2:x12; dest:x1; op1val:0x0; op2val:-0x20001
+TEST_RR_OP(slt, x1, x11, x12, 0x0, 0x0, -0x20001, x2, 0, x4)
+
+inst_16:
+// rs2_val == -32769, rs1_val == 16384
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:-0x8001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4000, -0x8001, x2, 4, x4)
+
+inst_17:
+// rs2_val == -16385, rs1_val == 1073741824
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:-0x4001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x40000000, -0x4001, x2, 8, x4)
+
+inst_18:
+// rs2_val == -8193,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:-0x2001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x801, -0x2001, x2, 12, x4)
+
+inst_19:
+// rs2_val == -4097,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x1001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, -0x1001, x2, 16, x4)
+
+inst_20:
+// rs2_val == -2049,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x801
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, -0x801, x2, 20, x4)
+
+inst_21:
+// rs2_val == -1025, rs1_val == -16385
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:-0x401
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x4001, -0x401, x2, 24, x4)
+
+inst_22:
+// rs2_val == -513, rs1_val == 8192
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:-0x201
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x2000, -0x201, x2, 28, x4)
+
+inst_23:
+// rs2_val == -257, rs1_val == -5
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:-0x101
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x5, -0x101, x2, 32, x4)
+
+inst_24:
+// rs2_val == -129,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x81
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, -0x81, x2, 36, x4)
+
+inst_25:
+// rs2_val == -65, rs1_val == -32769
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:-0x41
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x8001, -0x41, x2, 40, x4)
+
+inst_26:
+// rs2_val == -33,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:-0x21
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x10000001, -0x21, x2, 44, x4)
+
+inst_27:
+// rs2_val == -17,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:-0x11
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x40000000, -0x11, x2, 48, x4)
+
+inst_28:
+// rs2_val == -9, rs1_val == 536870912
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:-0x9
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x20000000, -0x9, x2, 52, x4)
+
+inst_29:
+// rs2_val == -5, rs1_val == 128
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:-0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x80, -0x5, x2, 56, x4)
+
+inst_30:
+// rs2_val == -3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x9; op2val:-0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x9, -0x3, x2, 60, x4)
+
+inst_31:
+// rs2_val == -2, rs1_val == -65
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:-0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x41, -0x2, x2, 64, x4)
+
+inst_32:
+// rs1_val == 2147483647, rs2_val == 16777216, rs1_val == (2**(xlen-1)-1), rs1_val > 0 and rs2_val > 0
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x1000000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x7fffffff, 0x1000000, x2, 68, x4)
+
+inst_33:
+// rs1_val == -1073741825,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:-0x8001
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x40000001, -0x8001, x2, 72, x4)
+
+inst_34:
+// rs1_val == -536870913, rs2_val == 128
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:0x80
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x20000001, 0x80, x2, 76, x4)
+
+inst_35:
+// rs1_val == -134217729,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x8000001, -0x3, x2, 80, x4)
+
+inst_36:
+// rs1_val == -67108865, rs2_val == 8192
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x2000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x4000001, 0x2000, x2, 84, x4)
+
+inst_37:
+// rs1_val == -16777217, rs2_val == 2048
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x800
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x1000001, 0x800, x2, 88, x4)
+
+inst_38:
+// rs1_val == -8388609, rs2_val == -1431655766
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x800001, -0x55555556, x2, 92, x4)
+
+inst_39:
+// rs1_val == -2097153,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x1000001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x200001, -0x1000001, x2, 96, x4)
+
+inst_40:
+// rs1_val == -1048577, rs1_val == rs2_val
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:-0x100001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x100001, -0x100001, x2, 100, x4)
+
+inst_41:
+// rs1_val == -524289,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:-0x81
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x80001, -0x81, x2, 104, x4)
+
+inst_42:
+// rs1_val == -262145,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x40001, 0x66666665, x2, 108, x4)
+
+inst_43:
+// rs1_val == -131073,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x7fffffff
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x20001, 0x7fffffff, x2, 112, x4)
+
+inst_44:
+// rs1_val == -8193,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:-0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x2001, -0x4, x2, 116, x4)
+
+inst_45:
+// rs1_val == -1025,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:-0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x401, -0x2, x2, 120, x4)
+
+inst_46:
+// rs1_val == -257,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x101, 0x66666667, x2, 124, x4)
+
+inst_47:
+// rs1_val == -33, rs2_val == 512
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x200
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x21, 0x200, x2, 128, x4)
+
+inst_48:
+// rs1_val == -17, rs2_val == 4
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x11, 0x4, x2, 132, x4)
+
+inst_49:
+// rs1_val == -9,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:-0x20000001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x9, -0x20000001, x2, 136, x4)
+
+inst_50:
+// rs1_val == -3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x3, -0x6, x2, 140, x4)
+
+inst_51:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1)), rs1_val == 8
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:-0x80000000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x8, -0x80000000, x2, 144, x4)
+
+inst_52:
+// rs2_val == 1073741824,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:0x40000000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x8000001, 0x40000000, x2, 148, x4)
+
+inst_53:
+// rs2_val == 536870912,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x20000000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x20000000, x2, 152, x4)
+
+inst_54:
+// rs2_val == 268435456, rs1_val == 65536
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x10000000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x10000, 0x10000000, x2, 156, x4)
+
+inst_55:
+// rs2_val == 134217728,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x8000000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x4000001, 0x8000000, x2, 160, x4)
+
+inst_56:
+// rs2_val == 67108864,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4000000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x4000000, x2, 164, x4)
+
+inst_57:
+// rs2_val == 33554432,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2000000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x2000000, x2, 168, x4)
+
+inst_58:
+// rs2_val == 8388608,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0x800000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x7, 0x800000, x2, 172, x4)
+
+inst_59:
+// rs2_val == 4194304,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x400000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x400000, x2, 176, x4)
+
+inst_60:
+// rs2_val == 2097152,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x200000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x80, 0x200000, x2, 180, x4)
+
+inst_61:
+// rs2_val == 1048576, rs1_val == 16
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x100000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x10, 0x100000, x2, 184, x4)
+
+inst_62:
+// rs2_val == 524288,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x80000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x80000, x2, 188, x4)
+
+inst_63:
+// rs2_val == 262144,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x40000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x5, 0x40000, x2, 192, x4)
+
+inst_64:
+// rs2_val == 131072,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x20000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x20000, x2, 196, x4)
+
+inst_65:
+// rs2_val == 65536, rs1_val == 2097152
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x10000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x200000, 0x10000, x2, 200, x4)
+
+inst_66:
+// rs2_val == 32768,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x8000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x10000, 0x8000, x2, 204, x4)
+
+inst_67:
+// rs2_val == 16384,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x4000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x20001, 0x4000, x2, 208, x4)
+
+inst_68:
+// rs2_val == 4096,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x1000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x11, 0x1000, x2, 212, x4)
+
+inst_69:
+// rs2_val == 1024, rs1_val == 32768
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x400
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x8000, 0x400, x2, 216, x4)
+
+inst_70:
+// rs2_val == 256,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3fffffff; op2val:0x100
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x3fffffff, 0x100, x2, 220, x4)
+
+inst_71:
+// rs2_val == 64,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x40
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x40, x2, 224, x4)
+
+inst_72:
+// rs2_val == 32, rs1_val == 262144
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x20
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x40000, 0x20, x2, 228, x4)
+
+inst_73:
+// rs2_val == 16,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x10
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0x10, x2, 232, x4)
+
+inst_74:
+// rs2_val == 8,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x8
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x8, x2, 236, x4)
+
+inst_75:
+// rs2_val == 2, rs1_val==2 and rs2_val==2, rs1_val == 2
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x2, 0x2, x2, 240, x4)
+
+inst_76:
+// rs2_val == 1,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x1
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x1, x2, 244, x4)
+
+inst_77:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x80000000, 0x3, x2, 248, x4)
+
+inst_78:
+// rs1_val == 268435456,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:-0x100001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x10000000, -0x100001, x2, 252, x4)
+
+inst_79:
+// rs1_val == 134217728,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x8000000, -0xb504, x2, 256, x4)
+
+inst_80:
+// rs1_val == 67108864,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:-0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4000000, -0x3, x2, 260, x4)
+
+inst_81:
+// rs1_val == 33554432,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2000000, 0x66666667, x2, 264, x4)
+
+inst_82:
+// rs1_val == 16777216,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x200000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x1000000, 0x200000, x2, 268, x4)
+
+inst_83:
+// rs1_val == 8388608,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x8000000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x800000, 0x8000000, x2, 272, x4)
+
+inst_84:
+// rs1_val == 4194304,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:-0x100001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x400000, -0x100001, x2, 276, x4)
+
+inst_85:
+// rs1_val == 1048576,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x100000, 0x6, x2, 280, x4)
+
+inst_86:
+// rs1_val == 131072,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x800
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x20000, 0x800, x2, 284, x4)
+
+inst_87:
+// rs1_val == 2048,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x800, 0x66666665, x2, 288, x4)
+
+inst_88:
+// rs1_val == 1024,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:-0x40000000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x400, -0x40000000, x2, 292, x4)
+
+inst_89:
+// rs1_val == 256,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x40000000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x100, 0x40000000, x2, 296, x4)
+
+inst_90:
+// rs1_val == 64,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:-0x80000000
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x40, -0x80000000, x2, 300, x4)
+
+inst_91:
+// rs1_val == 32,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:-0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x20, -0x3, x2, 304, x4)
+
+inst_92:
+// rs1_val == 4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x7fffffff
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x7fffffff, x2, 308, x4)
+
+inst_93:
+// rs1_val == 1,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x2000
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x1, 0x2000, x2, 312, x4)
+
+inst_94:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0xb505, x2, 316, x4)
+
+inst_95:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, -0xb503, x2, 320, x4)
+
+inst_96:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x66666667, x2, 324, x4)
+
+inst_97:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x33333334, x2, 328, x4)
+
+inst_98:
+// rs1_val==46341 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0x6, x2, 332, x4)
+
+inst_99:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, -0x55555555, x2, 336, x4)
+
+inst_100:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x55555556, x2, 340, x4)
+
+inst_101:
+// rs1_val==46341 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0x4, x2, 344, x4)
+
+inst_102:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0xb503, x2, 348, x4)
+
+inst_103:
+// rs1_val==46341 and rs2_val==0, rs2_val == 0
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0x0, x2, 352, x4)
+
+inst_104:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x66666665, x2, 356, x4)
+
+inst_105:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x33333332, x2, 360, x4)
+
+inst_106:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x55555554, x2, 364, x4)
+
+inst_107:
+// rs1_val==46341 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0x2, x2, 368, x4)
+
+inst_108:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0xb504, x2, 372, x4)
+
+inst_109:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, -0xb504, x2, 376, x4)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x66666666, x2, 380, x4)
+
+inst_111:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x33333333, x2, 384, x4)
+
+inst_112:
+// rs1_val==46341 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0x5, x2, 388, x4)
+
+inst_113:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, -0x55555556, x2, 392, x4)
+
+inst_114:
+// rs1_val==46341 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb505, 0x55555555, x2, 396, x4)
+
+inst_115:
+// rs1_val==46341 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb505, 0x3, x2, 400, x4)
+
+inst_116:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0xb505, x2, 404, x4)
+
+inst_117:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0xb503, -0xb503, x2, 408, x4)
+
+inst_118:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x66666667, x2, 412, x4)
+
+inst_119:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x33333334, x2, 416, x4)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x6, x2, 420, x4)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0xb503, -0x55555555, x2, 424, x4)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x55555556, x2, 428, x4)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x4, x2, 432, x4)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0xb503, x2, 436, x4)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x0, x2, 440, x4)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x66666665, x2, 444, x4)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x33333332, x2, 448, x4)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x55555554, x2, 452, x4)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x2, x2, 456, x4)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0xb504, x2, 460, x4)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0xb503, -0xb504, x2, 464, x4)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x66666666, x2, 468, x4)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x33333333, x2, 472, x4)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x5, x2, 476, x4)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0xb503, -0x55555556, x2, 480, x4)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x55555555, x2, 484, x4)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb503, 0x3, x2, 488, x4)
+
+inst_138:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0xb505, x2, 492, x4)
+
+inst_139:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, -0xb503, x2, 496, x4)
+
+inst_140:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x66666667, x2, 500, x4)
+
+inst_141:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x33333334, x2, 504, x4)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x6, x2, 508, x4)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, -0x55555555, x2, 512, x4)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x55555556, x2, 516, x4)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x4, x2, 520, x4)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0xb503, x2, 524, x4)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x0, x2, 528, x4)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x66666665, x2, 532, x4)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x33333332, x2, 536, x4)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x55555554, x2, 540, x4)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x2, x2, 544, x4)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0xb504, x2, 548, x4)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, -0xb504, x2, 552, x4)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x66666666, x2, 556, x4)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x33333333, x2, 560, x4)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x5, x2, 564, x4)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, -0x55555556, x2, 568, x4)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x55555555, x2, 572, x4)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666667, 0x3, x2, 576, x4)
+
+inst_160:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0xb505, x2, 580, x4)
+
+inst_161:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, -0xb503, x2, 584, x4)
+
+inst_162:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333334, 0x66666667, x2, 588, x4)
+
+inst_163:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x33333334, x2, 592, x4)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x6, x2, 596, x4)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, -0x55555555, x2, 600, x4)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333334, 0x55555556, x2, 604, x4)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x4, x2, 608, x4)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0xb503, x2, 612, x4)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x0, x2, 616, x4)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333334, 0x66666665, x2, 620, x4)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x33333332, x2, 624, x4)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333334, 0x55555554, x2, 628, x4)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x2, x2, 632, x4)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0xb504, x2, 636, x4)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, -0xb504, x2, 640, x4)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333334, 0x66666666, x2, 644, x4)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x33333333, x2, 648, x4)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x5, x2, 652, x4)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, -0x55555556, x2, 656, x4)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333334, 0x55555555, x2, 660, x4)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333334, 0x3, x2, 664, x4)
+
+inst_182:
+// rs1_val==6 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0xb505, x2, 668, x4)
+
+inst_183:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, -0xb503, x2, 672, x4)
+
+inst_184:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x66666667, x2, 676, x4)
+
+inst_185:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x33333334, x2, 680, x4)
+
+inst_186:
+// rs1_val==6 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, 0x6, x2, 684, x4)
+
+inst_187:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, -0x55555555, x2, 688, x4)
+
+inst_188:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x55555556, x2, 692, x4)
+
+inst_189:
+// rs1_val==6 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, 0x4, x2, 696, x4)
+
+inst_190:
+// rs1_val==6 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0xb503, x2, 700, x4)
+
+inst_191:
+// rs1_val==6 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, 0x0, x2, 704, x4)
+
+inst_192:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x66666665, x2, 708, x4)
+
+inst_193:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x33333332, x2, 712, x4)
+
+inst_194:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x55555554, x2, 716, x4)
+
+inst_195:
+// rs1_val==6 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, 0x2, x2, 720, x4)
+
+inst_196:
+// rs1_val==6 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0xb504, x2, 724, x4)
+
+inst_197:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, -0xb504, x2, 728, x4)
+
+inst_198:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x66666666, x2, 732, x4)
+
+inst_199:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x33333333, x2, 736, x4)
+
+inst_200:
+// rs1_val==6 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, 0x5, x2, 740, x4)
+
+inst_201:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, -0x55555556, x2, 744, x4)
+
+inst_202:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x6, 0x55555555, x2, 748, x4)
+
+inst_203:
+// rs1_val==6 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x6, 0x3, x2, 752, x4)
+
+inst_204:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0xb505, x2, 756, x4)
+
+inst_205:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, -0xb503, x2, 760, x4)
+
+inst_206:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x66666667, x2, 764, x4)
+
+inst_207:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x33333334, x2, 768, x4)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x6, x2, 772, x4)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x55555555, -0x55555555, x2, 776, x4)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x55555556, x2, 780, x4)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x4, x2, 784, x4)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0xb503, x2, 788, x4)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x0, x2, 792, x4)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x66666665, x2, 796, x4)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x33333332, x2, 800, x4)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x55555554, x2, 804, x4)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x2, x2, 808, x4)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0xb504, x2, 812, x4)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, -0xb504, x2, 816, x4)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x66666666, x2, 820, x4)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x33333333, x2, 824, x4)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x5, x2, 828, x4)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x55555555, -0x55555556, x2, 832, x4)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x55555555, x2, 836, x4)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, 0x3, x2, 840, x4)
+
+inst_226:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0xb505, x2, 844, x4)
+
+inst_227:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, -0xb503, x2, 848, x4)
+
+inst_228:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555556, 0x66666667, x2, 852, x4)
+
+inst_229:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x33333334, x2, 856, x4)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x6, x2, 860, x4)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, -0x55555555, x2, 864, x4)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x55555556, x2, 868, x4)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x4, x2, 872, x4)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0xb503, x2, 876, x4)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x0, x2, 880, x4)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555556, 0x66666665, x2, 884, x4)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x33333332, x2, 888, x4)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x55555554, x2, 892, x4)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x2, x2, 896, x4)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0xb504, x2, 900, x4)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, -0xb504, x2, 904, x4)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555556, 0x66666666, x2, 908, x4)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x33333333, x2, 912, x4)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x5, x2, 916, x4)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, -0x55555556, x2, 920, x4)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x55555555, x2, 924, x4)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555556, 0x3, x2, 928, x4)
+
+inst_248:
+// rs1_val==4 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0xb505, x2, 932, x4)
+
+inst_249:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4, -0xb503, x2, 936, x4)
+
+inst_250:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x66666667, x2, 940, x4)
+
+inst_251:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x33333334, x2, 944, x4)
+
+inst_252:
+// rs1_val==4 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x6, x2, 948, x4)
+
+inst_253:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4, -0x55555555, x2, 952, x4)
+
+inst_254:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x55555556, x2, 956, x4)
+
+inst_255:
+// rs1_val==4 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4, 0x4, x2, 960, x4)
+
+inst_256:
+// rs1_val==4 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0xb503, x2, 964, x4)
+
+inst_257:
+// rs1_val==4 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4, 0x0, x2, 968, x4)
+
+inst_258:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x66666665, x2, 972, x4)
+
+inst_259:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x33333332, x2, 976, x4)
+
+inst_260:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x55555554, x2, 980, x4)
+
+inst_261:
+// rs1_val==4 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4, 0x2, x2, 984, x4)
+
+inst_262:
+// rs1_val==4 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0xb504, x2, 988, x4)
+
+inst_263:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4, -0xb504, x2, 992, x4)
+
+inst_264:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x66666666, x2, 996, x4)
+
+inst_265:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x33333333, x2, 1000, x4)
+
+inst_266:
+// rs1_val==4 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x5, x2, 1004, x4)
+
+inst_267:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4, -0x55555556, x2, 1008, x4)
+
+inst_268:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x4, 0x55555555, x2, 1012, x4)
+
+inst_269:
+// rs1_val==4 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x4, 0x3, x2, 1016, x4)
+
+inst_270:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0xb505, x2, 1020, x4)
+
+inst_271:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, -0xb503, x2, 1024, x4)
+
+inst_272:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x66666667, x2, 1028, x4)
+
+inst_273:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x33333334, x2, 1032, x4)
+
+inst_274:
+// rs1_val==46339 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, 0x6, x2, 1036, x4)
+
+inst_275:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, -0x55555555, x2, 1040, x4)
+
+inst_276:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x55555556, x2, 1044, x4)
+
+inst_277:
+// rs1_val==46339 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, 0x4, x2, 1048, x4)
+
+inst_278:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, 0xb503, x2, 1052, x4)
+
+inst_279:
+// rs1_val==46339 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, 0x0, x2, 1056, x4)
+
+inst_280:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x66666665, x2, 1060, x4)
+
+inst_281:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x33333332, x2, 1064, x4)
+
+inst_282:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x55555554, x2, 1068, x4)
+
+inst_283:
+// rs1_val==46339 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, 0x2, x2, 1072, x4)
+
+inst_284:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0xb504, x2, 1076, x4)
+
+inst_285:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, -0xb504, x2, 1080, x4)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x66666666, x2, 1084, x4)
+
+inst_287:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x33333333, x2, 1088, x4)
+
+inst_288:
+// rs1_val==46339 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, 0x5, x2, 1092, x4)
+
+inst_289:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, -0x55555556, x2, 1096, x4)
+
+inst_290:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb503, 0x55555555, x2, 1100, x4)
+
+inst_291:
+// rs1_val==46339 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb503, 0x3, x2, 1104, x4)
+
+inst_292:
+// rs1_val==0 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0xb505, x2, 1108, x4)
+
+inst_293:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x0, -0xb503, x2, 1112, x4)
+
+inst_294:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x66666667, x2, 1116, x4)
+
+inst_295:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x33333334, x2, 1120, x4)
+
+inst_296:
+// rs1_val==0 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x6, x2, 1124, x4)
+
+inst_297:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x0, -0x55555555, x2, 1128, x4)
+
+inst_298:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x55555556, x2, 1132, x4)
+
+inst_299:
+// rs1_val==0 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x4, x2, 1136, x4)
+
+inst_300:
+// rs1_val==0 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0xb503, x2, 1140, x4)
+
+inst_301:
+// rs1_val==0 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x0, 0x0, x2, 1144, x4)
+
+inst_302:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x66666665, x2, 1148, x4)
+
+inst_303:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x33333332, x2, 1152, x4)
+
+inst_304:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x55555554, x2, 1156, x4)
+
+inst_305:
+// rs1_val==0 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x2, x2, 1160, x4)
+
+inst_306:
+// rs1_val==0 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0xb504, x2, 1164, x4)
+
+inst_307:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x0, -0xb504, x2, 1168, x4)
+
+inst_308:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x66666666, x2, 1172, x4)
+
+inst_309:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x33333333, x2, 1176, x4)
+
+inst_310:
+// rs1_val==0 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x5, x2, 1180, x4)
+
+inst_311:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x0, -0x55555556, x2, 1184, x4)
+
+inst_312:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x55555555, x2, 1188, x4)
+
+inst_313:
+// rs1_val==0 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x0, 0x3, x2, 1192, x4)
+
+inst_314:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0xb505, x2, 1196, x4)
+
+inst_315:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, -0xb503, x2, 1200, x4)
+
+inst_316:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x66666665, 0x66666667, x2, 1204, x4)
+
+inst_317:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x33333334, x2, 1208, x4)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x6, x2, 1212, x4)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, -0x55555555, x2, 1216, x4)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x55555556, x2, 1220, x4)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x4, x2, 1224, x4)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0xb503, x2, 1228, x4)
+
+inst_323:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0x0, x2, 1232, x4)
+
+inst_324:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333333, 0x66666665, x2, 1236, x4)
+
+inst_325:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0x33333332, x2, 1240, x4)
+
+inst_326:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333333, 0x55555554, x2, 1244, x4)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0x2, x2, 1248, x4)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0xb504, x2, 1252, x4)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, -0xb504, x2, 1256, x4)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333333, 0x66666666, x2, 1260, x4)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0x33333333, x2, 1264, x4)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0x5, x2, 1268, x4)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, -0x55555556, x2, 1272, x4)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333333, 0x55555555, x2, 1276, x4)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0x3, x2, 1280, x4)
+
+inst_336:
+// rs1_val==5 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0xb505, x2, 1284, x4)
+
+inst_337:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, -0xb503, x2, 1288, x4)
+
+inst_338:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x66666667, x2, 1292, x4)
+
+inst_339:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x33333334, x2, 1296, x4)
+
+inst_340:
+// rs1_val==5 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x6, x2, 1300, x4)
+
+inst_341:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, -0x55555555, x2, 1304, x4)
+
+inst_342:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x55555556, x2, 1308, x4)
+
+inst_343:
+// rs1_val==5 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, 0x4, x2, 1312, x4)
+
+inst_344:
+// rs1_val==5 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0xb503, x2, 1316, x4)
+
+inst_345:
+// rs1_val==5 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, 0x0, x2, 1320, x4)
+
+inst_346:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x66666665, x2, 1324, x4)
+
+inst_347:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x33333332, x2, 1328, x4)
+
+inst_348:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x55555554, x2, 1332, x4)
+
+inst_349:
+// rs1_val==5 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, 0x2, x2, 1336, x4)
+
+inst_350:
+// rs1_val==5 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0xb504, x2, 1340, x4)
+
+inst_351:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, -0xb504, x2, 1344, x4)
+
+inst_352:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x66666666, x2, 1348, x4)
+
+inst_353:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x33333333, x2, 1352, x4)
+
+inst_354:
+// rs1_val==5 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, 0x5, x2, 1356, x4)
+
+inst_355:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, -0x55555556, x2, 1360, x4)
+
+inst_356:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x5, 0x55555555, x2, 1364, x4)
+
+inst_357:
+// rs1_val==5 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x5, 0x3, x2, 1368, x4)
+
+inst_358:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0xb505, x2, 1372, x4)
+
+inst_359:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, -0xb503, x2, 1376, x4)
+
+inst_360:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x66666667, x2, 1380, x4)
+
+inst_361:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x33333334, x2, 1384, x4)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x6, x2, 1388, x4)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, -0x55555555, x2, 1392, x4)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x55555556, x2, 1396, x4)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x4, x2, 1400, x4)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0xb503, x2, 1404, x4)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x0, x2, 1408, x4)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x66666665, x2, 1412, x4)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x33333332, x2, 1416, x4)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x55555554, x2, 1420, x4)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x2, x2, 1424, x4)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0xb504, x2, 1428, x4)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, -0xb504, x2, 1432, x4)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x66666666, x2, 1436, x4)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x33333333, x2, 1440, x4)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x5, x2, 1444, x4)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x55555556, -0x55555556, x2, 1448, x4)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x55555555, x2, 1452, x4)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555556, 0x3, x2, 1456, x4)
+
+inst_380:
+// rs1_val==1431655765 and rs2_val==46341, rs1_val == 1431655765
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0xb505, x2, 1460, x4)
+
+inst_381:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, -0xb503, x2, 1464, x4)
+
+inst_382:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555555, 0x66666667, x2, 1468, x4)
+
+inst_383:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x33333334, x2, 1472, x4)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x6, x2, 1476, x4)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, -0x55555555, x2, 1480, x4)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555555, 0x55555556, x2, 1484, x4)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x4, x2, 1488, x4)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0xb503, x2, 1492, x4)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x0, x2, 1496, x4)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555555, 0x66666665, x2, 1500, x4)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x33333332, x2, 1504, x4)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x55555554, x2, 1508, x4)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x2, x2, 1512, x4)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0xb504, x2, 1516, x4)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, -0xb504, x2, 1520, x4)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555555, 0x66666666, x2, 1524, x4)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x33333333, x2, 1528, x4)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x5, x2, 1532, x4)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, -0x55555556, x2, 1536, x4)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x55555555, x2, 1540, x4)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555555, 0x3, x2, 1544, x4)
+
+inst_402:
+// rs1_val==3 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0xb505, x2, 1548, x4)
+
+inst_403:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x3, -0xb503, x2, 1552, x4)
+
+inst_404:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x66666667, x2, 1556, x4)
+
+inst_405:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x33333334, x2, 1560, x4)
+
+inst_406:
+// rs1_val==3 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x6, x2, 1564, x4)
+
+inst_407:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x3, -0x55555555, x2, 1568, x4)
+
+inst_408:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x55555556, x2, 1572, x4)
+
+inst_409:
+// rs1_val==3 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x4, x2, 1576, x4)
+
+inst_410:
+// rs1_val==3 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0xb503, x2, 1580, x4)
+
+inst_411:
+// rs1_val==3 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x3, 0x0, x2, 1584, x4)
+
+inst_412:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x66666665, x2, 1588, x4)
+
+inst_413:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x33333332, x2, 1592, x4)
+
+inst_414:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x55555554, x2, 1596, x4)
+
+inst_415:
+// rs1_val==3 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x3, 0x2, x2, 1600, x4)
+
+inst_416:
+// rs1_val==3 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0xb504, x2, 1604, x4)
+
+inst_417:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x3, -0xb504, x2, 1608, x4)
+
+inst_418:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x66666666, x2, 1612, x4)
+
+inst_419:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x33333333, x2, 1616, x4)
+
+inst_420:
+// rs1_val==3 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x5, x2, 1620, x4)
+
+inst_421:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x3, -0x55555556, x2, 1624, x4)
+
+inst_422:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x3, 0x55555555, x2, 1628, x4)
+
+inst_423:
+// rs1_val==3 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x3, 0x3, x2, 1632, x4)
+
+inst_424:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x0, x2, 1636, x4)
+
+inst_425:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x66666665, x2, 1640, x4)
+
+inst_426:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x33333332, x2, 1644, x4)
+
+inst_427:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x55555554, x2, 1648, x4)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x2, x2, 1652, x4)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0xb504, x2, 1656, x4)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, -0xb504, x2, 1660, x4)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x66666665, 0x66666666, x2, 1664, x4)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x33333333, x2, 1668, x4)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x5, x2, 1672, x4)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, -0x55555556, x2, 1676, x4)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x55555555, x2, 1680, x4)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666665, 0x3, x2, 1684, x4)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0xb505, x2, 1688, x4)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, -0xb503, x2, 1692, x4)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333332, 0x66666667, x2, 1696, x4)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333332, 0x33333334, x2, 1700, x4)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0x6, x2, 1704, x4)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, -0x55555555, x2, 1708, x4)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333332, 0x55555556, x2, 1712, x4)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0x4, x2, 1716, x4)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0xb503, x2, 1720, x4)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0x0, x2, 1724, x4)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333332, 0x66666665, x2, 1728, x4)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0x33333332, x2, 1732, x4)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333332, 0x55555554, x2, 1736, x4)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0x2, x2, 1740, x4)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0xb504, x2, 1744, x4)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, -0xb504, x2, 1748, x4)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333332, 0x66666666, x2, 1752, x4)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333332, 0x33333333, x2, 1756, x4)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0x5, x2, 1760, x4)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, -0x55555556, x2, 1764, x4)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333332, 0x55555555, x2, 1768, x4)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333332, 0x3, x2, 1772, x4)
+
+inst_459:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0xb505, x2, 1776, x4)
+
+inst_460:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, -0xb503, x2, 1780, x4)
+
+inst_461:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555554, 0x66666667, x2, 1784, x4)
+
+inst_462:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x33333334, x2, 1788, x4)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x6, x2, 1792, x4)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, -0x55555555, x2, 1796, x4)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555554, 0x55555556, x2, 1800, x4)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x4, x2, 1804, x4)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0xb503, x2, 1808, x4)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x0, x2, 1812, x4)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555554, 0x66666665, x2, 1816, x4)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x33333332, x2, 1820, x4)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x55555554, x2, 1824, x4)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x2, x2, 1828, x4)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0xb504, x2, 1832, x4)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, -0xb504, x2, 1836, x4)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555554, 0x66666666, x2, 1840, x4)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x33333333, x2, 1844, x4)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x5, x2, 1848, x4)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, -0x55555556, x2, 1852, x4)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x55555554, 0x55555555, x2, 1856, x4)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x55555554, 0x3, x2, 1860, x4)
+
+inst_481:
+// rs1_val==2 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0xb505, x2, 1864, x4)
+
+inst_482:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x2, -0xb503, x2, 1868, x4)
+
+inst_483:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x66666667, x2, 1872, x4)
+
+inst_484:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x33333334, x2, 1876, x4)
+
+inst_485:
+// rs1_val==2 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x6, x2, 1880, x4)
+
+inst_486:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x2, -0x55555555, x2, 1884, x4)
+
+inst_487:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x55555556, x2, 1888, x4)
+
+inst_488:
+// rs1_val==2 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x4, x2, 1892, x4)
+
+inst_489:
+// rs1_val==2 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0xb503, x2, 1896, x4)
+
+inst_490:
+// rs1_val==2 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x2, 0x0, x2, 1900, x4)
+
+inst_491:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x66666665, x2, 1904, x4)
+
+inst_492:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x33333332, x2, 1908, x4)
+
+inst_493:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x55555554, x2, 1912, x4)
+
+inst_494:
+// rs1_val==2 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0xb504, x2, 1916, x4)
+
+inst_495:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x2, -0xb504, x2, 1920, x4)
+
+inst_496:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x66666666, x2, 1924, x4)
+
+inst_497:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x33333333, x2, 1928, x4)
+
+inst_498:
+// rs1_val==2 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x5, x2, 1932, x4)
+
+inst_499:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x2, -0x55555556, x2, 1936, x4)
+
+inst_500:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x55555555, x2, 1940, x4)
+
+inst_501:
+// rs1_val==2 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x2, 0x3, x2, 1944, x4)
+
+inst_502:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0xb505, x2, 1948, x4)
+
+inst_503:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, -0xb503, x2, 1952, x4)
+
+inst_504:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x66666667, x2, 1956, x4)
+
+inst_505:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x33333334, x2, 1960, x4)
+
+inst_506:
+// rs1_val==46340 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0x6, x2, 1964, x4)
+
+inst_507:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, -0x55555555, x2, 1968, x4)
+
+inst_508:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x55555556, x2, 1972, x4)
+
+inst_509:
+// rs1_val==46340 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0x4, x2, 1976, x4)
+
+inst_510:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0xb503, x2, 1980, x4)
+
+inst_511:
+// rs1_val==46340 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0x0, x2, 1984, x4)
+
+inst_512:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x66666665, x2, 1988, x4)
+
+inst_513:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x33333332, x2, 1992, x4)
+
+inst_514:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x55555554, x2, 1996, x4)
+
+inst_515:
+// rs1_val==46340 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0x2, x2, 2000, x4)
+
+inst_516:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0xb504, x2, 2004, x4)
+
+inst_517:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, -0xb504, x2, 2008, x4)
+
+inst_518:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x66666666, x2, 2012, x4)
+
+inst_519:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x33333333, x2, 2016, x4)
+
+inst_520:
+// rs1_val==46340 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0x5, x2, 2020, x4)
+
+inst_521:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, -0x55555556, x2, 2024, x4)
+
+inst_522:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0xb504, 0x55555555, x2, 2028, x4)
+
+inst_523:
+// rs1_val==46340 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0xb504, 0x3, x2, 2032, x4)
+
+inst_524:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0xb505, x2, 2036, x4)
+
+inst_525:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, -0xb503, x2, 2040, x4)
+
+inst_526:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x66666667, x2, 2044, x4)
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_527:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x33333334, x2, 0, x4)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x6, x2, 4, x4)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0xb504, -0x55555555, x2, 8, x4)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x55555556, x2, 12, x4)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x4, x2, 16, x4)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0xb503, x2, 20, x4)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x0, x2, 24, x4)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x66666665, x2, 28, x4)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x33333332, x2, 32, x4)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x55555554, x2, 36, x4)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x2, x2, 40, x4)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0xb504, x2, 44, x4)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0xb504, -0xb504, x2, 48, x4)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x66666666, x2, 52, x4)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x33333333, x2, 56, x4)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x5, x2, 60, x4)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0xb504, -0x55555556, x2, 64, x4)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x55555555, x2, 68, x4)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0xb504, 0x3, x2, 72, x4)
+
+inst_546:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0xb505, x2, 76, x4)
+
+inst_547:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, -0xb503, x2, 80, x4)
+
+inst_548:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x66666666, 0x66666667, x2, 84, x4)
+
+inst_549:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x33333334, x2, 88, x4)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x6, x2, 92, x4)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, -0x55555555, x2, 96, x4)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x55555556, x2, 100, x4)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x4, x2, 104, x4)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0xb503, x2, 108, x4)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x0, x2, 112, x4)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x66666665, x2, 116, x4)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x33333332, x2, 120, x4)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x55555554, x2, 124, x4)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x2, x2, 128, x4)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0xb504, x2, 132, x4)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, -0xb504, x2, 136, x4)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x66666666, x2, 140, x4)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x33333333, x2, 144, x4)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x5, x2, 148, x4)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, -0x55555556, x2, 152, x4)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x55555555, x2, 156, x4)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x66666666, 0x3, x2, 160, x4)
+
+inst_568:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0xb505, x2, 164, x4)
+
+inst_569:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, -0xb503, x2, 168, x4)
+
+inst_570:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333333, 0x66666667, x2, 172, x4)
+
+inst_571:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333333, 0x33333334, x2, 176, x4)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0x6, x2, 180, x4)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, -0x55555555, x2, 184, x4)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(slt, x12, x10, x11, 0x1, 0x33333333, 0x55555556, x2, 188, x4)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0x4, x2, 192, x4)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(slt, x12, x10, x11, 0x0, 0x33333333, 0xb503, x2, 196, x4)
+
+inst_577:
+// rs2_val == 2147483647, rs1_val == -4194305, rs1_val < 0 and rs2_val > 0, rs2_val == (2**(xlen-1)-1)
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:0x7fffffff
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x400001, 0x7fffffff, x2, 200, x4)
+
+inst_578:
+// rs2_val == -536870913, rs1_val == -4097
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:-0x20000001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x1001, -0x20000001, x2, 204, x4)
+
+inst_579:
+// rs2_val == -268435457,
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x10000001
+TEST_RR_OP(slt, x12, x10, x11, 0x1, -0x55555555, -0x10000001, x2, 208, x4)
+
+inst_580:
+// rs2_val == -134217729, rs1_val == -65537
+// opcode: slt ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x8000001
+TEST_RR_OP(slt, x12, x10, x11, 0x0, -0x10001, -0x8000001, x2, 212, x4)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x12_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x12_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 54*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slti-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slti-01.S
new file mode 100644
index 000000000..8c53c538c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/slti-01.S
@@ -0,0 +1,2890 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the slti instruction of the RISC-V E extension for the slti covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",slti)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs1 != rd, rs1==x3, rd==x11, imm_val == (-2**(12-1)), rs1_val > 0 and imm_val < 0, rs1_val != imm_val, rs1_val == 512, imm_val == -2048
+// opcode: slti ; op1:x3; dest:x11; op1val:0x200; immval:-0x800
+TEST_IMM_OP( slti, x11, x3, 0x0, 0x200, -0x800, x4, 0, x8)
+
+inst_1:
+// rs1 == rd, rs1==x7, rd==x7, rs1_val == 2147483647, rs1_val > 0 and imm_val > 0, rs1_val == (2**(xlen-1)-1)
+// opcode: slti ; op1:x7; dest:x7; op1val:0x7fffffff; immval:0x665
+TEST_IMM_OP( slti, x7, x7, 0x0, 0x7fffffff, 0x665, x4, 4, x8)
+
+inst_2:
+// rs1==x13, rd==x3, rs1_val == -1073741825, rs1_val < 0 and imm_val < 0
+// opcode: slti ; op1:x13; dest:x3; op1val:-0x40000001; immval:-0x800
+TEST_IMM_OP( slti, x3, x13, 0x1, -0x40000001, -0x800, x4, 8, x8)
+
+inst_3:
+// rs1==x0, rd==x14, rs1_val == -536870913,
+// opcode: slti ; op1:x0; dest:x14; op1val:0x0; immval:-0x6
+TEST_IMM_OP( slti, x14, x0, 0x0, 0x0, -0x6, x4, 12, x8)
+
+inst_4:
+// rs1==x15, rd==x10, rs1_val == -268435457, imm_val == -513
+// opcode: slti ; op1:x15; dest:x10; op1val:-0x10000001; immval:-0x201
+TEST_IMM_OP( slti, x10, x15, 0x1, -0x10000001, -0x201, x4, 16, x8)
+
+inst_5:
+// rs1==x6, rd==x5, rs1_val == -134217729, rs1_val < 0 and imm_val > 0, imm_val == 2
+// opcode: slti ; op1:x6; dest:x5; op1val:-0x8000001; immval:0x2
+TEST_IMM_OP( slti, x5, x6, 0x1, -0x8000001, 0x2, x4, 20, x8)
+
+inst_6:
+// rs1==x12, rd==x13, rs1_val == -67108865, imm_val == 1024
+// opcode: slti ; op1:x12; dest:x13; op1val:-0x4000001; immval:0x400
+TEST_IMM_OP( slti, x13, x12, 0x1, -0x4000001, 0x400, x4, 24, x8)
+
+inst_7:
+// rs1==x2, rd==x1, rs1_val == -33554433,
+// opcode: slti ; op1:x2; dest:x1; op1val:-0x2000001; immval:-0x6
+TEST_IMM_OP( slti, x1, x2, 0x1, -0x2000001, -0x6, x4, 28, x8)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_8:
+// rs1==x9, rd==x6, rs1_val == -16777217,
+// opcode: slti ; op1:x9; dest:x6; op1val:-0x1000001; immval:0x7
+TEST_IMM_OP( slti, x6, x9, 0x1, -0x1000001, 0x7, x3, 0, x7)
+
+inst_9:
+// rs1==x8, rd==x4, rs1_val == -8388609, imm_val == 512
+// opcode: slti ; op1:x8; dest:x4; op1val:-0x800001; immval:0x200
+TEST_IMM_OP( slti, x4, x8, 0x1, -0x800001, 0x200, x3, 4, x7)
+
+inst_10:
+// rs1==x10, rd==x0, rs1_val == -4194305,
+// opcode: slti ; op1:x10; dest:x0; op1val:-0x400001; immval:0x2d
+TEST_IMM_OP( slti, x0, x10, 0, -0x400001, 0x2d, x3, 8, x7)
+
+inst_11:
+// rs1==x1, rd==x2, rs1_val == -2097153,
+// opcode: slti ; op1:x1; dest:x2; op1val:-0x200001; immval:0x665
+TEST_IMM_OP( slti, x2, x1, 0x1, -0x200001, 0x665, x3, 12, x7)
+
+inst_12:
+// rs1==x14, rd==x8, rs1_val == -1048577, imm_val == 4
+// opcode: slti ; op1:x14; dest:x8; op1val:-0x100001; immval:0x4
+TEST_IMM_OP( slti, x8, x14, 0x1, -0x100001, 0x4, x3, 16, x7)
+
+inst_13:
+// rs1==x5, rd==x12, rs1_val == -524289, imm_val == -1366
+// opcode: slti ; op1:x5; dest:x12; op1val:-0x80001; immval:-0x556
+TEST_IMM_OP( slti, x12, x5, 0x1, -0x80001, -0x556, x3, 20, x7)
+
+inst_14:
+// rs1==x4, rd==x9, rs1_val == -262145, imm_val == 1
+// opcode: slti ; op1:x4; dest:x9; op1val:-0x40001; immval:0x1
+TEST_IMM_OP( slti, x9, x4, 0x1, -0x40001, 0x1, x3, 24, x7)
+
+inst_15:
+// rs1==x11, rd==x15, rs1_val == -131073,
+// opcode: slti ; op1:x11; dest:x15; op1val:-0x20001; immval:0x4
+TEST_IMM_OP( slti, x15, x11, 0x1, -0x20001, 0x4, x3, 28, x7)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_16:
+// rs1_val == -65537, imm_val == 32
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x10001; immval:0x20
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x10001, 0x20, x1, 0, x2)
+
+inst_17:
+// rs1_val == -32769,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x8001; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x8001, 0x554, x1, 4, x2)
+
+inst_18:
+// rs1_val == -16385, imm_val == -1025
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x4001; immval:-0x401
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x4001, -0x401, x1, 8, x2)
+
+inst_19:
+// rs1_val == -8193,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x2001; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x2001, 0x2c, x1, 12, x2)
+
+inst_20:
+// rs1_val == -4097,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x1001; immval:-0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x1001, -0x6, x1, 16, x2)
+
+inst_21:
+// rs1_val == -2049, imm_val == 0
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x801; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x801, 0x0, x1, 20, x2)
+
+inst_22:
+// rs1_val == -1025, rs1_val == imm_val
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x401; immval:-0x401
+TEST_IMM_OP( slti, x11, x10, 0x0, -0x401, -0x401, x1, 24, x2)
+
+inst_23:
+// rs1_val == -513,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x201; immval:-0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x201, -0x6, x1, 28, x2)
+
+inst_24:
+// rs1_val == -257,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x101; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x101, 0x3, x1, 32, x2)
+
+inst_25:
+// rs1_val == -129,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x81; immval:0x200
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x81, 0x200, x1, 36, x2)
+
+inst_26:
+// rs1_val == -65,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x41; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x41, -0x2c, x1, 40, x2)
+
+inst_27:
+// rs1_val == -33, imm_val == 8
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x21; immval:0x8
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x21, 0x8, x1, 44, x2)
+
+inst_28:
+// rs1_val == -17,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x11; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x11, 0x332, x1, 48, x2)
+
+inst_29:
+// rs1_val == -9,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x9; immval:0x3ff
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x9, 0x3ff, x1, 52, x2)
+
+inst_30:
+// rs1_val == -5,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x5; immval:0x400
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x5, 0x400, x1, 56, x2)
+
+inst_31:
+// rs1_val == -3,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x3; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x3, 0x2, x1, 60, x2)
+
+inst_32:
+// rs1_val == -2,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x2; immval:-0xa
+TEST_IMM_OP( slti, x11, x10, 0x0, -0x2, -0xa, x1, 64, x2)
+
+inst_33:
+// imm_val == 2047, imm_val == (2**(12-1)-1)
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x7ff
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x7ff, x1, 68, x2)
+
+inst_34:
+// imm_val == -257,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x400001; immval:-0x101
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x400001, -0x101, x1, 72, x2)
+
+inst_35:
+// imm_val == -129,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x4; immval:-0x81
+TEST_IMM_OP( slti, x11, x10, 0x0, -0x4, -0x81, x1, 76, x2)
+
+inst_36:
+// imm_val == -65,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x7fffffff; immval:-0x41
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x7fffffff, -0x41, x1, 80, x2)
+
+inst_37:
+// imm_val == -33,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x7; immval:-0x21
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x7, -0x21, x1, 84, x2)
+
+inst_38:
+// imm_val == -17, rs1_val == 32
+// opcode: slti ; op1:x10; dest:x11; op1val:0x20; immval:-0x11
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x20, -0x11, x1, 88, x2)
+
+inst_39:
+// imm_val == -9,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x2000001; immval:-0x9
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x2000001, -0x9, x1, 92, x2)
+
+inst_40:
+// imm_val == -5,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x401; immval:-0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x401, -0x5, x1, 96, x2)
+
+inst_41:
+// imm_val == -3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, -0x3, x1, 100, x2)
+
+inst_42:
+// imm_val == -2, rs1_val == 0
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:-0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x0, -0x2, x1, 104, x2)
+
+inst_43:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x80000000; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x80000000, 0x667, x1, 108, x2)
+
+inst_44:
+// rs1_val == 1073741824,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x40000000; immval:0x9
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x40000000, 0x9, x1, 112, x2)
+
+inst_45:
+// rs1_val == 536870912,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x20000000; immval:-0x8
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x20000000, -0x8, x1, 116, x2)
+
+inst_46:
+// rs1_val == 268435456,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x10000000; immval:0x7
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x10000000, 0x7, x1, 120, x2)
+
+inst_47:
+// rs1_val == 134217728,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x8000000; immval:-0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x8000000, -0x4, x1, 124, x2)
+
+inst_48:
+// rs1_val == 67108864,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4000000; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4000000, 0x2e, x1, 128, x2)
+
+inst_49:
+// rs1_val == 33554432,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2000000; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x2000000, 0x556, x1, 132, x2)
+
+inst_50:
+// rs1_val == 16777216,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x1000000; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x1000000, -0x556, x1, 136, x2)
+
+inst_51:
+// rs1_val == 8388608,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x800000; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x800000, 0x4, x1, 140, x2)
+
+inst_52:
+// rs1_val == 4194304, imm_val == 1365
+// opcode: slti ; op1:x10; dest:x11; op1val:0x400000; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x400000, 0x555, x1, 144, x2)
+
+inst_53:
+// rs1_val == 2097152,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x200000; immval:-0x400
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x200000, -0x400, x1, 148, x2)
+
+inst_54:
+// rs1_val == 1048576,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x100000; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x100000, 0x2c, x1, 152, x2)
+
+inst_55:
+// rs1_val == 524288,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x80000; immval:-0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x80000, -0x4, x1, 156, x2)
+
+inst_56:
+// rs1_val == 262144,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x40000; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x40000, 0x2, x1, 160, x2)
+
+inst_57:
+// rs1_val == 131072,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x20000; immval:0x400
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x20000, 0x400, x1, 164, x2)
+
+inst_58:
+// rs1_val == 65536,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x10000; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x10000, -0x2c, x1, 168, x2)
+
+inst_59:
+// rs1_val == 32768,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x8000; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x8000, 0x6, x1, 172, x2)
+
+inst_60:
+// rs1_val == 16384,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4000; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4000, 0x0, x1, 176, x2)
+
+inst_61:
+// rs1_val == 8192,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2000; immval:0x200
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x2000, 0x200, x1, 180, x2)
+
+inst_62:
+// rs1_val == 4096,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x1000; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x1000, 0x3, x1, 184, x2)
+
+inst_63:
+// rs1_val == 2048,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x800; immval:-0x81
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x800, -0x81, x1, 188, x2)
+
+inst_64:
+// rs1_val == 1024,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x400; immval:-0xa
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x400, -0xa, x1, 192, x2)
+
+inst_65:
+// rs1_val == 256,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x100; immval:0x3ff
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x100, 0x3ff, x1, 196, x2)
+
+inst_66:
+// rs1_val == 128,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x80; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x80, 0x4, x1, 200, x2)
+
+inst_67:
+// rs1_val == 64,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x40; immval:-0x400
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x40, -0x400, x1, 204, x2)
+
+inst_68:
+// rs1_val == 16,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x10; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x10, 0x2e, x1, 208, x2)
+
+inst_69:
+// rs1_val == 8,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x8; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x8, 0x3, x1, 212, x2)
+
+inst_70:
+// rs1_val == 4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:-0xa
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, -0xa, x1, 216, x2)
+
+inst_71:
+// rs1_val == 2, rs1_val==2 and imm_val==45
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x2d, x1, 220, x2)
+
+inst_72:
+// rs1_val == 1,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x1; immval:-0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x1, -0x3, x1, 224, x2)
+
+inst_73:
+// imm_val == 256,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x100
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x100, x1, 228, x2)
+
+inst_74:
+// imm_val == 128,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x80
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x80, x1, 232, x2)
+
+inst_75:
+// imm_val == 64,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4000000; immval:0x40
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4000000, 0x40, x1, 236, x2)
+
+inst_76:
+// imm_val == 16,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x3; immval:0x10
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x3, 0x10, x1, 240, x2)
+
+inst_77:
+// rs1_val==46341 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x2e, x1, 244, x2)
+
+inst_78:
+// rs1_val==46341 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, -0x2c, x1, 248, x2)
+
+inst_79:
+// rs1_val==46341 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x667, x1, 252, x2)
+
+inst_80:
+// rs1_val==46341 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x334, x1, 256, x2)
+
+inst_81:
+// rs1_val==46341 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x6, x1, 260, x2)
+
+inst_82:
+// rs1_val==46341 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, -0x555, x1, 264, x2)
+
+inst_83:
+// rs1_val==46341 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x556, x1, 268, x2)
+
+inst_84:
+// rs1_val==46341 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x4, x1, 272, x2)
+
+inst_85:
+// rs1_val==46341 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x2c, x1, 276, x2)
+
+inst_86:
+// rs1_val==46341 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x0, x1, 280, x2)
+
+inst_87:
+// rs1_val==46341 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x665, x1, 284, x2)
+
+inst_88:
+// rs1_val==46341 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x332, x1, 288, x2)
+
+inst_89:
+// rs1_val==46341 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x554, x1, 292, x2)
+
+inst_90:
+// rs1_val==46341 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x2, x1, 296, x2)
+
+inst_91:
+// rs1_val==46341 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x2d, x1, 300, x2)
+
+inst_92:
+// rs1_val==46341 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, -0x2d, x1, 304, x2)
+
+inst_93:
+// rs1_val==46341 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x666, x1, 308, x2)
+
+inst_94:
+// rs1_val==46341 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x333, x1, 312, x2)
+
+inst_95:
+// rs1_val==46341 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x5, x1, 316, x2)
+
+inst_96:
+// rs1_val==46341 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, -0x556, x1, 320, x2)
+
+inst_97:
+// rs1_val==46341 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x555, x1, 324, x2)
+
+inst_98:
+// rs1_val==46341 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb505; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb505, 0x3, x1, 328, x2)
+
+inst_99:
+// rs1_val==-46339 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x2e, x1, 332, x2)
+
+inst_100:
+// rs1_val==-46339 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, -0x2c, x1, 336, x2)
+
+inst_101:
+// rs1_val==-46339 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x667, x1, 340, x2)
+
+inst_102:
+// rs1_val==-46339 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x334, x1, 344, x2)
+
+inst_103:
+// rs1_val==-46339 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x6, x1, 348, x2)
+
+inst_104:
+// rs1_val==-46339 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, -0x555, x1, 352, x2)
+
+inst_105:
+// rs1_val==-46339 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x556, x1, 356, x2)
+
+inst_106:
+// rs1_val==-46339 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x4, x1, 360, x2)
+
+inst_107:
+// rs1_val==-46339 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x2c, x1, 364, x2)
+
+inst_108:
+// rs1_val==-46339 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x0, x1, 368, x2)
+
+inst_109:
+// rs1_val==-46339 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x665, x1, 372, x2)
+
+inst_110:
+// rs1_val==-46339 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x332, x1, 376, x2)
+
+inst_111:
+// rs1_val==-46339 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x554, x1, 380, x2)
+
+inst_112:
+// rs1_val==-46339 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x2, x1, 384, x2)
+
+inst_113:
+// rs1_val==-46339 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x2d, x1, 388, x2)
+
+inst_114:
+// rs1_val==-46339 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, -0x2d, x1, 392, x2)
+
+inst_115:
+// rs1_val==-46339 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x666, x1, 396, x2)
+
+inst_116:
+// rs1_val==-46339 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x333, x1, 400, x2)
+
+inst_117:
+// rs1_val==-46339 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x5, x1, 404, x2)
+
+inst_118:
+// rs1_val==-46339 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, -0x556, x1, 408, x2)
+
+inst_119:
+// rs1_val==-46339 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x555, x1, 412, x2)
+
+inst_120:
+// rs1_val==-46339 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb503; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb503, 0x3, x1, 416, x2)
+
+inst_121:
+// rs1_val==1717986919 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x2e, x1, 420, x2)
+
+inst_122:
+// rs1_val==1717986919 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, -0x2c, x1, 424, x2)
+
+inst_123:
+// rs1_val==1717986919 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x667, x1, 428, x2)
+
+inst_124:
+// rs1_val==1717986919 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x334, x1, 432, x2)
+
+inst_125:
+// rs1_val==1717986919 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x6, x1, 436, x2)
+
+inst_126:
+// rs1_val==1717986919 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, -0x555, x1, 440, x2)
+
+inst_127:
+// rs1_val==1717986919 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x556, x1, 444, x2)
+
+inst_128:
+// rs1_val==1717986919 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x4, x1, 448, x2)
+
+inst_129:
+// rs1_val==1717986919 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x2c, x1, 452, x2)
+
+inst_130:
+// rs1_val==1717986919 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x0, x1, 456, x2)
+
+inst_131:
+// rs1_val==1717986919 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x665, x1, 460, x2)
+
+inst_132:
+// rs1_val==1717986919 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x332, x1, 464, x2)
+
+inst_133:
+// rs1_val==1717986919 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x554, x1, 468, x2)
+
+inst_134:
+// rs1_val==1717986919 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x2, x1, 472, x2)
+
+inst_135:
+// rs1_val==1717986919 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x2d, x1, 476, x2)
+
+inst_136:
+// rs1_val==1717986919 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, -0x2d, x1, 480, x2)
+
+inst_137:
+// rs1_val==1717986919 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x666, x1, 484, x2)
+
+inst_138:
+// rs1_val==1717986919 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x333, x1, 488, x2)
+
+inst_139:
+// rs1_val==1717986919 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x5, x1, 492, x2)
+
+inst_140:
+// rs1_val==1717986919 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, -0x556, x1, 496, x2)
+
+inst_141:
+// rs1_val==1717986919 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x555, x1, 500, x2)
+
+inst_142:
+// rs1_val==1717986919 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666667; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666667, 0x3, x1, 504, x2)
+
+inst_143:
+// rs1_val==858993460 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x2e, x1, 508, x2)
+
+inst_144:
+// rs1_val==858993460 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, -0x2c, x1, 512, x2)
+
+inst_145:
+// rs1_val==858993460 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x667, x1, 516, x2)
+
+inst_146:
+// rs1_val==858993460 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x334, x1, 520, x2)
+
+inst_147:
+// rs1_val==858993460 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x6, x1, 524, x2)
+
+inst_148:
+// rs1_val==858993460 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, -0x555, x1, 528, x2)
+
+inst_149:
+// rs1_val==858993460 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x556, x1, 532, x2)
+
+inst_150:
+// rs1_val==858993460 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x4, x1, 536, x2)
+
+inst_151:
+// rs1_val==858993460 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x2c, x1, 540, x2)
+
+inst_152:
+// rs1_val==858993460 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x0, x1, 544, x2)
+
+inst_153:
+// rs1_val==858993460 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x665, x1, 548, x2)
+
+inst_154:
+// rs1_val==858993460 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x332, x1, 552, x2)
+
+inst_155:
+// rs1_val==858993460 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x554, x1, 556, x2)
+
+inst_156:
+// rs1_val==858993460 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x2, x1, 560, x2)
+
+inst_157:
+// rs1_val==858993460 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x2d, x1, 564, x2)
+
+inst_158:
+// rs1_val==858993460 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, -0x2d, x1, 568, x2)
+
+inst_159:
+// rs1_val==858993460 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x666, x1, 572, x2)
+
+inst_160:
+// rs1_val==858993460 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x333, x1, 576, x2)
+
+inst_161:
+// rs1_val==858993460 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x5, x1, 580, x2)
+
+inst_162:
+// rs1_val==858993460 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, -0x556, x1, 584, x2)
+
+inst_163:
+// rs1_val==858993460 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x555, x1, 588, x2)
+
+inst_164:
+// rs1_val==858993460 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333334; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333334, 0x3, x1, 592, x2)
+
+inst_165:
+// rs1_val==6 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x2e, x1, 596, x2)
+
+inst_166:
+// rs1_val==6 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, -0x2c, x1, 600, x2)
+
+inst_167:
+// rs1_val==6 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x667, x1, 604, x2)
+
+inst_168:
+// rs1_val==6 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x334, x1, 608, x2)
+
+inst_169:
+// rs1_val==6 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, 0x6, x1, 612, x2)
+
+inst_170:
+// rs1_val==6 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, -0x555, x1, 616, x2)
+
+inst_171:
+// rs1_val==6 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x556, x1, 620, x2)
+
+inst_172:
+// rs1_val==6 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, 0x4, x1, 624, x2)
+
+inst_173:
+// rs1_val==6 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x2c, x1, 628, x2)
+
+inst_174:
+// rs1_val==6 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, 0x0, x1, 632, x2)
+
+inst_175:
+// rs1_val==6 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x665, x1, 636, x2)
+
+inst_176:
+// rs1_val==6 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x332, x1, 640, x2)
+
+inst_177:
+// rs1_val==6 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x554, x1, 644, x2)
+
+inst_178:
+// rs1_val==6 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, 0x2, x1, 648, x2)
+
+inst_179:
+// rs1_val==6 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x2d, x1, 652, x2)
+
+inst_180:
+// rs1_val==6 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, -0x2d, x1, 656, x2)
+
+inst_181:
+// rs1_val==6 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x666, x1, 660, x2)
+
+inst_182:
+// rs1_val==6 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x333, x1, 664, x2)
+
+inst_183:
+// rs1_val==6 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, 0x5, x1, 668, x2)
+
+inst_184:
+// rs1_val==6 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, -0x556, x1, 672, x2)
+
+inst_185:
+// rs1_val==6 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x6, 0x555, x1, 676, x2)
+
+inst_186:
+// rs1_val==6 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x6; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x6, 0x3, x1, 680, x2)
+
+inst_187:
+// rs1_val==-1431655765 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x2e, x1, 684, x2)
+
+inst_188:
+// rs1_val==-1431655765 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, -0x2c, x1, 688, x2)
+
+inst_189:
+// rs1_val==-1431655765 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x667, x1, 692, x2)
+
+inst_190:
+// rs1_val==-1431655765 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x334, x1, 696, x2)
+
+inst_191:
+// rs1_val==-1431655765 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x6, x1, 700, x2)
+
+inst_192:
+// rs1_val==-1431655765 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, -0x555, x1, 704, x2)
+
+inst_193:
+// rs1_val==-1431655765 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x556, x1, 708, x2)
+
+inst_194:
+// rs1_val==-1431655765 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x4, x1, 712, x2)
+
+inst_195:
+// rs1_val==-1431655765 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x2c, x1, 716, x2)
+
+inst_196:
+// rs1_val==-1431655765 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x0, x1, 720, x2)
+
+inst_197:
+// rs1_val==-1431655765 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x665, x1, 724, x2)
+
+inst_198:
+// rs1_val==-1431655765 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x332, x1, 728, x2)
+
+inst_199:
+// rs1_val==-1431655765 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x554, x1, 732, x2)
+
+inst_200:
+// rs1_val==-1431655765 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x2, x1, 736, x2)
+
+inst_201:
+// rs1_val==-1431655765 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x2d, x1, 740, x2)
+
+inst_202:
+// rs1_val==-1431655765 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, -0x2d, x1, 744, x2)
+
+inst_203:
+// rs1_val==-1431655765 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x666, x1, 748, x2)
+
+inst_204:
+// rs1_val==-1431655765 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x333, x1, 752, x2)
+
+inst_205:
+// rs1_val==-1431655765 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x5, x1, 756, x2)
+
+inst_206:
+// rs1_val==-1431655765 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, -0x556, x1, 760, x2)
+
+inst_207:
+// rs1_val==-1431655765 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x555, x1, 764, x2)
+
+inst_208:
+// rs1_val==-1431655765 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555555, 0x3, x1, 768, x2)
+
+inst_209:
+// rs1_val==1431655766 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x2e, x1, 772, x2)
+
+inst_210:
+// rs1_val==1431655766 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, -0x2c, x1, 776, x2)
+
+inst_211:
+// rs1_val==1431655766 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x667, x1, 780, x2)
+
+inst_212:
+// rs1_val==1431655766 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x334, x1, 784, x2)
+
+inst_213:
+// rs1_val==1431655766 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x6, x1, 788, x2)
+
+inst_214:
+// rs1_val==1431655766 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, -0x555, x1, 792, x2)
+
+inst_215:
+// rs1_val==1431655766 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x556, x1, 796, x2)
+
+inst_216:
+// rs1_val==1431655766 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x4, x1, 800, x2)
+
+inst_217:
+// rs1_val==1431655766 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x2c, x1, 804, x2)
+
+inst_218:
+// rs1_val==1431655766 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x0, x1, 808, x2)
+
+inst_219:
+// rs1_val==1431655766 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x665, x1, 812, x2)
+
+inst_220:
+// rs1_val==1431655766 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x332, x1, 816, x2)
+
+inst_221:
+// rs1_val==1431655766 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x554, x1, 820, x2)
+
+inst_222:
+// rs1_val==1431655766 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x2, x1, 824, x2)
+
+inst_223:
+// rs1_val==1431655766 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x2d, x1, 828, x2)
+
+inst_224:
+// rs1_val==1431655766 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, -0x2d, x1, 832, x2)
+
+inst_225:
+// rs1_val==1431655766 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x666, x1, 836, x2)
+
+inst_226:
+// rs1_val==1431655766 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x333, x1, 840, x2)
+
+inst_227:
+// rs1_val==1431655766 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x5, x1, 844, x2)
+
+inst_228:
+// rs1_val==1431655766 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, -0x556, x1, 848, x2)
+
+inst_229:
+// rs1_val==1431655766 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x555, x1, 852, x2)
+
+inst_230:
+// rs1_val==1431655766 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555556; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555556, 0x3, x1, 856, x2)
+
+inst_231:
+// rs1_val==4 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x2e, x1, 860, x2)
+
+inst_232:
+// rs1_val==4 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, -0x2c, x1, 864, x2)
+
+inst_233:
+// rs1_val==4 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x667, x1, 868, x2)
+
+inst_234:
+// rs1_val==4 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x334, x1, 872, x2)
+
+inst_235:
+// rs1_val==4 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x6, x1, 876, x2)
+
+inst_236:
+// rs1_val==4 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, -0x555, x1, 880, x2)
+
+inst_237:
+// rs1_val==4 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x556, x1, 884, x2)
+
+inst_238:
+// rs1_val==4 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, 0x4, x1, 888, x2)
+
+inst_239:
+// rs1_val==4 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x2c, x1, 892, x2)
+
+inst_240:
+// rs1_val==4 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, 0x0, x1, 896, x2)
+
+inst_241:
+// rs1_val==4 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x665, x1, 900, x2)
+
+inst_242:
+// rs1_val==4 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x332, x1, 904, x2)
+
+inst_243:
+// rs1_val==4 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x554, x1, 908, x2)
+
+inst_244:
+// rs1_val==4 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, 0x2, x1, 912, x2)
+
+inst_245:
+// rs1_val==4 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x2d, x1, 916, x2)
+
+inst_246:
+// rs1_val==4 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, -0x2d, x1, 920, x2)
+
+inst_247:
+// rs1_val==4 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x666, x1, 924, x2)
+
+inst_248:
+// rs1_val==4 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x333, x1, 928, x2)
+
+inst_249:
+// rs1_val==4 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x5, x1, 932, x2)
+
+inst_250:
+// rs1_val==4 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, -0x556, x1, 936, x2)
+
+inst_251:
+// rs1_val==4 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x4, 0x555, x1, 940, x2)
+
+inst_252:
+// rs1_val==4 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x4; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x4, 0x3, x1, 944, x2)
+
+inst_253:
+// rs1_val==46339 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x2e, x1, 948, x2)
+
+inst_254:
+// rs1_val==46339 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, -0x2c, x1, 952, x2)
+
+inst_255:
+// rs1_val==46339 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x667, x1, 956, x2)
+
+inst_256:
+// rs1_val==46339 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x334, x1, 960, x2)
+
+inst_257:
+// rs1_val==46339 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x6, x1, 964, x2)
+
+inst_258:
+// rs1_val==46339 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, -0x555, x1, 968, x2)
+
+inst_259:
+// rs1_val==46339 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x556, x1, 972, x2)
+
+inst_260:
+// rs1_val==46339 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x4, x1, 976, x2)
+
+inst_261:
+// rs1_val==46339 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x2c, x1, 980, x2)
+
+inst_262:
+// rs1_val==46339 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x0, x1, 984, x2)
+
+inst_263:
+// rs1_val==46339 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x665, x1, 988, x2)
+
+inst_264:
+// rs1_val==46339 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x332, x1, 992, x2)
+
+inst_265:
+// rs1_val==46339 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x554, x1, 996, x2)
+
+inst_266:
+// rs1_val==46339 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x2, x1, 1000, x2)
+
+inst_267:
+// rs1_val==46339 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x2d, x1, 1004, x2)
+
+inst_268:
+// rs1_val==46339 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, -0x2d, x1, 1008, x2)
+
+inst_269:
+// rs1_val==46339 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x666, x1, 1012, x2)
+
+inst_270:
+// rs1_val==46339 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x333, x1, 1016, x2)
+
+inst_271:
+// rs1_val==46339 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x5, x1, 1020, x2)
+
+inst_272:
+// rs1_val==46339 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, -0x556, x1, 1024, x2)
+
+inst_273:
+// rs1_val==46339 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x555, x1, 1028, x2)
+
+inst_274:
+// rs1_val==46339 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb503; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb503, 0x3, x1, 1032, x2)
+
+inst_275:
+// rs1_val==0 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x2e, x1, 1036, x2)
+
+inst_276:
+// rs1_val==0 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x0, -0x2c, x1, 1040, x2)
+
+inst_277:
+// rs1_val==0 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x667, x1, 1044, x2)
+
+inst_278:
+// rs1_val==0 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x334, x1, 1048, x2)
+
+inst_279:
+// rs1_val==0 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x6, x1, 1052, x2)
+
+inst_280:
+// rs1_val==0 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x0, -0x555, x1, 1056, x2)
+
+inst_281:
+// rs1_val==0 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x556, x1, 1060, x2)
+
+inst_282:
+// rs1_val==0 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x4, x1, 1064, x2)
+
+inst_283:
+// rs1_val==0 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x2c, x1, 1068, x2)
+
+inst_284:
+// rs1_val==0 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x0, 0x0, x1, 1072, x2)
+
+inst_285:
+// rs1_val==0 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x665, x1, 1076, x2)
+
+inst_286:
+// rs1_val==0 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x332, x1, 1080, x2)
+
+inst_287:
+// rs1_val==0 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x554, x1, 1084, x2)
+
+inst_288:
+// rs1_val==0 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x2, x1, 1088, x2)
+
+inst_289:
+// rs1_val==0 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x2d, x1, 1092, x2)
+
+inst_290:
+// rs1_val==0 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x0, -0x2d, x1, 1096, x2)
+
+inst_291:
+// rs1_val==0 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x666, x1, 1100, x2)
+
+inst_292:
+// rs1_val==0 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x333, x1, 1104, x2)
+
+inst_293:
+// rs1_val==0 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x5, x1, 1108, x2)
+
+inst_294:
+// rs1_val==0 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x0, -0x556, x1, 1112, x2)
+
+inst_295:
+// rs1_val==0 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x555, x1, 1116, x2)
+
+inst_296:
+// rs1_val==0 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x0; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x0, 0x3, x1, 1120, x2)
+
+inst_297:
+// rs1_val==1717986917 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x2e, x1, 1124, x2)
+
+inst_298:
+// rs1_val==1717986917 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, -0x2c, x1, 1128, x2)
+
+inst_299:
+// rs1_val==1717986917 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x667, x1, 1132, x2)
+
+inst_300:
+// rs1_val==1717986917 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x334, x1, 1136, x2)
+
+inst_301:
+// rs1_val==1717986917 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x6, x1, 1140, x2)
+
+inst_302:
+// rs1_val==1717986917 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, -0x555, x1, 1144, x2)
+
+inst_303:
+// rs1_val==1717986917 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x556, x1, 1148, x2)
+
+inst_304:
+// rs1_val==1717986917 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x4, x1, 1152, x2)
+
+inst_305:
+// rs1_val==1717986917 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x2c, x1, 1156, x2)
+
+inst_306:
+// rs1_val==1717986917 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x0, x1, 1160, x2)
+
+inst_307:
+// rs1_val==-1431655766 and imm_val==-1365, rs1_val == -1431655766
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, -0x555, x1, 1164, x2)
+
+inst_308:
+// rs1_val==-1431655766 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x556, x1, 1168, x2)
+
+inst_309:
+// rs1_val==-1431655766 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x4, x1, 1172, x2)
+
+inst_310:
+// rs1_val==-1431655766 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x2c, x1, 1176, x2)
+
+inst_311:
+// rs1_val==-1431655766 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x0, x1, 1180, x2)
+
+inst_312:
+// rs1_val==-1431655766 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x665, x1, 1184, x2)
+
+inst_313:
+// rs1_val==-1431655766 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x332, x1, 1188, x2)
+
+inst_314:
+// rs1_val==-1431655766 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x554, x1, 1192, x2)
+
+inst_315:
+// rs1_val==-1431655766 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x2, x1, 1196, x2)
+
+inst_316:
+// rs1_val==-1431655766 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x2d, x1, 1200, x2)
+
+inst_317:
+// rs1_val==-1431655766 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, -0x2d, x1, 1204, x2)
+
+inst_318:
+// rs1_val==-1431655766 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x666, x1, 1208, x2)
+
+inst_319:
+// rs1_val==-1431655766 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x333, x1, 1212, x2)
+
+inst_320:
+// rs1_val==-1431655766 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x5, x1, 1216, x2)
+
+inst_321:
+// rs1_val==-1431655766 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, -0x556, x1, 1220, x2)
+
+inst_322:
+// rs1_val==-1431655766 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x555, x1, 1224, x2)
+
+inst_323:
+// rs1_val==-1431655766 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x3, x1, 1228, x2)
+
+inst_324:
+// rs1_val==1431655765 and imm_val==46, rs1_val == 1431655765
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x2e, x1, 1232, x2)
+
+inst_325:
+// rs1_val==1431655765 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, -0x2c, x1, 1236, x2)
+
+inst_326:
+// rs1_val==1431655765 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x667, x1, 1240, x2)
+
+inst_327:
+// rs1_val==1431655765 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x334, x1, 1244, x2)
+
+inst_328:
+// rs1_val==1431655765 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x6, x1, 1248, x2)
+
+inst_329:
+// rs1_val==1431655765 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, -0x555, x1, 1252, x2)
+
+inst_330:
+// rs1_val==1431655765 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x556, x1, 1256, x2)
+
+inst_331:
+// rs1_val==1431655765 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x4, x1, 1260, x2)
+
+inst_332:
+// rs1_val==1431655765 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x2c, x1, 1264, x2)
+
+inst_333:
+// rs1_val==1431655765 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x0, x1, 1268, x2)
+
+inst_334:
+// rs1_val==1431655765 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x665, x1, 1272, x2)
+
+inst_335:
+// rs1_val==1431655765 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x332, x1, 1276, x2)
+
+inst_336:
+// rs1_val==1431655765 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x554, x1, 1280, x2)
+
+inst_337:
+// rs1_val==1431655765 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x2, x1, 1284, x2)
+
+inst_338:
+// rs1_val==1431655765 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x2d, x1, 1288, x2)
+
+inst_339:
+// rs1_val==1431655765 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, -0x2d, x1, 1292, x2)
+
+inst_340:
+// rs1_val==1431655765 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x666, x1, 1296, x2)
+
+inst_341:
+// rs1_val==1431655765 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x333, x1, 1300, x2)
+
+inst_342:
+// rs1_val==1431655765 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x5, x1, 1304, x2)
+
+inst_343:
+// rs1_val==1431655765 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, -0x556, x1, 1308, x2)
+
+inst_344:
+// rs1_val==1431655765 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x555, x1, 1312, x2)
+
+inst_345:
+// rs1_val==1431655765 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555555; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555555, 0x3, x1, 1316, x2)
+
+inst_346:
+// rs1_val==3 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x2e, x1, 1320, x2)
+
+inst_347:
+// rs1_val==3 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x3, -0x2c, x1, 1324, x2)
+
+inst_348:
+// rs1_val==3 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x667, x1, 1328, x2)
+
+inst_349:
+// rs1_val==3 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x334, x1, 1332, x2)
+
+inst_350:
+// rs1_val==3 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x6, x1, 1336, x2)
+
+inst_351:
+// rs1_val==3 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x3, -0x555, x1, 1340, x2)
+
+inst_352:
+// rs1_val==3 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x556, x1, 1344, x2)
+
+inst_353:
+// rs1_val==3 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x4, x1, 1348, x2)
+
+inst_354:
+// rs1_val==3 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x2c, x1, 1352, x2)
+
+inst_355:
+// rs1_val==3 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x3, 0x0, x1, 1356, x2)
+
+inst_356:
+// rs1_val==3 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x665, x1, 1360, x2)
+
+inst_357:
+// rs1_val==3 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x332, x1, 1364, x2)
+
+inst_358:
+// rs1_val==3 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x554, x1, 1368, x2)
+
+inst_359:
+// rs1_val==3 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x3, 0x2, x1, 1372, x2)
+
+inst_360:
+// rs1_val==3 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x2d, x1, 1376, x2)
+
+inst_361:
+// rs1_val==3 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x3, -0x2d, x1, 1380, x2)
+
+inst_362:
+// rs1_val==3 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x666, x1, 1384, x2)
+
+inst_363:
+// rs1_val==3 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x333, x1, 1388, x2)
+
+inst_364:
+// rs1_val==3 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x5, x1, 1392, x2)
+
+inst_365:
+// rs1_val==3 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x3, -0x556, x1, 1396, x2)
+
+inst_366:
+// rs1_val==3 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x3, 0x555, x1, 1400, x2)
+
+inst_367:
+// rs1_val==3 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x3; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x3, 0x3, x1, 1404, x2)
+
+inst_368:
+// rs1_val==1717986917 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x665, x1, 1408, x2)
+
+inst_369:
+// rs1_val==1717986917 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x332, x1, 1412, x2)
+
+inst_370:
+// rs1_val==1717986917 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x554, x1, 1416, x2)
+
+inst_371:
+// rs1_val==1717986917 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x2, x1, 1420, x2)
+
+inst_372:
+// rs1_val==1717986917 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x2d, x1, 1424, x2)
+
+inst_373:
+// rs1_val==1717986917 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, -0x2d, x1, 1428, x2)
+
+inst_374:
+// rs1_val==1717986917 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x666, x1, 1432, x2)
+
+inst_375:
+// rs1_val==1717986917 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x333, x1, 1436, x2)
+
+inst_376:
+// rs1_val==1717986917 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x5, x1, 1440, x2)
+
+inst_377:
+// rs1_val==1717986917 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, -0x556, x1, 1444, x2)
+
+inst_378:
+// rs1_val==1717986917 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x555, x1, 1448, x2)
+
+inst_379:
+// rs1_val==1717986917 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666665; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666665, 0x3, x1, 1452, x2)
+
+inst_380:
+// rs1_val==858993458 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x2e, x1, 1456, x2)
+
+inst_381:
+// rs1_val==858993458 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, -0x2c, x1, 1460, x2)
+
+inst_382:
+// rs1_val==858993458 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x667, x1, 1464, x2)
+
+inst_383:
+// rs1_val==858993458 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x334, x1, 1468, x2)
+
+inst_384:
+// rs1_val==858993458 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x6, x1, 1472, x2)
+
+inst_385:
+// rs1_val==858993458 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, -0x555, x1, 1476, x2)
+
+inst_386:
+// rs1_val==858993458 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x556, x1, 1480, x2)
+
+inst_387:
+// rs1_val==858993458 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x4, x1, 1484, x2)
+
+inst_388:
+// rs1_val==858993458 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x2c, x1, 1488, x2)
+
+inst_389:
+// rs1_val==858993458 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x0, x1, 1492, x2)
+
+inst_390:
+// rs1_val==858993458 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x665, x1, 1496, x2)
+
+inst_391:
+// rs1_val==858993458 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x332, x1, 1500, x2)
+
+inst_392:
+// rs1_val==858993458 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x554, x1, 1504, x2)
+
+inst_393:
+// rs1_val==858993458 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x2, x1, 1508, x2)
+
+inst_394:
+// rs1_val==858993458 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x2d, x1, 1512, x2)
+
+inst_395:
+// rs1_val==858993458 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, -0x2d, x1, 1516, x2)
+
+inst_396:
+// rs1_val==858993458 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x666, x1, 1520, x2)
+
+inst_397:
+// rs1_val==858993458 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x333, x1, 1524, x2)
+
+inst_398:
+// rs1_val==858993458 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x5, x1, 1528, x2)
+
+inst_399:
+// rs1_val==858993458 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, -0x556, x1, 1532, x2)
+
+inst_400:
+// rs1_val==858993458 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x555, x1, 1536, x2)
+
+inst_401:
+// rs1_val==858993458 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333332; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333332, 0x3, x1, 1540, x2)
+
+inst_402:
+// rs1_val==1431655764 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x2e, x1, 1544, x2)
+
+inst_403:
+// rs1_val==1431655764 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, -0x2c, x1, 1548, x2)
+
+inst_404:
+// rs1_val==1431655764 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x667, x1, 1552, x2)
+
+inst_405:
+// rs1_val==1431655764 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x334, x1, 1556, x2)
+
+inst_406:
+// rs1_val==1431655764 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x6, x1, 1560, x2)
+
+inst_407:
+// rs1_val==1431655764 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, -0x555, x1, 1564, x2)
+
+inst_408:
+// rs1_val==1431655764 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x556, x1, 1568, x2)
+
+inst_409:
+// rs1_val==1431655764 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x4, x1, 1572, x2)
+
+inst_410:
+// rs1_val==1431655764 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x2c, x1, 1576, x2)
+
+inst_411:
+// rs1_val==1431655764 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x0, x1, 1580, x2)
+
+inst_412:
+// rs1_val==1431655764 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x665, x1, 1584, x2)
+
+inst_413:
+// rs1_val==1431655764 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x332, x1, 1588, x2)
+
+inst_414:
+// rs1_val==1431655764 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x554, x1, 1592, x2)
+
+inst_415:
+// rs1_val==1431655764 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x2, x1, 1596, x2)
+
+inst_416:
+// rs1_val==1431655764 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x2d, x1, 1600, x2)
+
+inst_417:
+// rs1_val==1431655764 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, -0x2d, x1, 1604, x2)
+
+inst_418:
+// rs1_val==1431655764 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x666, x1, 1608, x2)
+
+inst_419:
+// rs1_val==1431655764 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x333, x1, 1612, x2)
+
+inst_420:
+// rs1_val==1431655764 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x5, x1, 1616, x2)
+
+inst_421:
+// rs1_val==1431655764 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, -0x556, x1, 1620, x2)
+
+inst_422:
+// rs1_val==1431655764 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x555, x1, 1624, x2)
+
+inst_423:
+// rs1_val==1431655764 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x55555554; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x55555554, 0x3, x1, 1628, x2)
+
+inst_424:
+// rs1_val==2 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x2e, x1, 1632, x2)
+
+inst_425:
+// rs1_val==2 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x2, -0x2c, x1, 1636, x2)
+
+inst_426:
+// rs1_val==2 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x667, x1, 1640, x2)
+
+inst_427:
+// rs1_val==2 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x334, x1, 1644, x2)
+
+inst_428:
+// rs1_val==2 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x6, x1, 1648, x2)
+
+inst_429:
+// rs1_val==2 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x2, -0x555, x1, 1652, x2)
+
+inst_430:
+// rs1_val==2 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x556, x1, 1656, x2)
+
+inst_431:
+// rs1_val==2 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x4, x1, 1660, x2)
+
+inst_432:
+// rs1_val==2 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x2c, x1, 1664, x2)
+
+inst_433:
+// rs1_val==2 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x2, 0x0, x1, 1668, x2)
+
+inst_434:
+// rs1_val==2 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x665, x1, 1672, x2)
+
+inst_435:
+// rs1_val==2 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x332, x1, 1676, x2)
+
+inst_436:
+// rs1_val==2 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x554, x1, 1680, x2)
+
+inst_437:
+// rs1_val==2 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x2, 0x2, x1, 1684, x2)
+
+inst_438:
+// rs1_val==2 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x2, -0x2d, x1, 1688, x2)
+
+inst_439:
+// rs1_val==2 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x666, x1, 1692, x2)
+
+inst_440:
+// rs1_val==2 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x333, x1, 1696, x2)
+
+inst_441:
+// rs1_val==2 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x5, x1, 1700, x2)
+
+inst_442:
+// rs1_val==2 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x2, -0x556, x1, 1704, x2)
+
+inst_443:
+// rs1_val==2 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x555, x1, 1708, x2)
+
+inst_444:
+// rs1_val==2 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x2; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x2, 0x3, x1, 1712, x2)
+
+inst_445:
+// rs1_val==46340 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x2e, x1, 1716, x2)
+
+inst_446:
+// rs1_val==46340 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, -0x2c, x1, 1720, x2)
+
+inst_447:
+// rs1_val==46340 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x667, x1, 1724, x2)
+
+inst_448:
+// rs1_val==46340 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x334, x1, 1728, x2)
+
+inst_449:
+// rs1_val==46340 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x6, x1, 1732, x2)
+
+inst_450:
+// rs1_val==46340 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, -0x555, x1, 1736, x2)
+
+inst_451:
+// rs1_val==46340 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x556, x1, 1740, x2)
+
+inst_452:
+// rs1_val==46340 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x4, x1, 1744, x2)
+
+inst_453:
+// rs1_val==46340 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x2c, x1, 1748, x2)
+
+inst_454:
+// rs1_val==46340 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x0, x1, 1752, x2)
+
+inst_455:
+// rs1_val==46340 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x665, x1, 1756, x2)
+
+inst_456:
+// rs1_val==46340 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x332, x1, 1760, x2)
+
+inst_457:
+// rs1_val==46340 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x554, x1, 1764, x2)
+
+inst_458:
+// rs1_val==46340 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x2, x1, 1768, x2)
+
+inst_459:
+// rs1_val==46340 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x2d, x1, 1772, x2)
+
+inst_460:
+// rs1_val==46340 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, -0x2d, x1, 1776, x2)
+
+inst_461:
+// rs1_val==46340 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x666, x1, 1780, x2)
+
+inst_462:
+// rs1_val==46340 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x333, x1, 1784, x2)
+
+inst_463:
+// rs1_val==46340 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x5, x1, 1788, x2)
+
+inst_464:
+// rs1_val==46340 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, -0x556, x1, 1792, x2)
+
+inst_465:
+// rs1_val==46340 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x555, x1, 1796, x2)
+
+inst_466:
+// rs1_val==46340 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0xb504; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0xb504, 0x3, x1, 1800, x2)
+
+inst_467:
+// rs1_val==-46340 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x2e, x1, 1804, x2)
+
+inst_468:
+// rs1_val==-46340 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, -0x2c, x1, 1808, x2)
+
+inst_469:
+// rs1_val==-46340 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x667, x1, 1812, x2)
+
+inst_470:
+// rs1_val==-46340 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x334, x1, 1816, x2)
+
+inst_471:
+// rs1_val==-46340 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x6, x1, 1820, x2)
+
+inst_472:
+// rs1_val==-46340 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, -0x555, x1, 1824, x2)
+
+inst_473:
+// rs1_val==-46340 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x556, x1, 1828, x2)
+
+inst_474:
+// rs1_val==-46340 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x4, x1, 1832, x2)
+
+inst_475:
+// rs1_val==-46340 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x2c, x1, 1836, x2)
+
+inst_476:
+// rs1_val==-46340 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x0, x1, 1840, x2)
+
+inst_477:
+// rs1_val==-46340 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x665, x1, 1844, x2)
+
+inst_478:
+// rs1_val==-46340 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x332, x1, 1848, x2)
+
+inst_479:
+// rs1_val==-46340 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x554, x1, 1852, x2)
+
+inst_480:
+// rs1_val==-46340 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x2, x1, 1856, x2)
+
+inst_481:
+// rs1_val==-46340 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x2d, x1, 1860, x2)
+
+inst_482:
+// rs1_val==-46340 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, -0x2d, x1, 1864, x2)
+
+inst_483:
+// rs1_val==-46340 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x666, x1, 1868, x2)
+
+inst_484:
+// rs1_val==-46340 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x333, x1, 1872, x2)
+
+inst_485:
+// rs1_val==-46340 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x5, x1, 1876, x2)
+
+inst_486:
+// rs1_val==-46340 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, -0x556, x1, 1880, x2)
+
+inst_487:
+// rs1_val==-46340 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x555, x1, 1884, x2)
+
+inst_488:
+// rs1_val==-46340 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0xb504; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x1, -0xb504, 0x3, x1, 1888, x2)
+
+inst_489:
+// rs1_val==1717986918 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x2e, x1, 1892, x2)
+
+inst_490:
+// rs1_val==1717986918 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, -0x2c, x1, 1896, x2)
+
+inst_491:
+// rs1_val==1717986918 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x667, x1, 1900, x2)
+
+inst_492:
+// rs1_val==1717986918 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x334, x1, 1904, x2)
+
+inst_493:
+// rs1_val==1717986918 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x6, x1, 1908, x2)
+
+inst_494:
+// rs1_val==1717986918 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, -0x555, x1, 1912, x2)
+
+inst_495:
+// rs1_val==1717986918 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x556, x1, 1916, x2)
+
+inst_496:
+// rs1_val==1717986918 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x4, x1, 1920, x2)
+
+inst_497:
+// rs1_val==1717986918 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x2c, x1, 1924, x2)
+
+inst_498:
+// rs1_val==1717986918 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x0, x1, 1928, x2)
+
+inst_499:
+// rs1_val==1717986918 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x665, x1, 1932, x2)
+
+inst_500:
+// rs1_val==1717986918 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x332, x1, 1936, x2)
+
+inst_501:
+// rs1_val==1717986918 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x554, x1, 1940, x2)
+
+inst_502:
+// rs1_val==1717986918 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x2, x1, 1944, x2)
+
+inst_503:
+// rs1_val==1717986918 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x2d, x1, 1948, x2)
+
+inst_504:
+// rs1_val==1717986918 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, -0x2d, x1, 1952, x2)
+
+inst_505:
+// rs1_val==1717986918 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x666, x1, 1956, x2)
+
+inst_506:
+// rs1_val==1717986918 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x333, x1, 1960, x2)
+
+inst_507:
+// rs1_val==1717986918 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x5, x1, 1964, x2)
+
+inst_508:
+// rs1_val==1717986918 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, -0x556, x1, 1968, x2)
+
+inst_509:
+// rs1_val==1717986918 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x555, x1, 1972, x2)
+
+inst_510:
+// rs1_val==1717986918 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x66666666; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x66666666, 0x3, x1, 1976, x2)
+
+inst_511:
+// rs1_val==858993459 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x2e, x1, 1980, x2)
+
+inst_512:
+// rs1_val==858993459 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, -0x2c, x1, 1984, x2)
+
+inst_513:
+// rs1_val==858993459 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x667, x1, 1988, x2)
+
+inst_514:
+// rs1_val==858993459 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x334, x1, 1992, x2)
+
+inst_515:
+// rs1_val==858993459 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x6, x1, 1996, x2)
+
+inst_516:
+// rs1_val==858993459 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, -0x555, x1, 2000, x2)
+
+inst_517:
+// rs1_val==858993459 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x556, x1, 2004, x2)
+
+inst_518:
+// rs1_val==858993459 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x4, x1, 2008, x2)
+
+inst_519:
+// rs1_val==858993459 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x2c, x1, 2012, x2)
+
+inst_520:
+// rs1_val==858993459 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x0, x1, 2016, x2)
+
+inst_521:
+// rs1_val==858993459 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x665, x1, 2020, x2)
+
+inst_522:
+// rs1_val==858993459 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x332, x1, 2024, x2)
+
+inst_523:
+// rs1_val==858993459 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x554, x1, 2028, x2)
+
+inst_524:
+// rs1_val==858993459 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x2, x1, 2032, x2)
+
+inst_525:
+// rs1_val==858993459 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x2d, x1, 2036, x2)
+
+inst_526:
+// rs1_val==858993459 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, -0x2d, x1, 2040, x2)
+
+inst_527:
+// rs1_val==858993459 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x666, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_528:
+// rs1_val==858993459 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x333, x1, 0, x2)
+
+inst_529:
+// rs1_val==858993459 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x5, x1, 4, x2)
+
+inst_530:
+// rs1_val==858993459 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, -0x556, x1, 8, x2)
+
+inst_531:
+// rs1_val==858993459 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x555, x1, 12, x2)
+
+inst_532:
+// rs1_val==858993459 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x33333333; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x33333333, 0x3, x1, 16, x2)
+
+inst_533:
+// rs1_val==5 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x2e, x1, 20, x2)
+
+inst_534:
+// rs1_val==5 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, -0x2c, x1, 24, x2)
+
+inst_535:
+// rs1_val==5 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x667, x1, 28, x2)
+
+inst_536:
+// rs1_val==5 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x334, x1, 32, x2)
+
+inst_537:
+// rs1_val==5 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x6, x1, 36, x2)
+
+inst_538:
+// rs1_val==5 and imm_val==-1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:-0x555
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, -0x555, x1, 40, x2)
+
+inst_539:
+// rs1_val==5 and imm_val==1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x556
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x556, x1, 44, x2)
+
+inst_540:
+// rs1_val==5 and imm_val==4,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x4
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, 0x4, x1, 48, x2)
+
+inst_541:
+// rs1_val==5 and imm_val==44,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x2c, x1, 52, x2)
+
+inst_542:
+// rs1_val==5 and imm_val==0,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x0
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, 0x0, x1, 56, x2)
+
+inst_543:
+// rs1_val==5 and imm_val==1637,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x665
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x665, x1, 60, x2)
+
+inst_544:
+// rs1_val==5 and imm_val==818,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x332
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x332, x1, 64, x2)
+
+inst_545:
+// rs1_val==5 and imm_val==1364,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x554
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x554, x1, 68, x2)
+
+inst_546:
+// rs1_val==5 and imm_val==2,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x2
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, 0x2, x1, 72, x2)
+
+inst_547:
+// rs1_val==5 and imm_val==45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x2d
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x2d, x1, 76, x2)
+
+inst_548:
+// rs1_val==5 and imm_val==-45,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:-0x2d
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, -0x2d, x1, 80, x2)
+
+inst_549:
+// rs1_val==5 and imm_val==1638,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x666
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x666, x1, 84, x2)
+
+inst_550:
+// rs1_val==5 and imm_val==819,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x333
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x333, x1, 88, x2)
+
+inst_551:
+// rs1_val==5 and imm_val==5,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x5
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, 0x5, x1, 92, x2)
+
+inst_552:
+// rs1_val==5 and imm_val==-1366,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:-0x556
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, -0x556, x1, 96, x2)
+
+inst_553:
+// rs1_val==5 and imm_val==1365,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x555
+TEST_IMM_OP( slti, x11, x10, 0x1, 0x5, 0x555, x1, 100, x2)
+
+inst_554:
+// rs1_val==5 and imm_val==3,
+// opcode: slti ; op1:x10; dest:x11; op1val:0x5; immval:0x3
+TEST_IMM_OP( slti, x11, x10, 0x0, 0x5, 0x3, x1, 104, x2)
+
+inst_555:
+// rs1_val==-1431655766 and imm_val==46,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2e
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x2e, x1, 108, x2)
+
+inst_556:
+// rs1_val==-1431655766 and imm_val==-44,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2c
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, -0x2c, x1, 112, x2)
+
+inst_557:
+// rs1_val==-1431655766 and imm_val==1639,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x667
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x667, x1, 116, x2)
+
+inst_558:
+// rs1_val==-1431655766 and imm_val==820,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x334
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x334, x1, 120, x2)
+
+inst_559:
+// rs1_val==-1431655766 and imm_val==6,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x55555556, 0x6, x1, 124, x2)
+
+inst_560:
+// rs1_val == -536870913,
+// opcode: slti ; op1:x10; dest:x11; op1val:-0x20000001; immval:-0x6
+TEST_IMM_OP( slti, x11, x10, 0x1, -0x20000001, -0x6, x1, 128, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 33*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sltiu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sltiu-01.S
new file mode 100644
index 000000000..65b2c2a8f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sltiu-01.S
@@ -0,0 +1,3565 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sltiu instruction of the RISC-V E extension for the sltiu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",sltiu)
+
+RVTEST_SIGBASE( x14,signature_x14_1)
+
+inst_0:
+// rs1 != rd, rs1==x7, rd==x2, imm_val == (2**(12)-1), rs1_val != imm_val and rs1_val > 0 and imm_val > 0
+// opcode: sltiu ; op1:x7; dest:x2; op1val:0x9; immval:0xfff
+TEST_IMM_OP( sltiu, x2, x7, 0x1, 0x9, 0xfff, x14, 0, x9)
+
+inst_1:
+// rs1 == rd, rs1==x3, rd==x3, rs1_val == 2147483647, imm_val == 3839
+// opcode: sltiu ; op1:x3; dest:x3; op1val:0x7fffffff; immval:0xeff
+TEST_IMM_OP( sltiu, x3, x3, 0x1, 0x7fffffff, 0xeff, x14, 4, x9)
+
+inst_2:
+// rs1==x10, rd==x4, rs1_val == 3221225471, imm_val == 32
+// opcode: sltiu ; op1:x10; dest:x4; op1val:0xbfffffff; immval:0x20
+TEST_IMM_OP( sltiu, x4, x10, 0x0, 0xbfffffff, 0x20, x14, 8, x9)
+
+inst_3:
+// rs1==x4, rd==x6, rs1_val == 3758096383,
+// opcode: sltiu ; op1:x4; dest:x6; op1val:0xdfffffff; immval:0x5
+TEST_IMM_OP( sltiu, x6, x4, 0x0, 0xdfffffff, 0x5, x14, 12, x9)
+
+inst_4:
+// rs1==x6, rd==x13, rs1_val == 4026531839,
+// opcode: sltiu ; op1:x6; dest:x13; op1val:0xefffffff; immval:0x667
+TEST_IMM_OP( sltiu, x13, x6, 0x0, 0xefffffff, 0x667, x14, 16, x9)
+
+inst_5:
+// rs1==x1, rd==x7, rs1_val == 4160749567, imm_val == 16
+// opcode: sltiu ; op1:x1; dest:x7; op1val:0xf7ffffff; immval:0x10
+TEST_IMM_OP( sltiu, x7, x1, 0x0, 0xf7ffffff, 0x10, x14, 20, x9)
+
+inst_6:
+// rs1==x2, rd==x8, rs1_val == 4227858431, imm_val == 0
+// opcode: sltiu ; op1:x2; dest:x8; op1val:0xfbffffff; immval:0x0
+TEST_IMM_OP( sltiu, x8, x2, 0x0, 0xfbffffff, 0x0, x14, 24, x9)
+
+inst_7:
+// rs1==x0, rd==x1, rs1_val == 4261412863,
+// opcode: sltiu ; op1:x0; dest:x1; op1val:0x0; immval:0xc
+TEST_IMM_OP( sltiu, x1, x0, 0x1, 0x0, 0xc, x14, 28, x9)
+
+inst_8:
+// rs1==x5, rd==x12, rs1_val == 4278190079, imm_val == 512
+// opcode: sltiu ; op1:x5; dest:x12; op1val:0xfeffffff; immval:0x200
+TEST_IMM_OP( sltiu, x12, x5, 0x0, 0xfeffffff, 0x200, x14, 32, x9)
+
+inst_9:
+// rs1==x11, rd==x9, rs1_val == 4286578687,
+// opcode: sltiu ; op1:x11; dest:x9; op1val:0xff7fffff; immval:0xf
+TEST_IMM_OP( sltiu, x9, x11, 0x0, 0xff7fffff, 0xf, x14, 36, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_10:
+// rs1==x12, rd==x10, rs1_val == 4290772991, imm_val == 4093
+// opcode: sltiu ; op1:x12; dest:x10; op1val:0xffbfffff; immval:0xffd
+TEST_IMM_OP( sltiu, x10, x12, 0x1, 0xffbfffff, 0xffd, x1, 0, x2)
+
+inst_11:
+// rs1==x9, rd==x14, rs1_val == 4292870143,
+// opcode: sltiu ; op1:x9; dest:x14; op1val:0xffdfffff; immval:0xaab
+TEST_IMM_OP( sltiu, x14, x9, 0x1, 0xffdfffff, 0xaab, x1, 4, x2)
+
+inst_12:
+// rs1==x14, rd==x15, rs1_val == 4293918719,
+// opcode: sltiu ; op1:x14; dest:x15; op1val:0xffefffff; immval:0x11
+TEST_IMM_OP( sltiu, x15, x14, 0x0, 0xffefffff, 0x11, x1, 8, x2)
+
+inst_13:
+// rs1==x15, rd==x0, rs1_val == 4294443007,
+// opcode: sltiu ; op1:x15; dest:x0; op1val:0xfff7ffff; immval:0xa
+TEST_IMM_OP( sltiu, x0, x15, 0, 0xfff7ffff, 0xa, x1, 12, x2)
+
+inst_14:
+// rs1==x13, rd==x11, rs1_val == 4294705151,
+// opcode: sltiu ; op1:x13; dest:x11; op1val:0xfffbffff; immval:0x13
+TEST_IMM_OP( sltiu, x11, x13, 0x0, 0xfffbffff, 0x13, x1, 16, x2)
+
+inst_15:
+// rs1==x8, rd==x5, rs1_val == 4294836223,
+// opcode: sltiu ; op1:x8; dest:x5; op1val:0xfffdffff; immval:0x0
+TEST_IMM_OP( sltiu, x5, x8, 0x0, 0xfffdffff, 0x0, x1, 20, x2)
+
+inst_16:
+// rs1_val == 4294901759,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffeffff; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffeffff, 0x3, x1, 24, x2)
+
+inst_17:
+// rs1_val == 4294934527,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff7fff; immval:0xfff
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xffff7fff, 0xfff, x1, 28, x2)
+
+inst_18:
+// rs1_val == 4294950911,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffbfff; immval:0xf
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffffbfff, 0xf, x1, 32, x2)
+
+inst_19:
+// rs1_val == 4294959103, imm_val == 4087
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffdfff; immval:0xff7
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xffffdfff, 0xff7, x1, 36, x2)
+
+inst_20:
+// rs1_val == 4294963199,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffefff; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffffefff, 0x334, x1, 40, x2)
+
+inst_21:
+// rs1_val == 4294965247,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffff7ff; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffff7ff, 0x666, x1, 44, x2)
+
+inst_22:
+// rs1_val == 4294966271, imm_val == 3071
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffffbff; immval:0xbff
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffffbff, 0xbff, x1, 48, x2)
+
+inst_23:
+// rs1_val == 4294966783,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffffdff; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffffdff, 0x332, x1, 52, x2)
+
+inst_24:
+// rs1_val == 4294967039, imm_val == 3583
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffffeff; immval:0xdff
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffffeff, 0xdff, x1, 56, x2)
+
+inst_25:
+// rs1_val == 4294967167, imm_val == 4094
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffff7f; immval:0xffe
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xffffff7f, 0xffe, x1, 60, x2)
+
+inst_26:
+// rs1_val == 4294967231, imm_val == 128
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffffbf; immval:0x80
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffffffbf, 0x80, x1, 64, x2)
+
+inst_27:
+// rs1_val == 4294967263,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffffdf; immval:0xc
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffffffdf, 0xc, x1, 68, x2)
+
+inst_28:
+// rs1_val == 4294967279,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffffef; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffffffef, 0xaab, x1, 72, x2)
+
+inst_29:
+// rs1_val == 4294967287,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffffff7; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffffff7, 0x554, x1, 76, x2)
+
+inst_30:
+// rs1_val == 4294967291,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffffffb; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffffffb, 0x667, x1, 80, x2)
+
+inst_31:
+// rs1_val == 4294967293,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffffffd; immval:0xdff
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffffffd, 0xdff, x1, 84, x2)
+
+inst_32:
+// rs1_val == 4294967294, imm_val == 4079
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffffffe; immval:0xfef
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffffffe, 0xfef, x1, 88, x2)
+
+inst_33:
+// imm_val == 2047,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffffffe; immval:0x7ff
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffffffe, 0x7ff, x1, 92, x2)
+
+inst_34:
+// imm_val == 3967,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffffdf; immval:0xf7f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffffffdf, 0xf7f, x1, 96, x2)
+
+inst_35:
+// imm_val == 4031,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0xfbf
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666667, 0xfbf, x1, 100, x2)
+
+inst_36:
+// imm_val == 4063,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffbffff; immval:0xfdf
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xfffbffff, 0xfdf, x1, 104, x2)
+
+inst_37:
+// imm_val == 4091, rs1_val == 524288
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x80000; immval:0xffb
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x80000, 0xffb, x1, 108, x2)
+
+inst_38:
+// rs1_val == 2147483648,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x80000000; immval:0x200
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x80000000, 0x200, x1, 112, x2)
+
+inst_39:
+// rs1_val == 1073741824,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x40000000; immval:0x7ff
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x40000000, 0x7ff, x1, 116, x2)
+
+inst_40:
+// rs1_val == 536870912, imm_val == 2
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x20000000; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x20000000, 0x2, x1, 120, x2)
+
+inst_41:
+// rs1_val == 268435456,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000000; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000000, 0x3, x1, 124, x2)
+
+inst_42:
+// rs1_val == 134217728,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x8000000; immval:0xeff
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x8000000, 0xeff, x1, 128, x2)
+
+inst_43:
+// rs1_val == 67108864,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4000000; immval:0xe
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x4000000, 0xe, x1, 132, x2)
+
+inst_44:
+// rs1_val == 33554432,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2000000; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x2000000, 0x5, x1, 136, x2)
+
+inst_45:
+// rs1_val == 16777216, imm_val == 2048
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1000000; immval:0x800
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1000000, 0x800, x1, 140, x2)
+
+inst_46:
+// rs1_val == 8388608,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x800000; immval:0x7
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x800000, 0x7, x1, 144, x2)
+
+inst_47:
+// rs1_val == 4194304,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x400000; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x400000, 0xaab, x1, 148, x2)
+
+inst_48:
+// rs1_val == 2097152, imm_val == 1
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x200000; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x200000, 0x1, x1, 152, x2)
+
+inst_49:
+// rs1_val == 1048576,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x100000; immval:0x7ff
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x100000, 0x7ff, x1, 156, x2)
+
+inst_50:
+// rs1_val == 262144,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x40000; immval:0xff7
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x40000, 0xff7, x1, 160, x2)
+
+inst_51:
+// rs1_val == 131072, imm_val == 4
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x20000; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x20000, 0x4, x1, 164, x2)
+
+inst_52:
+// rs1_val == 65536, rs1_val==65536 and imm_val==3
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x3, x1, 168, x2)
+
+inst_53:
+// rs1_val == 32768,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x8000; immval:0xffb
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x8000, 0xffb, x1, 172, x2)
+
+inst_54:
+// rs1_val == 16384,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4000; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x4000, 0x2, x1, 176, x2)
+
+inst_55:
+// rs1_val == 8192, imm_val == 8
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2000; immval:0x8
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x2000, 0x8, x1, 180, x2)
+
+inst_56:
+// rs1_val == 4096,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1000; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x1000, 0x2d, x1, 184, x2)
+
+inst_57:
+// rs1_val == 2048,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x800; immval:0xfbf
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x800, 0xfbf, x1, 188, x2)
+
+inst_58:
+// rs1_val == 1024,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x400; immval:0x20
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x400, 0x20, x1, 192, x2)
+
+inst_59:
+// rs1_val == 512,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x200; immval:0x9
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x200, 0x9, x1, 196, x2)
+
+inst_60:
+// rs1_val == 256,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x100; immval:0x7
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x100, 0x7, x1, 200, x2)
+
+inst_61:
+// rs1_val == 128,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x80; immval:0x800
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x80, 0x800, x1, 204, x2)
+
+inst_62:
+// rs1_val == 64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x40; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x40, 0x3e, x1, 208, x2)
+
+inst_63:
+// rs1_val == 32, imm_val == 2730
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x20; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x20, 0xaaa, x1, 212, x2)
+
+inst_64:
+// rs1_val == 16,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10; immval:0xfef
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x10, 0xfef, x1, 216, x2)
+
+inst_65:
+// rs1_val == 8,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x8; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x8, 0x0, x1, 220, x2)
+
+inst_66:
+// rs1_val == 4, rs1_val==4 and imm_val==4, rs1_val == imm_val and rs1_val > 0 and imm_val > 0
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x4, 0x4, x1, 224, x2)
+
+inst_67:
+// rs1_val == 2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0xbff
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0xbff, x1, 228, x2)
+
+inst_68:
+// rs1_val == 1, rs1_val==1 and imm_val==1638
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x666, x1, 232, x2)
+
+inst_69:
+// imm_val == 1024,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x400
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x400, x1, 236, x2)
+
+inst_70:
+// imm_val == 256,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xdfffffff; immval:0x100
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xdfffffff, 0x100, x1, 240, x2)
+
+inst_71:
+// imm_val == 64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x12; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x12, 0x40, x1, 244, x2)
+
+inst_72:
+// rs1_val==65536 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x40, x1, 248, x2)
+
+inst_73:
+// rs1_val==65536 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x1, x1, 252, x2)
+
+inst_74:
+// rs1_val==65536 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x2e, x1, 256, x2)
+
+inst_75:
+// rs1_val==65536 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x667, x1, 260, x2)
+
+inst_76:
+// rs1_val==65536 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x334, x1, 264, x2)
+
+inst_77:
+// rs1_val==65536 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x6, x1, 268, x2)
+
+inst_78:
+// rs1_val==65536 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x10000, 0xaab, x1, 272, x2)
+
+inst_79:
+// rs1_val==65536 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x556, x1, 276, x2)
+
+inst_80:
+// rs1_val==65536 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x4, x1, 280, x2)
+
+inst_81:
+// rs1_val==65536 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x3e, x1, 284, x2)
+
+inst_82:
+// rs1_val==65536 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x0, x1, 288, x2)
+
+inst_83:
+// rs1_val==65536 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x2c, x1, 292, x2)
+
+inst_84:
+// rs1_val==65536 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x665, x1, 296, x2)
+
+inst_85:
+// rs1_val==65536 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x332, x1, 300, x2)
+
+inst_86:
+// rs1_val==65536 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x10000, 0xaa9, x1, 304, x2)
+
+inst_87:
+// rs1_val==65536 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x554, x1, 308, x2)
+
+inst_88:
+// rs1_val==65536 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x2, x1, 312, x2)
+
+inst_89:
+// rs1_val==65536 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x3f, x1, 316, x2)
+
+inst_90:
+// rs1_val==65536 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x2d, x1, 320, x2)
+
+inst_91:
+// rs1_val==65536 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x666, x1, 324, x2)
+
+inst_92:
+// rs1_val==65536 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x333, x1, 328, x2)
+
+inst_93:
+// rs1_val==65536 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x5, x1, 332, x2)
+
+inst_94:
+// rs1_val==65536 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x10000, 0xaaa, x1, 336, x2)
+
+inst_95:
+// rs1_val==65536 and imm_val==1365, imm_val == 1365
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x10000; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x10000, 0x555, x1, 340, x2)
+
+inst_96:
+// rs1_val==1 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x40, x1, 344, x2)
+
+inst_97:
+// rs1_val==1 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x1, 0x1, x1, 348, x2)
+
+inst_98:
+// rs1_val==1 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x2e, x1, 352, x2)
+
+inst_99:
+// rs1_val==1 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x667, x1, 356, x2)
+
+inst_100:
+// rs1_val==1 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x334, x1, 360, x2)
+
+inst_101:
+// rs1_val==1 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x6, x1, 364, x2)
+
+inst_102:
+// rs1_val==1 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0xaab, x1, 368, x2)
+
+inst_103:
+// rs1_val==1 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x556, x1, 372, x2)
+
+inst_104:
+// rs1_val==1 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x4, x1, 376, x2)
+
+inst_105:
+// rs1_val==1 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x3e, x1, 380, x2)
+
+inst_106:
+// rs1_val==1 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x1, 0x0, x1, 384, x2)
+
+inst_107:
+// rs1_val==1 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x2c, x1, 388, x2)
+
+inst_108:
+// rs1_val==1 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x665, x1, 392, x2)
+
+inst_109:
+// rs1_val==1 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x332, x1, 396, x2)
+
+inst_110:
+// rs1_val==1 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0xaa9, x1, 400, x2)
+
+inst_111:
+// rs1_val==1 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x554, x1, 404, x2)
+
+inst_112:
+// rs1_val==1 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x2, x1, 408, x2)
+
+inst_113:
+// rs1_val==1 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x3f, x1, 412, x2)
+
+inst_114:
+// rs1_val==1 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x2d, x1, 416, x2)
+
+inst_115:
+// rs1_val==1 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x333, x1, 420, x2)
+
+inst_116:
+// rs1_val==1 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x5, x1, 424, x2)
+
+inst_117:
+// rs1_val==1 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0xaaa, x1, 428, x2)
+
+inst_118:
+// rs1_val==1 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x555, x1, 432, x2)
+
+inst_119:
+// rs1_val==1 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x1; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x1, 0x3, x1, 436, x2)
+
+inst_120:
+// rs1_val==46341 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x40, x1, 440, x2)
+
+inst_121:
+// rs1_val==46341 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x1, x1, 444, x2)
+
+inst_122:
+// rs1_val==46341 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x2e, x1, 448, x2)
+
+inst_123:
+// rs1_val==46341 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x667, x1, 452, x2)
+
+inst_124:
+// rs1_val==46341 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x334, x1, 456, x2)
+
+inst_125:
+// rs1_val==46341 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x6, x1, 460, x2)
+
+inst_126:
+// rs1_val==46341 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb505, 0xaab, x1, 464, x2)
+
+inst_127:
+// rs1_val==46341 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x556, x1, 468, x2)
+
+inst_128:
+// rs1_val==46341 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x4, x1, 472, x2)
+
+inst_129:
+// rs1_val==46341 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x3e, x1, 476, x2)
+
+inst_130:
+// rs1_val==46341 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x0, x1, 480, x2)
+
+inst_131:
+// rs1_val==46341 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x2c, x1, 484, x2)
+
+inst_132:
+// rs1_val==46341 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x665, x1, 488, x2)
+
+inst_133:
+// rs1_val==46341 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x332, x1, 492, x2)
+
+inst_134:
+// rs1_val==46341 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb505, 0xaa9, x1, 496, x2)
+
+inst_135:
+// rs1_val==46341 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x554, x1, 500, x2)
+
+inst_136:
+// rs1_val==46341 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x2, x1, 504, x2)
+
+inst_137:
+// rs1_val==46341 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x3f, x1, 508, x2)
+
+inst_138:
+// rs1_val==46341 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x2d, x1, 512, x2)
+
+inst_139:
+// rs1_val==46341 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x666, x1, 516, x2)
+
+inst_140:
+// rs1_val==46341 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x333, x1, 520, x2)
+
+inst_141:
+// rs1_val==46341 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x5, x1, 524, x2)
+
+inst_142:
+// rs1_val==46341 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb505, 0xaaa, x1, 528, x2)
+
+inst_143:
+// rs1_val==46341 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x555, x1, 532, x2)
+
+inst_144:
+// rs1_val==46341 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb505; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb505, 0x3, x1, 536, x2)
+
+inst_145:
+// rs1_val==1717986919 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x40, x1, 540, x2)
+
+inst_146:
+// rs1_val==1717986919 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x1, x1, 544, x2)
+
+inst_147:
+// rs1_val==1717986919 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x2e, x1, 548, x2)
+
+inst_148:
+// rs1_val==1717986919 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x667, x1, 552, x2)
+
+inst_149:
+// rs1_val==1717986919 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x334, x1, 556, x2)
+
+inst_150:
+// rs1_val==1717986919 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x6, x1, 560, x2)
+
+inst_151:
+// rs1_val==1717986919 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666667, 0xaab, x1, 564, x2)
+
+inst_152:
+// rs1_val==1717986919 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x556, x1, 568, x2)
+
+inst_153:
+// rs1_val==1717986919 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x4, x1, 572, x2)
+
+inst_154:
+// rs1_val==1717986919 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x3e, x1, 576, x2)
+
+inst_155:
+// rs1_val==1717986919 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x0, x1, 580, x2)
+
+inst_156:
+// rs1_val==1717986919 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x2c, x1, 584, x2)
+
+inst_157:
+// rs1_val==1717986919 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x665, x1, 588, x2)
+
+inst_158:
+// rs1_val==1717986919 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x332, x1, 592, x2)
+
+inst_159:
+// rs1_val==1717986919 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666667, 0xaa9, x1, 596, x2)
+
+inst_160:
+// rs1_val==1717986919 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x554, x1, 600, x2)
+
+inst_161:
+// rs1_val==1717986919 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x2, x1, 604, x2)
+
+inst_162:
+// rs1_val==1717986919 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x3f, x1, 608, x2)
+
+inst_163:
+// rs1_val==1717986919 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x2d, x1, 612, x2)
+
+inst_164:
+// rs1_val==1717986919 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x666, x1, 616, x2)
+
+inst_165:
+// rs1_val==1717986919 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x333, x1, 620, x2)
+
+inst_166:
+// rs1_val==1717986919 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x5, x1, 624, x2)
+
+inst_167:
+// rs1_val==1717986919 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666667, 0xaaa, x1, 628, x2)
+
+inst_168:
+// rs1_val==1717986919 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x555, x1, 632, x2)
+
+inst_169:
+// rs1_val==1717986919 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666667; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666667, 0x3, x1, 636, x2)
+
+inst_170:
+// rs1_val==858993460 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x40, x1, 640, x2)
+
+inst_171:
+// rs1_val==858993460 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x1, x1, 644, x2)
+
+inst_172:
+// rs1_val==858993460 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x2e, x1, 648, x2)
+
+inst_173:
+// rs1_val==858993460 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x667, x1, 652, x2)
+
+inst_174:
+// rs1_val==858993460 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x334, x1, 656, x2)
+
+inst_175:
+// rs1_val==858993460 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x6, x1, 660, x2)
+
+inst_176:
+// rs1_val==858993460 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333334, 0xaab, x1, 664, x2)
+
+inst_177:
+// rs1_val==858993460 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x556, x1, 668, x2)
+
+inst_178:
+// rs1_val==858993460 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x4, x1, 672, x2)
+
+inst_179:
+// rs1_val==858993460 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x3e, x1, 676, x2)
+
+inst_180:
+// rs1_val==858993460 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x0, x1, 680, x2)
+
+inst_181:
+// rs1_val==858993460 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x2c, x1, 684, x2)
+
+inst_182:
+// rs1_val==858993460 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x665, x1, 688, x2)
+
+inst_183:
+// rs1_val==858993460 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x332, x1, 692, x2)
+
+inst_184:
+// rs1_val==858993460 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333334, 0xaa9, x1, 696, x2)
+
+inst_185:
+// rs1_val==858993460 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x554, x1, 700, x2)
+
+inst_186:
+// rs1_val==858993460 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x2, x1, 704, x2)
+
+inst_187:
+// rs1_val==858993460 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x3f, x1, 708, x2)
+
+inst_188:
+// rs1_val==858993460 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x2d, x1, 712, x2)
+
+inst_189:
+// rs1_val==858993460 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x666, x1, 716, x2)
+
+inst_190:
+// rs1_val==858993460 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x333, x1, 720, x2)
+
+inst_191:
+// rs1_val==858993460 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x5, x1, 724, x2)
+
+inst_192:
+// rs1_val==858993460 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333334, 0xaaa, x1, 728, x2)
+
+inst_193:
+// rs1_val==858993460 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x555, x1, 732, x2)
+
+inst_194:
+// rs1_val==858993460 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333334; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333334, 0x3, x1, 736, x2)
+
+inst_195:
+// rs1_val==6 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x40, x1, 740, x2)
+
+inst_196:
+// rs1_val==6 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x6, 0x1, x1, 744, x2)
+
+inst_197:
+// rs1_val==6 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x2e, x1, 748, x2)
+
+inst_198:
+// rs1_val==6 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x667, x1, 752, x2)
+
+inst_199:
+// rs1_val==6 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x334, x1, 756, x2)
+
+inst_200:
+// rs1_val==6 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x6, 0x6, x1, 760, x2)
+
+inst_201:
+// rs1_val==6 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0xaab, x1, 764, x2)
+
+inst_202:
+// rs1_val==6 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x556, x1, 768, x2)
+
+inst_203:
+// rs1_val==6 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x6, 0x4, x1, 772, x2)
+
+inst_204:
+// rs1_val==6 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x3e, x1, 776, x2)
+
+inst_205:
+// rs1_val==6 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x6, 0x0, x1, 780, x2)
+
+inst_206:
+// rs1_val==6 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x2c, x1, 784, x2)
+
+inst_207:
+// rs1_val==6 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x665, x1, 788, x2)
+
+inst_208:
+// rs1_val==6 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x332, x1, 792, x2)
+
+inst_209:
+// rs1_val==6 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0xaa9, x1, 796, x2)
+
+inst_210:
+// rs1_val==6 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x554, x1, 800, x2)
+
+inst_211:
+// rs1_val==6 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x6, 0x2, x1, 804, x2)
+
+inst_212:
+// rs1_val==6 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x3f, x1, 808, x2)
+
+inst_213:
+// rs1_val==6 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x2d, x1, 812, x2)
+
+inst_214:
+// rs1_val==6 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x666, x1, 816, x2)
+
+inst_215:
+// rs1_val==6 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x333, x1, 820, x2)
+
+inst_216:
+// rs1_val==6 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x6, 0x5, x1, 824, x2)
+
+inst_217:
+// rs1_val==6 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0xaaa, x1, 828, x2)
+
+inst_218:
+// rs1_val==6 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x6, 0x555, x1, 832, x2)
+
+inst_219:
+// rs1_val==6 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x6; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x6, 0x3, x1, 836, x2)
+
+inst_220:
+// rs1_val==2863311531 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x40, x1, 840, x2)
+
+inst_221:
+// rs1_val==2863311531 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x1, x1, 844, x2)
+
+inst_222:
+// rs1_val==2863311531 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x2e, x1, 848, x2)
+
+inst_223:
+// rs1_val==2863311531 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x667, x1, 852, x2)
+
+inst_224:
+// rs1_val==2863311531 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x334, x1, 856, x2)
+
+inst_225:
+// rs1_val==2863311531 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x6, x1, 860, x2)
+
+inst_226:
+// rs1_val==2863311531 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaab, 0xaab, x1, 864, x2)
+
+inst_227:
+// rs1_val==2863311531 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x556, x1, 868, x2)
+
+inst_228:
+// rs1_val==2863311531 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x4, x1, 872, x2)
+
+inst_229:
+// rs1_val==2863311531 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x3e, x1, 876, x2)
+
+inst_230:
+// rs1_val==2863311531 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x0, x1, 880, x2)
+
+inst_231:
+// rs1_val==2863311531 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x2c, x1, 884, x2)
+
+inst_232:
+// rs1_val==2863311531 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x665, x1, 888, x2)
+
+inst_233:
+// rs1_val==2863311531 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x332, x1, 892, x2)
+
+inst_234:
+// rs1_val==2863311531 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaab, 0xaa9, x1, 896, x2)
+
+inst_235:
+// rs1_val==2863311531 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x554, x1, 900, x2)
+
+inst_236:
+// rs1_val==2863311531 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x2, x1, 904, x2)
+
+inst_237:
+// rs1_val==2863311531 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x3f, x1, 908, x2)
+
+inst_238:
+// rs1_val==2863311531 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x2d, x1, 912, x2)
+
+inst_239:
+// rs1_val==2863311531 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x666, x1, 916, x2)
+
+inst_240:
+// rs1_val==2863311531 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x333, x1, 920, x2)
+
+inst_241:
+// rs1_val==2863311531 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x5, x1, 924, x2)
+
+inst_242:
+// rs1_val==2863311531 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaab, 0xaaa, x1, 928, x2)
+
+inst_243:
+// rs1_val==2863311531 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x555, x1, 932, x2)
+
+inst_244:
+// rs1_val==2863311531 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaab; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaab, 0x3, x1, 936, x2)
+
+inst_245:
+// rs1_val==1431655766 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x40, x1, 940, x2)
+
+inst_246:
+// rs1_val==1431655766 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x1, x1, 944, x2)
+
+inst_247:
+// rs1_val==1431655766 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x2e, x1, 948, x2)
+
+inst_248:
+// rs1_val==1431655766 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x667, x1, 952, x2)
+
+inst_249:
+// rs1_val==1431655766 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x334, x1, 956, x2)
+
+inst_250:
+// rs1_val==1431655766 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x6, x1, 960, x2)
+
+inst_251:
+// rs1_val==1431655766 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555556, 0xaab, x1, 964, x2)
+
+inst_252:
+// rs1_val==1431655766 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x556, x1, 968, x2)
+
+inst_253:
+// rs1_val==1431655766 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x4, x1, 972, x2)
+
+inst_254:
+// rs1_val==1431655766 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x3e, x1, 976, x2)
+
+inst_255:
+// rs1_val==1431655766 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x0, x1, 980, x2)
+
+inst_256:
+// rs1_val==1431655766 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x2c, x1, 984, x2)
+
+inst_257:
+// rs1_val==1431655766 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x665, x1, 988, x2)
+
+inst_258:
+// rs1_val==1431655766 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x332, x1, 992, x2)
+
+inst_259:
+// rs1_val==1431655766 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555556, 0xaa9, x1, 996, x2)
+
+inst_260:
+// rs1_val==1431655766 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x554, x1, 1000, x2)
+
+inst_261:
+// rs1_val==1431655766 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x2, x1, 1004, x2)
+
+inst_262:
+// rs1_val==1431655766 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x3f, x1, 1008, x2)
+
+inst_263:
+// rs1_val==1431655766 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x2d, x1, 1012, x2)
+
+inst_264:
+// rs1_val==1431655766 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x666, x1, 1016, x2)
+
+inst_265:
+// rs1_val==1431655766 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x333, x1, 1020, x2)
+
+inst_266:
+// rs1_val==1431655766 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x5, x1, 1024, x2)
+
+inst_267:
+// rs1_val==1431655766 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555556, 0xaaa, x1, 1028, x2)
+
+inst_268:
+// rs1_val==1431655766 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x555, x1, 1032, x2)
+
+inst_269:
+// rs1_val==1431655766 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555556; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555556, 0x3, x1, 1036, x2)
+
+inst_270:
+// rs1_val==4 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x40, x1, 1040, x2)
+
+inst_271:
+// rs1_val==4 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x4, 0x1, x1, 1044, x2)
+
+inst_272:
+// rs1_val==4 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x2e, x1, 1048, x2)
+
+inst_273:
+// rs1_val==4 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x667, x1, 1052, x2)
+
+inst_274:
+// rs1_val==4 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x334, x1, 1056, x2)
+
+inst_275:
+// rs1_val==4 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x6, x1, 1060, x2)
+
+inst_276:
+// rs1_val==4 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0xaab, x1, 1064, x2)
+
+inst_277:
+// rs1_val==4 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x556, x1, 1068, x2)
+
+inst_278:
+// rs1_val==4 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x3e, x1, 1072, x2)
+
+inst_279:
+// rs1_val==4 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x4, 0x0, x1, 1076, x2)
+
+inst_280:
+// rs1_val==4 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x2c, x1, 1080, x2)
+
+inst_281:
+// rs1_val==4 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x665, x1, 1084, x2)
+
+inst_282:
+// rs1_val==4 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x332, x1, 1088, x2)
+
+inst_283:
+// rs1_val==4 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0xaa9, x1, 1092, x2)
+
+inst_284:
+// rs1_val==4 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x554, x1, 1096, x2)
+
+inst_285:
+// rs1_val==4 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x4, 0x2, x1, 1100, x2)
+
+inst_286:
+// rs1_val==4 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x3f, x1, 1104, x2)
+
+inst_287:
+// rs1_val==4 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x2d, x1, 1108, x2)
+
+inst_288:
+// rs1_val==4 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x666, x1, 1112, x2)
+
+inst_289:
+// rs1_val==4 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x333, x1, 1116, x2)
+
+inst_290:
+// rs1_val==4 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x5, x1, 1120, x2)
+
+inst_291:
+// rs1_val==4 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0xaaa, x1, 1124, x2)
+
+inst_292:
+// rs1_val==4 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x4, 0x555, x1, 1128, x2)
+
+inst_293:
+// rs1_val==4 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x4; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x4, 0x3, x1, 1132, x2)
+
+inst_294:
+// rs1_val==65534 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x40, x1, 1136, x2)
+
+inst_295:
+// rs1_val==65534 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x1, x1, 1140, x2)
+
+inst_296:
+// rs1_val==65534 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x2e, x1, 1144, x2)
+
+inst_297:
+// rs1_val==65534 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x667, x1, 1148, x2)
+
+inst_298:
+// rs1_val==65534 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x334, x1, 1152, x2)
+
+inst_299:
+// rs1_val==65534 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x6, x1, 1156, x2)
+
+inst_300:
+// rs1_val==65534 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xfffe, 0xaab, x1, 1160, x2)
+
+inst_301:
+// rs1_val==65534 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x556, x1, 1164, x2)
+
+inst_302:
+// rs1_val==65534 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x4, x1, 1168, x2)
+
+inst_303:
+// rs1_val==65534 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x3e, x1, 1172, x2)
+
+inst_304:
+// rs1_val==65534 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x0, x1, 1176, x2)
+
+inst_305:
+// rs1_val==65534 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x2c, x1, 1180, x2)
+
+inst_306:
+// rs1_val==65534 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x665, x1, 1184, x2)
+
+inst_307:
+// rs1_val==65534 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x332, x1, 1188, x2)
+
+inst_308:
+// rs1_val==65534 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xfffe, 0xaa9, x1, 1192, x2)
+
+inst_309:
+// rs1_val==65534 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x554, x1, 1196, x2)
+
+inst_310:
+// rs1_val==65534 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x2, x1, 1200, x2)
+
+inst_311:
+// rs1_val==65534 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x3f, x1, 1204, x2)
+
+inst_312:
+// rs1_val==65534 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x2d, x1, 1208, x2)
+
+inst_313:
+// rs1_val==65534 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x666, x1, 1212, x2)
+
+inst_314:
+// rs1_val==65534 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x333, x1, 1216, x2)
+
+inst_315:
+// rs1_val==65534 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x5, x1, 1220, x2)
+
+inst_316:
+// rs1_val==65534 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xfffe, 0xaaa, x1, 1224, x2)
+
+inst_317:
+// rs1_val==65534 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x555, x1, 1228, x2)
+
+inst_318:
+// rs1_val==65534 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfffe; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfffe, 0x3, x1, 1232, x2)
+
+inst_319:
+// rs1_val==0 and imm_val==64, rs1_val == 0
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x40, x1, 1236, x2)
+
+inst_320:
+// rs1_val==0 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x1, x1, 1240, x2)
+
+inst_321:
+// rs1_val==0 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x2e, x1, 1244, x2)
+
+inst_322:
+// rs1_val==0 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x667, x1, 1248, x2)
+
+inst_323:
+// rs1_val==0 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x334, x1, 1252, x2)
+
+inst_324:
+// rs1_val==0 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x6, x1, 1256, x2)
+
+inst_325:
+// rs1_val==0 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0xaab, x1, 1260, x2)
+
+inst_326:
+// rs1_val==0 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x556, x1, 1264, x2)
+
+inst_327:
+// rs1_val==0 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x4, x1, 1268, x2)
+
+inst_328:
+// rs1_val==0 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x3e, x1, 1272, x2)
+
+inst_329:
+// rs1_val==0 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x0, 0x0, x1, 1276, x2)
+
+inst_330:
+// rs1_val==0 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x2c, x1, 1280, x2)
+
+inst_331:
+// rs1_val==0 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x665, x1, 1284, x2)
+
+inst_332:
+// rs1_val==0 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x332, x1, 1288, x2)
+
+inst_333:
+// rs1_val==0 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0xaa9, x1, 1292, x2)
+
+inst_334:
+// rs1_val==0 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x554, x1, 1296, x2)
+
+inst_335:
+// rs1_val==0 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x2, x1, 1300, x2)
+
+inst_336:
+// rs1_val==0 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x3f, x1, 1304, x2)
+
+inst_337:
+// rs1_val==0 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x2d, x1, 1308, x2)
+
+inst_338:
+// rs1_val==0 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x666, x1, 1312, x2)
+
+inst_339:
+// rs1_val==0 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x333, x1, 1316, x2)
+
+inst_340:
+// rs1_val==0 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x5, x1, 1320, x2)
+
+inst_341:
+// rs1_val==0 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0xaaa, x1, 1324, x2)
+
+inst_342:
+// rs1_val==0 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x555, x1, 1328, x2)
+
+inst_343:
+// rs1_val==0 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x0; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x0, 0x3, x1, 1332, x2)
+
+inst_344:
+// rs1_val==46339 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x40, x1, 1336, x2)
+
+inst_345:
+// rs1_val==46339 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x1, x1, 1340, x2)
+
+inst_346:
+// rs1_val==46339 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x2e, x1, 1344, x2)
+
+inst_347:
+// rs1_val==46339 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x667, x1, 1348, x2)
+
+inst_348:
+// rs1_val==46339 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x334, x1, 1352, x2)
+
+inst_349:
+// rs1_val==46339 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x6, x1, 1356, x2)
+
+inst_350:
+// rs1_val==46339 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb503, 0xaab, x1, 1360, x2)
+
+inst_351:
+// rs1_val==46339 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x556, x1, 1364, x2)
+
+inst_352:
+// rs1_val==46339 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x4, x1, 1368, x2)
+
+inst_353:
+// rs1_val==46339 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x3e, x1, 1372, x2)
+
+inst_354:
+// rs1_val==46339 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x0, x1, 1376, x2)
+
+inst_355:
+// rs1_val==46339 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x2c, x1, 1380, x2)
+
+inst_356:
+// rs1_val==46339 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x665, x1, 1384, x2)
+
+inst_357:
+// rs1_val==46339 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x332, x1, 1388, x2)
+
+inst_358:
+// rs1_val==46339 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb503, 0xaa9, x1, 1392, x2)
+
+inst_359:
+// rs1_val==46339 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x554, x1, 1396, x2)
+
+inst_360:
+// rs1_val==46339 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x2, x1, 1400, x2)
+
+inst_361:
+// rs1_val==46339 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x3f, x1, 1404, x2)
+
+inst_362:
+// rs1_val==46339 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x2d, x1, 1408, x2)
+
+inst_363:
+// rs1_val==46339 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x666, x1, 1412, x2)
+
+inst_364:
+// rs1_val==46339 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x333, x1, 1416, x2)
+
+inst_365:
+// rs1_val==46339 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x5, x1, 1420, x2)
+
+inst_366:
+// rs1_val==46339 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb503, 0xaaa, x1, 1424, x2)
+
+inst_367:
+// rs1_val==46339 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x555, x1, 1428, x2)
+
+inst_368:
+// rs1_val==46339 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb503; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb503, 0x3, x1, 1432, x2)
+
+inst_369:
+// rs1_val==1717986917 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x40, x1, 1436, x2)
+
+inst_370:
+// rs1_val==1717986917 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x1, x1, 1440, x2)
+
+inst_371:
+// rs1_val==1717986917 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x2e, x1, 1444, x2)
+
+inst_372:
+// rs1_val==1717986917 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x667, x1, 1448, x2)
+
+inst_373:
+// rs1_val==1717986917 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x334, x1, 1452, x2)
+
+inst_374:
+// rs1_val==1717986917 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x6, x1, 1456, x2)
+
+inst_375:
+// rs1_val==1717986917 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666665, 0xaab, x1, 1460, x2)
+
+inst_376:
+// rs1_val==1717986917 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x556, x1, 1464, x2)
+
+inst_377:
+// rs1_val==1717986917 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x4, x1, 1468, x2)
+
+inst_378:
+// rs1_val==1717986917 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x3e, x1, 1472, x2)
+
+inst_379:
+// rs1_val==1717986917 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x0, x1, 1476, x2)
+
+inst_380:
+// rs1_val==1717986917 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x2c, x1, 1480, x2)
+
+inst_381:
+// rs1_val==1717986917 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x665, x1, 1484, x2)
+
+inst_382:
+// rs1_val==1717986917 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x332, x1, 1488, x2)
+
+inst_383:
+// rs1_val==1717986917 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666665, 0xaa9, x1, 1492, x2)
+
+inst_384:
+// rs1_val==1717986917 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x554, x1, 1496, x2)
+
+inst_385:
+// rs1_val==1717986917 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x2, x1, 1500, x2)
+
+inst_386:
+// rs1_val==1717986917 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x3f, x1, 1504, x2)
+
+inst_387:
+// rs1_val==1717986917 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x2d, x1, 1508, x2)
+
+inst_388:
+// rs1_val==1717986917 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x666, x1, 1512, x2)
+
+inst_389:
+// rs1_val==1717986917 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x333, x1, 1516, x2)
+
+inst_390:
+// rs1_val==1717986917 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x5, x1, 1520, x2)
+
+inst_391:
+// rs1_val==1717986917 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666665, 0xaaa, x1, 1524, x2)
+
+inst_392:
+// rs1_val==1717986917 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x555, x1, 1528, x2)
+
+inst_393:
+// rs1_val==1717986917 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666665; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666665, 0x3, x1, 1532, x2)
+
+inst_394:
+// rs1_val==858993458 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x40, x1, 1536, x2)
+
+inst_395:
+// rs1_val==858993458 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x1, x1, 1540, x2)
+
+inst_396:
+// rs1_val==858993458 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x2e, x1, 1544, x2)
+
+inst_397:
+// rs1_val==858993458 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x667, x1, 1548, x2)
+
+inst_398:
+// rs1_val==858993458 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x334, x1, 1552, x2)
+
+inst_399:
+// rs1_val==858993458 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x6, x1, 1556, x2)
+
+inst_400:
+// rs1_val==858993458 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333332, 0xaab, x1, 1560, x2)
+
+inst_401:
+// rs1_val==858993458 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x556, x1, 1564, x2)
+
+inst_402:
+// rs1_val==858993458 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x4, x1, 1568, x2)
+
+inst_403:
+// rs1_val==858993458 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x3e, x1, 1572, x2)
+
+inst_404:
+// rs1_val==858993458 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x0, x1, 1576, x2)
+
+inst_405:
+// rs1_val==858993458 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x2c, x1, 1580, x2)
+
+inst_406:
+// rs1_val==858993458 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x665, x1, 1584, x2)
+
+inst_407:
+// rs1_val==858993458 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x332, x1, 1588, x2)
+
+inst_408:
+// rs1_val==858993458 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333332, 0xaa9, x1, 1592, x2)
+
+inst_409:
+// rs1_val==858993458 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x554, x1, 1596, x2)
+
+inst_410:
+// rs1_val==858993458 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x2, x1, 1600, x2)
+
+inst_411:
+// rs1_val==858993458 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x3f, x1, 1604, x2)
+
+inst_412:
+// rs1_val==858993458 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x2d, x1, 1608, x2)
+
+inst_413:
+// rs1_val==858993458 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x666, x1, 1612, x2)
+
+inst_414:
+// rs1_val==858993458 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x333, x1, 1616, x2)
+
+inst_415:
+// rs1_val==858993458 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x5, x1, 1620, x2)
+
+inst_416:
+// rs1_val==858993458 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333332, 0xaaa, x1, 1624, x2)
+
+inst_417:
+// rs1_val==858993458 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x555, x1, 1628, x2)
+
+inst_418:
+// rs1_val==858993458 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333332; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333332, 0x3, x1, 1632, x2)
+
+inst_419:
+// rs1_val==2863311529 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x40, x1, 1636, x2)
+
+inst_420:
+// rs1_val==2863311529 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x1, x1, 1640, x2)
+
+inst_421:
+// rs1_val==2863311529 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x2e, x1, 1644, x2)
+
+inst_422:
+// rs1_val==2863311529 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x667, x1, 1648, x2)
+
+inst_423:
+// rs1_val==2863311529 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x334, x1, 1652, x2)
+
+inst_424:
+// rs1_val==2863311529 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x6, x1, 1656, x2)
+
+inst_425:
+// rs1_val==2863311529 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaa9, 0xaab, x1, 1660, x2)
+
+inst_426:
+// rs1_val==2863311529 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x556, x1, 1664, x2)
+
+inst_427:
+// rs1_val==2863311529 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x4, x1, 1668, x2)
+
+inst_428:
+// rs1_val==2863311529 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x3e, x1, 1672, x2)
+
+inst_429:
+// rs1_val==2863311529 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x0, x1, 1676, x2)
+
+inst_430:
+// rs1_val==2863311529 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x2c, x1, 1680, x2)
+
+inst_431:
+// rs1_val==2863311529 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x665, x1, 1684, x2)
+
+inst_432:
+// rs1_val==2863311529 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x332, x1, 1688, x2)
+
+inst_433:
+// rs1_val==2863311529 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaa9, 0xaa9, x1, 1692, x2)
+
+inst_434:
+// rs1_val==2863311529 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x554, x1, 1696, x2)
+
+inst_435:
+// rs1_val==2863311529 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x2, x1, 1700, x2)
+
+inst_436:
+// rs1_val==2863311529 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x3f, x1, 1704, x2)
+
+inst_437:
+// rs1_val==2863311529 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x2d, x1, 1708, x2)
+
+inst_438:
+// rs1_val==2863311529 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x666, x1, 1712, x2)
+
+inst_439:
+// rs1_val==2863311529 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x333, x1, 1716, x2)
+
+inst_440:
+// rs1_val==2863311529 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x5, x1, 1720, x2)
+
+inst_441:
+// rs1_val==2863311529 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaa9, 0xaaa, x1, 1724, x2)
+
+inst_442:
+// rs1_val==2 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x555, x1, 1728, x2)
+
+inst_443:
+// rs1_val==2 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x3, x1, 1732, x2)
+
+inst_444:
+// rs1_val==65535 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x40, x1, 1736, x2)
+
+inst_445:
+// rs1_val==65535 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x1, x1, 1740, x2)
+
+inst_446:
+// rs1_val==65535 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x2e, x1, 1744, x2)
+
+inst_447:
+// rs1_val==65535 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x667, x1, 1748, x2)
+
+inst_448:
+// rs1_val==65535 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x334, x1, 1752, x2)
+
+inst_449:
+// rs1_val==65535 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x6, x1, 1756, x2)
+
+inst_450:
+// rs1_val==65535 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xffff, 0xaab, x1, 1760, x2)
+
+inst_451:
+// rs1_val==65535 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x556, x1, 1764, x2)
+
+inst_452:
+// rs1_val==65535 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x4, x1, 1768, x2)
+
+inst_453:
+// rs1_val==65535 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x3e, x1, 1772, x2)
+
+inst_454:
+// rs1_val==65535 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x0, x1, 1776, x2)
+
+inst_455:
+// rs1_val==65535 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x2c, x1, 1780, x2)
+
+inst_456:
+// rs1_val==65535 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x665, x1, 1784, x2)
+
+inst_457:
+// rs1_val==65535 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x332, x1, 1788, x2)
+
+inst_458:
+// rs1_val==65535 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xffff, 0xaa9, x1, 1792, x2)
+
+inst_459:
+// rs1_val==65535 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x554, x1, 1796, x2)
+
+inst_460:
+// rs1_val==65535 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x2, x1, 1800, x2)
+
+inst_461:
+// rs1_val==65535 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x3f, x1, 1804, x2)
+
+inst_462:
+// rs1_val==65535 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x2d, x1, 1808, x2)
+
+inst_463:
+// rs1_val==65535 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x666, x1, 1812, x2)
+
+inst_464:
+// rs1_val==65535 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x333, x1, 1816, x2)
+
+inst_465:
+// rs1_val==65535 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x5, x1, 1820, x2)
+
+inst_466:
+// rs1_val==65535 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xffff, 0xaaa, x1, 1824, x2)
+
+inst_467:
+// rs1_val==65535 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x555, x1, 1828, x2)
+
+inst_468:
+// rs1_val==65535 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffff; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffff, 0x3, x1, 1832, x2)
+
+inst_469:
+// rs1_val==46340 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x40, x1, 1836, x2)
+
+inst_470:
+// rs1_val==46340 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x1, x1, 1840, x2)
+
+inst_471:
+// rs1_val==46340 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x2e, x1, 1844, x2)
+
+inst_472:
+// rs1_val==46340 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x667, x1, 1848, x2)
+
+inst_473:
+// rs1_val==46340 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x334, x1, 1852, x2)
+
+inst_474:
+// rs1_val==46340 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x6, x1, 1856, x2)
+
+inst_475:
+// rs1_val==46340 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb504, 0xaab, x1, 1860, x2)
+
+inst_476:
+// rs1_val==46340 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x556, x1, 1864, x2)
+
+inst_477:
+// rs1_val==46340 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x4, x1, 1868, x2)
+
+inst_478:
+// rs1_val==46340 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x3e, x1, 1872, x2)
+
+inst_479:
+// rs1_val==46340 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x0, x1, 1876, x2)
+
+inst_480:
+// rs1_val==46340 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x2c, x1, 1880, x2)
+
+inst_481:
+// rs1_val==46340 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x665, x1, 1884, x2)
+
+inst_482:
+// rs1_val==46340 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x332, x1, 1888, x2)
+
+inst_483:
+// rs1_val==46340 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb504, 0xaa9, x1, 1892, x2)
+
+inst_484:
+// rs1_val==46340 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x554, x1, 1896, x2)
+
+inst_485:
+// rs1_val==46340 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x2, x1, 1900, x2)
+
+inst_486:
+// rs1_val==46340 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x3f, x1, 1904, x2)
+
+inst_487:
+// rs1_val==46340 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x2d, x1, 1908, x2)
+
+inst_488:
+// rs1_val==46340 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x666, x1, 1912, x2)
+
+inst_489:
+// rs1_val==46340 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x333, x1, 1916, x2)
+
+inst_490:
+// rs1_val==46340 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x5, x1, 1920, x2)
+
+inst_491:
+// rs1_val==46340 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xb504, 0xaaa, x1, 1924, x2)
+
+inst_492:
+// rs1_val==46340 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x555, x1, 1928, x2)
+
+inst_493:
+// rs1_val==46340 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xb504; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xb504, 0x3, x1, 1932, x2)
+
+inst_494:
+// rs1_val==1717986918 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x40, x1, 1936, x2)
+
+inst_495:
+// rs1_val==1717986918 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x1, x1, 1940, x2)
+
+inst_496:
+// rs1_val==1717986918 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x2e, x1, 1944, x2)
+
+inst_497:
+// rs1_val==1717986918 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x667, x1, 1948, x2)
+
+inst_498:
+// rs1_val==1717986918 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x334, x1, 1952, x2)
+
+inst_499:
+// rs1_val==1717986918 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x6, x1, 1956, x2)
+
+inst_500:
+// rs1_val==1717986918 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666666, 0xaab, x1, 1960, x2)
+
+inst_501:
+// rs1_val==1717986918 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x556, x1, 1964, x2)
+
+inst_502:
+// rs1_val==1717986918 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x4, x1, 1968, x2)
+
+inst_503:
+// rs1_val==1717986918 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x3e, x1, 1972, x2)
+
+inst_504:
+// rs1_val==1717986918 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x0, x1, 1976, x2)
+
+inst_505:
+// rs1_val==1717986918 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x2c, x1, 1980, x2)
+
+inst_506:
+// rs1_val==1717986918 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x665, x1, 1984, x2)
+
+inst_507:
+// rs1_val==1717986918 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x332, x1, 1988, x2)
+
+inst_508:
+// rs1_val==1717986918 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666666, 0xaa9, x1, 1992, x2)
+
+inst_509:
+// rs1_val==1717986918 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x554, x1, 1996, x2)
+
+inst_510:
+// rs1_val==1717986918 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x2, x1, 2000, x2)
+
+inst_511:
+// rs1_val==1717986918 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x3f, x1, 2004, x2)
+
+inst_512:
+// rs1_val==1717986918 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x2d, x1, 2008, x2)
+
+inst_513:
+// rs1_val==1717986918 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x666, x1, 2012, x2)
+
+inst_514:
+// rs1_val==1717986918 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x333, x1, 2016, x2)
+
+inst_515:
+// rs1_val==1717986918 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x5, x1, 2020, x2)
+
+inst_516:
+// rs1_val==1717986918 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x66666666, 0xaaa, x1, 2024, x2)
+
+inst_517:
+// rs1_val==1717986918 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x555, x1, 2028, x2)
+
+inst_518:
+// rs1_val==1717986918 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x66666666; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x66666666, 0x3, x1, 2032, x2)
+
+inst_519:
+// rs1_val==858993459 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x40, x1, 2036, x2)
+
+inst_520:
+// rs1_val==858993459 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x1, x1, 2040, x2)
+
+inst_521:
+// rs1_val==858993459 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x2e, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_522:
+// rs1_val==858993459 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x667, x1, 0, x2)
+
+inst_523:
+// rs1_val==858993459 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x334, x1, 4, x2)
+
+inst_524:
+// rs1_val==858993459 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x6, x1, 8, x2)
+
+inst_525:
+// rs1_val==858993459 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333333, 0xaab, x1, 12, x2)
+
+inst_526:
+// rs1_val==858993459 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x556, x1, 16, x2)
+
+inst_527:
+// rs1_val==858993459 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x4, x1, 20, x2)
+
+inst_528:
+// rs1_val==858993459 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x3e, x1, 24, x2)
+
+inst_529:
+// rs1_val==858993459 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x0, x1, 28, x2)
+
+inst_530:
+// rs1_val==858993459 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x2c, x1, 32, x2)
+
+inst_531:
+// rs1_val==858993459 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x665, x1, 36, x2)
+
+inst_532:
+// rs1_val==858993459 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x332, x1, 40, x2)
+
+inst_533:
+// rs1_val==858993459 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333333, 0xaa9, x1, 44, x2)
+
+inst_534:
+// rs1_val==858993459 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x554, x1, 48, x2)
+
+inst_535:
+// rs1_val==858993459 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x2, x1, 52, x2)
+
+inst_536:
+// rs1_val==858993459 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x3f, x1, 56, x2)
+
+inst_537:
+// rs1_val==858993459 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x2d, x1, 60, x2)
+
+inst_538:
+// rs1_val==858993459 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x666, x1, 64, x2)
+
+inst_539:
+// rs1_val==858993459 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x333, x1, 68, x2)
+
+inst_540:
+// rs1_val==858993459 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x5, x1, 72, x2)
+
+inst_541:
+// rs1_val==858993459 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x33333333, 0xaaa, x1, 76, x2)
+
+inst_542:
+// rs1_val==858993459 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x555, x1, 80, x2)
+
+inst_543:
+// rs1_val==858993459 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x33333333; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x33333333, 0x3, x1, 84, x2)
+
+inst_544:
+// rs1_val==5 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x40, x1, 88, x2)
+
+inst_545:
+// rs1_val==5 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x5, 0x1, x1, 92, x2)
+
+inst_546:
+// rs1_val==5 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x2e, x1, 96, x2)
+
+inst_547:
+// rs1_val==5 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x667, x1, 100, x2)
+
+inst_548:
+// rs1_val==5 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x334, x1, 104, x2)
+
+inst_549:
+// rs1_val==5 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x6, x1, 108, x2)
+
+inst_550:
+// rs1_val==5 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0xaab, x1, 112, x2)
+
+inst_551:
+// rs1_val==5 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x556, x1, 116, x2)
+
+inst_552:
+// rs1_val==5 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x5, 0x4, x1, 120, x2)
+
+inst_553:
+// rs1_val==5 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x3e, x1, 124, x2)
+
+inst_554:
+// rs1_val==5 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x5, 0x0, x1, 128, x2)
+
+inst_555:
+// rs1_val==5 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x2c, x1, 132, x2)
+
+inst_556:
+// rs1_val==5 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x665, x1, 136, x2)
+
+inst_557:
+// rs1_val==5 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x332, x1, 140, x2)
+
+inst_558:
+// rs1_val==5 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0xaa9, x1, 144, x2)
+
+inst_559:
+// rs1_val==5 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x554, x1, 148, x2)
+
+inst_560:
+// rs1_val==5 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x5, 0x2, x1, 152, x2)
+
+inst_561:
+// rs1_val==5 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x3f, x1, 156, x2)
+
+inst_562:
+// rs1_val==5 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x2d, x1, 160, x2)
+
+inst_563:
+// rs1_val==5 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x666, x1, 164, x2)
+
+inst_564:
+// rs1_val==5 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x333, x1, 168, x2)
+
+inst_565:
+// rs1_val==5 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x5, 0x5, x1, 172, x2)
+
+inst_566:
+// rs1_val==5 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0xaaa, x1, 176, x2)
+
+inst_567:
+// rs1_val==5 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x5, 0x555, x1, 180, x2)
+
+inst_568:
+// rs1_val==5 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x5; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x5, 0x3, x1, 184, x2)
+
+inst_569:
+// rs1_val==2863311530 and imm_val==64, rs1_val == 2863311530
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x40, x1, 188, x2)
+
+inst_570:
+// rs1_val==2 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0xaa9, x1, 192, x2)
+
+inst_571:
+// rs1_val==2863311530 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x1, x1, 196, x2)
+
+inst_572:
+// rs1_val==2863311530 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x2e, x1, 200, x2)
+
+inst_573:
+// rs1_val==2863311530 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x667, x1, 204, x2)
+
+inst_574:
+// rs1_val==2863311530 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x334, x1, 208, x2)
+
+inst_575:
+// rs1_val==2863311530 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x6, x1, 212, x2)
+
+inst_576:
+// rs1_val==2863311530 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaaa, 0xaab, x1, 216, x2)
+
+inst_577:
+// rs1_val==2863311530 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x556, x1, 220, x2)
+
+inst_578:
+// rs1_val==2863311530 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x4, x1, 224, x2)
+
+inst_579:
+// rs1_val==2863311530 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x3e, x1, 228, x2)
+
+inst_580:
+// rs1_val==2863311530 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x0, x1, 232, x2)
+
+inst_581:
+// rs1_val==2863311530 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x2c, x1, 236, x2)
+
+inst_582:
+// rs1_val==2863311530 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x665, x1, 240, x2)
+
+inst_583:
+// rs1_val==2863311530 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x332, x1, 244, x2)
+
+inst_584:
+// rs1_val==2863311530 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaaa, 0xaa9, x1, 248, x2)
+
+inst_585:
+// rs1_val==2863311530 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x554, x1, 252, x2)
+
+inst_586:
+// rs1_val==2863311530 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x2, x1, 256, x2)
+
+inst_587:
+// rs1_val==2863311530 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x3f, x1, 260, x2)
+
+inst_588:
+// rs1_val==2863311530 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x2d, x1, 264, x2)
+
+inst_589:
+// rs1_val==2863311530 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x666, x1, 268, x2)
+
+inst_590:
+// rs1_val==2863311530 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x333, x1, 272, x2)
+
+inst_591:
+// rs1_val==2863311530 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x5, x1, 276, x2)
+
+inst_592:
+// rs1_val==2863311530 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0xaaaaaaaa, 0xaaa, x1, 280, x2)
+
+inst_593:
+// rs1_val==2863311530 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x555, x1, 284, x2)
+
+inst_594:
+// rs1_val==2863311530 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaaa; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaaa, 0x3, x1, 288, x2)
+
+inst_595:
+// rs1_val==1431655765 and imm_val==64, rs1_val == 1431655765
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x40, x1, 292, x2)
+
+inst_596:
+// rs1_val==1431655765 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x1, x1, 296, x2)
+
+inst_597:
+// rs1_val==1431655765 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x2e, x1, 300, x2)
+
+inst_598:
+// rs1_val==1431655765 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x667, x1, 304, x2)
+
+inst_599:
+// rs1_val==1431655765 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x334, x1, 308, x2)
+
+inst_600:
+// rs1_val==1431655765 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x6, x1, 312, x2)
+
+inst_601:
+// rs1_val==1431655765 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555555, 0xaab, x1, 316, x2)
+
+inst_602:
+// rs1_val==1431655765 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x556, x1, 320, x2)
+
+inst_603:
+// rs1_val==1431655765 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x4, x1, 324, x2)
+
+inst_604:
+// rs1_val==1431655765 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x3e, x1, 328, x2)
+
+inst_605:
+// rs1_val==1431655765 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x0, x1, 332, x2)
+
+inst_606:
+// rs1_val==1431655765 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x2c, x1, 336, x2)
+
+inst_607:
+// rs1_val==1431655765 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x665, x1, 340, x2)
+
+inst_608:
+// rs1_val==1431655765 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x332, x1, 344, x2)
+
+inst_609:
+// rs1_val==1431655765 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555555, 0xaa9, x1, 348, x2)
+
+inst_610:
+// rs1_val==1431655765 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x554, x1, 352, x2)
+
+inst_611:
+// rs1_val==1431655765 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x2, x1, 356, x2)
+
+inst_612:
+// rs1_val==1431655765 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x3f, x1, 360, x2)
+
+inst_613:
+// rs1_val==1431655765 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x2d, x1, 364, x2)
+
+inst_614:
+// rs1_val==1431655765 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x666, x1, 368, x2)
+
+inst_615:
+// rs1_val==1431655765 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x333, x1, 372, x2)
+
+inst_616:
+// rs1_val==1431655765 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x5, x1, 376, x2)
+
+inst_617:
+// rs1_val==1431655765 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555555, 0xaaa, x1, 380, x2)
+
+inst_618:
+// rs1_val==1431655765 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x555, x1, 384, x2)
+
+inst_619:
+// rs1_val==1431655765 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555555; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555555, 0x3, x1, 388, x2)
+
+inst_620:
+// rs1_val==3 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x40, x1, 392, x2)
+
+inst_621:
+// rs1_val==3 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x3, 0x1, x1, 396, x2)
+
+inst_622:
+// rs1_val==3 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x2e, x1, 400, x2)
+
+inst_623:
+// rs1_val==3 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x667, x1, 404, x2)
+
+inst_624:
+// rs1_val==3 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x334, x1, 408, x2)
+
+inst_625:
+// rs1_val==3 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x6, x1, 412, x2)
+
+inst_626:
+// rs1_val==3 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0xaab, x1, 416, x2)
+
+inst_627:
+// rs1_val==3 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x556, x1, 420, x2)
+
+inst_628:
+// rs1_val==3 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x4, x1, 424, x2)
+
+inst_629:
+// rs1_val==3 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x3e, x1, 428, x2)
+
+inst_630:
+// rs1_val==3 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x3, 0x0, x1, 432, x2)
+
+inst_631:
+// rs1_val==3 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x2c, x1, 436, x2)
+
+inst_632:
+// rs1_val==3 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x665, x1, 440, x2)
+
+inst_633:
+// rs1_val==3 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x332, x1, 444, x2)
+
+inst_634:
+// rs1_val==3 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0xaa9, x1, 448, x2)
+
+inst_635:
+// rs1_val==3 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x554, x1, 452, x2)
+
+inst_636:
+// rs1_val==3 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x3, 0x2, x1, 456, x2)
+
+inst_637:
+// rs1_val==3 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x3f, x1, 460, x2)
+
+inst_638:
+// rs1_val==3 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x2d, x1, 464, x2)
+
+inst_639:
+// rs1_val==3 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x666, x1, 468, x2)
+
+inst_640:
+// rs1_val==3 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x333, x1, 472, x2)
+
+inst_641:
+// rs1_val==3 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x5, x1, 476, x2)
+
+inst_642:
+// rs1_val==3 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0xaaa, x1, 480, x2)
+
+inst_643:
+// rs1_val==3 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x3, 0x555, x1, 484, x2)
+
+inst_644:
+// rs1_val==3 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x3; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x3, 0x3, x1, 488, x2)
+
+inst_645:
+// rs1_val==2863311529 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x555, x1, 492, x2)
+
+inst_646:
+// rs1_val==2863311529 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xaaaaaaa9; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xaaaaaaa9, 0x3, x1, 496, x2)
+
+inst_647:
+// rs1_val == (2**(xlen)-1),
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xffffffff; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xffffffff, 0x40, x1, 500, x2)
+
+inst_648:
+// rs1_val==1431655764 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x40, x1, 504, x2)
+
+inst_649:
+// rs1_val==1431655764 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x1, x1, 508, x2)
+
+inst_650:
+// rs1_val==1431655764 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x2e, x1, 512, x2)
+
+inst_651:
+// rs1_val==1431655764 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x667, x1, 516, x2)
+
+inst_652:
+// rs1_val==1431655764 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x334, x1, 520, x2)
+
+inst_653:
+// rs1_val==1431655764 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x6, x1, 524, x2)
+
+inst_654:
+// rs1_val==1431655764 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555554, 0xaab, x1, 528, x2)
+
+inst_655:
+// rs1_val==1431655764 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x556, x1, 532, x2)
+
+inst_656:
+// rs1_val==1431655764 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x4, x1, 536, x2)
+
+inst_657:
+// rs1_val==1431655764 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x3e, x1, 540, x2)
+
+inst_658:
+// rs1_val==1431655764 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x0, x1, 544, x2)
+
+inst_659:
+// rs1_val==1431655764 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x2c, x1, 548, x2)
+
+inst_660:
+// rs1_val==1431655764 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x665, x1, 552, x2)
+
+inst_661:
+// rs1_val==1431655764 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x332, x1, 556, x2)
+
+inst_662:
+// rs1_val==1431655764 and imm_val==2729,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0xaa9
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555554, 0xaa9, x1, 560, x2)
+
+inst_663:
+// rs1_val==1431655764 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x554, x1, 564, x2)
+
+inst_664:
+// rs1_val==1431655764 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x2, x1, 568, x2)
+
+inst_665:
+// rs1_val==1431655764 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x3f, x1, 572, x2)
+
+inst_666:
+// rs1_val==1431655764 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x2d, x1, 576, x2)
+
+inst_667:
+// rs1_val==1431655764 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x666, x1, 580, x2)
+
+inst_668:
+// rs1_val==1431655764 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x333, x1, 584, x2)
+
+inst_669:
+// rs1_val==1431655764 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x5, x1, 588, x2)
+
+inst_670:
+// rs1_val==1431655764 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x55555554, 0xaaa, x1, 592, x2)
+
+inst_671:
+// rs1_val==1431655764 and imm_val==1365,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x555
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x555, x1, 596, x2)
+
+inst_672:
+// rs1_val==1431655764 and imm_val==3,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x55555554; immval:0x3
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x55555554, 0x3, x1, 600, x2)
+
+inst_673:
+// rs1_val==2 and imm_val==64,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x40
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x40, x1, 604, x2)
+
+inst_674:
+// rs1_val==2 and imm_val==1,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x1
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x2, 0x1, x1, 608, x2)
+
+inst_675:
+// rs1_val==2 and imm_val==46,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x2e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x2e, x1, 612, x2)
+
+inst_676:
+// rs1_val==2 and imm_val==1639,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x667
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x667, x1, 616, x2)
+
+inst_677:
+// rs1_val==2 and imm_val==820,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x334
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x334, x1, 620, x2)
+
+inst_678:
+// rs1_val==2 and imm_val==6,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x6
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x6, x1, 624, x2)
+
+inst_679:
+// rs1_val==2 and imm_val==2731,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0xaab
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0xaab, x1, 628, x2)
+
+inst_680:
+// rs1_val==2 and imm_val==1366,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x556
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x556, x1, 632, x2)
+
+inst_681:
+// rs1_val==2 and imm_val==4,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x4
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x4, x1, 636, x2)
+
+inst_682:
+// rs1_val==2 and imm_val==62,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x3e
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x3e, x1, 640, x2)
+
+inst_683:
+// rs1_val==2 and imm_val==0,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x0
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x2, 0x0, x1, 644, x2)
+
+inst_684:
+// rs1_val==2 and imm_val==44,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x2c
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x2c, x1, 648, x2)
+
+inst_685:
+// rs1_val==2 and imm_val==1637,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x665
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x665, x1, 652, x2)
+
+inst_686:
+// rs1_val==2 and imm_val==818,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x332
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x332, x1, 656, x2)
+
+inst_687:
+// rs1_val==2 and imm_val==1364,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x554
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x554, x1, 660, x2)
+
+inst_688:
+// rs1_val==2 and imm_val==2,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x2
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0x2, 0x2, x1, 664, x2)
+
+inst_689:
+// rs1_val==2 and imm_val==63,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x3f
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x3f, x1, 668, x2)
+
+inst_690:
+// rs1_val==2 and imm_val==45,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x2d
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x2d, x1, 672, x2)
+
+inst_691:
+// rs1_val==2 and imm_val==1638,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x666
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x666, x1, 676, x2)
+
+inst_692:
+// rs1_val==2 and imm_val==819,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x333
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x333, x1, 680, x2)
+
+inst_693:
+// rs1_val==2 and imm_val==5,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0x5
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0x5, x1, 684, x2)
+
+inst_694:
+// rs1_val==2 and imm_val==2730,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0x2; immval:0xaaa
+TEST_IMM_OP( sltiu, x11, x10, 0x1, 0x2, 0xaaa, x1, 688, x2)
+
+inst_695:
+// rs1_val == 4261412863,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfdffffff; immval:0xc
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfdffffff, 0xc, x1, 692, x2)
+
+inst_696:
+// rs1_val == 4294443007,
+// opcode: sltiu ; op1:x10; dest:x11; op1val:0xfff7ffff; immval:0xa
+TEST_IMM_OP( sltiu, x11, x10, 0x0, 0xfff7ffff, 0xa, x1, 696, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x14_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x14_1:
+ .fill 10*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 175*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sltu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sltu-01.S
new file mode 100644
index 000000000..999007f7c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sltu-01.S
@@ -0,0 +1,3695 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sltu instruction of the RISC-V E extension for the sltu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",sltu)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x12, rs2==x2, rd==x7, rs1_val != rs2_val and rs1_val > 0 and rs2_val > 0, rs1_val > 0 and rs2_val > 0, rs2_val == 16384
+// opcode: sltu ; op1:x12; op2:x2; dest:x7; op1val:0xaaaaaaab; op2val:0x4000
+TEST_RR_OP(sltu, x7, x12, x2, 0x0, 0xaaaaaaab, 0x4000, x4, 0, x9)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x11, rs2==x7, rd==x11, rs2_val == 2147483647, rs1_val == 262144
+// opcode: sltu ; op1:x11; op2:x7; dest:x11; op1val:0x40000; op2val:0x7fffffff
+TEST_RR_OP(sltu, x11, x11, x7, 0x1, 0x40000, 0x7fffffff, x4, 4, x9)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x6, rs2==x10, rd==x10, rs2_val == 3221225471, rs1_val == 131072
+// opcode: sltu ; op1:x6; op2:x10; dest:x10; op1val:0x20000; op2val:0xbfffffff
+TEST_RR_OP(sltu, x10, x6, x10, 0x1, 0x20000, 0xbfffffff, x4, 8, x9)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x14, rs2==x14, rd==x3, rs2_val == 3758096383, rs1_val == 4261412863
+// opcode: sltu ; op1:x14; op2:x14; dest:x3; op1val:0xfdffffff; op2val:0xfdffffff
+TEST_RR_OP(sltu, x3, x14, x14, 0x0, 0xfdffffff, 0xfdffffff, x4, 12, x9)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x5, rs2==x5, rd==x5, rs2_val == 4026531839, rs1_val == 0
+// opcode: sltu ; op1:x5; op2:x5; dest:x5; op1val:0x0; op2val:0x0
+TEST_RR_OP(sltu, x5, x5, x5, 0x0, 0x0, 0x0, x4, 16, x9)
+
+inst_5:
+// rs1==x8, rs2==x1, rd==x0, rs2_val == 4160749567,
+// opcode: sltu ; op1:x8; op2:x1; dest:x0; op1val:0x0; op2val:0xf7ffffff
+TEST_RR_OP(sltu, x0, x8, x1, 0, 0x0, 0xf7ffffff, x4, 20, x9)
+
+inst_6:
+// rs1==x3, rs2==x9, rd==x13, rs2_val == 4227858431,
+// opcode: sltu ; op1:x3; op2:x9; dest:x13; op1val:0x0; op2val:0xfbffffff
+TEST_RR_OP(sltu, x13, x3, x9, 0x1, 0x0, 0xfbffffff, x4, 24, x7)
+RVTEST_SIGBASE( x5,signature_x5_0)
+
+inst_7:
+// rs1==x9, rs2==x3, rd==x2, rs2_val == 4261412863, rs1_val == 4294967167
+// opcode: sltu ; op1:x9; op2:x3; dest:x2; op1val:0xffffff7f; op2val:0xfdffffff
+TEST_RR_OP(sltu, x2, x9, x3, 0x0, 0xffffff7f, 0xfdffffff, x5, 0, x7)
+
+inst_8:
+// rs1==x15, rs2==x13, rd==x6, rs2_val == 4278190079, rs1_val == 4294950911
+// opcode: sltu ; op1:x15; op2:x13; dest:x6; op1val:0xffffbfff; op2val:0xfeffffff
+TEST_RR_OP(sltu, x6, x15, x13, 0x0, 0xffffbfff, 0xfeffffff, x5, 4, x7)
+
+inst_9:
+// rs1==x13, rs2==x0, rd==x12, rs2_val == 4286578687, rs1_val == 4026531839
+// opcode: sltu ; op1:x13; op2:x0; dest:x12; op1val:0xefffffff; op2val:0x0
+TEST_RR_OP(sltu, x12, x13, x0, 0x0, 0xefffffff, 0x0, x5, 8, x7)
+
+inst_10:
+// rs1==x1, rs2==x11, rd==x14, rs2_val == 4290772991, rs1_val == 4294901759
+// opcode: sltu ; op1:x1; op2:x11; dest:x14; op1val:0xfffeffff; op2val:0xffbfffff
+TEST_RR_OP(sltu, x14, x1, x11, 0x0, 0xfffeffff, 0xffbfffff, x5, 12, x7)
+
+inst_11:
+// rs1==x2, rs2==x8, rd==x4, rs2_val == 4292870143, rs1_val == 8
+// opcode: sltu ; op1:x2; op2:x8; dest:x4; op1val:0x8; op2val:0xffdfffff
+TEST_RR_OP(sltu, x4, x2, x8, 0x1, 0x8, 0xffdfffff, x5, 16, x3)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_12:
+// rs1==x7, rs2==x4, rd==x8, rs2_val == 4293918719, rs1_val == 2863311530
+// opcode: sltu ; op1:x7; op2:x4; dest:x8; op1val:0xaaaaaaaa; op2val:0xffefffff
+TEST_RR_OP(sltu, x8, x7, x4, 0x1, 0xaaaaaaaa, 0xffefffff, x2, 0, x3)
+
+inst_13:
+// rs1==x10, rs2==x12, rd==x15, rs2_val == 4294443007,
+// opcode: sltu ; op1:x10; op2:x12; dest:x15; op1val:0xb504; op2val:0xfff7ffff
+TEST_RR_OP(sltu, x15, x10, x12, 0x1, 0xb504, 0xfff7ffff, x2, 4, x3)
+
+inst_14:
+// rs1==x4, rs2==x15, rd==x9, rs2_val == 4294705151, rs1_val == 2048
+// opcode: sltu ; op1:x4; op2:x15; dest:x9; op1val:0x800; op2val:0xfffbffff
+TEST_RR_OP(sltu, x9, x4, x15, 0x1, 0x800, 0xfffbffff, x2, 8, x3)
+
+inst_15:
+// rs1==x0, rs2==x6, rd==x1, rs2_val == 4294836223,
+// opcode: sltu ; op1:x0; op2:x6; dest:x1; op1val:0x0; op2val:0xfffdffff
+TEST_RR_OP(sltu, x1, x0, x6, 0x1, 0x0, 0xfffdffff, x2, 12, x3)
+
+inst_16:
+// rs2_val == 4294901759,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0xfffeffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xf, 0xfffeffff, x2, 16, x3)
+
+inst_17:
+// rs2_val == 4294934527,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0xffff7fff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xf, 0xffff7fff, x2, 20, x1)
+
+inst_18:
+// rs2_val == 4294950911, rs1_val == 1431655765
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xffffbfff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555555, 0xffffbfff, x2, 24, x1)
+
+inst_19:
+// rs2_val == 4294959103,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xffffdfff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0xffffdfff, x2, 28, x1)
+
+inst_20:
+// rs2_val == 4294963199,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xffffefff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0xffffefff, x2, 32, x1)
+
+inst_21:
+// rs2_val == 4294965247, rs1_val == 4293918719
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffefffff; op2val:0xfffff7ff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffefffff, 0xfffff7ff, x2, 36, x1)
+
+inst_22:
+// rs2_val == 4294966271, rs1_val == 524288
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0xfffffbff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x80000, 0xfffffbff, x2, 40, x1)
+
+inst_23:
+// rs2_val == 4294966783,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xfffffdff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0xfffffdff, x2, 44, x1)
+
+inst_24:
+// rs2_val == 4294967039, rs1_val == 4286578687
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xff7fffff; op2val:0xfffffeff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xff7fffff, 0xfffffeff, x2, 48, x1)
+
+inst_25:
+// rs2_val == 4294967167, rs1_val == 4294966271
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffbff; op2val:0xffffff7f
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffffbff, 0xffffff7f, x2, 52, x1)
+
+inst_26:
+// rs2_val == 4294967231, rs1_val == 64
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0xffffffbf
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x40, 0xffffffbf, x2, 56, x1)
+
+inst_27:
+// rs2_val == 4294967263,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0xffffffdf
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x800, 0xffffffdf, x2, 60, x1)
+
+inst_28:
+// rs2_val == 4294967279, rs1_val == 4294965247
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffff7ff; op2val:0xffffffef
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffff7ff, 0xffffffef, x2, 64, x1)
+
+inst_29:
+// rs2_val == 4294967287, rs1_val == 4194304
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0xfffffff7
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x400000, 0xfffffff7, x2, 68, x1)
+
+inst_30:
+// rs2_val == 4294967291, rs1_val == rs2_val and rs1_val > 0 and rs2_val > 0, rs1_val == 4294967291
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffb; op2val:0xfffffffb
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffffffb, 0xfffffffb, x2, 72, x1)
+
+inst_31:
+// rs2_val == 4294967293,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xfffffffd
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0xfffffffd, x2, 76, x1)
+
+inst_32:
+// rs2_val == 4294967294, rs1_val == 536870912
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0xfffffffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x20000000, 0xfffffffe, x2, 80, x1)
+
+inst_33:
+// rs1_val == 2147483647, rs2_val == 536870912
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x20000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x7fffffff, 0x20000000, x2, 84, x1)
+
+inst_34:
+// rs1_val == 3221225471, rs2_val == 0
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffff; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xbfffffff, 0x0, x2, 88, x1)
+
+inst_35:
+// rs1_val == 3758096383,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffff; op2val:0x12
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xdfffffff, 0x12, x2, 92, x1)
+
+inst_36:
+// rs1_val == 4160749567, rs2_val == 2863311530
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xf7ffffff; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xf7ffffff, 0xaaaaaaaa, x2, 96, x1)
+
+inst_37:
+// rs1_val == 4227858431,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfbffffff; op2val:0x20000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfbffffff, 0x20000000, x2, 100, x1)
+
+inst_38:
+// rs1_val == 4278190079,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfeffffff; op2val:0xfffffdff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfeffffff, 0xfffffdff, x2, 104, x1)
+
+inst_39:
+// rs1_val == 4290772991, rs2_val == 65536
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffbfffff; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffbfffff, 0x10000, x2, 108, x1)
+
+inst_40:
+// rs1_val == 4292870143, rs2_val == 2097152
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffdfffff; op2val:0x200000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffdfffff, 0x200000, x2, 112, x1)
+
+inst_41:
+// rs1_val == 4294443007,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfff7ffff; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfff7ffff, 0x3, x2, 116, x1)
+
+inst_42:
+// rs1_val == 4294705151, rs2_val == 16
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffbffff; op2val:0x10
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffbffff, 0x10, x2, 120, x1)
+
+inst_43:
+// rs1_val == 4294836223, rs2_val == 32768
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffdffff; op2val:0x8000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffdffff, 0x8000, x2, 124, x1)
+
+inst_44:
+// rs1_val == 4294934527,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff7fff; op2val:0xfffffffd
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff7fff, 0xfffffffd, x2, 128, x1)
+
+inst_45:
+// rs1_val == 4294959103,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfff; op2val:0x8000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffffdfff, 0x8000, x2, 132, x1)
+
+inst_46:
+// rs1_val == 4294963199,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffffefff; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffffefff, 0xaaaaaaa9, x2, 136, x1)
+
+inst_47:
+// rs1_val == 4294966783,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffdff; op2val:0xfffffffb
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffffdff, 0xfffffffb, x2, 140, x1)
+
+inst_48:
+// rs1_val == 4294967039, rs2_val == 4194304
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffeff; op2val:0x400000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffffeff, 0x400000, x2, 144, x1)
+
+inst_49:
+// rs1_val == 4294967231,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffbf; op2val:0xa
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffffffbf, 0xa, x2, 148, x1)
+
+inst_50:
+// rs1_val == 4294967263,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffdf; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffffffdf, 0x5, x2, 152, x1)
+
+inst_51:
+// rs1_val == 4294967279, rs2_val == 2048
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffef; op2val:0x800
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffffffef, 0x800, x2, 156, x1)
+
+inst_52:
+// rs1_val == 4294967287, rs2_val == 33554432
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff7; op2val:0x2000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffffff7, 0x2000000, x2, 160, x1)
+
+inst_53:
+// rs1_val == 4294967293, rs2_val == 8388608
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffd; op2val:0x800000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffffffd, 0x800000, x2, 164, x1)
+
+inst_54:
+// rs1_val == 4294967294,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffe; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffffffe, 0x6, x2, 168, x1)
+
+inst_55:
+// rs2_val == 2147483648, rs1_val == 2
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x80000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x80000000, x2, 172, x1)
+
+inst_56:
+// rs2_val == 1073741824, rs1_val == 4
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x40000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x40000000, x2, 176, x1)
+
+inst_57:
+// rs2_val == 268435456,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xd; op2val:0x10000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xd, 0x10000000, x2, 180, x1)
+
+inst_58:
+// rs2_val == 134217728,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x8000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x8000000, x2, 184, x1)
+
+inst_59:
+// rs2_val == 67108864,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x4000000, x2, 188, x1)
+
+inst_60:
+// rs2_val == 16777216,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffe; op2val:0x1000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffffffe, 0x1000000, x2, 192, x1)
+
+inst_61:
+// rs2_val == 1048576, rs1_val == 16
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x100000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10, 0x100000, x2, 196, x1)
+
+inst_62:
+// rs2_val == 524288,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffdfffff; op2val:0x80000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffdfffff, 0x80000, x2, 200, x1)
+
+inst_63:
+// rs2_val == 262144,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x40000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x40000, x2, 204, x1)
+
+inst_64:
+// rs2_val == 131072, rs1_val == 2097152
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x20000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x200000, 0x20000, x2, 208, x1)
+
+inst_65:
+// rs2_val == 8192,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffbffff; op2val:0x2000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffbffff, 0x2000, x2, 212, x1)
+
+inst_66:
+// rs2_val == 4096, rs1_val == 268435456
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x1000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000000, 0x1000, x2, 216, x1)
+
+inst_67:
+// rs2_val == 1024,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x400
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0x400, x2, 220, x1)
+
+inst_68:
+// rs2_val == 512, rs1_val == 1048576
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x200
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x100000, 0x200, x2, 224, x1)
+
+inst_69:
+// rs2_val == 256,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x100
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x100, x2, 228, x1)
+
+inst_70:
+// rs2_val == 128,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff7; op2val:0x80
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffffff7, 0x80, x2, 232, x1)
+
+inst_71:
+// rs2_val == 64, rs1_val == 2147483648
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x80000000; op2val:0x40
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x80000000, 0x40, x2, 236, x1)
+
+inst_72:
+// rs2_val == 32,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfff; op2val:0x20
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffffdfff, 0x20, x2, 240, x1)
+
+inst_73:
+// rs2_val == 8,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x8
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000000, 0x8, x2, 244, x1)
+
+inst_74:
+// rs2_val == 4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x8, 0x4, x2, 248, x1)
+
+inst_75:
+// rs2_val == 2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xa; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xa, 0x2, x2, 252, x1)
+
+inst_76:
+// rs2_val == 1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xa; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xa, 0x1, x2, 256, x1)
+
+inst_77:
+// rs1_val == 1073741824,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x2000000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x40000000, 0x2000000, x2, 260, x1)
+
+inst_78:
+// rs1_val == 134217728,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x200
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x8000000, 0x200, x2, 264, x1)
+
+inst_79:
+// rs1_val == 67108864,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x4000000, 0xfffe, x2, 268, x1)
+
+inst_80:
+// rs1_val == 33554432,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x2000000, 0x4, x2, 272, x1)
+
+inst_81:
+// rs1_val == 16777216,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1000000, 0x33333334, x2, 276, x1)
+
+inst_82:
+// rs1_val == 8388608,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x80000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x800000, 0x80000, x2, 280, x1)
+
+inst_83:
+// rs1_val == 65536, rs1_val==65536 and rs2_val==0
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0x0, x2, 284, x1)
+
+inst_84:
+// rs1_val == 32768,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x8000, 0xaaaaaaa9, x2, 288, x1)
+
+inst_85:
+// rs1_val == 16384,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x4000, 0x4, x2, 292, x1)
+
+inst_86:
+// rs1_val == 8192,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x20
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x2000, 0x20, x2, 296, x1)
+
+inst_87:
+// rs1_val == 4096,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0xfffffbff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1000, 0xfffffbff, x2, 300, x1)
+
+inst_88:
+// rs1_val == 1024,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0xbfffffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x400, 0xbfffffff, x2, 304, x1)
+
+inst_89:
+// rs1_val == 512,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x200, 0x10000, x2, 308, x1)
+
+inst_90:
+// rs1_val == 256,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0xf7ffffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x100, 0xf7ffffff, x2, 312, x1)
+
+inst_91:
+// rs1_val == 128,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x80, 0x10000, x2, 316, x1)
+
+inst_92:
+// rs1_val == 32,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0xefffffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x20, 0xefffffff, x2, 320, x1)
+
+inst_93:
+// rs1_val == 1, rs1_val==1 and rs2_val==46340
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0xb504, x2, 324, x1)
+
+inst_94:
+// rs1_val==65536 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0x10000, x2, 328, x1)
+
+inst_95:
+// rs1_val==65536 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0x1, x2, 332, x1)
+
+inst_96:
+// rs1_val==65536 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0xb505, x2, 336, x1)
+
+inst_97:
+// rs1_val==65536 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x66666667, x2, 340, x1)
+
+inst_98:
+// rs1_val==65536 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x33333334, x2, 344, x1)
+
+inst_99:
+// rs1_val==65536 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0x6, x2, 348, x1)
+
+inst_100:
+// rs1_val==65536 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0xaaaaaaab, x2, 352, x1)
+
+inst_101:
+// rs1_val==65536 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x55555556, x2, 356, x1)
+
+inst_102:
+// rs1_val==65536 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0x4, x2, 360, x1)
+
+inst_103:
+// rs1_val==65536 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0xfffe, x2, 364, x1)
+
+inst_104:
+// rs1_val==65536 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0xb503, x2, 368, x1)
+
+inst_105:
+// rs1_val==65536 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x66666665, x2, 372, x1)
+
+inst_106:
+// rs1_val==65536 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x33333332, x2, 376, x1)
+
+inst_107:
+// rs1_val==65536 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0xaaaaaaa9, x2, 380, x1)
+
+inst_108:
+// rs1_val==65536 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x55555554, x2, 384, x1)
+
+inst_109:
+// rs1_val==65536 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0x2, x2, 388, x1)
+
+inst_110:
+// rs1_val==65536 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0xffff, x2, 392, x1)
+
+inst_111:
+// rs1_val==65536 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0xb504, x2, 396, x1)
+
+inst_112:
+// rs1_val==65536 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x66666666, x2, 400, x1)
+
+inst_113:
+// rs1_val==65536 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x33333333, x2, 404, x1)
+
+inst_114:
+// rs1_val==65536 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0x5, x2, 408, x1)
+
+inst_115:
+// rs1_val==65536 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0xaaaaaaaa, x2, 412, x1)
+
+inst_116:
+// rs1_val==65536 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x10000, 0x55555555, x2, 416, x1)
+
+inst_117:
+// rs1_val==65536 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x10000, 0x3, x2, 420, x1)
+
+inst_118:
+// rs1_val==1 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x10000, x2, 424, x1)
+
+inst_119:
+// rs1_val==1 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x1, 0x1, x2, 428, x1)
+
+inst_120:
+// rs1_val==1 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0xb505, x2, 432, x1)
+
+inst_121:
+// rs1_val==1 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x66666667, x2, 436, x1)
+
+inst_122:
+// rs1_val==1 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x33333334, x2, 440, x1)
+
+inst_123:
+// rs1_val==1 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x6, x2, 444, x1)
+
+inst_124:
+// rs1_val==1 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0xaaaaaaab, x2, 448, x1)
+
+inst_125:
+// rs1_val==1 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x55555556, x2, 452, x1)
+
+inst_126:
+// rs1_val==1 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x4, x2, 456, x1)
+
+inst_127:
+// rs1_val==1 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0xfffe, x2, 460, x1)
+
+inst_128:
+// rs1_val==1 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x1, 0x0, x2, 464, x1)
+
+inst_129:
+// rs1_val==1 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0xb503, x2, 468, x1)
+
+inst_130:
+// rs1_val==1 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x66666665, x2, 472, x1)
+
+inst_131:
+// rs1_val==1 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x33333332, x2, 476, x1)
+
+inst_132:
+// rs1_val==1 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0xaaaaaaa9, x2, 480, x1)
+
+inst_133:
+// rs1_val==1 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x55555554, x2, 484, x1)
+
+inst_134:
+// rs1_val==1 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x2, x2, 488, x1)
+
+inst_135:
+// rs1_val==1 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0xffff, x2, 492, x1)
+
+inst_136:
+// rs1_val==1 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x66666666, x2, 496, x1)
+
+inst_137:
+// rs1_val==1 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x33333333, x2, 500, x1)
+
+inst_138:
+// rs1_val==1 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x5, x2, 504, x1)
+
+inst_139:
+// rs1_val==1 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0xaaaaaaaa, x2, 508, x1)
+
+inst_140:
+// rs1_val==1 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x55555555, x2, 512, x1)
+
+inst_141:
+// rs1_val==1 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x1, 0x3, x2, 516, x1)
+
+inst_142:
+// rs1_val==46341 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x10000, x2, 520, x1)
+
+inst_143:
+// rs1_val==46341 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0x1, x2, 524, x1)
+
+inst_144:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0xb505, x2, 528, x1)
+
+inst_145:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x66666667, x2, 532, x1)
+
+inst_146:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x33333334, x2, 536, x1)
+
+inst_147:
+// rs1_val==46341 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0x6, x2, 540, x1)
+
+inst_148:
+// rs1_val==46341 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0xaaaaaaab, x2, 544, x1)
+
+inst_149:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x55555556, x2, 548, x1)
+
+inst_150:
+// rs1_val==46341 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0x4, x2, 552, x1)
+
+inst_151:
+// rs1_val==46341 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0xfffe, x2, 556, x1)
+
+inst_152:
+// rs1_val==46341 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0x0, x2, 560, x1)
+
+inst_153:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0xb503, x2, 564, x1)
+
+inst_154:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x66666665, x2, 568, x1)
+
+inst_155:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x33333332, x2, 572, x1)
+
+inst_156:
+// rs1_val==46341 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0xaaaaaaa9, x2, 576, x1)
+
+inst_157:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x55555554, x2, 580, x1)
+
+inst_158:
+// rs1_val==46341 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0x2, x2, 584, x1)
+
+inst_159:
+// rs1_val==46341 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0xffff, x2, 588, x1)
+
+inst_160:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0xb504, x2, 592, x1)
+
+inst_161:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x66666666, x2, 596, x1)
+
+inst_162:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x33333333, x2, 600, x1)
+
+inst_163:
+// rs1_val==46341 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0x5, x2, 604, x1)
+
+inst_164:
+// rs1_val==46341 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0xaaaaaaaa, x2, 608, x1)
+
+inst_165:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb505, 0x55555555, x2, 612, x1)
+
+inst_166:
+// rs1_val==46341 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb505, 0x3, x2, 616, x1)
+
+inst_167:
+// rs1_val==1717986919 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x10000, x2, 620, x1)
+
+inst_168:
+// rs1_val==1717986919 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x1, x2, 624, x1)
+
+inst_169:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0xb505, x2, 628, x1)
+
+inst_170:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x66666667, x2, 632, x1)
+
+inst_171:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x33333334, x2, 636, x1)
+
+inst_172:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x6, x2, 640, x1)
+
+inst_173:
+// rs1_val==1717986919 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666667, 0xaaaaaaab, x2, 644, x1)
+
+inst_174:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x55555556, x2, 648, x1)
+
+inst_175:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x4, x2, 652, x1)
+
+inst_176:
+// rs1_val==1717986919 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0xfffe, x2, 656, x1)
+
+inst_177:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x0, x2, 660, x1)
+
+inst_178:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0xb503, x2, 664, x1)
+
+inst_179:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x66666665, x2, 668, x1)
+
+inst_180:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x33333332, x2, 672, x1)
+
+inst_181:
+// rs1_val==1717986919 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666667, 0xaaaaaaa9, x2, 676, x1)
+
+inst_182:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x55555554, x2, 680, x1)
+
+inst_183:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x2, x2, 684, x1)
+
+inst_184:
+// rs1_val==1717986919 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0xffff, x2, 688, x1)
+
+inst_185:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0xb504, x2, 692, x1)
+
+inst_186:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x66666666, x2, 696, x1)
+
+inst_187:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x33333333, x2, 700, x1)
+
+inst_188:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x5, x2, 704, x1)
+
+inst_189:
+// rs1_val==1717986919 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666667, 0xaaaaaaaa, x2, 708, x1)
+
+inst_190:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x55555555, x2, 712, x1)
+
+inst_191:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666667, 0x3, x2, 716, x1)
+
+inst_192:
+// rs1_val==858993460 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x10000, x2, 720, x1)
+
+inst_193:
+// rs1_val==858993460 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x1, x2, 724, x1)
+
+inst_194:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0xb505, x2, 728, x1)
+
+inst_195:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0x66666667, x2, 732, x1)
+
+inst_196:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x33333334, x2, 736, x1)
+
+inst_197:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x6, x2, 740, x1)
+
+inst_198:
+// rs1_val==858993460 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0xaaaaaaab, x2, 744, x1)
+
+inst_199:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0x55555556, x2, 748, x1)
+
+inst_200:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x4, x2, 752, x1)
+
+inst_201:
+// rs1_val==858993460 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0xfffe, x2, 756, x1)
+
+inst_202:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x0, x2, 760, x1)
+
+inst_203:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0xb503, x2, 764, x1)
+
+inst_204:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0x66666665, x2, 768, x1)
+
+inst_205:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x33333332, x2, 772, x1)
+
+inst_206:
+// rs1_val==858993460 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0xaaaaaaa9, x2, 776, x1)
+
+inst_207:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0x55555554, x2, 780, x1)
+
+inst_208:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x2, x2, 784, x1)
+
+inst_209:
+// rs1_val==858993460 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0xffff, x2, 788, x1)
+
+inst_210:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0xb504, x2, 792, x1)
+
+inst_211:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0x66666666, x2, 796, x1)
+
+inst_212:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x33333333, x2, 800, x1)
+
+inst_213:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x5, x2, 804, x1)
+
+inst_214:
+// rs1_val==858993460 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0xaaaaaaaa, x2, 808, x1)
+
+inst_215:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333334, 0x55555555, x2, 812, x1)
+
+inst_216:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333334, 0x3, x2, 816, x1)
+
+inst_217:
+// rs1_val==6 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x10000, x2, 820, x1)
+
+inst_218:
+// rs1_val==6 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x6, 0x1, x2, 824, x1)
+
+inst_219:
+// rs1_val==6 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0xb505, x2, 828, x1)
+
+inst_220:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x66666667, x2, 832, x1)
+
+inst_221:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x33333334, x2, 836, x1)
+
+inst_222:
+// rs1_val==6 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x6, 0x6, x2, 840, x1)
+
+inst_223:
+// rs1_val==6 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0xaaaaaaab, x2, 844, x1)
+
+inst_224:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x55555556, x2, 848, x1)
+
+inst_225:
+// rs1_val==6 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x6, 0x4, x2, 852, x1)
+
+inst_226:
+// rs1_val==6 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0xfffe, x2, 856, x1)
+
+inst_227:
+// rs1_val==6 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x6, 0x0, x2, 860, x1)
+
+inst_228:
+// rs1_val==6 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0xb503, x2, 864, x1)
+
+inst_229:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x66666665, x2, 868, x1)
+
+inst_230:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x33333332, x2, 872, x1)
+
+inst_231:
+// rs1_val==6 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0xaaaaaaa9, x2, 876, x1)
+
+inst_232:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x55555554, x2, 880, x1)
+
+inst_233:
+// rs1_val==6 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x6, 0x2, x2, 884, x1)
+
+inst_234:
+// rs1_val==6 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0xffff, x2, 888, x1)
+
+inst_235:
+// rs1_val==6 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0xb504, x2, 892, x1)
+
+inst_236:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x66666666, x2, 896, x1)
+
+inst_237:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x33333333, x2, 900, x1)
+
+inst_238:
+// rs1_val==6 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x6, 0x5, x2, 904, x1)
+
+inst_239:
+// rs1_val==6 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0xaaaaaaaa, x2, 908, x1)
+
+inst_240:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x6, 0x55555555, x2, 912, x1)
+
+inst_241:
+// rs1_val==6 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x6, 0x3, x2, 916, x1)
+
+inst_242:
+// rs1_val==2863311531 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x10000, x2, 920, x1)
+
+inst_243:
+// rs1_val==2863311531 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x1, x2, 924, x1)
+
+inst_244:
+// rs1_val==2863311531 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xb505, x2, 928, x1)
+
+inst_245:
+// rs1_val==2863311531 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x66666667, x2, 932, x1)
+
+inst_246:
+// rs1_val==2863311531 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x33333334, x2, 936, x1)
+
+inst_247:
+// rs1_val==2863311531 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x6, x2, 940, x1)
+
+inst_248:
+// rs1_val==2863311531 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xaaaaaaab, x2, 944, x1)
+
+inst_249:
+// rs1_val==2863311531 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x55555556, x2, 948, x1)
+
+inst_250:
+// rs1_val==2863311531 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x4, x2, 952, x1)
+
+inst_251:
+// rs1_val==2863311531 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xfffe, x2, 956, x1)
+
+inst_252:
+// rs1_val==2863311531 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x0, x2, 960, x1)
+
+inst_253:
+// rs1_val==2863311531 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xb503, x2, 964, x1)
+
+inst_254:
+// rs1_val==2863311531 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x66666665, x2, 968, x1)
+
+inst_255:
+// rs1_val==2863311531 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x33333332, x2, 972, x1)
+
+inst_256:
+// rs1_val==2863311531 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xaaaaaaa9, x2, 976, x1)
+
+inst_257:
+// rs1_val==2863311531 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x55555554, x2, 980, x1)
+
+inst_258:
+// rs1_val==2863311531 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x2, x2, 984, x1)
+
+inst_259:
+// rs1_val==2863311531 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xffff, x2, 988, x1)
+
+inst_260:
+// rs1_val==2863311531 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xb504, x2, 992, x1)
+
+inst_261:
+// rs1_val==2863311531 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x66666666, x2, 996, x1)
+
+inst_262:
+// rs1_val==2863311531 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x33333333, x2, 1000, x1)
+
+inst_263:
+// rs1_val==2863311531 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x5, x2, 1004, x1)
+
+inst_264:
+// rs1_val==2863311531 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xaaaaaaaa, x2, 1008, x1)
+
+inst_265:
+// rs1_val==2863311531 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x55555555, x2, 1012, x1)
+
+inst_266:
+// rs1_val==2863311531 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x3, x2, 1016, x1)
+
+inst_267:
+// rs1_val==1431655766 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x10000, x2, 1020, x1)
+
+inst_268:
+// rs1_val==1431655766 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x1, x2, 1024, x1)
+
+inst_269:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0xb505, x2, 1028, x1)
+
+inst_270:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555556, 0x66666667, x2, 1032, x1)
+
+inst_271:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x33333334, x2, 1036, x1)
+
+inst_272:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x6, x2, 1040, x1)
+
+inst_273:
+// rs1_val==1431655766 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555556, 0xaaaaaaab, x2, 1044, x1)
+
+inst_274:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x55555556, x2, 1048, x1)
+
+inst_275:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x4, x2, 1052, x1)
+
+inst_276:
+// rs1_val==1431655766 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0xfffe, x2, 1056, x1)
+
+inst_277:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x0, x2, 1060, x1)
+
+inst_278:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0xb503, x2, 1064, x1)
+
+inst_279:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555556, 0x66666665, x2, 1068, x1)
+
+inst_280:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x33333332, x2, 1072, x1)
+
+inst_281:
+// rs1_val==1431655766 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555556, 0xaaaaaaa9, x2, 1076, x1)
+
+inst_282:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x55555554, x2, 1080, x1)
+
+inst_283:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x2, x2, 1084, x1)
+
+inst_284:
+// rs1_val==1431655766 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0xffff, x2, 1088, x1)
+
+inst_285:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0xb504, x2, 1092, x1)
+
+inst_286:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555556, 0x66666666, x2, 1096, x1)
+
+inst_287:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x33333333, x2, 1100, x1)
+
+inst_288:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x5, x2, 1104, x1)
+
+inst_289:
+// rs1_val==1431655766 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555556, 0xaaaaaaaa, x2, 1108, x1)
+
+inst_290:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x55555555, x2, 1112, x1)
+
+inst_291:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555556, 0x3, x2, 1116, x1)
+
+inst_292:
+// rs1_val==4 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x10000, x2, 1120, x1)
+
+inst_293:
+// rs1_val==4 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x4, 0x1, x2, 1124, x1)
+
+inst_294:
+// rs1_val==4 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0xb505, x2, 1128, x1)
+
+inst_295:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x66666667, x2, 1132, x1)
+
+inst_296:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x33333334, x2, 1136, x1)
+
+inst_297:
+// rs1_val==4 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x6, x2, 1140, x1)
+
+inst_298:
+// rs1_val==4 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0xaaaaaaab, x2, 1144, x1)
+
+inst_299:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x55555556, x2, 1148, x1)
+
+inst_300:
+// rs1_val==4 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x4, 0x4, x2, 1152, x1)
+
+inst_301:
+// rs1_val==4 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0xfffe, x2, 1156, x1)
+
+inst_302:
+// rs1_val==4 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x4, 0x0, x2, 1160, x1)
+
+inst_303:
+// rs1_val==4 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0xb503, x2, 1164, x1)
+
+inst_304:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x66666665, x2, 1168, x1)
+
+inst_305:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x33333332, x2, 1172, x1)
+
+inst_306:
+// rs1_val==4 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0xaaaaaaa9, x2, 1176, x1)
+
+inst_307:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x55555554, x2, 1180, x1)
+
+inst_308:
+// rs1_val==4 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x4, 0x2, x2, 1184, x1)
+
+inst_309:
+// rs1_val==4 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0xffff, x2, 1188, x1)
+
+inst_310:
+// rs1_val==4 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0xb504, x2, 1192, x1)
+
+inst_311:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x66666666, x2, 1196, x1)
+
+inst_312:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x33333333, x2, 1200, x1)
+
+inst_313:
+// rs1_val==4 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x5, x2, 1204, x1)
+
+inst_314:
+// rs1_val==4 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0xaaaaaaaa, x2, 1208, x1)
+
+inst_315:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x4, 0x55555555, x2, 1212, x1)
+
+inst_316:
+// rs1_val==4 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x4, 0x3, x2, 1216, x1)
+
+inst_317:
+// rs1_val==65534 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x10000, x2, 1220, x1)
+
+inst_318:
+// rs1_val==65534 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0x1, x2, 1224, x1)
+
+inst_319:
+// rs1_val==65534 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0xb505, x2, 1228, x1)
+
+inst_320:
+// rs1_val==65534 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x66666667, x2, 1232, x1)
+
+inst_321:
+// rs1_val==65534 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x33333334, x2, 1236, x1)
+
+inst_322:
+// rs1_val==65534 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0x6, x2, 1240, x1)
+
+inst_323:
+// rs1_val==65534 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0xaaaaaaab, x2, 1244, x1)
+
+inst_324:
+// rs1_val==65534 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x55555556, x2, 1248, x1)
+
+inst_325:
+// rs1_val==65534 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0x4, x2, 1252, x1)
+
+inst_326:
+// rs1_val==65534 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0xfffe, x2, 1256, x1)
+
+inst_327:
+// rs1_val==65534 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0x0, x2, 1260, x1)
+
+inst_328:
+// rs1_val==65534 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0xb503, x2, 1264, x1)
+
+inst_329:
+// rs1_val==65534 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x66666665, x2, 1268, x1)
+
+inst_330:
+// rs1_val==65534 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x33333332, x2, 1272, x1)
+
+inst_331:
+// rs1_val==65534 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0xaaaaaaa9, x2, 1276, x1)
+
+inst_332:
+// rs1_val==65534 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x55555554, x2, 1280, x1)
+
+inst_333:
+// rs1_val==65534 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0x2, x2, 1284, x1)
+
+inst_334:
+// rs1_val==65534 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0xffff, x2, 1288, x1)
+
+inst_335:
+// rs1_val==65534 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0xb504, x2, 1292, x1)
+
+inst_336:
+// rs1_val==65534 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x66666666, x2, 1296, x1)
+
+inst_337:
+// rs1_val==65534 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x33333333, x2, 1300, x1)
+
+inst_338:
+// rs1_val==65534 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0x5, x2, 1304, x1)
+
+inst_339:
+// rs1_val==65534 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0xaaaaaaaa, x2, 1308, x1)
+
+inst_340:
+// rs1_val==65534 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xfffe, 0x55555555, x2, 1312, x1)
+
+inst_341:
+// rs1_val==65534 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfffe, 0x3, x2, 1316, x1)
+
+inst_342:
+// rs1_val==0 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x10000, x2, 1320, x1)
+
+inst_343:
+// rs1_val==0 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x1, x2, 1324, x1)
+
+inst_344:
+// rs1_val==0 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0xb505, x2, 1328, x1)
+
+inst_345:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x66666667, x2, 1332, x1)
+
+inst_346:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x33333334, x2, 1336, x1)
+
+inst_347:
+// rs1_val==0 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x6, x2, 1340, x1)
+
+inst_348:
+// rs1_val==0 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0xaaaaaaab, x2, 1344, x1)
+
+inst_349:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x55555556, x2, 1348, x1)
+
+inst_350:
+// rs1_val==0 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x4, x2, 1352, x1)
+
+inst_351:
+// rs1_val==0 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0xfffe, x2, 1356, x1)
+
+inst_352:
+// rs1_val==0 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x0, 0x0, x2, 1360, x1)
+
+inst_353:
+// rs1_val==0 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0xb503, x2, 1364, x1)
+
+inst_354:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x66666665, x2, 1368, x1)
+
+inst_355:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x33333332, x2, 1372, x1)
+
+inst_356:
+// rs1_val==0 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0xaaaaaaa9, x2, 1376, x1)
+
+inst_357:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x55555554, x2, 1380, x1)
+
+inst_358:
+// rs1_val==0 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x2, x2, 1384, x1)
+
+inst_359:
+// rs1_val==0 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0xffff, x2, 1388, x1)
+
+inst_360:
+// rs1_val==0 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0xb504, x2, 1392, x1)
+
+inst_361:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x66666666, x2, 1396, x1)
+
+inst_362:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x33333333, x2, 1400, x1)
+
+inst_363:
+// rs1_val==0 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x5, x2, 1404, x1)
+
+inst_364:
+// rs1_val==0 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0xaaaaaaaa, x2, 1408, x1)
+
+inst_365:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x55555555, x2, 1412, x1)
+
+inst_366:
+// rs1_val==0 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x0, 0x3, x2, 1416, x1)
+
+inst_367:
+// rs1_val==46339 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x10000, x2, 1420, x1)
+
+inst_368:
+// rs1_val==46339 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0x1, x2, 1424, x1)
+
+inst_369:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0xb505, x2, 1428, x1)
+
+inst_370:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x66666667, x2, 1432, x1)
+
+inst_371:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x33333334, x2, 1436, x1)
+
+inst_372:
+// rs1_val==46339 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0x6, x2, 1440, x1)
+
+inst_373:
+// rs1_val==46339 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0xaaaaaaab, x2, 1444, x1)
+
+inst_374:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x55555556, x2, 1448, x1)
+
+inst_375:
+// rs1_val==46339 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0x4, x2, 1452, x1)
+
+inst_376:
+// rs1_val==46339 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0xfffe, x2, 1456, x1)
+
+inst_377:
+// rs1_val==46339 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0x0, x2, 1460, x1)
+
+inst_378:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0xb503, x2, 1464, x1)
+
+inst_379:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x66666665, x2, 1468, x1)
+
+inst_380:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x33333332, x2, 1472, x1)
+
+inst_381:
+// rs1_val==46339 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0xaaaaaaa9, x2, 1476, x1)
+
+inst_382:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x55555554, x2, 1480, x1)
+
+inst_383:
+// rs1_val==46339 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0x2, x2, 1484, x1)
+
+inst_384:
+// rs1_val==46339 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0xffff, x2, 1488, x1)
+
+inst_385:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0xb504, x2, 1492, x1)
+
+inst_386:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x66666666, x2, 1496, x1)
+
+inst_387:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x33333333, x2, 1500, x1)
+
+inst_388:
+// rs1_val==46339 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0x5, x2, 1504, x1)
+
+inst_389:
+// rs1_val==46339 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0xaaaaaaaa, x2, 1508, x1)
+
+inst_390:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb503, 0x55555555, x2, 1512, x1)
+
+inst_391:
+// rs1_val==46339 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb503, 0x3, x2, 1516, x1)
+
+inst_392:
+// rs1_val==1717986917 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x10000, x2, 1520, x1)
+
+inst_393:
+// rs1_val==1717986917 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x1, x2, 1524, x1)
+
+inst_394:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0xb505, x2, 1528, x1)
+
+inst_395:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666665, 0x66666667, x2, 1532, x1)
+
+inst_396:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x33333334, x2, 1536, x1)
+
+inst_397:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x6, x2, 1540, x1)
+
+inst_398:
+// rs1_val==1717986917 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666665, 0xaaaaaaab, x2, 1544, x1)
+
+inst_399:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x55555556, x2, 1548, x1)
+
+inst_400:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x4, x2, 1552, x1)
+
+inst_401:
+// rs1_val==1717986917 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0xfffe, x2, 1556, x1)
+
+inst_402:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x0, x2, 1560, x1)
+
+inst_403:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0xb503, x2, 1564, x1)
+
+inst_404:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x66666665, x2, 1568, x1)
+
+inst_405:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x33333332, x2, 1572, x1)
+
+inst_406:
+// rs1_val==1717986917 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666665, 0xaaaaaaa9, x2, 1576, x1)
+
+inst_407:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x55555554, x2, 1580, x1)
+
+inst_408:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x2, x2, 1584, x1)
+
+inst_409:
+// rs1_val==1717986917 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0xffff, x2, 1588, x1)
+
+inst_410:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0xb504, x2, 1592, x1)
+
+inst_411:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666665, 0x66666666, x2, 1596, x1)
+
+inst_412:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x33333333, x2, 1600, x1)
+
+inst_413:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x5, x2, 1604, x1)
+
+inst_414:
+// rs1_val==1717986917 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666665, 0xaaaaaaaa, x2, 1608, x1)
+
+inst_415:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x55555555, x2, 1612, x1)
+
+inst_416:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666665, 0x3, x2, 1616, x1)
+
+inst_417:
+// rs1_val==858993458 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x10000, x2, 1620, x1)
+
+inst_418:
+// rs1_val==858993458 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x1, x2, 1624, x1)
+
+inst_419:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0xb505, x2, 1628, x1)
+
+inst_420:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0x66666667, x2, 1632, x1)
+
+inst_421:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0x33333334, x2, 1636, x1)
+
+inst_422:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x6, x2, 1640, x1)
+
+inst_423:
+// rs1_val==858993458 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0xaaaaaaab, x2, 1644, x1)
+
+inst_424:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0x55555556, x2, 1648, x1)
+
+inst_425:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x4, x2, 1652, x1)
+
+inst_426:
+// rs1_val==858993458 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0xfffe, x2, 1656, x1)
+
+inst_427:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x0, x2, 1660, x1)
+
+inst_428:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0xb503, x2, 1664, x1)
+
+inst_429:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0x66666665, x2, 1668, x1)
+
+inst_430:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x33333332, x2, 1672, x1)
+
+inst_431:
+// rs1_val==858993458 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0xaaaaaaa9, x2, 1676, x1)
+
+inst_432:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0x55555554, x2, 1680, x1)
+
+inst_433:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x2, x2, 1684, x1)
+
+inst_434:
+// rs1_val==858993458 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0xffff, x2, 1688, x1)
+
+inst_435:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0xb504, x2, 1692, x1)
+
+inst_436:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0x66666666, x2, 1696, x1)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0x33333333, x2, 1700, x1)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x5, x2, 1704, x1)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0xaaaaaaaa, x2, 1708, x1)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333332, 0x55555555, x2, 1712, x1)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333332, 0x3, x2, 1716, x1)
+
+inst_442:
+// rs1_val==2863311529 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x10000, x2, 1720, x1)
+
+inst_443:
+// rs1_val==2863311529 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x1, x2, 1724, x1)
+
+inst_444:
+// rs1_val==2863311529 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xb505, x2, 1728, x1)
+
+inst_445:
+// rs1_val==2863311529 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x66666667, x2, 1732, x1)
+
+inst_446:
+// rs1_val==2863311529 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x33333334, x2, 1736, x1)
+
+inst_447:
+// rs1_val==2863311529 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x6, x2, 1740, x1)
+
+inst_448:
+// rs1_val==2863311529 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0xaaaaaaab, x2, 1744, x1)
+
+inst_449:
+// rs1_val==2863311529 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x55555556, x2, 1748, x1)
+
+inst_450:
+// rs1_val==2863311529 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x4, x2, 1752, x1)
+
+inst_451:
+// rs1_val==2863311529 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xfffe, x2, 1756, x1)
+
+inst_452:
+// rs1_val==2863311529 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x0, x2, 1760, x1)
+
+inst_453:
+// rs1_val==2863311529 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xb503, x2, 1764, x1)
+
+inst_454:
+// rs1_val==2863311529 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x66666665, x2, 1768, x1)
+
+inst_455:
+// rs1_val==2863311529 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x33333332, x2, 1772, x1)
+
+inst_456:
+// rs1_val==2863311529 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xaaaaaaa9, x2, 1776, x1)
+
+inst_457:
+// rs1_val==2863311529 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x55555554, x2, 1780, x1)
+
+inst_458:
+// rs1_val==2863311529 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x2, x2, 1784, x1)
+
+inst_459:
+// rs1_val==2863311529 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xffff, x2, 1788, x1)
+
+inst_460:
+// rs1_val==2863311529 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xb504, x2, 1792, x1)
+
+inst_461:
+// rs1_val==2863311529 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x66666666, x2, 1796, x1)
+
+inst_462:
+// rs1_val==2863311529 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x33333333, x2, 1800, x1)
+
+inst_463:
+// rs1_val==2863311529 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x5, x2, 1804, x1)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x4, x2, 1808, x1)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0xfffe, x2, 1812, x1)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x0, x2, 1816, x1)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0xb503, x2, 1820, x1)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0x66666665, x2, 1824, x1)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x33333332, x2, 1828, x1)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0xaaaaaaa9, x2, 1832, x1)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x55555554, x2, 1836, x1)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x2, x2, 1840, x1)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0xffff, x2, 1844, x1)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0xb504, x2, 1848, x1)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0x66666666, x2, 1852, x1)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x33333333, x2, 1856, x1)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x5, x2, 1860, x1)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0xaaaaaaaa, x2, 1864, x1)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0x55555555, x2, 1868, x1)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x3, x2, 1872, x1)
+
+inst_481:
+// rs1_val==2 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x10000, x2, 1876, x1)
+
+inst_482:
+// rs1_val==2 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x2, 0x1, x2, 1880, x1)
+
+inst_483:
+// rs1_val==2 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0xb505, x2, 1884, x1)
+
+inst_484:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x66666667, x2, 1888, x1)
+
+inst_485:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x33333334, x2, 1892, x1)
+
+inst_486:
+// rs1_val==2 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x6, x2, 1896, x1)
+
+inst_487:
+// rs1_val==2 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaab, x2, 1900, x1)
+
+inst_488:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x55555556, x2, 1904, x1)
+
+inst_489:
+// rs1_val==2 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x4, x2, 1908, x1)
+
+inst_490:
+// rs1_val==2 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0xfffe, x2, 1912, x1)
+
+inst_491:
+// rs1_val==2 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x2, 0x0, x2, 1916, x1)
+
+inst_492:
+// rs1_val==2 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0xb503, x2, 1920, x1)
+
+inst_493:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x66666665, x2, 1924, x1)
+
+inst_494:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x33333332, x2, 1928, x1)
+
+inst_495:
+// rs1_val==2 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaa9, x2, 1932, x1)
+
+inst_496:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x55555554, x2, 1936, x1)
+
+inst_497:
+// rs1_val==2 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x2, 0x2, x2, 1940, x1)
+
+inst_498:
+// rs1_val==2 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0xffff, x2, 1944, x1)
+
+inst_499:
+// rs1_val==2 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0xb504, x2, 1948, x1)
+
+inst_500:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x66666666, x2, 1952, x1)
+
+inst_501:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x33333333, x2, 1956, x1)
+
+inst_502:
+// rs1_val==2 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x5, x2, 1960, x1)
+
+inst_503:
+// rs1_val==2 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaaa, x2, 1964, x1)
+
+inst_504:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x55555555, x2, 1968, x1)
+
+inst_505:
+// rs1_val==2 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x2, 0x3, x2, 1972, x1)
+
+inst_506:
+// rs1_val==65535 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x10000, x2, 1976, x1)
+
+inst_507:
+// rs1_val==65535 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0x1, x2, 1980, x1)
+
+inst_508:
+// rs1_val==65535 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0xb505, x2, 1984, x1)
+
+inst_509:
+// rs1_val==65535 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x66666667, x2, 1988, x1)
+
+inst_510:
+// rs1_val==65535 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x33333334, x2, 1992, x1)
+
+inst_511:
+// rs1_val==65535 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0x6, x2, 1996, x1)
+
+inst_512:
+// rs1_val==65535 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0xaaaaaaab, x2, 2000, x1)
+
+inst_513:
+// rs1_val==65535 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x55555556, x2, 2004, x1)
+
+inst_514:
+// rs1_val==65535 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0x4, x2, 2008, x1)
+
+inst_515:
+// rs1_val==65535 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0xfffe, x2, 2012, x1)
+
+inst_516:
+// rs1_val==65535 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0x0, x2, 2016, x1)
+
+inst_517:
+// rs1_val==65535 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0xb503, x2, 2020, x1)
+
+inst_518:
+// rs1_val==65535 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x66666665, x2, 2024, x1)
+
+inst_519:
+// rs1_val==65535 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x33333332, x2, 2028, x1)
+
+inst_520:
+// rs1_val==65535 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0xaaaaaaa9, x2, 2032, x1)
+
+inst_521:
+// rs1_val==65535 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x55555554, x2, 2036, x1)
+
+inst_522:
+// rs1_val==65535 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0x2, x2, 2040, x1)
+
+inst_523:
+// rs1_val==65535 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0xffff, x2, 2044, x1)
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_524:
+// rs1_val==65535 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0xb504, x2, 0, x1)
+
+inst_525:
+// rs1_val==65535 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x66666666, x2, 4, x1)
+
+inst_526:
+// rs1_val==65535 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x33333333, x2, 8, x1)
+
+inst_527:
+// rs1_val==65535 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0x5, x2, 12, x1)
+
+inst_528:
+// rs1_val==65535 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0xaaaaaaaa, x2, 16, x1)
+
+inst_529:
+// rs1_val==65535 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xffff, 0x55555555, x2, 20, x1)
+
+inst_530:
+// rs1_val==65535 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffff, 0x3, x2, 24, x1)
+
+inst_531:
+// rs1_val==46340 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x10000, x2, 28, x1)
+
+inst_532:
+// rs1_val==46340 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0x1, x2, 32, x1)
+
+inst_533:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0xb505, x2, 36, x1)
+
+inst_534:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x66666667, x2, 40, x1)
+
+inst_535:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x33333334, x2, 44, x1)
+
+inst_536:
+// rs1_val==46340 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0x6, x2, 48, x1)
+
+inst_537:
+// rs1_val==46340 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0xaaaaaaab, x2, 52, x1)
+
+inst_538:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x55555556, x2, 56, x1)
+
+inst_539:
+// rs1_val==46340 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0x4, x2, 60, x1)
+
+inst_540:
+// rs1_val==46340 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0xfffe, x2, 64, x1)
+
+inst_541:
+// rs1_val==46340 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0x0, x2, 68, x1)
+
+inst_542:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0xb503, x2, 72, x1)
+
+inst_543:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x66666665, x2, 76, x1)
+
+inst_544:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x33333332, x2, 80, x1)
+
+inst_545:
+// rs1_val==46340 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0xaaaaaaa9, x2, 84, x1)
+
+inst_546:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x55555554, x2, 88, x1)
+
+inst_547:
+// rs1_val==46340 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0x2, x2, 92, x1)
+
+inst_548:
+// rs1_val==46340 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0xffff, x2, 96, x1)
+
+inst_549:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0xb504, x2, 100, x1)
+
+inst_550:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x66666666, x2, 104, x1)
+
+inst_551:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x33333333, x2, 108, x1)
+
+inst_552:
+// rs1_val==46340 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0x5, x2, 112, x1)
+
+inst_553:
+// rs1_val==46340 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0xaaaaaaaa, x2, 116, x1)
+
+inst_554:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xb504, 0x55555555, x2, 120, x1)
+
+inst_555:
+// rs1_val==46340 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xb504, 0x3, x2, 124, x1)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x10000, x2, 128, x1)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x1, x2, 132, x1)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0xb505, x2, 136, x1)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666666, 0x66666667, x2, 140, x1)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x33333334, x2, 144, x1)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x6, x2, 148, x1)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666666, 0xaaaaaaab, x2, 152, x1)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x55555556, x2, 156, x1)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x4, x2, 160, x1)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0xfffe, x2, 164, x1)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x0, x2, 168, x1)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0xb503, x2, 172, x1)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x66666665, x2, 176, x1)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x33333332, x2, 180, x1)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666666, 0xaaaaaaa9, x2, 184, x1)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x55555554, x2, 188, x1)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x2, x2, 192, x1)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0xffff, x2, 196, x1)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0xb504, x2, 200, x1)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x66666666, x2, 204, x1)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x33333333, x2, 208, x1)
+
+inst_577:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x5, x2, 212, x1)
+
+inst_578:
+// rs1_val==1717986918 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x66666666, 0xaaaaaaaa, x2, 216, x1)
+
+inst_579:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x55555555, x2, 220, x1)
+
+inst_580:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x66666666, 0x3, x2, 224, x1)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x10000, x2, 228, x1)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x1, x2, 232, x1)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0xb505, x2, 236, x1)
+
+inst_584:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0x66666667, x2, 240, x1)
+
+inst_585:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0x33333334, x2, 244, x1)
+
+inst_586:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x6, x2, 248, x1)
+
+inst_587:
+// rs1_val==858993459 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0xaaaaaaab, x2, 252, x1)
+
+inst_588:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0x55555556, x2, 256, x1)
+
+inst_589:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x4, x2, 260, x1)
+
+inst_590:
+// rs1_val==858993459 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0xfffe, x2, 264, x1)
+
+inst_591:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x0, x2, 268, x1)
+
+inst_592:
+// rs1_val==2863311529 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x3, x2, 272, x1)
+
+inst_593:
+// rs2_val == (2**(xlen)-1),
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0xffffffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xefffffff, 0xffffffff, x2, 276, x1)
+
+inst_594:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0xb503, x2, 280, x1)
+
+inst_595:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0x66666665, x2, 284, x1)
+
+inst_596:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x33333332, x2, 288, x1)
+
+inst_597:
+// rs1_val==858993459 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0xaaaaaaa9, x2, 292, x1)
+
+inst_598:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0x55555554, x2, 296, x1)
+
+inst_599:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x2, x2, 300, x1)
+
+inst_600:
+// rs1_val==858993459 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0xffff, x2, 304, x1)
+
+inst_601:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0xb504, x2, 308, x1)
+
+inst_602:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0x66666666, x2, 312, x1)
+
+inst_603:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x33333333, x2, 316, x1)
+
+inst_604:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x5, x2, 320, x1)
+
+inst_605:
+// rs1_val==858993459 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0xaaaaaaaa, x2, 324, x1)
+
+inst_606:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x33333333, 0x55555555, x2, 328, x1)
+
+inst_607:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x33333333, 0x3, x2, 332, x1)
+
+inst_608:
+// rs1_val==5 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x10000, x2, 336, x1)
+
+inst_609:
+// rs1_val==5 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x5, 0x1, x2, 340, x1)
+
+inst_610:
+// rs1_val==5 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xb505, x2, 344, x1)
+
+inst_611:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x66666667, x2, 348, x1)
+
+inst_612:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x33333334, x2, 352, x1)
+
+inst_613:
+// rs1_val==5 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x6, x2, 356, x1)
+
+inst_614:
+// rs1_val==5 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xaaaaaaab, x2, 360, x1)
+
+inst_615:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x55555556, x2, 364, x1)
+
+inst_616:
+// rs1_val==5 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x5, 0x4, x2, 368, x1)
+
+inst_617:
+// rs1_val==5 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xfffe, x2, 372, x1)
+
+inst_618:
+// rs1_val==5 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x5, 0x0, x2, 376, x1)
+
+inst_619:
+// rs1_val==5 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xb503, x2, 380, x1)
+
+inst_620:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x66666665, x2, 384, x1)
+
+inst_621:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x33333332, x2, 388, x1)
+
+inst_622:
+// rs1_val==5 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xaaaaaaa9, x2, 392, x1)
+
+inst_623:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x55555554, x2, 396, x1)
+
+inst_624:
+// rs1_val==5 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x5, 0x2, x2, 400, x1)
+
+inst_625:
+// rs1_val==5 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xffff, x2, 404, x1)
+
+inst_626:
+// rs1_val==5 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xb504, x2, 408, x1)
+
+inst_627:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x66666666, x2, 412, x1)
+
+inst_628:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x33333333, x2, 416, x1)
+
+inst_629:
+// rs1_val==5 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x5, 0x5, x2, 420, x1)
+
+inst_630:
+// rs1_val==5 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xaaaaaaaa, x2, 424, x1)
+
+inst_631:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0x55555555, x2, 428, x1)
+
+inst_632:
+// rs1_val==5 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x5, 0x3, x2, 432, x1)
+
+inst_633:
+// rs1_val==2863311530 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x10000, x2, 436, x1)
+
+inst_634:
+// rs1_val==2863311530 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x1, x2, 440, x1)
+
+inst_635:
+// rs1_val==2863311530 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xb505, x2, 444, x1)
+
+inst_636:
+// rs1_val==2863311530 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x66666667, x2, 448, x1)
+
+inst_637:
+// rs1_val==2863311530 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x33333334, x2, 452, x1)
+
+inst_638:
+// rs1_val==2863311530 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x6, x2, 456, x1)
+
+inst_639:
+// rs1_val==2863311530 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0xaaaaaaab, x2, 460, x1)
+
+inst_640:
+// rs1_val==2863311530 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x55555556, x2, 464, x1)
+
+inst_641:
+// rs1_val==2863311530 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x4, x2, 468, x1)
+
+inst_642:
+// rs1_val==2863311530 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xfffe, x2, 472, x1)
+
+inst_643:
+// rs1_val==2863311530 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x0, x2, 476, x1)
+
+inst_644:
+// rs1_val==2863311530 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xb503, x2, 480, x1)
+
+inst_645:
+// rs1_val==2863311530 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x66666665, x2, 484, x1)
+
+inst_646:
+// rs1_val==2863311530 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x33333332, x2, 488, x1)
+
+inst_647:
+// rs1_val==2863311530 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xaaaaaaa9, x2, 492, x1)
+
+inst_648:
+// rs1_val==2863311530 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x55555554, x2, 496, x1)
+
+inst_649:
+// rs1_val==2863311530 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x2, x2, 500, x1)
+
+inst_650:
+// rs1_val==2863311530 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xffff, x2, 504, x1)
+
+inst_651:
+// rs1_val==2863311530 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xb504, x2, 508, x1)
+
+inst_652:
+// rs1_val==2863311530 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x66666666, x2, 512, x1)
+
+inst_653:
+// rs1_val==2863311530 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x33333333, x2, 516, x1)
+
+inst_654:
+// rs1_val==2863311530 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x5, x2, 520, x1)
+
+inst_655:
+// rs1_val==2863311530 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xaaaaaaaa, x2, 524, x1)
+
+inst_656:
+// rs1_val==2863311530 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x55555555, x2, 528, x1)
+
+inst_657:
+// rs1_val==2863311530 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x3, x2, 532, x1)
+
+inst_658:
+// rs1_val==1431655765 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x10000, x2, 536, x1)
+
+inst_659:
+// rs1_val==1431655765 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x1, x2, 540, x1)
+
+inst_660:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0xb505, x2, 544, x1)
+
+inst_661:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555555, 0x66666667, x2, 548, x1)
+
+inst_662:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x33333334, x2, 552, x1)
+
+inst_663:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x6, x2, 556, x1)
+
+inst_664:
+// rs1_val==1431655765 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555555, 0xaaaaaaab, x2, 560, x1)
+
+inst_665:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555555, 0x55555556, x2, 564, x1)
+
+inst_666:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x4, x2, 568, x1)
+
+inst_667:
+// rs1_val==1431655765 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0xfffe, x2, 572, x1)
+
+inst_668:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x0, x2, 576, x1)
+
+inst_669:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0xb503, x2, 580, x1)
+
+inst_670:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555555, 0x66666665, x2, 584, x1)
+
+inst_671:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x33333332, x2, 588, x1)
+
+inst_672:
+// rs1_val==1431655765 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555555, 0xaaaaaaa9, x2, 592, x1)
+
+inst_673:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x55555554, x2, 596, x1)
+
+inst_674:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x2, x2, 600, x1)
+
+inst_675:
+// rs1_val==1431655765 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0xffff, x2, 604, x1)
+
+inst_676:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0xb504, x2, 608, x1)
+
+inst_677:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555555, 0x66666666, x2, 612, x1)
+
+inst_678:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x33333333, x2, 616, x1)
+
+inst_679:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x5, x2, 620, x1)
+
+inst_680:
+// rs1_val==1431655765 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555555, 0xaaaaaaaa, x2, 624, x1)
+
+inst_681:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x55555555, x2, 628, x1)
+
+inst_682:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555555, 0x3, x2, 632, x1)
+
+inst_683:
+// rs1_val==3 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x10000, x2, 636, x1)
+
+inst_684:
+// rs1_val==3 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x3, 0x1, x2, 640, x1)
+
+inst_685:
+// rs1_val==3 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0xb505, x2, 644, x1)
+
+inst_686:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x66666667, x2, 648, x1)
+
+inst_687:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x33333334, x2, 652, x1)
+
+inst_688:
+// rs1_val==3 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x6, x2, 656, x1)
+
+inst_689:
+// rs1_val==3 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0xaaaaaaab, x2, 660, x1)
+
+inst_690:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x55555556, x2, 664, x1)
+
+inst_691:
+// rs1_val==3 and rs2_val==4,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x4, x2, 668, x1)
+
+inst_692:
+// rs1_val==3 and rs2_val==65534,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xfffe
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0xfffe, x2, 672, x1)
+
+inst_693:
+// rs1_val==3 and rs2_val==0,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x3, 0x0, x2, 676, x1)
+
+inst_694:
+// rs1_val==3 and rs2_val==46339,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0xb503, x2, 680, x1)
+
+inst_695:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x66666665, x2, 684, x1)
+
+inst_696:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x33333332, x2, 688, x1)
+
+inst_697:
+// rs1_val==3 and rs2_val==2863311529,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaa9
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0xaaaaaaa9, x2, 692, x1)
+
+inst_698:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x55555554, x2, 696, x1)
+
+inst_699:
+// rs1_val==3 and rs2_val==2,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x3, 0x2, x2, 700, x1)
+
+inst_700:
+// rs1_val==3 and rs2_val==65535,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0xffff, x2, 704, x1)
+
+inst_701:
+// rs1_val==3 and rs2_val==46340,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0xb504, x2, 708, x1)
+
+inst_702:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x66666666, x2, 712, x1)
+
+inst_703:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x33333333, x2, 716, x1)
+
+inst_704:
+// rs1_val==3 and rs2_val==5,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x5, x2, 720, x1)
+
+inst_705:
+// rs1_val==3 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0xaaaaaaaa, x2, 724, x1)
+
+inst_706:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x3, 0x55555555, x2, 728, x1)
+
+inst_707:
+// rs1_val==3 and rs2_val==3,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x3, 0x3, x2, 732, x1)
+
+inst_708:
+// rs1_val==2863311529 and rs2_val==2863311530,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaaa
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0xaaaaaaaa, x2, 736, x1)
+
+inst_709:
+// rs1_val == (2**(xlen)-1),
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff; op2val:0xfffffbff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xffffffff, 0xfffffbff, x2, 740, x1)
+
+inst_710:
+// rs1_val==2863311529 and rs2_val==1431655765,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555555
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x55555555, x2, 744, x1)
+
+inst_711:
+// rs1_val==1431655764 and rs2_val==65536,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x10000
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x10000, x2, 748, x1)
+
+inst_712:
+// rs1_val==1431655764 and rs2_val==1,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x1
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x1, x2, 752, x1)
+
+inst_713:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0xb505, x2, 756, x1)
+
+inst_714:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0x66666667, x2, 760, x1)
+
+inst_715:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x33333334, x2, 764, x1)
+
+inst_716:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0x55555554, 0x6, x2, 768, x1)
+
+inst_717:
+// rs1_val==1431655764 and rs2_val==2863311531,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaab
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0xaaaaaaab, x2, 772, x1)
+
+inst_718:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x55555554, 0x55555556, x2, 776, x1)
+
+inst_719:
+// rs2_val == 3758096383, rs1_val == 4261412863
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xfdffffff; op2val:0xdfffffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x0, 0xfdffffff, 0xdfffffff, x2, 780, x1)
+
+inst_720:
+// rs2_val == 4286578687, rs1_val == 4026531839
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0xff7fffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0xefffffff, 0xff7fffff, x2, 784, x1)
+
+inst_721:
+// rs2_val == 4294836223,
+// opcode: sltu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xfffdffff
+TEST_RR_OP(sltu, x12, x10, x11, 0x1, 0x5, 0xfffdffff, x2, 788, x1)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_0:
+ .fill 5*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 198*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sra-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sra-01.S
new file mode 100644
index 000000000..98801fb44
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sra-01.S
@@ -0,0 +1,530 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sra instruction of the RISC-V E extension for the sra covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",sra)
+
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x11, rs2==x9, rd==x12, rs1_val < 0 and rs2_val == 0, rs1_val == -1431655766, rs1_val==-1431655766
+// opcode: sra ; op1:x11; op2:x9; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(sra, x12, x11, x9, -0x55555556, -0x55555556, 0x0, x3, 0, x5)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x8, rs2==x12, rd==x8, rs2_val == 15, rs1_val == -524289, rs1_val < 0 and rs2_val > 0 and rs2_val < xlen
+// opcode: sra ; op1:x8; op2:x12; dest:x8; op1val:-0x80001; op2val:0xf
+TEST_RR_OP(sra, x8, x8, x12, -0x11, -0x80001, 0xf, x3, 4, x5)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x10, rs2==x2, rd==x2, rs2_val == 23, rs1_val==3, rs1_val > 0 and rs2_val > 0 and rs2_val < xlen
+// opcode: sra ; op1:x10; op2:x2; dest:x2; op1val:0x3; op2val:0x17
+TEST_RR_OP(sra, x2, x10, x2, 0x0, 0x3, 0x17, x3, 8, x5)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x6, rs2==x6, rd==x4, rs2_val == 27,
+// opcode: sra ; op1:x6; op2:x6; dest:x4; op1val:-0x8; op2val:-0x8
+TEST_RR_OP(sra, x4, x6, x6, -0x1, -0x8, -0x8, x3, 12, x5)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x13, rs2==x13, rd==x13, rs2_val == 29, rs1_val==-1431655765
+// opcode: sra ; op1:x13; op2:x13; dest:x13; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(sra, x13, x13, x13, -0xaaaab, -0x55555555, -0x55555555, x3, 16, x5)
+
+inst_5:
+// rs1==x0, rs2==x10, rd==x7, rs2_val == 30, rs1_val == 16384
+// opcode: sra ; op1:x0; op2:x10; dest:x7; op1val:0x0; op2val:0x1e
+TEST_RR_OP(sra, x7, x0, x10, 0x0, 0x0, 0x1e, x3, 20, x5)
+
+inst_6:
+// rs1==x1, rs2==x15, rd==x14, rs1_val == 2147483647, rs2_val == 21, rs1_val == (2**(xlen-1)-1) and rs2_val >= 0 and rs2_val < xlen
+// opcode: sra ; op1:x1; op2:x15; dest:x14; op1val:0x7fffffff; op2val:0x15
+TEST_RR_OP(sra, x14, x1, x15, 0x3ff, 0x7fffffff, 0x15, x3, 24, x5)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_7:
+// rs1==x3, rs2==x7, rd==x5, rs1_val == -1073741825, rs2_val == 1
+// opcode: sra ; op1:x3; op2:x7; dest:x5; op1val:-0x40000001; op2val:0x1
+TEST_RR_OP(sra, x5, x3, x7, -0x20000001, -0x40000001, 0x1, x4, 0, x6)
+
+inst_8:
+// rs1==x2, rs2==x8, rd==x15, rs1_val == -536870913,
+// opcode: sra ; op1:x2; op2:x8; dest:x15; op1val:-0x20000001; op2val:0x7
+TEST_RR_OP(sra, x15, x2, x8, -0x400001, -0x20000001, 0x7, x4, 4, x6)
+
+inst_9:
+// rs1==x7, rs2==x11, rd==x1, rs1_val == -268435457,
+// opcode: sra ; op1:x7; op2:x11; dest:x1; op1val:-0x10000001; op2val:0x9
+TEST_RR_OP(sra, x1, x7, x11, -0x80001, -0x10000001, 0x9, x4, 8, x6)
+
+inst_10:
+// rs1==x12, rs2==x0, rd==x9, rs1_val == -134217729,
+// opcode: sra ; op1:x12; op2:x0; dest:x9; op1val:-0x8000001; op2val:0x0
+TEST_RR_OP(sra, x9, x12, x0, -0x8000001, -0x8000001, 0x0, x4, 12, x6)
+
+inst_11:
+// rs1==x5, rs2==x14, rd==x10, rs1_val == -67108865,
+// opcode: sra ; op1:x5; op2:x14; dest:x10; op1val:-0x4000001; op2val:0x17
+TEST_RR_OP(sra, x10, x5, x14, -0x9, -0x4000001, 0x17, x4, 16, x6)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_12:
+// rs1==x4, rs2==x5, rd==x0, rs1_val == -33554433,
+// opcode: sra ; op1:x4; op2:x5; dest:x0; op1val:-0x2000001; op2val:0x9
+TEST_RR_OP(sra, x0, x4, x5, 0, -0x2000001, 0x9, x2, 0, x7)
+
+inst_13:
+// rs1==x15, rs2==x4, rd==x3, rs1_val == -16777217,
+// opcode: sra ; op1:x15; op2:x4; dest:x3; op1val:-0x1000001; op2val:0xe
+TEST_RR_OP(sra, x3, x15, x4, -0x401, -0x1000001, 0xe, x2, 4, x7)
+
+inst_14:
+// rs1==x9, rs2==x3, rd==x11, rs1_val == -8388609,
+// opcode: sra ; op1:x9; op2:x3; dest:x11; op1val:-0x800001; op2val:0x11
+TEST_RR_OP(sra, x11, x9, x3, -0x41, -0x800001, 0x11, x2, 8, x7)
+
+inst_15:
+// rs1==x14, rs2==x1, rd==x6, rs1_val == -4194305,
+// opcode: sra ; op1:x14; op2:x1; dest:x6; op1val:-0x400001; op2val:0x1b
+TEST_RR_OP(sra, x6, x14, x1, -0x1, -0x400001, 0x1b, x2, 12, x7)
+
+inst_16:
+// rs1_val == -2097153,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0xf
+TEST_RR_OP(sra, x12, x10, x11, -0x41, -0x200001, 0xf, x2, 16, x7)
+
+inst_17:
+// rs1_val == -1048577, rs2_val == 2
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x2
+TEST_RR_OP(sra, x12, x10, x11, -0x40001, -0x100001, 0x2, x2, 20, x1)
+
+inst_18:
+// rs1_val == -262145,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x9
+TEST_RR_OP(sra, x12, x10, x11, -0x201, -0x40001, 0x9, x2, 24, x1)
+
+inst_19:
+// rs1_val == -131073,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x1e
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x20001, 0x1e, x2, 28, x1)
+
+inst_20:
+// rs1_val == -65537, rs2_val == 16
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:0x10
+TEST_RR_OP(sra, x12, x10, x11, -0x2, -0x10001, 0x10, x2, 32, x1)
+
+inst_21:
+// rs1_val == -32769,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x1b
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x8001, 0x1b, x2, 36, x1)
+
+inst_22:
+// rs1_val == -16385,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0x2
+TEST_RR_OP(sra, x12, x10, x11, -0x1001, -0x4001, 0x2, x2, 40, x1)
+
+inst_23:
+// rs1_val == -8193,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0x1e
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x2001, 0x1e, x2, 44, x1)
+
+inst_24:
+// rs1_val == -4097,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0xf
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x1001, 0xf, x2, 48, x1)
+
+inst_25:
+// rs1_val == -2049,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x12
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x801, 0x12, x2, 52, x1)
+
+inst_26:
+// rs1_val == -1025,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x12
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x401, 0x12, x2, 56, x1)
+
+inst_27:
+// rs1_val == -513,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x1b
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x201, 0x1b, x2, 60, x1)
+
+inst_28:
+// rs1_val == -257,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0x9
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x101, 0x9, x2, 64, x1)
+
+inst_29:
+// rs1_val == -129,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x6
+TEST_RR_OP(sra, x12, x10, x11, -0x3, -0x81, 0x6, x2, 68, x1)
+
+inst_30:
+// rs1_val == -65,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:0x1d
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x41, 0x1d, x2, 72, x1)
+
+inst_31:
+// rs1_val == -33, rs2_val == 8
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x8
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x21, 0x8, x2, 76, x1)
+
+inst_32:
+// rs1_val == -17,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0xe
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x11, 0xe, x2, 80, x1)
+
+inst_33:
+// rs1_val == -9,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x9
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x9, 0x9, x2, 84, x1)
+
+inst_34:
+// rs1_val == -5,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0xe
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x5, 0xe, x2, 88, x1)
+
+inst_35:
+// rs1_val == -3,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:0x15
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x3, 0x15, x2, 92, x1)
+
+inst_36:
+// rs1_val == -2,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x10
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0x2, 0x10, x2, 96, x1)
+
+inst_37:
+// rs2_val == 4, rs1_val==2, rs1_val == 2
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x2, 0x4, x2, 100, x1)
+
+inst_38:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and rs2_val >= 0 and rs2_val < xlen
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x13
+TEST_RR_OP(sra, x12, x10, x11, -0x1000, -0x80000000, 0x13, x2, 104, x1)
+
+inst_39:
+// rs1_val == 1073741824,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x1b
+TEST_RR_OP(sra, x12, x10, x11, 0x8, 0x40000000, 0x1b, x2, 108, x1)
+
+inst_40:
+// rs1_val == 536870912,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x9
+TEST_RR_OP(sra, x12, x10, x11, 0x100000, 0x20000000, 0x9, x2, 112, x1)
+
+inst_41:
+// rs1_val == 268435456,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0xb
+TEST_RR_OP(sra, x12, x10, x11, 0x20000, 0x10000000, 0xb, x2, 116, x1)
+
+inst_42:
+// rs1_val == 134217728,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x17
+TEST_RR_OP(sra, x12, x10, x11, 0x10, 0x8000000, 0x17, x2, 120, x1)
+
+inst_43:
+// rs1_val == 67108864,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0xc
+TEST_RR_OP(sra, x12, x10, x11, 0x4000, 0x4000000, 0xc, x2, 124, x1)
+
+inst_44:
+// rs1_val == 33554432,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x11
+TEST_RR_OP(sra, x12, x10, x11, 0x100, 0x2000000, 0x11, x2, 128, x1)
+
+inst_45:
+// rs1_val == 16777216,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x11
+TEST_RR_OP(sra, x12, x10, x11, 0x80, 0x1000000, 0x11, x2, 132, x1)
+
+inst_46:
+// rs1_val == 8388608, rs1_val > 0 and rs2_val == 0
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x0
+TEST_RR_OP(sra, x12, x10, x11, 0x800000, 0x800000, 0x0, x2, 136, x1)
+
+inst_47:
+// rs1_val == 4194304,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0xb
+TEST_RR_OP(sra, x12, x10, x11, 0x800, 0x400000, 0xb, x2, 140, x1)
+
+inst_48:
+// rs1_val == 2097152,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x9
+TEST_RR_OP(sra, x12, x10, x11, 0x1000, 0x200000, 0x9, x2, 144, x1)
+
+inst_49:
+// rs1_val == 1048576,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x1
+TEST_RR_OP(sra, x12, x10, x11, 0x80000, 0x100000, 0x1, x2, 148, x1)
+
+inst_50:
+// rs1_val == 524288, rs2_val == 10
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0xa
+TEST_RR_OP(sra, x12, x10, x11, 0x200, 0x80000, 0xa, x2, 152, x1)
+
+inst_51:
+// rs1_val == 262144,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x1f
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x40000, 0x1f, x2, 156, x1)
+
+inst_52:
+// rs1_val == 131072,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0xb
+TEST_RR_OP(sra, x12, x10, x11, 0x40, 0x20000, 0xb, x2, 160, x1)
+
+inst_53:
+// rs1_val == 65536,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xa
+TEST_RR_OP(sra, x12, x10, x11, 0x40, 0x10000, 0xa, x2, 164, x1)
+
+inst_54:
+// rs1_val == 32768,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x10
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x8000, 0x10, x2, 168, x1)
+
+inst_55:
+// rs1_val == 8192,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0xf
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x2000, 0xf, x2, 172, x1)
+
+inst_56:
+// rs1_val == 4096,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x1d
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x1000, 0x1d, x2, 176, x1)
+
+inst_57:
+// rs1_val == 2048,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x8
+TEST_RR_OP(sra, x12, x10, x11, 0x8, 0x800, 0x8, x2, 180, x1)
+
+inst_58:
+// rs1_val == 1024,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x5
+TEST_RR_OP(sra, x12, x10, x11, 0x20, 0x400, 0x5, x2, 184, x1)
+
+inst_59:
+// rs1_val == 512,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x1b
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x200, 0x1b, x2, 188, x1)
+
+inst_60:
+// rs1_val == 256,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0xd
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x100, 0xd, x2, 192, x1)
+
+inst_61:
+// rs1_val == 128,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x3
+TEST_RR_OP(sra, x12, x10, x11, 0x10, 0x80, 0x3, x2, 196, x1)
+
+inst_62:
+// rs1_val == 64,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0x5
+TEST_RR_OP(sra, x12, x10, x11, 0x2, 0x40, 0x5, x2, 200, x1)
+
+inst_63:
+// rs1_val == 32,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x5
+TEST_RR_OP(sra, x12, x10, x11, 0x1, 0x20, 0x5, x2, 204, x1)
+
+inst_64:
+// rs1_val == 16,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x8
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x10, 0x8, x2, 208, x1)
+
+inst_65:
+// rs1_val == 8,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x3
+TEST_RR_OP(sra, x12, x10, x11, 0x1, 0x8, 0x3, x2, 212, x1)
+
+inst_66:
+// rs1_val == 4, rs1_val==4
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x4, 0xb, x2, 216, x1)
+
+inst_67:
+// rs1_val == 1, rs1_val == 1 and rs2_val >= 0 and rs2_val < xlen
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x8
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x1, 0x8, x2, 220, x1)
+
+inst_68:
+// rs1_val==46341,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x1e
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0xb505, 0x1e, x2, 224, x1)
+
+inst_69:
+// rs1_val==-46339,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x8
+TEST_RR_OP(sra, x12, x10, x11, -0xb6, -0xb503, 0x8, x2, 228, x1)
+
+inst_70:
+// rs1_val==1717986919,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x10
+TEST_RR_OP(sra, x12, x10, x11, 0x6666, 0x66666667, 0x10, x2, 232, x1)
+
+inst_71:
+// rs1_val==858993460,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xa
+TEST_RR_OP(sra, x12, x10, x11, 0xccccc, 0x33333334, 0xa, x2, 236, x1)
+
+inst_72:
+// rs1_val==6,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x13
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x6, 0x13, x2, 240, x1)
+
+inst_73:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x15
+TEST_RR_OP(sra, x12, x10, x11, 0x2aa, 0x55555555, 0x15, x2, 244, x1)
+
+inst_74:
+// rs1_val == 0 and rs2_val >= 0 and rs2_val < xlen, rs1_val==0
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xa
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x0, 0xa, x2, 248, x1)
+
+inst_75:
+// rs1_val == rs2_val and rs2_val > 0 and rs2_val < xlen,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0x7
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x7, 0x7, x2, 252, x1)
+
+inst_76:
+// rs1_val==1431655766,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x13
+TEST_RR_OP(sra, x12, x10, x11, 0xaaa, 0x55555556, 0x13, x2, 256, x1)
+
+inst_77:
+// rs1_val==46339,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x7
+TEST_RR_OP(sra, x12, x10, x11, 0x16a, 0xb503, 0x7, x2, 260, x1)
+
+inst_78:
+// rs1_val==1717986917,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x1b
+TEST_RR_OP(sra, x12, x10, x11, 0xc, 0x66666665, 0x1b, x2, 264, x1)
+
+inst_79:
+// rs1_val==858993458,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x15
+TEST_RR_OP(sra, x12, x10, x11, 0x199, 0x33333332, 0x15, x2, 268, x1)
+
+inst_80:
+// rs1_val==1431655764,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x7
+TEST_RR_OP(sra, x12, x10, x11, 0xaaaaaa, 0x55555554, 0x7, x2, 272, x1)
+
+inst_81:
+// rs1_val==46340,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xf
+TEST_RR_OP(sra, x12, x10, x11, 0x1, 0xb504, 0xf, x2, 276, x1)
+
+inst_82:
+// rs1_val==-46340,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x15
+TEST_RR_OP(sra, x12, x10, x11, -0x1, -0xb504, 0x15, x2, 280, x1)
+
+inst_83:
+// rs1_val==1717986918,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x1e
+TEST_RR_OP(sra, x12, x10, x11, 0x1, 0x66666666, 0x1e, x2, 284, x1)
+
+inst_84:
+// rs1_val==858993459,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x1d
+TEST_RR_OP(sra, x12, x10, x11, 0x1, 0x33333333, 0x1d, x2, 288, x1)
+
+inst_85:
+// rs1_val==5,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x1d
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x5, 0x1d, x2, 292, x1)
+
+inst_86:
+// rs2_val == 29, rs1_val==-1431655765
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x1d
+TEST_RR_OP(sra, x12, x10, x11, -0x3, -0x55555555, 0x1d, x2, 296, x1)
+
+inst_87:
+// rs2_val == 30, rs1_val == 16384
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0x1e
+TEST_RR_OP(sra, x12, x10, x11, 0x0, 0x4000, 0x1e, x2, 300, x1)
+
+inst_88:
+// rs1_val == -134217729,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:0xb
+TEST_RR_OP(sra, x12, x10, x11, -0x10001, -0x8000001, 0xb, x2, 304, x1)
+
+inst_89:
+// rs1_val == -33554433,
+// opcode: sra ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:0x9
+TEST_RR_OP(sra, x12, x10, x11, -0x10001, -0x2000001, 0x9, x2, 308, x1)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x3_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 5*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 78*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srai-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srai-01.S
new file mode 100644
index 000000000..7e5a571ad
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srai-01.S
@@ -0,0 +1,515 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the srai instruction of the RISC-V E extension for the srai covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",srai)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rd, rs1==x0, rd==x2, rs1_val < 0 and imm_val == (xlen-1), rs1_val == -536870913, rs1_val < 0 and imm_val > 0 and imm_val < xlen
+// opcode: srai ; op1:x0; dest:x2; op1val:0x0; immval:0x1f
+TEST_IMM_OP( srai, x2, x0, 0x0, 0x0, 0x1f, x1, 0, x5)
+
+inst_1:
+// rs1 == rd, rs1==x14, rd==x14, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1) and imm_val >= 0 and imm_val < xlen, rs1_val > 0 and imm_val > 0 and imm_val < xlen
+// opcode: srai ; op1:x14; dest:x14; op1val:0x7fffffff; immval:0xc
+TEST_IMM_OP( srai, x14, x14, 0x7ffff, 0x7fffffff, 0xc, x1, 4, x5)
+
+inst_2:
+// rs1==x3, rd==x11, rs1_val == -1073741825,
+// opcode: srai ; op1:x3; dest:x11; op1val:-0x40000001; immval:0x7
+TEST_IMM_OP( srai, x11, x3, -0x800001, -0x40000001, 0x7, x1, 8, x5)
+
+inst_3:
+// rs1==x15, rd==x4, rs1_val == -268435457, rs1_val < 0 and imm_val == 0
+// opcode: srai ; op1:x15; dest:x4; op1val:-0x10000001; immval:0x0
+TEST_IMM_OP( srai, x4, x15, -0x10000001, -0x10000001, 0x0, x1, 12, x5)
+
+inst_4:
+// rs1==x7, rd==x10, rs1_val == -134217729, imm_val == 21
+// opcode: srai ; op1:x7; dest:x10; op1val:-0x8000001; immval:0x15
+TEST_IMM_OP( srai, x10, x7, -0x41, -0x8000001, 0x15, x1, 16, x5)
+
+inst_5:
+// rs1==x8, rd==x6, rs1_val == -67108865, imm_val == 10
+// opcode: srai ; op1:x8; dest:x6; op1val:-0x4000001; immval:0xa
+TEST_IMM_OP( srai, x6, x8, -0x10001, -0x4000001, 0xa, x1, 20, x5)
+
+inst_6:
+// rs1==x9, rd==x13, rs1_val == -33554433, imm_val == 2
+// opcode: srai ; op1:x9; dest:x13; op1val:-0x2000001; immval:0x2
+TEST_IMM_OP( srai, x13, x9, -0x800001, -0x2000001, 0x2, x1, 24, x5)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_7:
+// rs1==x5, rd==x0, rs1_val == -16777217,
+// opcode: srai ; op1:x5; dest:x0; op1val:-0x1000001; immval:0x12
+TEST_IMM_OP( srai, x0, x5, 0, -0x1000001, 0x12, x3, 0, x6)
+
+inst_8:
+// rs1==x10, rd==x8, rs1_val == -8388609, imm_val == 30
+// opcode: srai ; op1:x10; dest:x8; op1val:-0x800001; immval:0x1e
+TEST_IMM_OP( srai, x8, x10, -0x1, -0x800001, 0x1e, x3, 4, x6)
+
+inst_9:
+// rs1==x13, rd==x5, rs1_val == -4194305,
+// opcode: srai ; op1:x13; dest:x5; op1val:-0x400001; immval:0x9
+TEST_IMM_OP( srai, x5, x13, -0x2001, -0x400001, 0x9, x3, 8, x6)
+
+inst_10:
+// rs1==x4, rd==x12, rs1_val == -2097153,
+// opcode: srai ; op1:x4; dest:x12; op1val:-0x200001; immval:0x7
+TEST_IMM_OP( srai, x12, x4, -0x4001, -0x200001, 0x7, x3, 12, x6)
+
+inst_11:
+// rs1==x12, rd==x7, rs1_val == -1048577,
+// opcode: srai ; op1:x12; dest:x7; op1val:-0x100001; immval:0x7
+TEST_IMM_OP( srai, x7, x12, -0x2001, -0x100001, 0x7, x3, 16, x6)
+
+inst_12:
+// rs1==x2, rd==x15, rs1_val == -524289,
+// opcode: srai ; op1:x2; dest:x15; op1val:-0x80001; immval:0x7
+TEST_IMM_OP( srai, x15, x2, -0x1001, -0x80001, 0x7, x3, 20, x6)
+
+inst_13:
+// rs1==x1, rd==x9, rs1_val == -262145, imm_val == 8
+// opcode: srai ; op1:x1; dest:x9; op1val:-0x40001; immval:0x8
+TEST_IMM_OP( srai, x9, x1, -0x401, -0x40001, 0x8, x3, 24, x6)
+
+inst_14:
+// rs1==x6, rd==x1, rs1_val == -131073,
+// opcode: srai ; op1:x6; dest:x1; op1val:-0x20001; immval:0x13
+TEST_IMM_OP( srai, x1, x6, -0x1, -0x20001, 0x13, x3, 28, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_15:
+// rs1==x11, rd==x3, rs1_val == -65537, imm_val == 4
+// opcode: srai ; op1:x11; dest:x3; op1val:-0x10001; immval:0x4
+TEST_IMM_OP( srai, x3, x11, -0x1001, -0x10001, 0x4, x1, 0, x2)
+
+inst_16:
+// rs1_val == -32769,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x8001; immval:0x7
+TEST_IMM_OP( srai, x11, x10, -0x101, -0x8001, 0x7, x1, 4, x2)
+
+inst_17:
+// rs1_val == -16385, imm_val == 16
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x4001; immval:0x10
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x4001, 0x10, x1, 8, x2)
+
+inst_18:
+// rs1_val == -8193,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x2001; immval:0x13
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x2001, 0x13, x1, 12, x2)
+
+inst_19:
+// rs1_val == -4097,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x1001; immval:0x1e
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x1001, 0x1e, x1, 16, x2)
+
+inst_20:
+// rs1_val == -2049, imm_val == 15
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x801; immval:0xf
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x801, 0xf, x1, 20, x2)
+
+inst_21:
+// rs1_val == -1025,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x401; immval:0x11
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x401, 0x11, x1, 24, x2)
+
+inst_22:
+// rs1_val == -513,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x201; immval:0xb
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x201, 0xb, x1, 28, x2)
+
+inst_23:
+// rs1_val == -257, imm_val == 1
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x101; immval:0x1
+TEST_IMM_OP( srai, x11, x10, -0x81, -0x101, 0x1, x1, 32, x2)
+
+inst_24:
+// rs1_val == -129,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x81; immval:0xc
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x81, 0xc, x1, 36, x2)
+
+inst_25:
+// rs1_val == -65,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x41; immval:0x13
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x41, 0x13, x1, 40, x2)
+
+inst_26:
+// rs1_val == -33,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x21; immval:0xd
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x21, 0xd, x1, 44, x2)
+
+inst_27:
+// rs1_val == -17,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x11; immval:0x1e
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x11, 0x1e, x1, 48, x2)
+
+inst_28:
+// rs1_val == -9,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x9; immval:0x12
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x9, 0x12, x1, 52, x2)
+
+inst_29:
+// rs1_val == -5,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x5; immval:0xf
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x5, 0xf, x1, 56, x2)
+
+inst_30:
+// rs1_val == -3,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x3; immval:0x9
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x3, 0x9, x1, 60, x2)
+
+inst_31:
+// rs1_val == -2,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x2; immval:0x1f
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x2, 0x1f, x1, 64, x2)
+
+inst_32:
+// imm_val == 23, rs1_val == 4096
+// opcode: srai ; op1:x10; dest:x11; op1val:0x1000; immval:0x17
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x1000, 0x17, x1, 68, x2)
+
+inst_33:
+// imm_val == 27, rs1_val == -1431655766, rs1_val==-1431655766
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x1b
+TEST_IMM_OP( srai, x11, x10, -0xb, -0x55555556, 0x1b, x1, 72, x2)
+
+inst_34:
+// imm_val == 29, rs1_val == 0 and imm_val >= 0 and imm_val < xlen, rs1_val==0
+// opcode: srai ; op1:x10; dest:x11; op1val:0x0; immval:0x1d
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x0, 0x1d, x1, 76, x2)
+
+inst_35:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and imm_val >= 0 and imm_val < xlen
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x80000000; immval:0x2
+TEST_IMM_OP( srai, x11, x10, -0x20000000, -0x80000000, 0x2, x1, 80, x2)
+
+inst_36:
+// rs1_val == 1073741824,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x40000000; immval:0x2
+TEST_IMM_OP( srai, x11, x10, 0x10000000, 0x40000000, 0x2, x1, 84, x2)
+
+inst_37:
+// rs1_val == 536870912,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x20000000; immval:0x4
+TEST_IMM_OP( srai, x11, x10, 0x2000000, 0x20000000, 0x4, x1, 88, x2)
+
+inst_38:
+// rs1_val == 268435456,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x10000000; immval:0xe
+TEST_IMM_OP( srai, x11, x10, 0x4000, 0x10000000, 0xe, x1, 92, x2)
+
+inst_39:
+// rs1_val == 134217728,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x8000000; immval:0x15
+TEST_IMM_OP( srai, x11, x10, 0x40, 0x8000000, 0x15, x1, 96, x2)
+
+inst_40:
+// rs1_val == 67108864,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x4000000; immval:0xc
+TEST_IMM_OP( srai, x11, x10, 0x4000, 0x4000000, 0xc, x1, 100, x2)
+
+inst_41:
+// rs1_val == 33554432,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x2000000; immval:0x9
+TEST_IMM_OP( srai, x11, x10, 0x10000, 0x2000000, 0x9, x1, 104, x2)
+
+inst_42:
+// rs1_val == 16777216,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x1000000; immval:0xe
+TEST_IMM_OP( srai, x11, x10, 0x400, 0x1000000, 0xe, x1, 108, x2)
+
+inst_43:
+// rs1_val == 8388608,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x800000; immval:0xb
+TEST_IMM_OP( srai, x11, x10, 0x1000, 0x800000, 0xb, x1, 112, x2)
+
+inst_44:
+// rs1_val == 4194304,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x400000; immval:0x11
+TEST_IMM_OP( srai, x11, x10, 0x20, 0x400000, 0x11, x1, 116, x2)
+
+inst_45:
+// rs1_val == 2097152,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x200000; immval:0x4
+TEST_IMM_OP( srai, x11, x10, 0x20000, 0x200000, 0x4, x1, 120, x2)
+
+inst_46:
+// rs1_val == 1048576,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x100000; immval:0x1b
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x100000, 0x1b, x1, 124, x2)
+
+inst_47:
+// rs1_val == 524288,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x80000; immval:0x17
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x80000, 0x17, x1, 128, x2)
+
+inst_48:
+// rs1_val == 262144,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x40000; immval:0x11
+TEST_IMM_OP( srai, x11, x10, 0x2, 0x40000, 0x11, x1, 132, x2)
+
+inst_49:
+// rs1_val == 131072,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x20000; immval:0x9
+TEST_IMM_OP( srai, x11, x10, 0x100, 0x20000, 0x9, x1, 136, x2)
+
+inst_50:
+// rs1_val == 65536,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x10000; immval:0x10
+TEST_IMM_OP( srai, x11, x10, 0x1, 0x10000, 0x10, x1, 140, x2)
+
+inst_51:
+// rs1_val == 32768,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x8000; immval:0xa
+TEST_IMM_OP( srai, x11, x10, 0x20, 0x8000, 0xa, x1, 144, x2)
+
+inst_52:
+// rs1_val == 16384,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x4000; immval:0x12
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x4000, 0x12, x1, 148, x2)
+
+inst_53:
+// rs1_val == 8192,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x2000; immval:0x5
+TEST_IMM_OP( srai, x11, x10, 0x100, 0x2000, 0x5, x1, 152, x2)
+
+inst_54:
+// rs1_val == 2048,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x800; immval:0x6
+TEST_IMM_OP( srai, x11, x10, 0x20, 0x800, 0x6, x1, 156, x2)
+
+inst_55:
+// rs1_val == 1024,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x400; immval:0x17
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x400, 0x17, x1, 160, x2)
+
+inst_56:
+// rs1_val == 512,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x200; immval:0xb
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x200, 0xb, x1, 164, x2)
+
+inst_57:
+// rs1_val == 256,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x100; immval:0x9
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x100, 0x9, x1, 168, x2)
+
+inst_58:
+// rs1_val == 128,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x80; immval:0x2
+TEST_IMM_OP( srai, x11, x10, 0x20, 0x80, 0x2, x1, 172, x2)
+
+inst_59:
+// rs1_val == 64,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x40; immval:0x11
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x40, 0x11, x1, 176, x2)
+
+inst_60:
+// rs1_val == 32,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x20; immval:0xb
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x20, 0xb, x1, 180, x2)
+
+inst_61:
+// rs1_val == 16,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x10; immval:0xd
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x10, 0xd, x1, 184, x2)
+
+inst_62:
+// rs1_val == 8, rs1_val > 0 and imm_val == (xlen-1)
+// opcode: srai ; op1:x10; dest:x11; op1val:0x8; immval:0x1f
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x8, 0x1f, x1, 188, x2)
+
+inst_63:
+// rs1_val == 4, rs1_val==4
+// opcode: srai ; op1:x10; dest:x11; op1val:0x4; immval:0x1f
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x4, 0x1f, x1, 192, x2)
+
+inst_64:
+// rs1_val == 2, rs1_val==2
+// opcode: srai ; op1:x10; dest:x11; op1val:0x2; immval:0xc
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x2, 0xc, x1, 196, x2)
+
+inst_65:
+// rs1_val == 1, rs1_val == 1 and imm_val >= 0 and imm_val < xlen
+// opcode: srai ; op1:x10; dest:x11; op1val:0x1; immval:0x9
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x1, 0x9, x1, 200, x2)
+
+inst_66:
+// rs1_val==46341,
+// opcode: srai ; op1:x10; dest:x11; op1val:0xb505; immval:0xb
+TEST_IMM_OP( srai, x11, x10, 0x16, 0xb505, 0xb, x1, 204, x2)
+
+inst_67:
+// rs1_val==-46339,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0xb503; immval:0xf
+TEST_IMM_OP( srai, x11, x10, -0x2, -0xb503, 0xf, x1, 208, x2)
+
+inst_68:
+// rs1_val==1717986919,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x66666667; immval:0x8
+TEST_IMM_OP( srai, x11, x10, 0x666666, 0x66666667, 0x8, x1, 212, x2)
+
+inst_69:
+// rs1_val==858993460,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x33333334; immval:0xc
+TEST_IMM_OP( srai, x11, x10, 0x33333, 0x33333334, 0xc, x1, 216, x2)
+
+inst_70:
+// rs1_val==6,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x6; immval:0x17
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x6, 0x17, x1, 220, x2)
+
+inst_71:
+// rs1_val==-1431655765,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x55555555; immval:0xb
+TEST_IMM_OP( srai, x11, x10, -0xaaaab, -0x55555555, 0xb, x1, 224, x2)
+
+inst_72:
+// rs1_val==3,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x3; immval:0x8
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x3, 0x8, x1, 228, x2)
+
+inst_73:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode: srai ; op1:x10; dest:x11; op1val:0x55555555; immval:0x1e
+TEST_IMM_OP( srai, x11, x10, 0x1, 0x55555555, 0x1e, x1, 232, x2)
+
+inst_74:
+// rs1_val == imm_val and imm_val > 0 and imm_val < xlen, rs1_val==5
+// opcode: srai ; op1:x10; dest:x11; op1val:0x5; immval:0x5
+TEST_IMM_OP( srai, x11, x10, 0x0, 0x5, 0x5, x1, 236, x2)
+
+inst_75:
+// rs1_val > 0 and imm_val == 0,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x2; immval:0x0
+TEST_IMM_OP( srai, x11, x10, 0x2, 0x2, 0x0, x1, 240, x2)
+
+inst_76:
+// rs1_val==1431655766,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2
+TEST_IMM_OP( srai, x11, x10, 0x15555555, 0x55555556, 0x2, x1, 244, x2)
+
+inst_77:
+// rs1_val==46339,
+// opcode: srai ; op1:x10; dest:x11; op1val:0xb503; immval:0x1
+TEST_IMM_OP( srai, x11, x10, 0x5a81, 0xb503, 0x1, x1, 248, x2)
+
+inst_78:
+// rs1_val==1717986917,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x66666665; immval:0x10
+TEST_IMM_OP( srai, x11, x10, 0x6666, 0x66666665, 0x10, x1, 252, x2)
+
+inst_79:
+// rs1_val==858993458,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x33333332; immval:0x12
+TEST_IMM_OP( srai, x11, x10, 0xccc, 0x33333332, 0x12, x1, 256, x2)
+
+inst_80:
+// rs1_val==1431655764,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x55555554; immval:0x1b
+TEST_IMM_OP( srai, x11, x10, 0xa, 0x55555554, 0x1b, x1, 260, x2)
+
+inst_81:
+// rs1_val==46340,
+// opcode: srai ; op1:x10; dest:x11; op1val:0xb504; immval:0x1e
+TEST_IMM_OP( srai, x11, x10, 0x0, 0xb504, 0x1e, x1, 264, x2)
+
+inst_82:
+// rs1_val==-46340,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0xb504; immval:0x11
+TEST_IMM_OP( srai, x11, x10, -0x1, -0xb504, 0x11, x1, 268, x2)
+
+inst_83:
+// rs1_val==1717986918,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x66666666; immval:0xe
+TEST_IMM_OP( srai, x11, x10, 0x19999, 0x66666666, 0xe, x1, 272, x2)
+
+inst_84:
+// rs1_val==858993459,
+// opcode: srai ; op1:x10; dest:x11; op1val:0x33333333; immval:0x12
+TEST_IMM_OP( srai, x11, x10, 0xccc, 0x33333333, 0x12, x1, 276, x2)
+
+inst_85:
+// rs1_val < 0 and imm_val == (xlen-1), rs1_val == -536870913, rs1_val < 0 and imm_val > 0 and imm_val < xlen
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x20000001; immval:0x1f
+TEST_IMM_OP( srai, x11, x10, -0x1, -0x20000001, 0x1f, x1, 280, x2)
+
+inst_86:
+// rs1_val == -16777217,
+// opcode: srai ; op1:x10; dest:x11; op1val:-0x1000001; immval:0x12
+TEST_IMM_OP( srai, x11, x10, -0x41, -0x1000001, 0x12, x1, 284, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 72*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srl-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srl-01.S
new file mode 100644
index 000000000..b392ecba8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srl-01.S
@@ -0,0 +1,525 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the srl instruction of the RISC-V E extension for the srl covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",srl)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x10, rs2==x4, rd==x7, rs1_val < 0 and rs2_val == 0, rs1_val == -9
+// opcode: srl ; op1:x10; op2:x4; dest:x7; op1val:-0x9; op2val:0x0
+TEST_RR_OP(srl, x7, x10, x4, 0xfffffff7, -0x9, 0x0, x1, 0, x6)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x15, rs2==x0, rd==x15, rs2_val == 15, rs1_val < 0 and rs2_val > 0 and rs2_val < xlen
+// opcode: srl ; op1:x15; op2:x0; dest:x15; op1val:-0x6; op2val:0x0
+TEST_RR_OP(srl, x15, x15, x0, 0xfffffffa, -0x6, 0x0, x1, 4, x6)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x2, rs2==x3, rd==x3, rs2_val == 23, rs1_val == -2049
+// opcode: srl ; op1:x2; op2:x3; dest:x3; op1val:-0x801; op2val:0x17
+TEST_RR_OP(srl, x3, x2, x3, 0x1ff, -0x801, 0x17, x1, 8, x6)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x5, rs2==x5, rd==x12, rs2_val == 27, rs1_val == -1048577
+// opcode: srl ; op1:x5; op2:x5; dest:x12; op1val:-0x100001; op2val:-0x100001
+TEST_RR_OP(srl, x12, x5, x5, 0x1, -0x100001, -0x100001, x1, 12, x6)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x14, rs2==x14, rd==x14, rs2_val == 29, rs1_val == -16777217
+// opcode: srl ; op1:x14; op2:x14; dest:x14; op1val:-0x1000001; op2val:-0x1000001
+TEST_RR_OP(srl, x14, x14, x14, 0x1, -0x1000001, -0x1000001, x1, 16, x6)
+
+inst_5:
+// rs1==x12, rs2==x10, rd==x2, rs2_val == 30, rs1_val == -1073741825
+// opcode: srl ; op1:x12; op2:x10; dest:x2; op1val:-0x40000001; op2val:0x1e
+TEST_RR_OP(srl, x2, x12, x10, 0x2, -0x40000001, 0x1e, x1, 20, x6)
+
+inst_6:
+// rs1==x11, rs2==x15, rd==x9, rs1_val == 2147483647, rs1_val > 0 and rs2_val > 0 and rs2_val < xlen, rs1_val == (2**(xlen-1)-1) and rs2_val >= 0 and rs2_val < xlen
+// opcode: srl ; op1:x11; op2:x15; dest:x9; op1val:0x7fffffff; op2val:0x1b
+TEST_RR_OP(srl, x9, x11, x15, 0xf, 0x7fffffff, 0x1b, x1, 24, x6)
+
+inst_7:
+// rs1==x4, rs2==x6, rd==x10, rs1_val == -536870913,
+// opcode: srl ; op1:x4; op2:x6; dest:x10; op1val:-0x20000001; op2val:0x13
+TEST_RR_OP(srl, x10, x4, x6, 0x1bff, -0x20000001, 0x13, x1, 28, x2)
+RVTEST_SIGBASE( x10,signature_x10_0)
+
+inst_8:
+// rs1==x0, rs2==x9, rd==x8, rs1_val == -268435457,
+// opcode: srl ; op1:x0; op2:x9; dest:x8; op1val:0x0; op2val:0xe
+TEST_RR_OP(srl, x8, x0, x9, 0x0, 0x0, 0xe, x10, 0, x2)
+
+inst_9:
+// rs1==x1, rs2==x7, rd==x11, rs1_val == -134217729,
+// opcode: srl ; op1:x1; op2:x7; dest:x11; op1val:-0x8000001; op2val:0x13
+TEST_RR_OP(srl, x11, x1, x7, 0x1eff, -0x8000001, 0x13, x10, 4, x2)
+
+inst_10:
+// rs1==x7, rs2==x12, rd==x5, rs1_val == -67108865,
+// opcode: srl ; op1:x7; op2:x12; dest:x5; op1val:-0x4000001; op2val:0x1b
+TEST_RR_OP(srl, x5, x7, x12, 0x1f, -0x4000001, 0x1b, x10, 8, x2)
+
+inst_11:
+// rs1==x6, rs2==x13, rd==x1, rs1_val == -33554433,
+// opcode: srl ; op1:x6; op2:x13; dest:x1; op1val:-0x2000001; op2val:0x6
+TEST_RR_OP(srl, x1, x6, x13, 0x3f7ffff, -0x2000001, 0x6, x10, 12, x2)
+
+inst_12:
+// rs1==x9, rs2==x8, rd==x4, rs1_val == -8388609,
+// opcode: srl ; op1:x9; op2:x8; dest:x4; op1val:-0x800001; op2val:0xe
+TEST_RR_OP(srl, x4, x9, x8, 0x3fdff, -0x800001, 0xe, x10, 16, x2)
+
+inst_13:
+// rs1==x3, rs2==x11, rd==x6, rs1_val == -4194305, rs2_val == 8
+// opcode: srl ; op1:x3; op2:x11; dest:x6; op1val:-0x400001; op2val:0x8
+TEST_RR_OP(srl, x6, x3, x11, 0xffbfff, -0x400001, 0x8, x10, 20, x2)
+
+inst_14:
+// rs1==x13, rs2==x1, rd==x0, rs1_val == -2097153, rs2_val == 4
+// opcode: srl ; op1:x13; op2:x1; dest:x0; op1val:-0x200001; op2val:0x4
+TEST_RR_OP(srl, x0, x13, x1, 0, -0x200001, 0x4, x10, 24, x3)
+
+inst_15:
+// rs1==x8, rs2==x2, rd==x13, rs1_val == -524289,
+// opcode: srl ; op1:x8; op2:x2; dest:x13; op1val:-0x80001; op2val:0x1d
+TEST_RR_OP(srl, x13, x8, x2, 0x7, -0x80001, 0x1d, x10, 28, x3)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_16:
+// rs1_val == -262145,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x4
+TEST_RR_OP(srl, x12, x10, x11, 0xfffbfff, -0x40001, 0x4, x1, 0, x3)
+
+inst_17:
+// rs1_val == -131073,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x8
+TEST_RR_OP(srl, x12, x10, x11, 0xfffdff, -0x20001, 0x8, x1, 4, x3)
+
+inst_18:
+// rs1_val == -65537,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:0x1e
+TEST_RR_OP(srl, x12, x10, x11, 0x3, -0x10001, 0x1e, x1, 8, x3)
+
+inst_19:
+// rs1_val == -32769,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x1d
+TEST_RR_OP(srl, x12, x10, x11, 0x7, -0x8001, 0x1d, x1, 12, x3)
+
+inst_20:
+// rs1_val == -16385, rs2_val == 10
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0xa
+TEST_RR_OP(srl, x12, x10, x11, 0x3fffef, -0x4001, 0xa, x1, 16, x3)
+
+inst_21:
+// rs1_val == -8193,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x3ffff, -0x2001, 0xe, x1, 20, x3)
+
+inst_22:
+// rs1_val == -4097,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0x1f
+TEST_RR_OP(srl, x12, x10, x11, 0x1, -0x1001, 0x1f, x1, 24, x3)
+
+inst_23:
+// rs1_val == -1025,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x1e
+TEST_RR_OP(srl, x12, x10, x11, 0x3, -0x401, 0x1e, x1, 28, x3)
+
+inst_24:
+// rs1_val == -513,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x11
+TEST_RR_OP(srl, x12, x10, x11, 0x7fff, -0x201, 0x11, x1, 32, x3)
+
+inst_25:
+// rs1_val == -257,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0x1d
+TEST_RR_OP(srl, x12, x10, x11, 0x7, -0x101, 0x1d, x1, 36, x3)
+
+inst_26:
+// rs1_val == -129,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0xd
+TEST_RR_OP(srl, x12, x10, x11, 0x7ffff, -0x81, 0xd, x1, 40, x3)
+
+inst_27:
+// rs1_val == -65,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:0x9
+TEST_RR_OP(srl, x12, x10, x11, 0x7fffff, -0x41, 0x9, x1, 44, x3)
+
+inst_28:
+// rs1_val == -33, rs2_val == 21
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x15
+TEST_RR_OP(srl, x12, x10, x11, 0x7ff, -0x21, 0x15, x1, 48, x3)
+
+inst_29:
+// rs1_val == -17,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x3ffff, -0x11, 0xe, x1, 52, x3)
+
+inst_30:
+// rs1_val == -5,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x0
+TEST_RR_OP(srl, x12, x10, x11, 0xfffffffb, -0x5, 0x0, x1, 56, x3)
+
+inst_31:
+// rs1_val == -3,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:0x1f
+TEST_RR_OP(srl, x12, x10, x11, 0x1, -0x3, 0x1f, x1, 60, x3)
+
+inst_32:
+// rs1_val == -2,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x5
+TEST_RR_OP(srl, x12, x10, x11, 0x7ffffff, -0x2, 0x5, x1, 64, x3)
+
+inst_33:
+// rs2_val == 16, rs1_val == 524288
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x10
+TEST_RR_OP(srl, x12, x10, x11, 0x8, 0x80000, 0x10, x1, 68, x3)
+
+inst_34:
+// rs2_val == 2, rs1_val==46341
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(srl, x12, x10, x11, 0x2d41, 0xb505, 0x2, x1, 72, x3)
+
+inst_35:
+// rs2_val == 1, rs1_val == 268435456
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x1
+TEST_RR_OP(srl, x12, x10, x11, 0x8000000, 0x10000000, 0x1, x1, 76, x3)
+
+inst_36:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and rs2_val >= 0 and rs2_val < xlen
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x17
+TEST_RR_OP(srl, x12, x10, x11, 0x100, -0x80000000, 0x17, x1, 80, x3)
+
+inst_37:
+// rs1_val == 1073741824,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x6
+TEST_RR_OP(srl, x12, x10, x11, 0x1000000, 0x40000000, 0x6, x1, 84, x3)
+
+inst_38:
+// rs1_val == 536870912,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0xa
+TEST_RR_OP(srl, x12, x10, x11, 0x80000, 0x20000000, 0xa, x1, 88, x3)
+
+inst_39:
+// rs1_val == 134217728,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x11
+TEST_RR_OP(srl, x12, x10, x11, 0x400, 0x8000000, 0x11, x1, 92, x3)
+
+inst_40:
+// rs1_val == 67108864,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x1000, 0x4000000, 0xe, x1, 96, x3)
+
+inst_41:
+// rs1_val == 33554432,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x12
+TEST_RR_OP(srl, x12, x10, x11, 0x80, 0x2000000, 0x12, x1, 100, x3)
+
+inst_42:
+// rs1_val == 16777216,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0xa
+TEST_RR_OP(srl, x12, x10, x11, 0x4000, 0x1000000, 0xa, x1, 104, x3)
+
+inst_43:
+// rs1_val == 8388608,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x13
+TEST_RR_OP(srl, x12, x10, x11, 0x10, 0x800000, 0x13, x1, 108, x3)
+
+inst_44:
+// rs1_val == 4194304,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0xb
+TEST_RR_OP(srl, x12, x10, x11, 0x800, 0x400000, 0xb, x1, 112, x3)
+
+inst_45:
+// rs1_val == 2097152,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x8
+TEST_RR_OP(srl, x12, x10, x11, 0x2000, 0x200000, 0x8, x1, 116, x3)
+
+inst_46:
+// rs1_val == 1048576,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x40, 0x100000, 0xe, x1, 120, x3)
+
+inst_47:
+// rs1_val == 262144,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x11
+TEST_RR_OP(srl, x12, x10, x11, 0x2, 0x40000, 0x11, x1, 124, x3)
+
+inst_48:
+// rs1_val == 131072,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x8, 0x20000, 0xe, x1, 128, x3)
+
+inst_49:
+// rs1_val == 65536,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x13
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x10000, 0x13, x1, 132, x3)
+
+inst_50:
+// rs1_val == 32768,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0xf
+TEST_RR_OP(srl, x12, x10, x11, 0x1, 0x8000, 0xf, x1, 136, x3)
+
+inst_51:
+// rs1_val == 16384,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x1, 0x4000, 0xe, x1, 140, x3)
+
+inst_52:
+// rs1_val == 8192,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x8
+TEST_RR_OP(srl, x12, x10, x11, 0x20, 0x2000, 0x8, x1, 144, x3)
+
+inst_53:
+// rs1_val == 4096,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x6
+TEST_RR_OP(srl, x12, x10, x11, 0x40, 0x1000, 0x6, x1, 148, x3)
+
+inst_54:
+// rs1_val == 2048,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x1b
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x800, 0x1b, x1, 152, x3)
+
+inst_55:
+// rs1_val == 1024,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x13
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x400, 0x13, x1, 156, x3)
+
+inst_56:
+// rs1_val == 512,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x3
+TEST_RR_OP(srl, x12, x10, x11, 0x40, 0x200, 0x3, x1, 160, x3)
+
+inst_57:
+// rs1_val == 256,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x1e
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x100, 0x1e, x1, 164, x3)
+
+inst_58:
+// rs1_val == 128,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0xa
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x80, 0xa, x1, 168, x3)
+
+inst_59:
+// rs1_val == 64,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0x4
+TEST_RR_OP(srl, x12, x10, x11, 0x4, 0x40, 0x4, x1, 172, x3)
+
+inst_60:
+// rs1_val == 32,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0xd
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x20, 0xd, x1, 176, x3)
+
+inst_61:
+// rs1_val == 16,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x11
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x10, 0x11, x1, 180, x3)
+
+inst_62:
+// rs1_val == 8,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x12
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x8, 0x12, x1, 184, x3)
+
+inst_63:
+// rs1_val == 4, rs1_val==4
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x10
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x4, 0x10, x1, 188, x3)
+
+inst_64:
+// rs1_val == 2, rs1_val==2, rs1_val == rs2_val and rs2_val > 0 and rs2_val < xlen
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x2, 0x2, x1, 192, x3)
+
+inst_65:
+// rs1_val == 1, rs1_val == 1 and rs2_val >= 0 and rs2_val < xlen
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x1f
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x1, 0x1f, x1, 196, x3)
+
+inst_66:
+// rs1_val==-46339,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(srl, x12, x10, x11, 0x3fffd2b, -0xb503, 0x6, x1, 200, x3)
+
+inst_67:
+// rs1_val==1717986919,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x19999, 0x66666667, 0xe, x1, 204, x3)
+
+inst_68:
+// rs1_val==858993460,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x9
+TEST_RR_OP(srl, x12, x10, x11, 0x199999, 0x33333334, 0x9, x1, 208, x3)
+
+inst_69:
+// rs1_val==6,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xd
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x6, 0xd, x1, 212, x3)
+
+inst_70:
+// rs1_val==-1431655765,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x2aaaa, -0x55555555, 0xe, x1, 216, x3)
+
+inst_71:
+// rs1_val==1431655766, rs1_val > 0 and rs2_val == 0
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(srl, x12, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 220, x3)
+
+inst_72:
+// rs1_val==46339,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xd
+TEST_RR_OP(srl, x12, x10, x11, 0x5, 0xb503, 0xd, x1, 224, x3)
+
+inst_73:
+// rs1_val==3,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xf
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x3, 0xf, x1, 228, x3)
+
+inst_74:
+// rs1_val == -1431655766, rs1_val==-1431655766
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(srl, x12, x10, x11, 0xaaaaaaa, -0x55555556, 0x4, x1, 232, x3)
+
+inst_75:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x7
+TEST_RR_OP(srl, x12, x10, x11, 0xaaaaaa, 0x55555555, 0x7, x1, 236, x3)
+
+inst_76:
+// rs1_val == 0 and rs2_val >= 0 and rs2_val < xlen, rs1_val==0
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x0, 0x7, x1, 240, x3)
+
+inst_77:
+// rs1_val==1717986917,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x1b
+TEST_RR_OP(srl, x12, x10, x11, 0xc, 0x66666665, 0x1b, x1, 244, x3)
+
+inst_78:
+// rs1_val==858993458,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x11
+TEST_RR_OP(srl, x12, x10, x11, 0x1999, 0x33333332, 0x11, x1, 248, x3)
+
+inst_79:
+// rs1_val==1431655764,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x13
+TEST_RR_OP(srl, x12, x10, x11, 0xaaa, 0x55555554, 0x13, x1, 252, x3)
+
+inst_80:
+// rs1_val==46340,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x12
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0xb504, 0x12, x1, 256, x3)
+
+inst_81:
+// rs1_val==-46340,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(srl, x12, x10, x11, 0xffff4af, -0xb504, 0x4, x1, 260, x3)
+
+inst_82:
+// rs1_val==1717986918,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x1b
+TEST_RR_OP(srl, x12, x10, x11, 0xc, 0x66666666, 0x1b, x1, 264, x3)
+
+inst_83:
+// rs1_val==858993459,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x15
+TEST_RR_OP(srl, x12, x10, x11, 0x199, 0x33333333, 0x15, x1, 268, x3)
+
+inst_84:
+// rs1_val==5,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x10
+TEST_RR_OP(srl, x12, x10, x11, 0x0, 0x5, 0x10, x1, 272, x3)
+
+inst_85:
+// rs2_val == 27, rs1_val == -1048577
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x1b
+TEST_RR_OP(srl, x12, x10, x11, 0x1f, -0x100001, 0x1b, x1, 276, x3)
+
+inst_86:
+// rs2_val == 29, rs1_val == -16777217
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x1d
+TEST_RR_OP(srl, x12, x10, x11, 0x7, -0x1000001, 0x1d, x1, 280, x3)
+
+inst_87:
+// rs1_val == -268435457,
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:0xe
+TEST_RR_OP(srl, x12, x10, x11, 0x3bfff, -0x10000001, 0xe, x1, 284, x3)
+
+inst_88:
+// rs1_val == -2097153, rs2_val == 4
+// opcode: srl ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0x4
+TEST_RR_OP(srl, x12, x10, x11, 0xffdffff, -0x200001, 0x4, x1, 288, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x10_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 73*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srli-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srli-01.S
new file mode 100644
index 000000000..d47f805a4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/srli-01.S
@@ -0,0 +1,520 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the srli instruction of the RISC-V E extension for the srli covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",srli)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rd, rs1==x4, rd==x5, rs1_val < 0 and imm_val == (xlen-1), rs1_val == -65, rs1_val < 0 and imm_val > 0 and imm_val < xlen
+// opcode: srli ; op1:x4; dest:x5; op1val:-0x41; immval:0x1f
+TEST_IMM_OP( srli, x5, x4, 0x1, -0x41, 0x1f, x1, 0, x10)
+
+inst_1:
+// rs1 == rd, rs1==x9, rd==x9, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1) and imm_val >= 0 and imm_val < xlen, rs1_val > 0 and imm_val > 0 and imm_val < xlen, imm_val == 8
+// opcode: srli ; op1:x9; dest:x9; op1val:0x7fffffff; immval:0x8
+TEST_IMM_OP( srli, x9, x9, 0x7fffff, 0x7fffffff, 0x8, x1, 4, x10)
+
+inst_2:
+// rs1==x0, rd==x6, rs1_val == -1073741825, imm_val == 23
+// opcode: srli ; op1:x0; dest:x6; op1val:0x0; immval:0x17
+TEST_IMM_OP( srli, x6, x0, 0x0, 0x0, 0x17, x1, 8, x10)
+
+inst_3:
+// rs1==x12, rd==x4, rs1_val == -536870913,
+// opcode: srli ; op1:x12; dest:x4; op1val:-0x20000001; immval:0x6
+TEST_IMM_OP( srli, x4, x12, 0x37fffff, -0x20000001, 0x6, x1, 12, x10)
+
+inst_4:
+// rs1==x8, rd==x14, rs1_val == -268435457, imm_val == 10
+// opcode: srli ; op1:x8; dest:x14; op1val:-0x10000001; immval:0xa
+TEST_IMM_OP( srli, x14, x8, 0x3bffff, -0x10000001, 0xa, x1, 16, x10)
+
+inst_5:
+// rs1==x7, rd==x3, rs1_val == -134217729, imm_val == 2
+// opcode: srli ; op1:x7; dest:x3; op1val:-0x8000001; immval:0x2
+TEST_IMM_OP( srli, x3, x7, 0x3dffffff, -0x8000001, 0x2, x1, 20, x10)
+
+inst_6:
+// rs1==x6, rd==x2, rs1_val == -67108865,
+// opcode: srli ; op1:x6; dest:x2; op1val:-0x4000001; immval:0x12
+TEST_IMM_OP( srli, x2, x6, 0x3eff, -0x4000001, 0x12, x1, 24, x10)
+
+inst_7:
+// rs1==x11, rd==x15, rs1_val == -33554433, imm_val == 16
+// opcode: srli ; op1:x11; dest:x15; op1val:-0x2000001; immval:0x10
+TEST_IMM_OP( srli, x15, x11, 0xfdff, -0x2000001, 0x10, x1, 28, x10)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_8:
+// rs1==x5, rd==x13, rs1_val == -16777217, imm_val == 1
+// opcode: srli ; op1:x5; dest:x13; op1val:-0x1000001; immval:0x1
+TEST_IMM_OP( srli, x13, x5, 0x7f7fffff, -0x1000001, 0x1, x4, 0, x6)
+
+inst_9:
+// rs1==x15, rd==x11, rs1_val == -8388609,
+// opcode: srli ; op1:x15; dest:x11; op1val:-0x800001; immval:0x11
+TEST_IMM_OP( srli, x11, x15, 0x7fbf, -0x800001, 0x11, x4, 4, x6)
+
+inst_10:
+// rs1==x2, rd==x12, rs1_val == -4194305, imm_val == 15
+// opcode: srli ; op1:x2; dest:x12; op1val:-0x400001; immval:0xf
+TEST_IMM_OP( srli, x12, x2, 0x1ff7f, -0x400001, 0xf, x4, 8, x6)
+
+inst_11:
+// rs1==x14, rd==x7, rs1_val == -2097153,
+// opcode: srli ; op1:x14; dest:x7; op1val:-0x200001; immval:0x7
+TEST_IMM_OP( srli, x7, x14, 0x1ffbfff, -0x200001, 0x7, x4, 12, x6)
+
+inst_12:
+// rs1==x13, rd==x0, rs1_val == -1048577,
+// opcode: srli ; op1:x13; dest:x0; op1val:-0x100001; immval:0xc
+TEST_IMM_OP( srli, x0, x13, 0, -0x100001, 0xc, x4, 16, x6)
+
+inst_13:
+// rs1==x3, rd==x10, rs1_val == -524289, imm_val == 21
+// opcode: srli ; op1:x3; dest:x10; op1val:-0x80001; immval:0x15
+TEST_IMM_OP( srli, x10, x3, 0x7ff, -0x80001, 0x15, x4, 20, x6)
+
+inst_14:
+// rs1==x10, rd==x1, rs1_val == -262145,
+// opcode: srli ; op1:x10; dest:x1; op1val:-0x40001; immval:0x10
+TEST_IMM_OP( srli, x1, x10, 0xfffb, -0x40001, 0x10, x4, 24, x6)
+
+inst_15:
+// rs1==x1, rd==x8, rs1_val == -131073,
+// opcode: srli ; op1:x1; dest:x8; op1val:-0x20001; immval:0x11
+TEST_IMM_OP( srli, x8, x1, 0x7ffe, -0x20001, 0x11, x4, 28, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_16:
+// rs1_val == -65537,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x10001; immval:0xb
+TEST_IMM_OP( srli, x11, x10, 0x1fffdf, -0x10001, 0xb, x1, 0, x2)
+
+inst_17:
+// rs1_val == -32769,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x8001; immval:0x12
+TEST_IMM_OP( srli, x11, x10, 0x3fff, -0x8001, 0x12, x1, 4, x2)
+
+inst_18:
+// rs1_val == -16385, rs1_val < 0 and imm_val == 0
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x4001; immval:0x0
+TEST_IMM_OP( srli, x11, x10, 0xffffbfff, -0x4001, 0x0, x1, 8, x2)
+
+inst_19:
+// rs1_val == -8193,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x2001; immval:0x13
+TEST_IMM_OP( srli, x11, x10, 0x1fff, -0x2001, 0x13, x1, 12, x2)
+
+inst_20:
+// rs1_val == -4097,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x1001; immval:0xa
+TEST_IMM_OP( srli, x11, x10, 0x3ffffb, -0x1001, 0xa, x1, 16, x2)
+
+inst_21:
+// rs1_val == -2049,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x801; immval:0x15
+TEST_IMM_OP( srli, x11, x10, 0x7ff, -0x801, 0x15, x1, 20, x2)
+
+inst_22:
+// rs1_val == -1025,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x401; immval:0x6
+TEST_IMM_OP( srli, x11, x10, 0x3ffffef, -0x401, 0x6, x1, 24, x2)
+
+inst_23:
+// rs1_val == -513,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x201; immval:0x13
+TEST_IMM_OP( srli, x11, x10, 0x1fff, -0x201, 0x13, x1, 28, x2)
+
+inst_24:
+// rs1_val == -257,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x101; immval:0x8
+TEST_IMM_OP( srli, x11, x10, 0xfffffe, -0x101, 0x8, x1, 32, x2)
+
+inst_25:
+// rs1_val == -129,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x81; immval:0x8
+TEST_IMM_OP( srli, x11, x10, 0xffffff, -0x81, 0x8, x1, 36, x2)
+
+inst_26:
+// rs1_val == -33,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x21; immval:0x2
+TEST_IMM_OP( srli, x11, x10, 0x3ffffff7, -0x21, 0x2, x1, 40, x2)
+
+inst_27:
+// rs1_val == -17,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x11; immval:0x12
+TEST_IMM_OP( srli, x11, x10, 0x3fff, -0x11, 0x12, x1, 44, x2)
+
+inst_28:
+// rs1_val == -9,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x9; immval:0x2
+TEST_IMM_OP( srli, x11, x10, 0x3ffffffd, -0x9, 0x2, x1, 48, x2)
+
+inst_29:
+// rs1_val == -5,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x5; immval:0x6
+TEST_IMM_OP( srli, x11, x10, 0x3ffffff, -0x5, 0x6, x1, 52, x2)
+
+inst_30:
+// rs1_val == -3,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x3; immval:0xf
+TEST_IMM_OP( srli, x11, x10, 0x1ffff, -0x3, 0xf, x1, 56, x2)
+
+inst_31:
+// rs1_val == -2,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x2; immval:0xc
+TEST_IMM_OP( srli, x11, x10, 0xfffff, -0x2, 0xc, x1, 60, x2)
+
+inst_32:
+// imm_val == 27, rs1_val == 262144
+// opcode: srli ; op1:x10; dest:x11; op1val:0x40000; immval:0x1b
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x40000, 0x1b, x1, 64, x2)
+
+inst_33:
+// imm_val == 29,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x40000000; immval:0x1d
+TEST_IMM_OP( srli, x11, x10, 0x6, -0x40000000, 0x1d, x1, 68, x2)
+
+inst_34:
+// imm_val == 30, rs1_val == 64
+// opcode: srli ; op1:x10; dest:x11; op1val:0x40; immval:0x1e
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x40, 0x1e, x1, 72, x2)
+
+inst_35:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1)) and imm_val >= 0 and imm_val < xlen
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x80000000; immval:0xa
+TEST_IMM_OP( srli, x11, x10, 0x200000, -0x80000000, 0xa, x1, 76, x2)
+
+inst_36:
+// rs1_val == 1073741824, rs1_val > 0 and imm_val == 0
+// opcode: srli ; op1:x10; dest:x11; op1val:0x40000000; immval:0x0
+TEST_IMM_OP( srli, x11, x10, 0x40000000, 0x40000000, 0x0, x1, 80, x2)
+
+inst_37:
+// rs1_val == 536870912,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x20000000; immval:0x11
+TEST_IMM_OP( srli, x11, x10, 0x1000, 0x20000000, 0x11, x1, 84, x2)
+
+inst_38:
+// rs1_val == 268435456,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x10000000; immval:0x11
+TEST_IMM_OP( srli, x11, x10, 0x800, 0x10000000, 0x11, x1, 88, x2)
+
+inst_39:
+// rs1_val == 134217728,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x8000000; immval:0xb
+TEST_IMM_OP( srli, x11, x10, 0x10000, 0x8000000, 0xb, x1, 92, x2)
+
+inst_40:
+// rs1_val == 67108864,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x4000000; immval:0x1e
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x4000000, 0x1e, x1, 96, x2)
+
+inst_41:
+// rs1_val == 33554432,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x2000000; immval:0x13
+TEST_IMM_OP( srli, x11, x10, 0x40, 0x2000000, 0x13, x1, 100, x2)
+
+inst_42:
+// rs1_val == 16777216,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x1000000; immval:0xd
+TEST_IMM_OP( srli, x11, x10, 0x800, 0x1000000, 0xd, x1, 104, x2)
+
+inst_43:
+// rs1_val == 8388608,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x800000; immval:0x7
+TEST_IMM_OP( srli, x11, x10, 0x10000, 0x800000, 0x7, x1, 108, x2)
+
+inst_44:
+// rs1_val == 4194304,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x400000; immval:0x6
+TEST_IMM_OP( srli, x11, x10, 0x10000, 0x400000, 0x6, x1, 112, x2)
+
+inst_45:
+// rs1_val == 2097152, imm_val == 4
+// opcode: srli ; op1:x10; dest:x11; op1val:0x200000; immval:0x4
+TEST_IMM_OP( srli, x11, x10, 0x20000, 0x200000, 0x4, x1, 116, x2)
+
+inst_46:
+// rs1_val == 1048576,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x100000; immval:0x9
+TEST_IMM_OP( srli, x11, x10, 0x800, 0x100000, 0x9, x1, 120, x2)
+
+inst_47:
+// rs1_val == 524288,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x80000; immval:0xb
+TEST_IMM_OP( srli, x11, x10, 0x100, 0x80000, 0xb, x1, 124, x2)
+
+inst_48:
+// rs1_val == 131072,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x20000; immval:0x10
+TEST_IMM_OP( srli, x11, x10, 0x2, 0x20000, 0x10, x1, 128, x2)
+
+inst_49:
+// rs1_val == 65536,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x10000; immval:0x0
+TEST_IMM_OP( srli, x11, x10, 0x10000, 0x10000, 0x0, x1, 132, x2)
+
+inst_50:
+// rs1_val == 32768,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x8000; immval:0x10
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x8000, 0x10, x1, 136, x2)
+
+inst_51:
+// rs1_val == 16384,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x4000; immval:0x6
+TEST_IMM_OP( srli, x11, x10, 0x100, 0x4000, 0x6, x1, 140, x2)
+
+inst_52:
+// rs1_val == 8192,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x2000; immval:0x4
+TEST_IMM_OP( srli, x11, x10, 0x200, 0x2000, 0x4, x1, 144, x2)
+
+inst_53:
+// rs1_val == 4096,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x1000; immval:0xf
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x1000, 0xf, x1, 148, x2)
+
+inst_54:
+// rs1_val == 2048,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x800; immval:0x8
+TEST_IMM_OP( srli, x11, x10, 0x8, 0x800, 0x8, x1, 152, x2)
+
+inst_55:
+// rs1_val == 1024,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x400; immval:0x12
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x400, 0x12, x1, 156, x2)
+
+inst_56:
+// rs1_val == 512,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x200; immval:0xe
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x200, 0xe, x1, 160, x2)
+
+inst_57:
+// rs1_val == 256,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x100; immval:0x13
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x100, 0x13, x1, 164, x2)
+
+inst_58:
+// rs1_val == 128,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x80; immval:0x8
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x80, 0x8, x1, 168, x2)
+
+inst_59:
+// rs1_val == 32,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x20; immval:0xb
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x20, 0xb, x1, 172, x2)
+
+inst_60:
+// rs1_val == 16,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x10; immval:0x17
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x10, 0x17, x1, 176, x2)
+
+inst_61:
+// rs1_val == 8,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x8; immval:0x1d
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x8, 0x1d, x1, 180, x2)
+
+inst_62:
+// rs1_val == 4, rs1_val==4
+// opcode: srli ; op1:x10; dest:x11; op1val:0x4; immval:0x9
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x4, 0x9, x1, 184, x2)
+
+inst_63:
+// rs1_val == 2, rs1_val==2
+// opcode: srli ; op1:x10; dest:x11; op1val:0x2; immval:0x11
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x2, 0x11, x1, 188, x2)
+
+inst_64:
+// rs1_val == 1, rs1_val == 1 and imm_val >= 0 and imm_val < xlen, rs1_val > 0 and imm_val == (xlen-1)
+// opcode: srli ; op1:x10; dest:x11; op1val:0x1; immval:0x1f
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x1, 0x1f, x1, 192, x2)
+
+inst_65:
+// rs1_val==46341,
+// opcode: srli ; op1:x10; dest:x11; op1val:0xb505; immval:0xd
+TEST_IMM_OP( srli, x11, x10, 0x5, 0xb505, 0xd, x1, 196, x2)
+
+inst_66:
+// rs1_val==-46339,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0xb503; immval:0x7
+TEST_IMM_OP( srli, x11, x10, 0x1fffe95, -0xb503, 0x7, x1, 200, x2)
+
+inst_67:
+// rs1_val==1717986919,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x66666667; immval:0xb
+TEST_IMM_OP( srli, x11, x10, 0xccccc, 0x66666667, 0xb, x1, 204, x2)
+
+inst_68:
+// rs1_val==858993460,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x33333334; immval:0xe
+TEST_IMM_OP( srli, x11, x10, 0xcccc, 0x33333334, 0xe, x1, 208, x2)
+
+inst_69:
+// rs1_val==6,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x6; immval:0xe
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x6, 0xe, x1, 212, x2)
+
+inst_70:
+// rs1_val==-1431655765,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x1
+TEST_IMM_OP( srli, x11, x10, 0x55555555, -0x55555555, 0x1, x1, 216, x2)
+
+inst_71:
+// rs1_val==1431655766,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x55555556; immval:0x10
+TEST_IMM_OP( srli, x11, x10, 0x5555, 0x55555556, 0x10, x1, 220, x2)
+
+inst_72:
+// rs1_val==46339,
+// opcode: srli ; op1:x10; dest:x11; op1val:0xb503; immval:0x15
+TEST_IMM_OP( srli, x11, x10, 0x0, 0xb503, 0x15, x1, 224, x2)
+
+inst_73:
+// rs1_val==0, rs1_val == 0 and imm_val >= 0 and imm_val < xlen
+// opcode: srli ; op1:x10; dest:x11; op1val:0x0; immval:0x17
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x0, 0x17, x1, 228, x2)
+
+inst_74:
+// rs1_val==3,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x3; immval:0x8
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x3, 0x8, x1, 232, x2)
+
+inst_75:
+// rs1_val == -1431655766, rs1_val==-1431655766
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2
+TEST_IMM_OP( srli, x11, x10, 0x2aaaaaaa, -0x55555556, 0x2, x1, 236, x2)
+
+inst_76:
+// rs1_val == 1431655765, rs1_val==1431655765
+// opcode: srli ; op1:x10; dest:x11; op1val:0x55555555; immval:0xb
+TEST_IMM_OP( srli, x11, x10, 0xaaaaa, 0x55555555, 0xb, x1, 240, x2)
+
+inst_77:
+// rs1_val == imm_val and imm_val > 0 and imm_val < xlen,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x4; immval:0x4
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x4, 0x4, x1, 244, x2)
+
+inst_78:
+// rs1_val==1717986917,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x66666665; immval:0x15
+TEST_IMM_OP( srli, x11, x10, 0x333, 0x66666665, 0x15, x1, 248, x2)
+
+inst_79:
+// rs1_val==858993458,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x33333332; immval:0x6
+TEST_IMM_OP( srli, x11, x10, 0xcccccc, 0x33333332, 0x6, x1, 252, x2)
+
+inst_80:
+// rs1_val==1431655764,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x55555554; immval:0x6
+TEST_IMM_OP( srli, x11, x10, 0x1555555, 0x55555554, 0x6, x1, 256, x2)
+
+inst_81:
+// rs1_val==46340,
+// opcode: srli ; op1:x10; dest:x11; op1val:0xb504; immval:0x17
+TEST_IMM_OP( srli, x11, x10, 0x0, 0xb504, 0x17, x1, 260, x2)
+
+inst_82:
+// rs1_val==-46340,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0xb504; immval:0x8
+TEST_IMM_OP( srli, x11, x10, 0xffff4a, -0xb504, 0x8, x1, 264, x2)
+
+inst_83:
+// rs1_val==1717986918,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x66666666; immval:0x9
+TEST_IMM_OP( srli, x11, x10, 0x333333, 0x66666666, 0x9, x1, 268, x2)
+
+inst_84:
+// rs1_val==858993459,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x33333333; immval:0x1e
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x33333333, 0x1e, x1, 272, x2)
+
+inst_85:
+// rs1_val==5,
+// opcode: srli ; op1:x10; dest:x11; op1val:0x5; immval:0xb
+TEST_IMM_OP( srli, x11, x10, 0x0, 0x5, 0xb, x1, 276, x2)
+
+inst_86:
+// rs1_val == -1073741825, imm_val == 23
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x40000001; immval:0x17
+TEST_IMM_OP( srli, x11, x10, 0x17f, -0x40000001, 0x17, x1, 280, x2)
+
+inst_87:
+// rs1_val == -1048577,
+// opcode: srli ; op1:x10; dest:x11; op1val:-0x100001; immval:0xc
+TEST_IMM_OP( srli, x11, x10, 0xffeff, -0x100001, 0xc, x1, 284, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 72*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sub-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sub-01.S
new file mode 100644
index 000000000..e09411fdc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sub-01.S
@@ -0,0 +1,3005 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sub instruction of the RISC-V E extension for the sub covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",sub)
+
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x14, rs2==x9, rd==x4, rs1_val != rs2_val, rs1_val > 0 and rs2_val > 0, rs2_val == 4194304, rs1_val == 33554432
+// opcode: sub ; op1:x14; op2:x9; dest:x4; op1val:0x2000000; op2val:0x400000
+TEST_RR_OP(sub, x4, x14, x9, 0x1c00000, 0x2000000, 0x400000, x3, 0, x5)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x1, rs2==x0, rd==x1, rs2_val == 2147483647, rs1_val == -4194305, rs1_val < 0 and rs2_val > 0, rs2_val == (2**(xlen-1)-1)
+// opcode: sub ; op1:x1; op2:x0; dest:x1; op1val:-0x400001; op2val:0x0
+TEST_RR_OP(sub, x1, x1, x0, 0xffbfffff, -0x400001, 0x0, x3, 4, x5)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x11, rs2==x6, rd==x6, rs2_val == -1073741825, rs1_val < 0 and rs2_val < 0
+// opcode: sub ; op1:x11; op2:x6; dest:x6; op1val:-0x6; op2val:-0x40000001
+TEST_RR_OP(sub, x6, x11, x6, 0x3ffffffb, -0x6, -0x40000001, x3, 8, x5)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x12, rs2==x12, rd==x15, rs2_val == -536870913, rs1_val == -8388609
+// opcode: sub ; op1:x12; op2:x12; dest:x15; op1val:-0x800001; op2val:-0x800001
+TEST_RR_OP(sub, x15, x12, x12, 0x0, -0x800001, -0x800001, x3, 12, x5)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x13, rs2==x13, rd==x13, rs2_val == -268435457, rs1_val == -33554433
+// opcode: sub ; op1:x13; op2:x13; dest:x13; op1val:-0x2000001; op2val:-0x2000001
+TEST_RR_OP(sub, x13, x13, x13, 0x0, -0x2000001, -0x2000001, x3, 16, x5)
+
+inst_5:
+// rs1==x10, rs2==x1, rd==x12, rs2_val == -134217729, rs1_val == -5
+// opcode: sub ; op1:x10; op2:x1; dest:x12; op1val:-0x5; op2val:-0x8000001
+TEST_RR_OP(sub, x12, x10, x1, 0x7fffffc, -0x5, -0x8000001, x3, 20, x5)
+
+inst_6:
+// rs1==x7, rs2==x2, rd==x8, rs2_val == -67108865, rs1_val == 0
+// opcode: sub ; op1:x7; op2:x2; dest:x8; op1val:0x0; op2val:-0x4000001
+TEST_RR_OP(sub, x8, x7, x2, 0x4000001, 0x0, -0x4000001, x3, 24, x5)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_7:
+// rs1==x5, rs2==x11, rd==x9, rs2_val == -33554433, rs1_val == -1025
+// opcode: sub ; op1:x5; op2:x11; dest:x9; op1val:-0x401; op2val:-0x2000001
+TEST_RR_OP(sub, x9, x5, x11, 0x1fffc00, -0x401, -0x2000001, x1, 0, x10)
+
+inst_8:
+// rs1==x8, rs2==x3, rd==x14, rs2_val == -16777217, rs1_val == 16, rs1_val > 0 and rs2_val < 0
+// opcode: sub ; op1:x8; op2:x3; dest:x14; op1val:0x10; op2val:-0x1000001
+TEST_RR_OP(sub, x14, x8, x3, 0x1000011, 0x10, -0x1000001, x1, 4, x10)
+
+inst_9:
+// rs1==x4, rs2==x15, rd==x5, rs2_val == -8388609, rs1_val == 128
+// opcode: sub ; op1:x4; op2:x15; dest:x5; op1val:0x80; op2val:-0x800001
+TEST_RR_OP(sub, x5, x4, x15, 0x800081, 0x80, -0x800001, x1, 8, x10)
+
+inst_10:
+// rs1==x15, rs2==x4, rd==x2, rs2_val == -4194305, rs1_val == 2
+// opcode: sub ; op1:x15; op2:x4; dest:x2; op1val:0x2; op2val:-0x400001
+TEST_RR_OP(sub, x2, x15, x4, 0x400003, 0x2, -0x400001, x1, 12, x10)
+
+inst_11:
+// rs1==x2, rs2==x14, rd==x7, rs2_val == -2097153, rs1_val == 4
+// opcode: sub ; op1:x2; op2:x14; dest:x7; op1val:0x4; op2val:-0x200001
+TEST_RR_OP(sub, x7, x2, x14, 0x200005, 0x4, -0x200001, x1, 16, x10)
+
+inst_12:
+// rs1==x6, rs2==x7, rd==x3, rs2_val == -1048577, rs1_val == -513
+// opcode: sub ; op1:x6; op2:x7; dest:x3; op1val:-0x201; op2val:-0x100001
+TEST_RR_OP(sub, x3, x6, x7, 0xffe00, -0x201, -0x100001, x1, 20, x10)
+
+inst_13:
+// rs1==x3, rs2==x8, rd==x0, rs2_val == -524289, rs1_val == -2
+// opcode: sub ; op1:x3; op2:x8; dest:x0; op1val:-0x2; op2val:-0x80001
+TEST_RR_OP(sub, x0, x3, x8, 0, -0x2, -0x80001, x1, 24, x2)
+
+inst_14:
+// rs1==x0, rs2==x10, rd==x11, rs2_val == -262145, rs1_val == rs2_val, rs1_val == -262145
+// opcode: sub ; op1:x0; op2:x10; dest:x11; op1val:0x0; op2val:-0x40001
+TEST_RR_OP(sub, x11, x0, x10, 0x40001, 0x0, -0x40001, x1, 28, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_15:
+// rs1==x9, rs2==x5, rd==x10, rs2_val == -131073, rs1_val == -2097153
+// opcode: sub ; op1:x9; op2:x5; dest:x10; op1val:-0x200001; op2val:-0x20001
+TEST_RR_OP(sub, x10, x9, x5, 0xffe20000, -0x200001, -0x20001, x1, 0, x2)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:-0x10001
+TEST_RR_OP(sub, x12, x10, x11, 0xfffc, -0x5, -0x10001, x1, 4, x2)
+
+inst_17:
+// rs2_val == -32769, rs1_val == 64
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:-0x8001
+TEST_RR_OP(sub, x12, x10, x11, 0x8041, 0x40, -0x8001, x1, 8, x2)
+
+inst_18:
+// rs2_val == -16385, rs1_val == -268435457
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:-0x4001
+TEST_RR_OP(sub, x12, x10, x11, 0xf0004000, -0x10000001, -0x4001, x1, 12, x2)
+
+inst_19:
+// rs2_val == -8193,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x2001
+TEST_RR_OP(sub, x12, x10, x11, 0x33335333, 0x33333332, -0x2001, x1, 16, x2)
+
+inst_20:
+// rs2_val == -4097, rs1_val == 536870912
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:-0x1001
+TEST_RR_OP(sub, x12, x10, x11, 0x20001001, 0x20000000, -0x1001, x1, 20, x2)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:-0x801
+TEST_RR_OP(sub, x12, x10, x11, 0xffc00800, -0x400001, -0x801, x1, 24, x2)
+
+inst_22:
+// rs2_val == -1025, rs1_val == 32
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:-0x401
+TEST_RR_OP(sub, x12, x10, x11, 0x421, 0x20, -0x401, x1, 28, x2)
+
+inst_23:
+// rs2_val == -513,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:-0x201
+TEST_RR_OP(sub, x12, x10, x11, 0xfffc0200, -0x40001, -0x201, x1, 32, x2)
+
+inst_24:
+// rs2_val == -257,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x101
+TEST_RR_OP(sub, x12, x10, x11, 0xffe00100, -0x200001, -0x101, x1, 36, x2)
+
+inst_25:
+// rs2_val == -129,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x81
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b7e, -0xb503, -0x81, x1, 40, x2)
+
+inst_26:
+// rs2_val == -65,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x41
+TEST_RR_OP(sub, x12, x10, x11, 0x55555597, 0x55555556, -0x41, x1, 44, x2)
+
+inst_27:
+// rs2_val == -33,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x21
+TEST_RR_OP(sub, x12, x10, x11, 0x23, 0x2, -0x21, x1, 48, x2)
+
+inst_28:
+// rs2_val == -17,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x11
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaabc, -0x55555555, -0x11, x1, 52, x2)
+
+inst_29:
+// rs2_val == -9, rs1_val == 65536
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:-0x9
+TEST_RR_OP(sub, x12, x10, x11, 0x10009, 0x10000, -0x9, x1, 56, x2)
+
+inst_30:
+// rs2_val == -5, rs1_val == 262144
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:-0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x40005, 0x40000, -0x5, x1, 60, x2)
+
+inst_31:
+// rs2_val == -3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xb508, 0xb505, -0x3, x1, 64, x2)
+
+inst_32:
+// rs2_val == -2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4aff, -0xb503, -0x2, x1, 68, x2)
+
+inst_33:
+// rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1), rs2_val == -1431655766
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xd5555555, 0x7fffffff, -0x55555556, x1, 72, x2)
+
+inst_34:
+// rs1_val == -1073741825, rs2_val == 67108864
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:0x4000000
+TEST_RR_OP(sub, x12, x10, x11, 0xbbffffff, -0x40000001, 0x4000000, x1, 76, x2)
+
+inst_35:
+// rs1_val == -536870913, rs2_val == 536870912
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:0x20000000
+TEST_RR_OP(sub, x12, x10, x11, 0xbfffffff, -0x20000001, 0x20000000, x1, 80, x2)
+
+inst_36:
+// rs1_val == -134217729,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x8001
+TEST_RR_OP(sub, x12, x10, x11, 0xf8008000, -0x8000001, -0x8001, x1, 84, x2)
+
+inst_37:
+// rs1_val == -67108865, rs2_val == 0
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0xfbffffff, -0x4000001, 0x0, x1, 88, x2)
+
+inst_38:
+// rs1_val == -16777217,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xcbcccccb, -0x1000001, 0x33333334, x1, 92, x2)
+
+inst_39:
+// rs1_val == -1048577,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xccbccccb, -0x100001, 0x33333334, x1, 96, x2)
+
+inst_40:
+// rs1_val == -524289, rs2_val == 8388608
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:0x800000
+TEST_RR_OP(sub, x12, x10, x11, 0xff77ffff, -0x80001, 0x800000, x1, 100, x2)
+
+inst_41:
+// rs1_val == -131073,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xfffdfff9, -0x20001, 0x6, x1, 104, x2)
+
+inst_42:
+// rs1_val == -65537,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x81
+TEST_RR_OP(sub, x12, x10, x11, 0xffff0080, -0x10001, -0x81, x1, 108, x2)
+
+inst_43:
+// rs1_val == -32769,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xfffecafc, -0x8001, 0xb503, x1, 112, x2)
+
+inst_44:
+// rs1_val == -16385, rs2_val == 8
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0x8
+TEST_RR_OP(sub, x12, x10, x11, 0xffffbff7, -0x4001, 0x8, x1, 116, x2)
+
+inst_45:
+// rs1_val == -8193,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:-0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xffffe003, -0x2001, -0x4, x1, 120, x2)
+
+inst_46:
+// rs1_val == -4097, rs2_val == 262144
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0x40000
+TEST_RR_OP(sub, x12, x10, x11, 0xfffbefff, -0x1001, 0x40000, x1, 124, x2)
+
+inst_47:
+// rs1_val == -2049,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:-0x20000001
+TEST_RR_OP(sub, x12, x10, x11, 0x1ffff800, -0x801, -0x20000001, x1, 128, x2)
+
+inst_48:
+// rs1_val == -257,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:-0x8000001
+TEST_RR_OP(sub, x12, x10, x11, 0x7ffff00, -0x101, -0x8000001, x1, 132, x2)
+
+inst_49:
+// rs1_val == -129, rs2_val == 2048
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x800
+TEST_RR_OP(sub, x12, x10, x11, 0xfffff77f, -0x81, 0x800, x1, 136, x2)
+
+inst_50:
+// rs1_val == -65,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:-0x10001
+TEST_RR_OP(sub, x12, x10, x11, 0xffc0, -0x41, -0x10001, x1, 140, x2)
+
+inst_51:
+// rs1_val == -33,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:-0x80001
+TEST_RR_OP(sub, x12, x10, x11, 0x7ffe0, -0x21, -0x80001, x1, 144, x2)
+
+inst_52:
+// rs1_val == -17,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:-0x200001
+TEST_RR_OP(sub, x12, x10, x11, 0x1ffff0, -0x11, -0x200001, x1, 148, x2)
+
+inst_53:
+// rs1_val == -9,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:-0x8000001
+TEST_RR_OP(sub, x12, x10, x11, 0x7fffff8, -0x9, -0x8000001, x1, 152, x2)
+
+inst_54:
+// rs1_val == -3, rs2_val == 8192
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:0x2000
+TEST_RR_OP(sub, x12, x10, x11, 0xffffdffd, -0x3, 0x2000, x1, 156, x2)
+
+inst_55:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x80000000
+TEST_RR_OP(sub, x12, x10, x11, 0x2aaaaaab, -0x55555555, -0x80000000, x1, 160, x2)
+
+inst_56:
+// rs2_val == 1073741824,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x40000000
+TEST_RR_OP(sub, x12, x10, x11, 0xbfff7fff, -0x8001, 0x40000000, x1, 164, x2)
+
+inst_57:
+// rs2_val == 268435456,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x10000000
+TEST_RR_OP(sub, x12, x10, x11, 0xf2000000, 0x2000000, 0x10000000, x1, 168, x2)
+
+inst_58:
+// rs2_val == 134217728,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x8000000
+TEST_RR_OP(sub, x12, x10, x11, 0xa2aaaaab, -0x55555555, 0x8000000, x1, 172, x2)
+
+inst_59:
+// rs2_val == 33554432,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0x2000000
+TEST_RR_OP(sub, x12, x10, x11, 0xfdffdfff, -0x2001, 0x2000000, x1, 176, x2)
+
+inst_60:
+// rs2_val == 16777216,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x1000000
+TEST_RR_OP(sub, x12, x10, x11, 0xfeffffef, -0x11, 0x1000000, x1, 180, x2)
+
+inst_61:
+// rs2_val == 2097152,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x200000
+TEST_RR_OP(sub, x12, x10, x11, 0xffe00010, 0x10, 0x200000, x1, 184, x2)
+
+inst_62:
+// rs2_val == 1048576,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x100000
+TEST_RR_OP(sub, x12, x10, x11, 0x33233333, 0x33333333, 0x100000, x1, 188, x2)
+
+inst_63:
+// rs2_val == 524288,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x80000
+TEST_RR_OP(sub, x12, x10, x11, 0xfef7ffff, -0x1000001, 0x80000, x1, 192, x2)
+
+inst_64:
+// rs2_val == 131072, rs1_val == 524288
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x20000
+TEST_RR_OP(sub, x12, x10, x11, 0x60000, 0x80000, 0x20000, x1, 196, x2)
+
+inst_65:
+// rs2_val == 65536, rs1_val == 134217728
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x10000
+TEST_RR_OP(sub, x12, x10, x11, 0x7ff0000, 0x8000000, 0x10000, x1, 200, x2)
+
+inst_66:
+// rs2_val == 32768, rs1_val == 2097152
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x8000
+TEST_RR_OP(sub, x12, x10, x11, 0x1f8000, 0x200000, 0x8000, x1, 204, x2)
+
+inst_67:
+// rs2_val == 16384,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:0x4000
+TEST_RR_OP(sub, x12, x10, x11, 0xf7ffbfff, -0x8000001, 0x4000, x1, 208, x2)
+
+inst_68:
+// rs2_val == 4096,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x1000
+TEST_RR_OP(sub, x12, x10, x11, 0x1ffff000, 0x20000000, 0x1000, x1, 212, x2)
+
+inst_69:
+// rs2_val == 1024, rs1_val == 1073741824
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x400
+TEST_RR_OP(sub, x12, x10, x11, 0x3ffffc00, 0x40000000, 0x400, x1, 216, x2)
+
+inst_70:
+// rs2_val == 512,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x200
+TEST_RR_OP(sub, x12, x10, x11, 0xffff7dff, -0x8001, 0x200, x1, 220, x2)
+
+inst_71:
+// rs2_val == 256,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x100
+TEST_RR_OP(sub, x12, x10, x11, 0x55555454, 0x55555554, 0x100, x1, 224, x2)
+
+inst_72:
+// rs2_val == 128,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x80
+TEST_RR_OP(sub, x12, x10, x11, 0x333332b3, 0x33333333, 0x80, x1, 228, x2)
+
+inst_73:
+// rs2_val == 64,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x40
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffc4, 0x4, 0x40, x1, 232, x2)
+
+inst_74:
+// rs2_val == 32,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x20
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffbdf, -0x401, 0x20, x1, 236, x2)
+
+inst_75:
+// rs2_val == 16,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffff2, 0x2, 0x10, x1, 240, x2)
+
+inst_76:
+// rs2_val == 4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xffbffffb, -0x400001, 0x4, x1, 244, x2)
+
+inst_77:
+// rs2_val == 2, rs1_val==2 and rs2_val==2
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x2, 0x2, x1, 248, x2)
+
+inst_78:
+// rs2_val == 1,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x1
+TEST_RR_OP(sub, x12, x10, x11, 0x1fffffff, 0x20000000, 0x1, x1, 252, x2)
+
+inst_79:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x400
+TEST_RR_OP(sub, x12, x10, x11, 0x7ffffc00, -0x80000000, 0x400, x1, 256, x2)
+
+inst_80:
+// rs1_val == 268435456,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffe, 0x10000000, 0x2, x1, 260, x2)
+
+inst_81:
+// rs1_val == 67108864,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0x4000000
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x4000000, 0x4000000, x1, 264, x2)
+
+inst_82:
+// rs1_val == 16777216,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:-0x40001
+TEST_RR_OP(sub, x12, x10, x11, 0x1040001, 0x1000000, -0x40001, x1, 268, x2)
+
+inst_83:
+// rs1_val == 8388608,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:-0x8000001
+TEST_RR_OP(sub, x12, x10, x11, 0x8800001, 0x800000, -0x8000001, x1, 272, x2)
+
+inst_84:
+// rs1_val == 4194304,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x99d9999a, 0x400000, 0x66666666, x1, 276, x2)
+
+inst_85:
+// rs1_val == 1048576,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:-0x80000000
+TEST_RR_OP(sub, x12, x10, x11, 0x80100000, 0x100000, -0x80000000, x1, 280, x2)
+
+inst_86:
+// rs1_val == 131072,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:-0x2000001
+TEST_RR_OP(sub, x12, x10, x11, 0x2020001, 0x20000, -0x2000001, x1, 284, x2)
+
+inst_87:
+// rs1_val == 32768,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x8000, 0x8000, 0x0, x1, 288, x2)
+
+inst_88:
+// rs1_val == 16384,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x3ffb, 0x4000, 0x5, x1, 292, x2)
+
+inst_89:
+// rs1_val == 8192,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xffff6afb, 0x2000, 0xb505, x1, 296, x2)
+
+inst_90:
+// rs1_val == 4096,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x80
+TEST_RR_OP(sub, x12, x10, x11, 0xf80, 0x1000, 0x80, x1, 300, x2)
+
+inst_91:
+// rs1_val == 2048,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:-0x80000000
+TEST_RR_OP(sub, x12, x10, x11, 0x80000800, 0x800, -0x80000000, x1, 304, x2)
+
+inst_92:
+// rs1_val == 1024,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x800000
+TEST_RR_OP(sub, x12, x10, x11, 0xff800400, 0x400, 0x800000, x1, 308, x2)
+
+inst_93:
+// rs1_val == 512,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:-0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x204, 0x200, -0x4, x1, 312, x2)
+
+inst_94:
+// rs1_val == 256,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x20000000
+TEST_RR_OP(sub, x12, x10, x11, 0xe0000100, 0x100, 0x20000000, x1, 316, x2)
+
+inst_95:
+// rs1_val == 8,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x4000
+TEST_RR_OP(sub, x12, x10, x11, 0xffffc008, 0x8, 0x4000, x1, 320, x2)
+
+inst_96:
+// rs1_val == 1,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:-0x20001
+TEST_RR_OP(sub, x12, x10, x11, 0x20002, 0x1, -0x20001, x1, 324, x2)
+
+inst_97:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0xb505, 0xb505, x1, 328, x2)
+
+inst_98:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x16a08, 0xb505, -0xb503, x1, 332, x2)
+
+inst_99:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4e9e, 0xb505, 0x66666667, x1, 336, x2)
+
+inst_100:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81d1, 0xb505, 0x33333334, x1, 340, x2)
+
+inst_101:
+// rs1_val==46341 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xb4ff, 0xb505, 0x6, x1, 344, x2)
+
+inst_102:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a5a, 0xb505, -0x55555555, x1, 348, x2)
+
+inst_103:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5faf, 0xb505, 0x55555556, x1, 352, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xb501, 0xb505, 0x4, x1, 356, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x2, 0xb505, 0xb503, x1, 360, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0xb505, 0xb505, 0x0, x1, 364, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4ea0, 0xb505, 0x66666665, x1, 368, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81d3, 0xb505, 0x33333332, x1, 372, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fb1, 0xb505, 0x55555554, x1, 376, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xb503, 0xb505, 0x2, x1, 380, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0xb505, 0xb504, x1, 384, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x16a09, 0xb505, -0xb504, x1, 388, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4e9f, 0xb505, 0x66666666, x1, 392, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81d2, 0xb505, 0x33333333, x1, 396, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xb500, 0xb505, 0x5, x1, 400, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a5b, 0xb505, -0x55555556, x1, 404, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fb0, 0xb505, 0x55555555, x1, 408, x2)
+
+inst_118:
+// rs1_val==46341 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xb502, 0xb505, 0x3, x1, 412, x2)
+
+inst_119:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xfffe95f8, -0xb503, 0xb505, x1, 416, x2)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x0, -0xb503, -0xb503, x1, 420, x2)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x9998e496, -0xb503, 0x66666667, x1, 424, x2)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xcccc17c9, -0xb503, 0x33333334, x1, 428, x2)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4af7, -0xb503, 0x6, x1, 432, x2)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a052, -0xb503, -0x55555555, x1, 436, x2)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a7, -0xb503, 0x55555556, x1, 440, x2)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4af9, -0xb503, 0x4, x1, 444, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xfffe95fa, -0xb503, 0xb503, x1, 448, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afd, -0xb503, 0x0, x1, 452, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x9998e498, -0xb503, 0x66666665, x1, 456, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xcccc17cb, -0xb503, 0x33333332, x1, 460, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a9, -0xb503, 0x55555554, x1, 464, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afb, -0xb503, 0x2, x1, 468, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xfffe95f9, -0xb503, 0xb504, x1, 472, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x1, -0xb503, -0xb504, x1, 476, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x9998e497, -0xb503, 0x66666666, x1, 480, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xcccc17ca, -0xb503, 0x33333333, x1, 484, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4af8, -0xb503, 0x5, x1, 488, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a053, -0xb503, -0x55555556, x1, 492, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a8, -0xb503, 0x55555555, x1, 496, x2)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afa, -0xb503, 0x3, x1, 500, x2)
+
+inst_141:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b162, 0x66666667, 0xb505, x1, 504, x2)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x66671b6a, 0x66666667, -0xb503, x1, 508, x2)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x66666667, 0x66666667, x1, 512, x2)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x33333333, 0x66666667, 0x33333334, x1, 516, x2)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x66666661, 0x66666667, 0x6, x1, 520, x2)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xbbbbbbbc, 0x66666667, -0x55555555, x1, 524, x2)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x11111111, 0x66666667, 0x55555556, x1, 528, x2)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x66666663, 0x66666667, 0x4, x1, 532, x2)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b164, 0x66666667, 0xb503, x1, 536, x2)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x66666667, 0x66666667, 0x0, x1, 540, x2)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x2, 0x66666667, 0x66666665, x1, 544, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x33333335, 0x66666667, 0x33333332, x1, 548, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0x11111113, 0x66666667, 0x55555554, x1, 552, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x66666665, 0x66666667, 0x2, x1, 556, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b163, 0x66666667, 0xb504, x1, 560, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x66671b6b, 0x66666667, -0xb504, x1, 564, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x66666667, 0x66666666, x1, 568, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x33333334, 0x66666667, 0x33333333, x1, 572, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x66666662, 0x66666667, 0x5, x1, 576, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xbbbbbbbd, 0x66666667, -0x55555556, x1, 580, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x11111112, 0x66666667, 0x55555555, x1, 584, x2)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x66666664, 0x66666667, 0x3, x1, 588, x2)
+
+inst_163:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e2f, 0x33333334, 0xb505, x1, 592, x2)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x3333e837, 0x33333334, -0xb503, x1, 596, x2)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccd, 0x33333334, 0x66666667, x1, 600, x2)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x33333334, 0x33333334, x1, 604, x2)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332e, 0x33333334, 0x6, x1, 608, x2)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x88888889, 0x33333334, -0x55555555, x1, 612, x2)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xddddddde, 0x33333334, 0x55555556, x1, 616, x2)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x33333330, 0x33333334, 0x4, x1, 620, x2)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e31, 0x33333334, 0xb503, x1, 624, x2)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x33333334, 0x33333334, 0x0, x1, 628, x2)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccf, 0x33333334, 0x66666665, x1, 632, x2)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x2, 0x33333334, 0x33333332, x1, 636, x2)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xdddddde0, 0x33333334, 0x55555554, x1, 640, x2)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x33333332, 0x33333334, 0x2, x1, 644, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e30, 0x33333334, 0xb504, x1, 648, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x3333e838, 0x33333334, -0xb504, x1, 652, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccce, 0x33333334, 0x66666666, x1, 656, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x33333334, 0x33333333, x1, 660, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332f, 0x33333334, 0x5, x1, 664, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x8888888a, 0x33333334, -0x55555556, x1, 668, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xdddddddf, 0x33333334, 0x55555555, x1, 672, x2)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x33333331, 0x33333334, 0x3, x1, 676, x2)
+
+inst_185:
+// rs1_val==6 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b01, 0x6, 0xb505, x1, 680, x2)
+
+inst_186:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xb509, 0x6, -0xb503, x1, 684, x2)
+
+inst_187:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999f, 0x6, 0x66666667, x1, 688, x2)
+
+inst_188:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd2, 0x6, 0x33333334, x1, 692, x2)
+
+inst_189:
+// rs1_val==6 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x6, 0x6, x1, 696, x2)
+
+inst_190:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x5555555b, 0x6, -0x55555555, x1, 700, x2)
+
+inst_191:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaab0, 0x6, 0x55555556, x1, 704, x2)
+
+inst_192:
+// rs1_val==6 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x2, 0x6, 0x4, x1, 708, x2)
+
+inst_193:
+// rs1_val==6 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b03, 0x6, 0xb503, x1, 712, x2)
+
+inst_194:
+// rs1_val==6 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x6, 0x6, 0x0, x1, 716, x2)
+
+inst_195:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x999999a1, 0x6, 0x66666665, x1, 720, x2)
+
+inst_196:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd4, 0x6, 0x33333332, x1, 724, x2)
+
+inst_197:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaab2, 0x6, 0x55555554, x1, 728, x2)
+
+inst_198:
+// rs1_val==6 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x4, 0x6, 0x2, x1, 732, x2)
+
+inst_199:
+// rs1_val==6 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b02, 0x6, 0xb504, x1, 736, x2)
+
+inst_200:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xb50a, 0x6, -0xb504, x1, 740, x2)
+
+inst_201:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x999999a0, 0x6, 0x66666666, x1, 744, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd3, 0x6, 0x33333333, x1, 748, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x6, 0x5, x1, 752, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x5555555c, 0x6, -0x55555556, x1, 756, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaab1, 0x6, 0x55555555, x1, 760, x2)
+
+inst_206:
+// rs1_val==6 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x3, 0x6, 0x3, x1, 764, x2)
+
+inst_207:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a6, -0x55555555, 0xb505, x1, 768, x2)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fae, -0x55555555, -0xb503, x1, 772, x2)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x44444444, -0x55555555, 0x66666667, x1, 776, x2)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x77777777, -0x55555555, 0x33333334, x1, 780, x2)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa5, -0x55555555, 0x6, x1, 784, x2)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x0, -0x55555555, -0x55555555, x1, 788, x2)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x55555555, -0x55555555, 0x55555556, x1, 792, x2)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa7, -0x55555555, 0x4, x1, 796, x2)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a8, -0x55555555, 0xb503, x1, 800, x2)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaab, -0x55555555, 0x0, x1, 804, x2)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x44444446, -0x55555555, 0x66666665, x1, 808, x2)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x77777779, -0x55555555, 0x33333332, x1, 812, x2)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0x55555557, -0x55555555, 0x55555554, x1, 816, x2)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa9, -0x55555555, 0x2, x1, 820, x2)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a7, -0x55555555, 0xb504, x1, 824, x2)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5faf, -0x55555555, -0xb504, x1, 828, x2)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x44444445, -0x55555555, 0x66666666, x1, 832, x2)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x77777778, -0x55555555, 0x33333333, x1, 836, x2)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa6, -0x55555555, 0x5, x1, 840, x2)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x1, -0x55555555, -0x55555556, x1, 844, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55555556, -0x55555555, 0x55555555, x1, 848, x2)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa8, -0x55555555, 0x3, x1, 852, x2)
+
+inst_229:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a051, 0x55555556, 0xb505, x1, 856, x2)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a59, 0x55555556, -0xb503, x1, 860, x2)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeeef, 0x55555556, 0x66666667, x1, 864, x2)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x22222222, 0x55555556, 0x33333334, x1, 868, x2)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x55555550, 0x55555556, 0x6, x1, 872, x2)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaab, 0x55555556, -0x55555555, x1, 876, x2)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x55555556, 0x55555556, x1, 880, x2)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x55555552, 0x55555556, 0x4, x1, 884, x2)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a053, 0x55555556, 0xb503, x1, 888, x2)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 892, x2)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeef1, 0x55555556, 0x66666665, x1, 896, x2)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x22222224, 0x55555556, 0x33333332, x1, 900, x2)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0x2, 0x55555556, 0x55555554, x1, 904, x2)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x55555554, 0x55555556, 0x2, x1, 908, x2)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a052, 0x55555556, 0xb504, x1, 912, x2)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a5a, 0x55555556, -0xb504, x1, 916, x2)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeef0, 0x55555556, 0x66666666, x1, 920, x2)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x22222223, 0x55555556, 0x33333333, x1, 924, x2)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x55555551, 0x55555556, 0x5, x1, 928, x2)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaac, 0x55555556, -0x55555556, x1, 932, x2)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x55555556, 0x55555555, x1, 936, x2)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x55555553, 0x55555556, 0x3, x1, 940, x2)
+
+inst_251:
+// rs1_val==4 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4aff, 0x4, 0xb505, x1, 944, x2)
+
+inst_252:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xb507, 0x4, -0xb503, x1, 948, x2)
+
+inst_253:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999d, 0x4, 0x66666667, x1, 952, x2)
+
+inst_254:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd0, 0x4, 0x33333334, x1, 956, x2)
+
+inst_255:
+// rs1_val==4 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffe, 0x4, 0x6, x1, 960, x2)
+
+inst_256:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55555559, 0x4, -0x55555555, x1, 964, x2)
+
+inst_257:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaae, 0x4, 0x55555556, x1, 968, x2)
+
+inst_258:
+// rs1_val==4 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x4, 0x4, x1, 972, x2)
+
+inst_259:
+// rs1_val==4 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b01, 0x4, 0xb503, x1, 976, x2)
+
+inst_260:
+// rs1_val==4 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x4, 0x4, 0x0, x1, 980, x2)
+
+inst_261:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999f, 0x4, 0x66666665, x1, 984, x2)
+
+inst_262:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd2, 0x4, 0x33333332, x1, 988, x2)
+
+inst_263:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaab0, 0x4, 0x55555554, x1, 992, x2)
+
+inst_264:
+// rs1_val==4 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x2, 0x4, 0x2, x1, 996, x2)
+
+inst_265:
+// rs1_val==4 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b00, 0x4, 0xb504, x1, 1000, x2)
+
+inst_266:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xb508, 0x4, -0xb504, x1, 1004, x2)
+
+inst_267:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999e, 0x4, 0x66666666, x1, 1008, x2)
+
+inst_268:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd1, 0x4, 0x33333333, x1, 1012, x2)
+
+inst_269:
+// rs1_val==4 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x4, 0x5, x1, 1016, x2)
+
+inst_270:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x5555555a, 0x4, -0x55555556, x1, 1020, x2)
+
+inst_271:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaaf, 0x4, 0x55555555, x1, 1024, x2)
+
+inst_272:
+// rs1_val==4 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x4, 0x3, x1, 1028, x2)
+
+inst_273:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffe, 0xb503, 0xb505, x1, 1032, x2)
+
+inst_274:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x16a06, 0xb503, -0xb503, x1, 1036, x2)
+
+inst_275:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4e9c, 0xb503, 0x66666667, x1, 1040, x2)
+
+inst_276:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81cf, 0xb503, 0x33333334, x1, 1044, x2)
+
+inst_277:
+// rs1_val==46339 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xb4fd, 0xb503, 0x6, x1, 1048, x2)
+
+inst_278:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a58, 0xb503, -0x55555555, x1, 1052, x2)
+
+inst_279:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fad, 0xb503, 0x55555556, x1, 1056, x2)
+
+inst_280:
+// rs1_val==46339 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xb4ff, 0xb503, 0x4, x1, 1060, x2)
+
+inst_281:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0xb503, 0xb503, x1, 1064, x2)
+
+inst_282:
+// rs1_val==46339 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0xb503, 0xb503, 0x0, x1, 1068, x2)
+
+inst_283:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4e9e, 0xb503, 0x66666665, x1, 1072, x2)
+
+inst_284:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81d1, 0xb503, 0x33333332, x1, 1076, x2)
+
+inst_285:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5faf, 0xb503, 0x55555554, x1, 1080, x2)
+
+inst_286:
+// rs1_val==46339 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xb501, 0xb503, 0x2, x1, 1084, x2)
+
+inst_287:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0xb503, 0xb504, x1, 1088, x2)
+
+inst_288:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x16a07, 0xb503, -0xb504, x1, 1092, x2)
+
+inst_289:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4e9d, 0xb503, 0x66666666, x1, 1096, x2)
+
+inst_290:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81d0, 0xb503, 0x33333333, x1, 1100, x2)
+
+inst_291:
+// rs1_val==46339 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xb4fe, 0xb503, 0x5, x1, 1104, x2)
+
+inst_292:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a59, 0xb503, -0x55555556, x1, 1108, x2)
+
+inst_293:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fae, 0xb503, 0x55555555, x1, 1112, x2)
+
+inst_294:
+// rs1_val==46339 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xb500, 0xb503, 0x3, x1, 1116, x2)
+
+inst_295:
+// rs1_val==0 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afb, 0x0, 0xb505, x1, 1120, x2)
+
+inst_296:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xb503, 0x0, -0xb503, x1, 1124, x2)
+
+inst_297:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x99999999, 0x0, 0x66666667, x1, 1128, x2)
+
+inst_298:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccc, 0x0, 0x33333334, x1, 1132, x2)
+
+inst_299:
+// rs1_val==0 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffa, 0x0, 0x6, x1, 1136, x2)
+
+inst_300:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55555555, 0x0, -0x55555555, x1, 1140, x2)
+
+inst_301:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaaa, 0x0, 0x55555556, x1, 1144, x2)
+
+inst_302:
+// rs1_val==0 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffc, 0x0, 0x4, x1, 1148, x2)
+
+inst_303:
+// rs1_val==0 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afd, 0x0, 0xb503, x1, 1152, x2)
+
+inst_304:
+// rs1_val==0 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1156, x2)
+
+inst_305:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999b, 0x0, 0x66666665, x1, 1160, x2)
+
+inst_306:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccce, 0x0, 0x33333332, x1, 1164, x2)
+
+inst_307:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaac, 0x0, 0x55555554, x1, 1168, x2)
+
+inst_308:
+// rs1_val==0 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffe, 0x0, 0x2, x1, 1172, x2)
+
+inst_309:
+// rs1_val==0 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afc, 0x0, 0xb504, x1, 1176, x2)
+
+inst_310:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xb504, 0x0, -0xb504, x1, 1180, x2)
+
+inst_311:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999a, 0x0, 0x66666666, x1, 1184, x2)
+
+inst_312:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccd, 0x0, 0x33333333, x1, 1188, x2)
+
+inst_313:
+// rs1_val==0 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffb, 0x0, 0x5, x1, 1192, x2)
+
+inst_314:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x55555556, 0x0, -0x55555556, x1, 1196, x2)
+
+inst_315:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaab, 0x0, 0x55555555, x1, 1200, x2)
+
+inst_316:
+// rs1_val==0 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffd, 0x0, 0x3, x1, 1204, x2)
+
+inst_317:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b160, 0x66666665, 0xb505, x1, 1208, x2)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x66671b68, 0x66666665, -0xb503, x1, 1212, x2)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffe, 0x66666665, 0x66666667, x1, 1216, x2)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x33333331, 0x66666665, 0x33333334, x1, 1220, x2)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x6666665f, 0x66666665, 0x6, x1, 1224, x2)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xbbbbbbba, 0x66666665, -0x55555555, x1, 1228, x2)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x1111110f, 0x66666665, 0x55555556, x1, 1232, x2)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x66666661, 0x66666665, 0x4, x1, 1236, x2)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b162, 0x66666665, 0xb503, x1, 1240, x2)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x66666665, 0x66666665, 0x0, x1, 1244, x2)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x33333333, 0x33333333, 0x0, x1, 1248, x2)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccce, 0x33333333, 0x66666665, x1, 1252, x2)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x33333333, 0x33333332, x1, 1256, x2)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xdddddddf, 0x33333333, 0x55555554, x1, 1260, x2)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x33333331, 0x33333333, 0x2, x1, 1264, x2)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e2f, 0x33333333, 0xb504, x1, 1268, x2)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x3333e837, 0x33333333, -0xb504, x1, 1272, x2)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccd, 0x33333333, 0x66666666, x1, 1276, x2)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x33333333, 0x33333333, x1, 1280, x2)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332e, 0x33333333, 0x5, x1, 1284, x2)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x88888889, 0x33333333, -0x55555556, x1, 1288, x2)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xddddddde, 0x33333333, 0x55555555, x1, 1292, x2)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x33333330, 0x33333333, 0x3, x1, 1296, x2)
+
+inst_340:
+// rs1_val==5 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b00, 0x5, 0xb505, x1, 1300, x2)
+
+inst_341:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xb508, 0x5, -0xb503, x1, 1304, x2)
+
+inst_342:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999e, 0x5, 0x66666667, x1, 1308, x2)
+
+inst_343:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd1, 0x5, 0x33333334, x1, 1312, x2)
+
+inst_344:
+// rs1_val==5 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x5, 0x6, x1, 1316, x2)
+
+inst_345:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x5555555a, 0x5, -0x55555555, x1, 1320, x2)
+
+inst_346:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaaf, 0x5, 0x55555556, x1, 1324, x2)
+
+inst_347:
+// rs1_val==5 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x5, 0x4, x1, 1328, x2)
+
+inst_348:
+// rs1_val==5 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b02, 0x5, 0xb503, x1, 1332, x2)
+
+inst_349:
+// rs1_val==5 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x5, 0x5, 0x0, x1, 1336, x2)
+
+inst_350:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x999999a0, 0x5, 0x66666665, x1, 1340, x2)
+
+inst_351:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd3, 0x5, 0x33333332, x1, 1344, x2)
+
+inst_352:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaab1, 0x5, 0x55555554, x1, 1348, x2)
+
+inst_353:
+// rs1_val==5 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x3, 0x5, 0x2, x1, 1352, x2)
+
+inst_354:
+// rs1_val==5 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b01, 0x5, 0xb504, x1, 1356, x2)
+
+inst_355:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xb509, 0x5, -0xb504, x1, 1360, x2)
+
+inst_356:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999f, 0x5, 0x66666666, x1, 1364, x2)
+
+inst_357:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd2, 0x5, 0x33333333, x1, 1368, x2)
+
+inst_358:
+// rs1_val==5 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x5, 0x5, x1, 1372, x2)
+
+inst_359:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x5555555b, 0x5, -0x55555556, x1, 1376, x2)
+
+inst_360:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaab0, 0x5, 0x55555555, x1, 1380, x2)
+
+inst_361:
+// rs1_val==5 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x2, 0x5, 0x3, x1, 1384, x2)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==46341, rs1_val == -1431655766
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a5, -0x55555556, 0xb505, x1, 1388, x2)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fad, -0x55555556, -0xb503, x1, 1392, x2)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x44444443, -0x55555556, 0x66666667, x1, 1396, x2)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x77777776, -0x55555556, 0x33333334, x1, 1400, x2)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa4, -0x55555556, 0x6, x1, 1404, x2)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, -0x55555556, -0x55555555, x1, 1408, x2)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x55555554, -0x55555556, 0x55555556, x1, 1412, x2)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa6, -0x55555556, 0x4, x1, 1416, x2)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a7, -0x55555556, 0xb503, x1, 1420, x2)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1424, x2)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x44444445, -0x55555556, 0x66666665, x1, 1428, x2)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x77777778, -0x55555556, 0x33333332, x1, 1432, x2)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0x55555556, -0x55555556, 0x55555554, x1, 1436, x2)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa8, -0x55555556, 0x2, x1, 1440, x2)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a6, -0x55555556, 0xb504, x1, 1444, x2)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fae, -0x55555556, -0xb504, x1, 1448, x2)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x44444444, -0x55555556, 0x66666666, x1, 1452, x2)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x77777777, -0x55555556, 0x33333333, x1, 1456, x2)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa5, -0x55555556, 0x5, x1, 1460, x2)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x0, -0x55555556, -0x55555556, x1, 1464, x2)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55555555, -0x55555556, 0x55555555, x1, 1468, x2)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa7, -0x55555556, 0x3, x1, 1472, x2)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==46341, rs1_val == 1431655765
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a050, 0x55555555, 0xb505, x1, 1476, x2)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a58, 0x55555555, -0xb503, x1, 1480, x2)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeeee, 0x55555555, 0x66666667, x1, 1484, x2)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x22222221, 0x55555555, 0x33333334, x1, 1488, x2)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x5555554f, 0x55555555, 0x6, x1, 1492, x2)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaaa, 0x55555555, -0x55555555, x1, 1496, x2)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x55555555, 0x55555556, x1, 1500, x2)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x55555551, 0x55555555, 0x4, x1, 1504, x2)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a052, 0x55555555, 0xb503, x1, 1508, x2)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x55555555, 0x55555555, 0x0, x1, 1512, x2)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeef0, 0x55555555, 0x66666665, x1, 1516, x2)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x22222223, 0x55555555, 0x33333332, x1, 1520, x2)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x55555555, 0x55555554, x1, 1524, x2)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x55555553, 0x55555555, 0x2, x1, 1528, x2)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a051, 0x55555555, 0xb504, x1, 1532, x2)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a59, 0x55555555, -0xb504, x1, 1536, x2)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeeef, 0x55555555, 0x66666666, x1, 1540, x2)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x22222222, 0x55555555, 0x33333333, x1, 1544, x2)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x55555550, 0x55555555, 0x5, x1, 1548, x2)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaab, 0x55555555, -0x55555556, x1, 1552, x2)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x55555555, 0x55555555, x1, 1556, x2)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x55555552, 0x55555555, 0x3, x1, 1560, x2)
+
+inst_406:
+// rs1_val==3 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afe, 0x3, 0xb505, x1, 1564, x2)
+
+inst_407:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xb506, 0x3, -0xb503, x1, 1568, x2)
+
+inst_408:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999c, 0x3, 0x66666667, x1, 1572, x2)
+
+inst_409:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccf, 0x3, 0x33333334, x1, 1576, x2)
+
+inst_410:
+// rs1_val==3 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffd, 0x3, 0x6, x1, 1580, x2)
+
+inst_411:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55555558, 0x3, -0x55555555, x1, 1584, x2)
+
+inst_412:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaad, 0x3, 0x55555556, x1, 1588, x2)
+
+inst_413:
+// rs1_val==3 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x3, 0x4, x1, 1592, x2)
+
+inst_414:
+// rs1_val==3 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4b00, 0x3, 0xb503, x1, 1596, x2)
+
+inst_415:
+// rs1_val==3 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x3, 0x3, 0x0, x1, 1600, x2)
+
+inst_416:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999e, 0x3, 0x66666665, x1, 1604, x2)
+
+inst_417:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd1, 0x3, 0x33333332, x1, 1608, x2)
+
+inst_418:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaaf, 0x3, 0x55555554, x1, 1612, x2)
+
+inst_419:
+// rs1_val==3 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x3, 0x2, x1, 1616, x2)
+
+inst_420:
+// rs1_val==3 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4aff, 0x3, 0xb504, x1, 1620, x2)
+
+inst_421:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xb507, 0x3, -0xb504, x1, 1624, x2)
+
+inst_422:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999d, 0x3, 0x66666666, x1, 1628, x2)
+
+inst_423:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd0, 0x3, 0x33333333, x1, 1632, x2)
+
+inst_424:
+// rs1_val==3 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffe, 0x3, 0x5, x1, 1636, x2)
+
+inst_425:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x55555559, 0x3, -0x55555556, x1, 1640, x2)
+
+inst_426:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaae, 0x3, 0x55555555, x1, 1644, x2)
+
+inst_427:
+// rs1_val==3 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x3, 0x3, x1, 1648, x2)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x66666665, 0x66666665, x1, 1652, x2)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x33333333, 0x66666665, 0x33333332, x1, 1656, x2)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0x11111111, 0x66666665, 0x55555554, x1, 1660, x2)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x66666663, 0x66666665, 0x2, x1, 1664, x2)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b161, 0x66666665, 0xb504, x1, 1668, x2)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x66671b69, 0x66666665, -0xb504, x1, 1672, x2)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x66666665, 0x66666666, x1, 1676, x2)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x33333332, 0x66666665, 0x33333333, x1, 1680, x2)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x66666660, 0x66666665, 0x5, x1, 1684, x2)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xbbbbbbbb, 0x66666665, -0x55555556, x1, 1688, x2)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x11111110, 0x66666665, 0x55555555, x1, 1692, x2)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x66666662, 0x66666665, 0x3, x1, 1696, x2)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e2d, 0x33333332, 0xb505, x1, 1700, x2)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x3333e835, 0x33333332, -0xb503, x1, 1704, x2)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccb, 0x33333332, 0x66666667, x1, 1708, x2)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffe, 0x33333332, 0x33333334, x1, 1712, x2)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332c, 0x33333332, 0x6, x1, 1716, x2)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x88888887, 0x33333332, -0x55555555, x1, 1720, x2)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xdddddddc, 0x33333332, 0x55555556, x1, 1724, x2)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332e, 0x33333332, 0x4, x1, 1728, x2)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e2f, 0x33333332, 0xb503, x1, 1732, x2)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x33333332, 0x33333332, 0x0, x1, 1736, x2)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccd, 0x33333332, 0x66666665, x1, 1740, x2)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x33333332, 0x33333332, x1, 1744, x2)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xddddddde, 0x33333332, 0x55555554, x1, 1748, x2)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x33333330, 0x33333332, 0x2, x1, 1752, x2)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e2e, 0x33333332, 0xb504, x1, 1756, x2)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x3333e836, 0x33333332, -0xb504, x1, 1760, x2)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccc, 0x33333332, 0x66666666, x1, 1764, x2)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x33333332, 0x33333333, x1, 1768, x2)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332d, 0x33333332, 0x5, x1, 1772, x2)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x88888888, 0x33333332, -0x55555556, x1, 1776, x2)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xdddddddd, 0x33333332, 0x55555555, x1, 1780, x2)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332f, 0x33333332, 0x3, x1, 1784, x2)
+
+inst_462:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a04f, 0x55555554, 0xb505, x1, 1788, x2)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a57, 0x55555554, -0xb503, x1, 1792, x2)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeeed, 0x55555554, 0x66666667, x1, 1796, x2)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x22222220, 0x55555554, 0x33333334, x1, 1800, x2)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x5555554e, 0x55555554, 0x6, x1, 1804, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaa9, 0x55555554, -0x55555555, x1, 1808, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffe, 0x55555554, 0x55555556, x1, 1812, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x55555550, 0x55555554, 0x4, x1, 1816, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a051, 0x55555554, 0xb503, x1, 1820, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 1824, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeeef, 0x55555554, 0x66666665, x1, 1828, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x22222222, 0x55555554, 0x33333332, x1, 1832, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x55555554, 0x55555554, x1, 1836, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x55555552, 0x55555554, 0x2, x1, 1840, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a050, 0x55555554, 0xb504, x1, 1844, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a58, 0x55555554, -0xb504, x1, 1848, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0xeeeeeeee, 0x55555554, 0x66666666, x1, 1852, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x22222221, 0x55555554, 0x33333333, x1, 1856, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x5555554f, 0x55555554, 0x5, x1, 1860, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaaa, 0x55555554, -0x55555556, x1, 1864, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x55555554, 0x55555555, x1, 1868, x2)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x55555551, 0x55555554, 0x3, x1, 1872, x2)
+
+inst_484:
+// rs1_val==2 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afd, 0x2, 0xb505, x1, 1876, x2)
+
+inst_485:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xb505, 0x2, -0xb503, x1, 1880, x2)
+
+inst_486:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999b, 0x2, 0x66666667, x1, 1884, x2)
+
+inst_487:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccce, 0x2, 0x33333334, x1, 1888, x2)
+
+inst_488:
+// rs1_val==2 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffc, 0x2, 0x6, x1, 1892, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55555557, 0x2, -0x55555555, x1, 1896, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaac, 0x2, 0x55555556, x1, 1900, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffe, 0x2, 0x4, x1, 1904, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4aff, 0x2, 0xb503, x1, 1908, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x2, 0x2, 0x0, x1, 1912, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999d, 0x2, 0x66666665, x1, 1916, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xccccccd0, 0x2, 0x33333332, x1, 1920, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaae, 0x2, 0x55555554, x1, 1924, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afe, 0x2, 0xb504, x1, 1928, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xb506, 0x2, -0xb504, x1, 1932, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x9999999c, 0x2, 0x66666666, x1, 1936, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccf, 0x2, 0x33333333, x1, 1940, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xfffffffd, 0x2, 0x5, x1, 1944, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x55555558, 0x2, -0x55555556, x1, 1948, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaaaaaad, 0x2, 0x55555555, x1, 1952, x2)
+
+inst_504:
+// rs1_val==2 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x2, 0x3, x1, 1956, x2)
+
+inst_505:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0xb504, 0xb505, x1, 1960, x2)
+
+inst_506:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x16a07, 0xb504, -0xb503, x1, 1964, x2)
+
+inst_507:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4e9d, 0xb504, 0x66666667, x1, 1968, x2)
+
+inst_508:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81d0, 0xb504, 0x33333334, x1, 1972, x2)
+
+inst_509:
+// rs1_val==46340 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xb4fe, 0xb504, 0x6, x1, 1976, x2)
+
+inst_510:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a59, 0xb504, -0x55555555, x1, 1980, x2)
+
+inst_511:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fae, 0xb504, 0x55555556, x1, 1984, x2)
+
+inst_512:
+// rs1_val==46340 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xb500, 0xb504, 0x4, x1, 1988, x2)
+
+inst_513:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0xb504, 0xb503, x1, 1992, x2)
+
+inst_514:
+// rs1_val==46340 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0xb504, 0xb504, 0x0, x1, 1996, x2)
+
+inst_515:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4e9f, 0xb504, 0x66666665, x1, 2000, x2)
+
+inst_516:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81d2, 0xb504, 0x33333332, x1, 2004, x2)
+
+inst_517:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5fb0, 0xb504, 0x55555554, x1, 2008, x2)
+
+inst_518:
+// rs1_val==46340 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xb502, 0xb504, 0x2, x1, 2012, x2)
+
+inst_519:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0xb504, 0xb504, x1, 2016, x2)
+
+inst_520:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x16a08, 0xb504, -0xb504, x1, 2020, x2)
+
+inst_521:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x999a4e9e, 0xb504, 0x66666666, x1, 2024, x2)
+
+inst_522:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xcccd81d1, 0xb504, 0x33333333, x1, 2028, x2)
+
+inst_523:
+// rs1_val==46340 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xb4ff, 0xb504, 0x5, x1, 2032, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x55560a5a, 0xb504, -0x55555556, x1, 2036, x2)
+
+inst_525:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaab5faf, 0xb504, 0x55555555, x1, 2040, x2)
+
+inst_526:
+// rs1_val==46340 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xb501, 0xb504, 0x3, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_527:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0xfffe95f7, -0xb504, 0xb505, x1, 0, x2)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, -0xb504, -0xb503, x1, 4, x2)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0x9998e495, -0xb504, 0x66666667, x1, 8, x2)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xcccc17c8, -0xb504, 0x33333334, x1, 12, x2)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4af6, -0xb504, 0x6, x1, 16, x2)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a051, -0xb504, -0x55555555, x1, 20, x2)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a6, -0xb504, 0x55555556, x1, 24, x2)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4af8, -0xb504, 0x4, x1, 28, x2)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0xfffe95f9, -0xb504, 0xb503, x1, 32, x2)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afc, -0xb504, 0x0, x1, 36, x2)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x9998e497, -0xb504, 0x66666665, x1, 40, x2)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0xcccc17ca, -0xb504, 0x33333332, x1, 44, x2)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a8, -0xb504, 0x55555554, x1, 48, x2)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4afa, -0xb504, 0x2, x1, 52, x2)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0xfffe95f8, -0xb504, 0xb504, x1, 56, x2)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x0, -0xb504, -0xb504, x1, 60, x2)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x9998e496, -0xb504, 0x66666666, x1, 64, x2)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0xcccc17c9, -0xb504, 0x33333333, x1, 68, x2)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4af7, -0xb504, 0x5, x1, 72, x2)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x5554a052, -0xb504, -0x55555556, x1, 76, x2)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xaaa9f5a7, -0xb504, 0x55555555, x1, 80, x2)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0xffff4af9, -0xb504, 0x3, x1, 84, x2)
+
+inst_549:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b161, 0x66666666, 0xb505, x1, 88, x2)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x66671b69, 0x66666666, -0xb503, x1, 92, x2)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x66666666, 0x66666667, x1, 96, x2)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0x33333332, 0x66666666, 0x33333334, x1, 100, x2)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x66666660, 0x66666666, 0x6, x1, 104, x2)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0xbbbbbbbb, 0x66666666, -0x55555555, x1, 108, x2)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0x11111110, 0x66666666, 0x55555556, x1, 112, x2)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x66666662, 0x66666666, 0x4, x1, 116, x2)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b163, 0x66666666, 0xb503, x1, 120, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(sub, x12, x10, x11, 0x66666666, 0x66666666, 0x0, x1, 124, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(sub, x12, x10, x11, 0x1, 0x66666666, 0x66666665, x1, 128, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(sub, x12, x10, x11, 0x33333334, 0x66666666, 0x33333332, x1, 132, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(sub, x12, x10, x11, 0x11111112, 0x66666666, 0x55555554, x1, 136, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(sub, x12, x10, x11, 0x66666664, 0x66666666, 0x2, x1, 140, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x6665b162, 0x66666666, 0xb504, x1, 144, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(sub, x12, x10, x11, 0x66671b6a, 0x66666666, -0xb504, x1, 148, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(sub, x12, x10, x11, 0x0, 0x66666666, 0x66666666, x1, 152, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(sub, x12, x10, x11, 0x33333333, 0x66666666, 0x33333333, x1, 156, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(sub, x12, x10, x11, 0x66666661, 0x66666666, 0x5, x1, 160, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xbbbbbbbc, 0x66666666, -0x55555556, x1, 164, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x11111111, 0x66666666, 0x55555555, x1, 168, x2)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(sub, x12, x10, x11, 0x66666663, 0x66666666, 0x3, x1, 172, x2)
+
+inst_571:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e2e, 0x33333333, 0xb505, x1, 176, x2)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x3333e836, 0x33333333, -0xb503, x1, 180, x2)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(sub, x12, x10, x11, 0xcccccccc, 0x33333333, 0x66666667, x1, 184, x2)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(sub, x12, x10, x11, 0xffffffff, 0x33333333, 0x33333334, x1, 188, x2)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332d, 0x33333333, 0x6, x1, 192, x2)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(sub, x12, x10, x11, 0x88888888, 0x33333333, -0x55555555, x1, 196, x2)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(sub, x12, x10, x11, 0xdddddddd, 0x33333333, 0x55555556, x1, 200, x2)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(sub, x12, x10, x11, 0x3333332f, 0x33333333, 0x4, x1, 204, x2)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(sub, x12, x10, x11, 0x33327e30, 0x33333333, 0xb503, x1, 208, x2)
+
+inst_580:
+// rs2_val == 2147483647, rs1_val == -4194305, rs1_val < 0 and rs2_val > 0, rs2_val == (2**(xlen-1)-1)
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:0x7fffffff
+TEST_RR_OP(sub, x12, x10, x11, 0x7fc00000, -0x400001, 0x7fffffff, x1, 212, x2)
+
+inst_581:
+// rs2_val == -536870913, rs1_val == -8388609
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:-0x20000001
+TEST_RR_OP(sub, x12, x10, x11, 0x1f800000, -0x800001, -0x20000001, x1, 216, x2)
+
+inst_582:
+// rs2_val == -268435457, rs1_val == -33554433
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:-0x10000001
+TEST_RR_OP(sub, x12, x10, x11, 0xe000000, -0x2000001, -0x10000001, x1, 220, x2)
+
+inst_583:
+// rs2_val == -524289, rs1_val == -2
+// opcode: sub ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:-0x80001
+TEST_RR_OP(sub, x12, x10, x11, 0x7ffff, -0x2, -0x80001, x1, 224, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x3_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 57*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sw-align-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sw-align-01.S
new file mode 100644
index 000000000..aae0ca476
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/sw-align-01.S
@@ -0,0 +1,415 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sw instruction of the RISC-V E extension for the sw-align covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",sw-align)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 != rs2, rs1==x13, rs2==x1, ea_align == 0 and (imm_val % 4) == 0, imm_val > 0, rs2_val == 67108864
+// opcode: sw; op1:x13; op2:x1; op2val:0x4000000; immval:0x4; align:0
+TEST_STORE(x2,x9,0,x13,x1,0x4000000,0x4,0,sw,0)
+
+inst_1:
+// rs1==x7, rs2==x6, rs2_val == 2147483647, rs2_val == (2**(xlen-1)-1)
+// opcode: sw; op1:x7; op2:x6; op2val:0x7fffffff; immval:0x20; align:0
+TEST_STORE(x2,x9,0,x7,x6,0x7fffffff,0x20,4,sw,0)
+
+inst_2:
+// rs1==x5, rs2==x0, rs2_val == -1073741825, imm_val < 0
+// opcode: sw; op1:x5; op2:x0; op2val:0x0; immval:-0x4; align:0
+TEST_STORE(x2,x9,0,x5,x0,0x0,-0x4,8,sw,0)
+
+inst_3:
+// rs1==x4, rs2==x5, rs2_val == -536870913, ea_align == 0 and (imm_val % 4) == 3
+// opcode: sw; op1:x4; op2:x5; op2val:-0x20000001; immval:-0x11; align:0
+TEST_STORE(x2,x9,0,x4,x5,-0x20000001,-0x11,12,sw,0)
+
+inst_4:
+// rs1==x12, rs2==x3, rs2_val == -268435457,
+// opcode: sw; op1:x12; op2:x3; op2val:-0x10000001; immval:-0x101; align:0
+TEST_STORE(x2,x9,0,x12,x3,-0x10000001,-0x101,16,sw,0)
+
+inst_5:
+// rs1==x8, rs2==x10, rs2_val == -134217729,
+// opcode: sw; op1:x8; op2:x10; op2val:-0x8000001; immval:-0x1; align:0
+TEST_STORE(x2,x9,0,x8,x10,-0x8000001,-0x1,20,sw,0)
+
+inst_6:
+// rs1==x1, rs2==x8, rs2_val == -67108865,
+// opcode: sw; op1:x1; op2:x8; op2val:-0x4000001; immval:-0x401; align:0
+TEST_STORE(x2,x9,0,x1,x8,-0x4000001,-0x401,24,sw,0)
+
+inst_7:
+// rs1==x6, rs2==x15, rs2_val == -33554433,
+// opcode: sw; op1:x6; op2:x15; op2val:-0x2000001; immval:0x40; align:0
+TEST_STORE(x2,x9,0,x6,x15,-0x2000001,0x40,28,sw,0)
+
+inst_8:
+// rs1==x11, rs2==x14, rs2_val == -16777217, ea_align == 0 and (imm_val % 4) == 1
+// opcode: sw; op1:x11; op2:x14; op2val:-0x1000001; immval:0x555; align:0
+TEST_STORE(x2,x5,0,x11,x14,-0x1000001,0x555,32,sw,0)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_9:
+// rs1==x15, rs2==x7, rs2_val == -8388609,
+// opcode: sw; op1:x15; op2:x7; op2val:-0x800001; immval:-0x201; align:0
+TEST_STORE(x1,x5,0,x15,x7,-0x800001,-0x201,0,sw,0)
+
+inst_10:
+// rs1==x3, rs2==x12, rs2_val == -4194305,
+// opcode: sw; op1:x3; op2:x12; op2val:-0x400001; immval:-0x8; align:0
+TEST_STORE(x1,x5,0,x3,x12,-0x400001,-0x8,4,sw,0)
+
+inst_11:
+// rs1==x14, rs2==x9, rs2_val == -2097153,
+// opcode: sw; op1:x14; op2:x9; op2val:-0x200001; immval:-0x800; align:0
+TEST_STORE(x1,x5,0,x14,x9,-0x200001,-0x800,8,sw,0)
+
+inst_12:
+// rs1==x9, rs2==x13, rs2_val == -1048577,
+// opcode: sw; op1:x9; op2:x13; op2val:-0x100001; immval:0x9; align:0
+TEST_STORE(x1,x5,0,x9,x13,-0x100001,0x9,12,sw,0)
+
+inst_13:
+// rs1==x10, rs2==x4, rs2_val == -524289,
+// opcode: sw; op1:x10; op2:x4; op2val:-0x80001; immval:0x7; align:0
+TEST_STORE(x1,x5,0,x10,x4,-0x80001,0x7,16,sw,0)
+
+inst_14:
+// rs1==x2, rs2==x11, rs2_val == -262145, ea_align == 0 and (imm_val % 4) == 2
+// opcode: sw; op1:x2; op2:x11; op2val:-0x40001; immval:0x6; align:0
+TEST_STORE(x1,x3,0,x2,x11,-0x40001,0x6,20,sw,0)
+
+inst_15:
+// rs2==x2, rs2_val == -131073,
+// opcode: sw; op1:x9; op2:x2; op2val:-0x20001; immval:0x20; align:0
+TEST_STORE(x1,x3,0,x9,x2,-0x20001,0x20,24,sw,0)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x10001; immval:-0x81; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x10001,-0x81,28,sw,0)
+
+inst_17:
+// rs2_val == -32769,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x8001; immval:-0x11; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x8001,-0x11,32,sw,0)
+
+inst_18:
+// rs2_val == -16385, imm_val == 0
+// opcode: sw; op1:x10; op2:x11; op2val:-0x4001; immval:0x0; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x4001,0x0,36,sw,0)
+
+inst_19:
+// rs2_val == -8193,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x2001; immval:0x3ff; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x2001,0x3ff,40,sw,0)
+
+inst_20:
+// rs2_val == -4097,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x1001; immval:0x200; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x1001,0x200,44,sw,0)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x801; immval:0x4; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x801,0x4,48,sw,0)
+
+inst_22:
+// rs2_val == -1025,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x401; immval:-0x401; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x401,-0x401,52,sw,0)
+
+inst_23:
+// rs2_val == -513,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x201; immval:0x3ff; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x201,0x3ff,56,sw,0)
+
+inst_24:
+// rs2_val == -257,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x101; immval:-0x81; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x101,-0x81,60,sw,0)
+
+inst_25:
+// rs2_val == -129,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x81; immval:0x1; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x81,0x1,64,sw,0)
+
+inst_26:
+// rs2_val == -65,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x41; immval:-0xa; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x41,-0xa,68,sw,0)
+
+inst_27:
+// rs2_val == -33,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x21; immval:0x3; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x21,0x3,72,sw,0)
+
+inst_28:
+// rs2_val == -17,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x11; immval:0x2; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x11,0x2,76,sw,0)
+
+inst_29:
+// rs2_val == -9,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x9; immval:-0xa; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x9,-0xa,80,sw,0)
+
+inst_30:
+// rs2_val == -5,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x5; immval:0x40; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x5,0x40,84,sw,0)
+
+inst_31:
+// rs2_val == -3,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x3; immval:0x1; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x3,0x1,88,sw,0)
+
+inst_32:
+// rs2_val == -2,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x2; immval:-0x201; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x2,-0x201,92,sw,0)
+
+inst_33:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: sw; op1:x10; op2:x11; op2val:-0x80000000; immval:0x20; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x80000000,0x20,96,sw,0)
+
+inst_34:
+// rs2_val == 1073741824,
+// opcode: sw; op1:x10; op2:x11; op2val:0x40000000; immval:-0x401; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x40000000,-0x401,100,sw,0)
+
+inst_35:
+// rs2_val == 536870912,
+// opcode: sw; op1:x10; op2:x11; op2val:0x20000000; immval:-0x8; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x20000000,-0x8,104,sw,0)
+
+inst_36:
+// rs2_val == 1,
+// opcode: sw; op1:x10; op2:x11; op2val:0x1; immval:-0x2; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x1,-0x2,108,sw,0)
+
+inst_37:
+// rs2_val == -1431655766,
+// opcode: sw; op1:x10; op2:x11; op2val:-0x55555556; immval:-0x556; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x55555556,-0x556,112,sw,0)
+
+inst_38:
+// rs2_val == 1431655765,
+// opcode: sw; op1:x10; op2:x11; op2val:0x55555555; immval:0x40; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x55555555,0x40,116,sw,0)
+
+inst_39:
+// rs2_val == 0,
+// opcode: sw; op1:x10; op2:x11; op2val:0x0; immval:-0xa; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x0,-0xa,120,sw,0)
+
+inst_40:
+// rs2_val == 268435456,
+// opcode: sw; op1:x10; op2:x11; op2val:0x10000000; immval:-0x4; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x10000000,-0x4,124,sw,0)
+
+inst_41:
+// rs2_val == 134217728,
+// opcode: sw; op1:x10; op2:x11; op2val:0x8000000; immval:0x7ff; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x8000000,0x7ff,128,sw,0)
+
+inst_42:
+// rs2_val == 33554432,
+// opcode: sw; op1:x10; op2:x11; op2val:0x2000000; immval:0x555; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x2000000,0x555,132,sw,0)
+
+inst_43:
+// rs2_val == 16777216,
+// opcode: sw; op1:x10; op2:x11; op2val:0x1000000; immval:0x1; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x1000000,0x1,136,sw,0)
+
+inst_44:
+// rs2_val == 8388608,
+// opcode: sw; op1:x10; op2:x11; op2val:0x800000; immval:-0x5; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x800000,-0x5,140,sw,0)
+
+inst_45:
+// rs2_val == 4194304,
+// opcode: sw; op1:x10; op2:x11; op2val:0x400000; immval:0x2; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x400000,0x2,144,sw,0)
+
+inst_46:
+// rs2_val == 2097152,
+// opcode: sw; op1:x10; op2:x11; op2val:0x200000; immval:-0x1; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x200000,-0x1,148,sw,0)
+
+inst_47:
+// rs2_val == 1048576,
+// opcode: sw; op1:x10; op2:x11; op2val:0x100000; immval:-0x9; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x100000,-0x9,152,sw,0)
+
+inst_48:
+// rs2_val == 524288,
+// opcode: sw; op1:x10; op2:x11; op2val:0x80000; immval:0x400; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x80000,0x400,156,sw,0)
+
+inst_49:
+// rs2_val == 262144,
+// opcode: sw; op1:x10; op2:x11; op2val:0x40000; immval:0x555; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x40000,0x555,160,sw,0)
+
+inst_50:
+// rs2_val == 131072,
+// opcode: sw; op1:x10; op2:x11; op2val:0x20000; immval:-0x8; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x20000,-0x8,164,sw,0)
+
+inst_51:
+// rs2_val == 65536,
+// opcode: sw; op1:x10; op2:x11; op2val:0x10000; immval:-0x2; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x10000,-0x2,168,sw,0)
+
+inst_52:
+// rs2_val == 32768,
+// opcode: sw; op1:x10; op2:x11; op2val:0x8000; immval:-0xa; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x8000,-0xa,172,sw,0)
+
+inst_53:
+// rs2_val == 16384,
+// opcode: sw; op1:x10; op2:x11; op2val:0x4000; immval:-0x1; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x4000,-0x1,176,sw,0)
+
+inst_54:
+// rs2_val == 8192,
+// opcode: sw; op1:x10; op2:x11; op2val:0x2000; immval:-0x201; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x2000,-0x201,180,sw,0)
+
+inst_55:
+// rs2_val == 4096,
+// opcode: sw; op1:x10; op2:x11; op2val:0x1000; immval:0x7; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x1000,0x7,184,sw,0)
+
+inst_56:
+// rs2_val == 2048,
+// opcode: sw; op1:x10; op2:x11; op2val:0x800; immval:-0x81; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x800,-0x81,188,sw,0)
+
+inst_57:
+// rs2_val == 1024,
+// opcode: sw; op1:x10; op2:x11; op2val:0x400; immval:-0x401; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x400,-0x401,192,sw,0)
+
+inst_58:
+// rs2_val == 512,
+// opcode: sw; op1:x10; op2:x11; op2val:0x200; immval:0x7; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x200,0x7,196,sw,0)
+
+inst_59:
+// rs2_val == 256,
+// opcode: sw; op1:x10; op2:x11; op2val:0x100; immval:-0x101; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x100,-0x101,200,sw,0)
+
+inst_60:
+// rs2_val == 128,
+// opcode: sw; op1:x10; op2:x11; op2val:0x80; immval:-0x21; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x80,-0x21,204,sw,0)
+
+inst_61:
+// rs2_val == 64,
+// opcode: sw; op1:x10; op2:x11; op2val:0x40; immval:0x40; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x40,0x40,208,sw,0)
+
+inst_62:
+// rs2_val == 32,
+// opcode: sw; op1:x10; op2:x11; op2val:0x20; immval:0x9; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x20,0x9,212,sw,0)
+
+inst_63:
+// rs2_val == 16,
+// opcode: sw; op1:x10; op2:x11; op2val:0x10; immval:0x10; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x10,0x10,216,sw,0)
+
+inst_64:
+// rs2_val == 8,
+// opcode: sw; op1:x10; op2:x11; op2val:0x8; immval:0x400; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x8,0x400,220,sw,0)
+
+inst_65:
+// rs2_val == 4,
+// opcode: sw; op1:x10; op2:x11; op2val:0x4; immval:-0x401; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x4,-0x401,224,sw,0)
+
+inst_66:
+// rs2_val == 2,
+// opcode: sw; op1:x10; op2:x11; op2val:0x2; immval:-0x400; align:0
+TEST_STORE(x1,x3,0,x10,x11,0x2,-0x400,228,sw,0)
+
+inst_67:
+// rs2_val == -1073741825, imm_val < 0
+// opcode: sw; op1:x10; op2:x11; op2val:-0x40000001; immval:-0x4; align:0
+TEST_STORE(x1,x3,0,x10,x11,-0x40000001,-0x4,232,sw,0)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 59*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/xor-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/xor-01.S
new file mode 100644
index 000000000..cb30a2617
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/xor-01.S
@@ -0,0 +1,3000 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the xor instruction of the RISC-V E extension for the xor covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",xor)
+
+RVTEST_SIGBASE( x7,signature_x7_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x5, rs2==x14, rd==x1, rs1_val != rs2_val, rs2_val == -1048577, rs1_val > 0 and rs2_val < 0, rs1_val == 131072
+// opcode: xor ; op1:x5; op2:x14; dest:x1; op1val:0x20000; op2val:-0x100001
+TEST_RR_OP(xor, x1, x5, x14, 0xffedffff, 0x20000, -0x100001, x7, 0, x10)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x3, rs2==x15, rd==x3, rs2_val == 2147483647, rs1_val < 0 and rs2_val > 0, rs1_val == -1048577, rs2_val == (2**(xlen-1)-1)
+// opcode: xor ; op1:x3; op2:x15; dest:x3; op1val:-0x100001; op2val:0x7fffffff
+TEST_RR_OP(xor, x3, x3, x15, 0x80100000, -0x100001, 0x7fffffff, x7, 4, x10)
+
+inst_2:
+// rs2 == rd != rs1, rs1==x4, rs2==x0, rd==x0, rs2_val == -1073741825, rs1_val == 1024
+// opcode: xor ; op1:x4; op2:x0; dest:x0; op1val:0x400; op2val:0x0
+TEST_RR_OP(xor, x0, x4, x0, 0, 0x400, 0x0, x7, 8, x10)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x8, rs2==x8, rd==x6, rs2_val == -536870913, rs1_val == 8192
+// opcode: xor ; op1:x8; op2:x8; dest:x6; op1val:0x2000; op2val:0x2000
+TEST_RR_OP(xor, x6, x8, x8, 0x0, 0x2000, 0x2000, x7, 12, x10)
+
+inst_4:
+// rs1 == rs2 == rd, rs1==x12, rs2==x12, rd==x12, rs2_val == -268435457, rs1_val == 1
+// opcode: xor ; op1:x12; op2:x12; dest:x12; op1val:0x1; op2val:0x1
+TEST_RR_OP(xor, x12, x12, x12, 0x0, 0x1, 0x1, x7, 16, x10)
+
+inst_5:
+// rs1==x1, rs2==x4, rd==x15, rs2_val == -134217729,
+// opcode: xor ; op1:x1; op2:x4; dest:x15; op1val:0x66666667; op2val:-0x8000001
+TEST_RR_OP(xor, x15, x1, x4, 0x91999998, 0x66666667, -0x8000001, x7, 20, x10)
+
+inst_6:
+// rs1==x9, rs2==x1, rd==x14, rs2_val == -67108865, rs1_val < 0 and rs2_val < 0, rs1_val == -65
+// opcode: xor ; op1:x9; op2:x1; dest:x14; op1val:-0x41; op2val:-0x4000001
+TEST_RR_OP(xor, x14, x9, x1, 0x4000040, -0x41, -0x4000001, x7, 24, x10)
+
+inst_7:
+// rs1==x15, rs2==x13, rd==x2, rs2_val == -33554433, rs1_val == 32768
+// opcode: xor ; op1:x15; op2:x13; dest:x2; op1val:0x8000; op2val:-0x2000001
+TEST_RR_OP(xor, x2, x15, x13, 0xfdff7fff, 0x8000, -0x2000001, x7, 28, x10)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_8:
+// rs1==x10, rs2==x9, rd==x11, rs2_val == -16777217,
+// opcode: xor ; op1:x10; op2:x9; dest:x11; op1val:0xb503; op2val:-0x1000001
+TEST_RR_OP(xor, x11, x10, x9, 0xfeff4afc, 0xb503, -0x1000001, x1, 0, x2)
+
+inst_9:
+// rs1==x7, rs2==x5, rd==x10, rs2_val == -8388609, rs1_val == -17
+// opcode: xor ; op1:x7; op2:x5; dest:x10; op1val:-0x11; op2val:-0x800001
+TEST_RR_OP(xor, x10, x7, x5, 0x800010, -0x11, -0x800001, x1, 4, x2)
+
+inst_10:
+// rs1==x6, rs2==x7, rd==x8, rs2_val == -4194305, rs1_val == 262144
+// opcode: xor ; op1:x6; op2:x7; dest:x8; op1val:0x40000; op2val:-0x400001
+TEST_RR_OP(xor, x8, x6, x7, 0xffbbffff, 0x40000, -0x400001, x1, 8, x2)
+
+inst_11:
+// rs1==x13, rs2==x11, rd==x4, rs2_val == -2097153, rs1_val == 2097152
+// opcode: xor ; op1:x13; op2:x11; dest:x4; op1val:0x200000; op2val:-0x200001
+TEST_RR_OP(xor, x4, x13, x11, 0xffffffff, 0x200000, -0x200001, x1, 12, x2)
+
+inst_12:
+// rs1==x14, rs2==x6, rd==x9, rs2_val == -524289, rs1_val == 524288
+// opcode: xor ; op1:x14; op2:x6; dest:x9; op1val:0x80000; op2val:-0x80001
+TEST_RR_OP(xor, x9, x14, x6, 0xffffffff, 0x80000, -0x80001, x1, 16, x2)
+
+inst_13:
+// rs1==x0, rs2==x3, rd==x7, rs2_val == -262145, rs1_val == -65537
+// opcode: xor ; op1:x0; op2:x3; dest:x7; op1val:0x0; op2val:-0x40001
+TEST_RR_OP(xor, x7, x0, x3, 0xfffbffff, 0x0, -0x40001, x1, 20, x2)
+
+inst_14:
+// rs1==x11, rs2==x10, rd==x5, rs2_val == -131073,
+// opcode: xor ; op1:x11; op2:x10; dest:x5; op1val:-0x8; op2val:-0x20001
+TEST_RR_OP(xor, x5, x11, x10, 0x20007, -0x8, -0x20001, x1, 24, x3)
+
+inst_15:
+// rs1==x2, rs2_val == -65537, rs1_val == 2
+// opcode: xor ; op1:x2; op2:x9; dest:x14; op1val:0x2; op2val:-0x10001
+TEST_RR_OP(xor, x14, x2, x9, 0xfffefffd, 0x2, -0x10001, x1, 28, x3)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_16:
+// rs2==x2, rs2_val == -32769, rs1_val == -262145
+// opcode: xor ; op1:x10; op2:x2; dest:x14; op1val:-0x40001; op2val:-0x8001
+TEST_RR_OP(xor, x14, x10, x2, 0x48000, -0x40001, -0x8001, x1, 0, x3)
+
+inst_17:
+// rd==x13, rs2_val == -16385,
+// opcode: xor ; op1:x7; op2:x11; dest:x13; op1val:0x2; op2val:-0x4001
+TEST_RR_OP(xor, x13, x7, x11, 0xffffbffd, 0x2, -0x4001, x1, 4, x3)
+
+inst_18:
+// rs2_val == -8193,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x2001
+TEST_RR_OP(xor, x12, x10, x11, 0xffffdffa, 0x5, -0x2001, x1, 8, x3)
+
+inst_19:
+// rs2_val == -4097, rs1_val == -67108865
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:-0x1001
+TEST_RR_OP(xor, x12, x10, x11, 0x4001000, -0x4000001, -0x1001, x1, 12, x3)
+
+inst_20:
+// rs2_val == -2049,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x801
+TEST_RR_OP(xor, x12, x10, x11, 0xfffff7fd, 0x2, -0x801, x1, 16, x3)
+
+inst_21:
+// rs2_val == -1025,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x401
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffbfd, 0x2, -0x401, x1, 20, x3)
+
+inst_22:
+// rs2_val == -513,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x201
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffdfc, 0x3, -0x201, x1, 24, x3)
+
+inst_23:
+// rs2_val == -257,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:-0x101
+TEST_RR_OP(xor, x12, x10, x11, 0xffff7eff, 0x8000, -0x101, x1, 28, x3)
+
+inst_24:
+// rs2_val == -129, rs1_val == -1073741825
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:-0x81
+TEST_RR_OP(xor, x12, x10, x11, 0x40000080, -0x40000001, -0x81, x1, 32, x3)
+
+inst_25:
+// rs2_val == -65, rs1_val == -134217729
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x41
+TEST_RR_OP(xor, x12, x10, x11, 0x8000040, -0x8000001, -0x41, x1, 36, x3)
+
+inst_26:
+// rs2_val == -33,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:-0x21
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffd8, 0x7, -0x21, x1, 40, x3)
+
+inst_27:
+// rs2_val == -17,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x11
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffec, 0x3, -0x11, x1, 44, x3)
+
+inst_28:
+// rs2_val == -9, rs1_val == 0
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x9
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff7, 0x0, -0x9, x1, 48, x3)
+
+inst_29:
+// rs2_val == -5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x6; op2val:-0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x1, -0x6, -0x5, x1, 52, x3)
+
+inst_30:
+// rs2_val == -3, rs1_val == 1431655765
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x3
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa8, 0x55555555, -0x3, x1, 56, x3)
+
+inst_31:
+// rs2_val == -2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffe, 0x0, -0x2, x1, 60, x3)
+
+inst_32:
+// rs1_val == 2147483647, rs1_val > 0 and rs2_val > 0, rs1_val == (2**(xlen-1)-1), rs2_val == 1431655765
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x2aaaaaaa, 0x7fffffff, 0x55555555, x1, 64, x3)
+
+inst_33:
+// rs1_val == -536870913, rs2_val == 2097152
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:0x200000
+TEST_RR_OP(xor, x12, x10, x11, 0xdfdfffff, -0x20000001, 0x200000, x1, 68, x3)
+
+inst_34:
+// rs1_val == -268435457,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x1000b503, -0x10000001, -0xb504, x1, 72, x3)
+
+inst_35:
+// rs1_val == -33554433, rs2_val == 2
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xfdfffffd, -0x2000001, 0x2, x1, 76, x3)
+
+inst_36:
+// rs1_val == -16777217,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:-0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x1000005, -0x1000001, -0x6, x1, 80, x3)
+
+inst_37:
+// rs1_val == -8388609,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:-0x21
+TEST_RR_OP(xor, x12, x10, x11, 0x800020, -0x800001, -0x21, x1, 84, x3)
+
+inst_38:
+// rs1_val == -4194305,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:-0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x400002, -0x400001, -0x3, x1, 88, x3)
+
+inst_39:
+// rs1_val == -2097153, rs2_val == -1431655766
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x55755555, -0x200001, -0x55555556, x1, 92, x3)
+
+inst_40:
+// rs1_val == -524289,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:-0x40000000
+TEST_RR_OP(xor, x12, x10, x11, 0x3ff7ffff, -0x80001, -0x40000000, x1, 96, x3)
+
+inst_41:
+// rs1_val == -131073, rs2_val == 1048576
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x100000
+TEST_RR_OP(xor, x12, x10, x11, 0xffedffff, -0x20001, 0x100000, x1, 100, x3)
+
+inst_42:
+// rs1_val == -32769,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xffffcafb, -0x8001, 0xb504, x1, 104, x3)
+
+inst_43:
+// rs1_val == -16385,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:-0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x4005, -0x4001, -0x6, x1, 108, x3)
+
+inst_44:
+// rs1_val == -8193, rs2_val == 1024
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0x400
+TEST_RR_OP(xor, x12, x10, x11, 0xffffdbff, -0x2001, 0x400, x1, 112, x3)
+
+inst_45:
+// rs1_val == -4097,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:-0x1000001
+TEST_RR_OP(xor, x12, x10, x11, 0x1001000, -0x1001, -0x1000001, x1, 116, x3)
+
+inst_46:
+// rs1_val == -2049,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x9
+TEST_RR_OP(xor, x12, x10, x11, 0xfffff7f6, -0x801, 0x9, x1, 120, x3)
+
+inst_47:
+// rs1_val == -1025, rs2_val == 16777216
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x1000000
+TEST_RR_OP(xor, x12, x10, x11, 0xfefffbff, -0x401, 0x1000000, x1, 124, x3)
+
+inst_48:
+// rs1_val == -513, rs2_val == 67108864
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x4000000
+TEST_RR_OP(xor, x12, x10, x11, 0xfbfffdff, -0x201, 0x4000000, x1, 128, x3)
+
+inst_49:
+// rs1_val == -257, rs2_val == 268435456
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0x10000000
+TEST_RR_OP(xor, x12, x10, x11, 0xeffffeff, -0x101, 0x10000000, x1, 132, x3)
+
+inst_50:
+// rs1_val == -129, rs2_val == 131072
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x20000
+TEST_RR_OP(xor, x12, x10, x11, 0xfffdff7f, -0x81, 0x20000, x1, 136, x3)
+
+inst_51:
+// rs1_val == -33, rs2_val == 0
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffdf, -0x21, 0x0, x1, 140, x3)
+
+inst_52:
+// rs1_val == -9,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0xccccccc4, -0x9, 0x33333333, x1, 144, x3)
+
+inst_53:
+// rs1_val == -5, rs2_val == 536870912
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x20000000
+TEST_RR_OP(xor, x12, x10, x11, 0xdffffffb, -0x5, 0x20000000, x1, 148, x3)
+
+inst_54:
+// rs1_val == -3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afe, -0x3, 0xb503, x1, 152, x3)
+
+inst_55:
+// rs1_val == -2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:-0x400001
+TEST_RR_OP(xor, x12, x10, x11, 0x400001, -0x2, -0x400001, x1, 156, x3)
+
+inst_56:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x9; op2val:-0x80000000
+TEST_RR_OP(xor, x12, x10, x11, 0x80000009, 0x9, -0x80000000, x1, 160, x3)
+
+inst_57:
+// rs2_val == 1073741824,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x40000000; op2val:0x40000000
+TEST_RR_OP(xor, x12, x10, x11, 0x80000000, -0x40000000, 0x40000000, x1, 164, x3)
+
+inst_58:
+// rs2_val == 134217728,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0x8000000
+TEST_RR_OP(xor, x12, x10, x11, 0x8000007, 0x7, 0x8000000, x1, 168, x3)
+
+inst_59:
+// rs2_val == 33554432, rs1_val == 4
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2000000
+TEST_RR_OP(xor, x12, x10, x11, 0x2000004, 0x4, 0x2000000, x1, 172, x3)
+
+inst_60:
+// rs2_val == 8388608,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x800000
+TEST_RR_OP(xor, x12, x10, x11, 0x33b33333, 0x33333333, 0x800000, x1, 176, x3)
+
+inst_61:
+// rs2_val == 4194304,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:0x400000
+TEST_RR_OP(xor, x12, x10, x11, 0xfdbfffff, -0x2000001, 0x400000, x1, 180, x3)
+
+inst_62:
+// rs2_val == 524288, rs1_val == 256
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x80000
+TEST_RR_OP(xor, x12, x10, x11, 0x80100, 0x100, 0x80000, x1, 184, x3)
+
+inst_63:
+// rs2_val == 262144,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x40000
+TEST_RR_OP(xor, x12, x10, x11, 0x33373333, 0x33333333, 0x40000, x1, 188, x3)
+
+inst_64:
+// rs2_val == 65536,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x1; op2val:0x10000
+TEST_RR_OP(xor, x12, x10, x11, 0xfffeffff, -0x1, 0x10000, x1, 192, x3)
+
+inst_65:
+// rs2_val == 32768,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x8000
+TEST_RR_OP(xor, x12, x10, x11, 0xffffcafc, -0xb504, 0x8000, x1, 196, x3)
+
+inst_66:
+// rs2_val == 16384, rs1_val == 32
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x4000
+TEST_RR_OP(xor, x12, x10, x11, 0x4020, 0x20, 0x4000, x1, 200, x3)
+
+inst_67:
+// rs2_val == 8192,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xa; op2val:0x2000
+TEST_RR_OP(xor, x12, x10, x11, 0xffffdff6, -0xa, 0x2000, x1, 204, x3)
+
+inst_68:
+// rs2_val == 4096,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x1000
+TEST_RR_OP(xor, x12, x10, x11, 0x33332333, 0x33333333, 0x1000, x1, 208, x3)
+
+inst_69:
+// rs2_val == 2048,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x800
+TEST_RR_OP(xor, x12, x10, x11, 0x33333b34, 0x33333334, 0x800, x1, 212, x3)
+
+inst_70:
+// rs2_val == 512, rs1_val == 2048
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x200
+TEST_RR_OP(xor, x12, x10, x11, 0xa00, 0x800, 0x200, x1, 216, x3)
+
+inst_71:
+// rs2_val == 256,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x100
+TEST_RR_OP(xor, x12, x10, x11, 0x100, 0x0, 0x100, x1, 220, x3)
+
+inst_72:
+// rs2_val == 128,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x80
+TEST_RR_OP(xor, x12, x10, x11, 0x20080, 0x20000, 0x80, x1, 224, x3)
+
+inst_73:
+// rs2_val == 64,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x40
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaeb, -0x55555555, 0x40, x1, 228, x3)
+
+inst_74:
+// rs2_val == 32,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x20
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffcf, -0x11, 0x20, x1, 232, x3)
+
+inst_75:
+// rs2_val == 16,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x10
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffdef, -0x201, 0x10, x1, 236, x3)
+
+inst_76:
+// rs2_val == 8, rs1_val == 16777216
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x8
+TEST_RR_OP(xor, x12, x10, x11, 0x1000008, 0x1000000, 0x8, x1, 240, x3)
+
+inst_77:
+// rs2_val == 4, rs1_val == 134217728
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x8000004, 0x8000000, 0x4, x1, 244, x3)
+
+inst_78:
+// rs2_val == 1, rs1_val == 4194304
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x1
+TEST_RR_OP(xor, x12, x10, x11, 0x400001, 0x400000, 0x1, x1, 248, x3)
+
+inst_79:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x7fff4afd, -0x80000000, -0xb503, x1, 252, x3)
+
+inst_80:
+// rs1_val == 1073741824,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:-0x10000001
+TEST_RR_OP(xor, x12, x10, x11, 0xafffffff, 0x40000000, -0x10000001, x1, 256, x3)
+
+inst_81:
+// rs1_val == 536870912,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:-0x21
+TEST_RR_OP(xor, x12, x10, x11, 0xdfffffdf, 0x20000000, -0x21, x1, 260, x3)
+
+inst_82:
+// rs1_val == 268435456,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x20000
+TEST_RR_OP(xor, x12, x10, x11, 0x10020000, 0x10000000, 0x20000, x1, 264, x3)
+
+inst_83:
+// rs1_val == 67108864,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x4000000, 0x4000000, 0x0, x1, 268, x3)
+
+inst_84:
+// rs1_val == 33554432,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:-0x801
+TEST_RR_OP(xor, x12, x10, x11, 0xfdfff7ff, 0x2000000, -0x801, x1, 272, x3)
+
+inst_85:
+// rs1_val == 8388608,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x80b503, 0x800000, 0xb503, x1, 276, x3)
+
+inst_86:
+// rs1_val == 1048576,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x100003, 0x100000, 0x3, x1, 280, x3)
+
+inst_87:
+// rs1_val == 65536,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x66676667, 0x10000, 0x66666667, x1, 284, x3)
+
+inst_88:
+// rs1_val == 16384,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:-0x1001
+TEST_RR_OP(xor, x12, x10, x11, 0xffffafff, 0x4000, -0x1001, x1, 288, x3)
+
+inst_89:
+// rs1_val == 4096,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x55554555, 0x1000, 0x55555555, x1, 292, x3)
+
+inst_90:
+// rs1_val == 512,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x8000000
+TEST_RR_OP(xor, x12, x10, x11, 0x8000200, 0x200, 0x8000000, x1, 296, x3)
+
+inst_91:
+// rs1_val == 128,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x86, 0x80, 0x6, x1, 300, x3)
+
+inst_92:
+// rs1_val == 64,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:-0x401
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffbbf, 0x40, -0x401, x1, 304, x3)
+
+inst_93:
+// rs1_val == 16,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:-0x5
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffeb, 0x10, -0x5, x1, 308, x3)
+
+inst_94:
+// rs1_val == 8,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:-0x11
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffe7, 0x8, -0x11, x1, 312, x3)
+
+inst_95:
+// rs1_val==46341 and rs2_val==46341, rs1_val == rs2_val
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0xb505, 0xb505, x1, 316, x3)
+
+inst_96:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff8, 0xb505, -0xb503, x1, 320, x3)
+
+inst_97:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d362, 0xb505, 0x66666667, x1, 324, x3)
+
+inst_98:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33338631, 0xb505, 0x33333334, x1, 328, x3)
+
+inst_99:
+// rs1_val==46341 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0xb503, 0xb505, 0x6, x1, 332, x3)
+
+inst_100:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fae, 0xb505, -0x55555555, x1, 336, x3)
+
+inst_101:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e053, 0xb505, 0x55555556, x1, 340, x3)
+
+inst_102:
+// rs1_val==46341 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0xb501, 0xb505, 0x4, x1, 344, x3)
+
+inst_103:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0xb505, 0xb503, x1, 348, x3)
+
+inst_104:
+// rs1_val==46341 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0xb505, 0xb505, 0x0, x1, 352, x3)
+
+inst_105:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d360, 0xb505, 0x66666665, x1, 356, x3)
+
+inst_106:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33338637, 0xb505, 0x33333332, x1, 360, x3)
+
+inst_107:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e051, 0xb505, 0x55555554, x1, 364, x3)
+
+inst_108:
+// rs1_val==46341 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xb507, 0xb505, 0x2, x1, 368, x3)
+
+inst_109:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0xb505, 0xb504, x1, 372, x3)
+
+inst_110:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff9, 0xb505, -0xb504, x1, 376, x3)
+
+inst_111:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d363, 0xb505, 0x66666666, x1, 380, x3)
+
+inst_112:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33338636, 0xb505, 0x33333333, x1, 384, x3)
+
+inst_113:
+// rs1_val==46341 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0xb500, 0xb505, 0x5, x1, 388, x3)
+
+inst_114:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1faf, 0xb505, -0x55555556, x1, 392, x3)
+
+inst_115:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e050, 0xb505, 0x55555555, x1, 396, x3)
+
+inst_116:
+// rs1_val==46341 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0xb506, 0xb505, 0x3, x1, 400, x3)
+
+inst_117:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff8, -0xb503, 0xb505, x1, 404, x3)
+
+inst_118:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x0, -0xb503, -0xb503, x1, 408, x3)
+
+inst_119:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c9a, -0xb503, 0x66666667, x1, 412, x3)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79c9, -0xb503, 0x33333334, x1, 416, x3)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afb, -0xb503, 0x6, x1, 420, x3)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e056, -0xb503, -0x55555555, x1, 424, x3)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fab, -0xb503, 0x55555556, x1, 428, x3)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4af9, -0xb503, 0x4, x1, 432, x3)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffe, -0xb503, 0xb503, x1, 436, x3)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afd, -0xb503, 0x0, x1, 440, x3)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c98, -0xb503, 0x66666665, x1, 444, x3)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79cf, -0xb503, 0x33333332, x1, 448, x3)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa9, -0xb503, 0x55555554, x1, 452, x3)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4aff, -0xb503, 0x2, x1, 456, x3)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff9, -0xb503, 0xb504, x1, 460, x3)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x1, -0xb503, -0xb504, x1, 464, x3)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c9b, -0xb503, 0x66666666, x1, 468, x3)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79ce, -0xb503, 0x33333333, x1, 472, x3)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4af8, -0xb503, 0x5, x1, 476, x3)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e057, -0xb503, -0x55555556, x1, 480, x3)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa8, -0xb503, 0x55555555, x1, 484, x3)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afe, -0xb503, 0x3, x1, 488, x3)
+
+inst_139:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d362, 0x66666667, 0xb505, x1, 492, x3)
+
+inst_140:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c9a, 0x66666667, -0xb503, x1, 496, x3)
+
+inst_141:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x66666667, 0x66666667, x1, 500, x3)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x55555553, 0x66666667, 0x33333334, x1, 504, x3)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x66666661, 0x66666667, 0x6, x1, 508, x3)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccc, 0x66666667, -0x55555555, x1, 512, x3)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x66666667, 0x55555556, x1, 516, x3)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x66666663, 0x66666667, 0x4, x1, 520, x3)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d364, 0x66666667, 0xb503, x1, 524, x3)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x66666667, 0x66666667, 0x0, x1, 528, x3)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x2, 0x66666667, 0x66666665, x1, 532, x3)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x55555555, 0x66666667, 0x33333332, x1, 536, x3)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x33333333, 0x66666667, 0x55555554, x1, 540, x3)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x66666665, 0x66666667, 0x2, x1, 544, x3)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d363, 0x66666667, 0xb504, x1, 548, x3)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c9b, 0x66666667, -0xb504, x1, 552, x3)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x66666667, 0x66666666, x1, 556, x3)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x55555554, 0x66666667, 0x33333333, x1, 560, x3)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x66666662, 0x66666667, 0x5, x1, 564, x3)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccd, 0x66666667, -0x55555556, x1, 568, x3)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x33333332, 0x66666667, 0x55555555, x1, 572, x3)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x66666664, 0x66666667, 0x3, x1, 576, x3)
+
+inst_161:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x33338631, 0x33333334, 0xb505, x1, 580, x3)
+
+inst_162:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79c9, 0x33333334, -0xb503, x1, 584, x3)
+
+inst_163:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x55555553, 0x33333334, 0x66666667, x1, 588, x3)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x33333334, 0x33333334, x1, 592, x3)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x33333332, 0x33333334, 0x6, x1, 596, x3)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x9999999f, 0x33333334, -0x55555555, x1, 600, x3)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x66666662, 0x33333334, 0x55555556, x1, 604, x3)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x33333334, 0x4, x1, 608, x3)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x33338637, 0x33333334, 0xb503, x1, 612, x3)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x33333334, 0x33333334, 0x0, x1, 616, x3)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x55555551, 0x33333334, 0x66666665, x1, 620, x3)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0x33333334, 0x33333332, x1, 624, x3)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x66666660, 0x33333334, 0x55555554, x1, 628, x3)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x33333336, 0x33333334, 0x2, x1, 632, x3)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x33338630, 0x33333334, 0xb504, x1, 636, x3)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79c8, 0x33333334, -0xb504, x1, 640, x3)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x55555552, 0x33333334, 0x66666666, x1, 644, x3)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x7, 0x33333334, 0x33333333, x1, 648, x3)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x33333334, 0x5, x1, 652, x3)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x9999999e, 0x33333334, -0x55555556, x1, 656, x3)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x66666661, 0x33333334, 0x55555555, x1, 660, x3)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x33333337, 0x33333334, 0x3, x1, 664, x3)
+
+inst_183:
+// rs1_val==6 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xb503, 0x6, 0xb505, x1, 668, x3)
+
+inst_184:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afb, 0x6, -0xb503, x1, 672, x3)
+
+inst_185:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x66666661, 0x6, 0x66666667, x1, 676, x3)
+
+inst_186:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33333332, 0x6, 0x33333334, x1, 680, x3)
+
+inst_187:
+// rs1_val==6 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x6, 0x6, x1, 684, x3)
+
+inst_188:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaad, 0x6, -0x55555555, x1, 688, x3)
+
+inst_189:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x55555550, 0x6, 0x55555556, x1, 692, x3)
+
+inst_190:
+// rs1_val==6 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x2, 0x6, 0x4, x1, 696, x3)
+
+inst_191:
+// rs1_val==6 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xb505, 0x6, 0xb503, x1, 700, x3)
+
+inst_192:
+// rs1_val==6 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0x6, 0x0, x1, 704, x3)
+
+inst_193:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x66666663, 0x6, 0x66666665, x1, 708, x3)
+
+inst_194:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33333334, 0x6, 0x33333332, x1, 712, x3)
+
+inst_195:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x55555552, 0x6, 0x55555554, x1, 716, x3)
+
+inst_196:
+// rs1_val==6 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x4, 0x6, 0x2, x1, 720, x3)
+
+inst_197:
+// rs1_val==6 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xb502, 0x6, 0xb504, x1, 724, x3)
+
+inst_198:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afa, 0x6, -0xb504, x1, 728, x3)
+
+inst_199:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x66666660, 0x6, 0x66666666, x1, 732, x3)
+
+inst_200:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33333335, 0x6, 0x33333333, x1, 736, x3)
+
+inst_201:
+// rs1_val==6 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x3, 0x6, 0x5, x1, 740, x3)
+
+inst_202:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaac, 0x6, -0x55555556, x1, 744, x3)
+
+inst_203:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x55555553, 0x6, 0x55555555, x1, 748, x3)
+
+inst_204:
+// rs1_val==6 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x5, 0x6, 0x3, x1, 752, x3)
+
+inst_205:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fae, -0x55555555, 0xb505, x1, 756, x3)
+
+inst_206:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e056, -0x55555555, -0xb503, x1, 760, x3)
+
+inst_207:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccc, -0x55555555, 0x66666667, x1, 764, x3)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x9999999f, -0x55555555, 0x33333334, x1, 768, x3)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaad, -0x55555555, 0x6, x1, 772, x3)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x0, -0x55555555, -0x55555555, x1, 776, x3)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffd, -0x55555555, 0x55555556, x1, 780, x3)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaaf, -0x55555555, 0x4, x1, 784, x3)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa8, -0x55555555, 0xb503, x1, 788, x3)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaab, -0x55555555, 0x0, x1, 792, x3)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0xccccccce, -0x55555555, 0x66666665, x1, 796, x3)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x99999999, -0x55555555, 0x33333332, x1, 800, x3)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffff, -0x55555555, 0x55555554, x1, 804, x3)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa9, -0x55555555, 0x2, x1, 808, x3)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1faf, -0x55555555, 0xb504, x1, 812, x3)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e057, -0x55555555, -0xb504, x1, 816, x3)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccd, -0x55555555, 0x66666666, x1, 820, x3)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x99999998, -0x55555555, 0x33333333, x1, 824, x3)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaae, -0x55555555, 0x5, x1, 828, x3)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x1, -0x55555555, -0x55555556, x1, 832, x3)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffe, -0x55555555, 0x55555555, x1, 836, x3)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa8, -0x55555555, 0x3, x1, 840, x3)
+
+inst_227:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e053, 0x55555556, 0xb505, x1, 844, x3)
+
+inst_228:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fab, 0x55555556, -0xb503, x1, 848, x3)
+
+inst_229:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x55555556, 0x66666667, x1, 852, x3)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x66666662, 0x55555556, 0x33333334, x1, 856, x3)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x55555550, 0x55555556, 0x6, x1, 860, x3)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffd, 0x55555556, -0x55555555, x1, 864, x3)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x55555556, 0x55555556, x1, 868, x3)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x55555552, 0x55555556, 0x4, x1, 872, x3)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e055, 0x55555556, 0xb503, x1, 876, x3)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 880, x3)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x33333333, 0x55555556, 0x66666665, x1, 884, x3)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x66666664, 0x55555556, 0x33333332, x1, 888, x3)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x2, 0x55555556, 0x55555554, x1, 892, x3)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x55555554, 0x55555556, 0x2, x1, 896, x3)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e052, 0x55555556, 0xb504, x1, 900, x3)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1faa, 0x55555556, -0xb504, x1, 904, x3)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x55555556, 0x66666666, x1, 908, x3)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x66666665, 0x55555556, 0x33333333, x1, 912, x3)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x55555553, 0x55555556, 0x5, x1, 916, x3)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffc, 0x55555556, -0x55555556, x1, 920, x3)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x3, 0x55555556, 0x55555555, x1, 924, x3)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x55555555, 0x55555556, 0x3, x1, 928, x3)
+
+inst_249:
+// rs1_val==4 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xb501, 0x4, 0xb505, x1, 932, x3)
+
+inst_250:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4af9, 0x4, -0xb503, x1, 936, x3)
+
+inst_251:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x66666663, 0x4, 0x66666667, x1, 940, x3)
+
+inst_252:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x4, 0x33333334, x1, 944, x3)
+
+inst_253:
+// rs1_val==4 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x2, 0x4, 0x6, x1, 948, x3)
+
+inst_254:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaaf, 0x4, -0x55555555, x1, 952, x3)
+
+inst_255:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x55555552, 0x4, 0x55555556, x1, 956, x3)
+
+inst_256:
+// rs1_val==4 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x4, 0x4, x1, 960, x3)
+
+inst_257:
+// rs1_val==4 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xb507, 0x4, 0xb503, x1, 964, x3)
+
+inst_258:
+// rs1_val==4 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x4, 0x4, 0x0, x1, 968, x3)
+
+inst_259:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x66666661, 0x4, 0x66666665, x1, 972, x3)
+
+inst_260:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33333336, 0x4, 0x33333332, x1, 976, x3)
+
+inst_261:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x55555550, 0x4, 0x55555554, x1, 980, x3)
+
+inst_262:
+// rs1_val==4 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0x4, 0x2, x1, 984, x3)
+
+inst_263:
+// rs1_val==4 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xb500, 0x4, 0xb504, x1, 988, x3)
+
+inst_264:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4af8, 0x4, -0xb504, x1, 992, x3)
+
+inst_265:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x66666662, 0x4, 0x66666666, x1, 996, x3)
+
+inst_266:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33333337, 0x4, 0x33333333, x1, 1000, x3)
+
+inst_267:
+// rs1_val==4 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x4, 0x5, x1, 1004, x3)
+
+inst_268:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaae, 0x4, -0x55555556, x1, 1008, x3)
+
+inst_269:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x55555551, 0x4, 0x55555555, x1, 1012, x3)
+
+inst_270:
+// rs1_val==4 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x7, 0x4, 0x3, x1, 1016, x3)
+
+inst_271:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0xb503, 0xb505, x1, 1020, x3)
+
+inst_272:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffe, 0xb503, -0xb503, x1, 1024, x3)
+
+inst_273:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d364, 0xb503, 0x66666667, x1, 1028, x3)
+
+inst_274:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33338637, 0xb503, 0x33333334, x1, 1032, x3)
+
+inst_275:
+// rs1_val==46339 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0xb505, 0xb503, 0x6, x1, 1036, x3)
+
+inst_276:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa8, 0xb503, -0x55555555, x1, 1040, x3)
+
+inst_277:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e055, 0xb503, 0x55555556, x1, 1044, x3)
+
+inst_278:
+// rs1_val==46339 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0xb507, 0xb503, 0x4, x1, 1048, x3)
+
+inst_279:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0xb503, 0xb503, x1, 1052, x3)
+
+inst_280:
+// rs1_val==46339 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0xb503, 0xb503, 0x0, x1, 1056, x3)
+
+inst_281:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d366, 0xb503, 0x66666665, x1, 1060, x3)
+
+inst_282:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33338631, 0xb503, 0x33333332, x1, 1064, x3)
+
+inst_283:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e057, 0xb503, 0x55555554, x1, 1068, x3)
+
+inst_284:
+// rs1_val==46339 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xb501, 0xb503, 0x2, x1, 1072, x3)
+
+inst_285:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x7, 0xb503, 0xb504, x1, 1076, x3)
+
+inst_286:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffff, 0xb503, -0xb504, x1, 1080, x3)
+
+inst_287:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d365, 0xb503, 0x66666666, x1, 1084, x3)
+
+inst_288:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33338630, 0xb503, 0x33333333, x1, 1088, x3)
+
+inst_289:
+// rs1_val==46339 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0xb506, 0xb503, 0x5, x1, 1092, x3)
+
+inst_290:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa9, 0xb503, -0x55555556, x1, 1096, x3)
+
+inst_291:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e056, 0xb503, 0x55555555, x1, 1100, x3)
+
+inst_292:
+// rs1_val==46339 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0xb500, 0xb503, 0x3, x1, 1104, x3)
+
+inst_293:
+// rs1_val==0 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xb505, 0x0, 0xb505, x1, 1108, x3)
+
+inst_294:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afd, 0x0, -0xb503, x1, 1112, x3)
+
+inst_295:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x66666667, 0x0, 0x66666667, x1, 1116, x3)
+
+inst_296:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33333334, 0x0, 0x33333334, x1, 1120, x3)
+
+inst_297:
+// rs1_val==0 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0x0, 0x6, x1, 1124, x3)
+
+inst_298:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaab, 0x0, -0x55555555, x1, 1128, x3)
+
+inst_299:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x55555556, 0x0, 0x55555556, x1, 1132, x3)
+
+inst_300:
+// rs1_val==0 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x4, 0x0, 0x4, x1, 1136, x3)
+
+inst_301:
+// rs1_val==0 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xb503, 0x0, 0xb503, x1, 1140, x3)
+
+inst_302:
+// rs1_val==0 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1144, x3)
+
+inst_303:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x66666665, 0x0, 0x66666665, x1, 1148, x3)
+
+inst_304:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33333332, 0x0, 0x33333332, x1, 1152, x3)
+
+inst_305:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x55555554, 0x0, 0x55555554, x1, 1156, x3)
+
+inst_306:
+// rs1_val==0 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x2, 0x0, 0x2, x1, 1160, x3)
+
+inst_307:
+// rs1_val==0 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xb504, 0x0, 0xb504, x1, 1164, x3)
+
+inst_308:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afc, 0x0, -0xb504, x1, 1168, x3)
+
+inst_309:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x66666666, 0x0, 0x66666666, x1, 1172, x3)
+
+inst_310:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33333333, 0x0, 0x33333333, x1, 1176, x3)
+
+inst_311:
+// rs1_val==0 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x5, 0x0, 0x5, x1, 1180, x3)
+
+inst_312:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaaa, 0x0, -0x55555556, x1, 1184, x3)
+
+inst_313:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x55555555, 0x0, 0x55555555, x1, 1188, x3)
+
+inst_314:
+// rs1_val==0 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x3, 0x0, 0x3, x1, 1192, x3)
+
+inst_315:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d360, 0x66666665, 0xb505, x1, 1196, x3)
+
+inst_316:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c98, 0x66666665, -0xb503, x1, 1200, x3)
+
+inst_317:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x2, 0x66666665, 0x66666667, x1, 1204, x3)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x55555551, 0x66666665, 0x33333334, x1, 1208, x3)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x66666663, 0x66666665, 0x6, x1, 1212, x3)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xccccccce, 0x66666665, -0x55555555, x1, 1216, x3)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x33333333, 0x66666665, 0x55555556, x1, 1220, x3)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x66666661, 0x66666665, 0x4, x1, 1224, x3)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d366, 0x66666665, 0xb503, x1, 1228, x3)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x66666665, 0x66666665, 0x0, x1, 1232, x3)
+
+inst_325:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x33333333, 0x33333333, 0x0, x1, 1236, x3)
+
+inst_326:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x55555556, 0x33333333, 0x66666665, x1, 1240, x3)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x33333333, 0x33333332, x1, 1244, x3)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x66666667, 0x33333333, 0x55555554, x1, 1248, x3)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x33333333, 0x2, x1, 1252, x3)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x33338637, 0x33333333, 0xb504, x1, 1256, x3)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79cf, 0x33333333, -0xb504, x1, 1260, x3)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x55555555, 0x33333333, 0x66666666, x1, 1264, x3)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x33333333, 0x33333333, x1, 1268, x3)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x33333336, 0x33333333, 0x5, x1, 1272, x3)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x99999999, 0x33333333, -0x55555556, x1, 1276, x3)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x66666666, 0x33333333, 0x55555555, x1, 1280, x3)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x33333333, 0x3, x1, 1284, x3)
+
+inst_338:
+// rs1_val==5 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xb500, 0x5, 0xb505, x1, 1288, x3)
+
+inst_339:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4af8, 0x5, -0xb503, x1, 1292, x3)
+
+inst_340:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x66666662, 0x5, 0x66666667, x1, 1296, x3)
+
+inst_341:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x5, 0x33333334, x1, 1300, x3)
+
+inst_342:
+// rs1_val==5 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x3, 0x5, 0x6, x1, 1304, x3)
+
+inst_343:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaae, 0x5, -0x55555555, x1, 1308, x3)
+
+inst_344:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x55555553, 0x5, 0x55555556, x1, 1312, x3)
+
+inst_345:
+// rs1_val==5 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x5, 0x4, x1, 1316, x3)
+
+inst_346:
+// rs1_val==5 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xb506, 0x5, 0xb503, x1, 1320, x3)
+
+inst_347:
+// rs1_val==5 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x5, 0x5, 0x0, x1, 1324, x3)
+
+inst_348:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x66666660, 0x5, 0x66666665, x1, 1328, x3)
+
+inst_349:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33333337, 0x5, 0x33333332, x1, 1332, x3)
+
+inst_350:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x55555551, 0x5, 0x55555554, x1, 1336, x3)
+
+inst_351:
+// rs1_val==5 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x7, 0x5, 0x2, x1, 1340, x3)
+
+inst_352:
+// rs1_val==5 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xb501, 0x5, 0xb504, x1, 1344, x3)
+
+inst_353:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4af9, 0x5, -0xb504, x1, 1348, x3)
+
+inst_354:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x66666663, 0x5, 0x66666666, x1, 1352, x3)
+
+inst_355:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33333336, 0x5, 0x33333333, x1, 1356, x3)
+
+inst_356:
+// rs1_val==5 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x5, 0x5, x1, 1360, x3)
+
+inst_357:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaaf, 0x5, -0x55555556, x1, 1364, x3)
+
+inst_358:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x55555550, 0x5, 0x55555555, x1, 1368, x3)
+
+inst_359:
+// rs1_val==5 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0x5, 0x3, x1, 1372, x3)
+
+inst_360:
+// rs1_val==-1431655766 and rs2_val==46341, rs1_val == -1431655766
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1faf, -0x55555556, 0xb505, x1, 1376, x3)
+
+inst_361:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e057, -0x55555556, -0xb503, x1, 1380, x3)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccd, -0x55555556, 0x66666667, x1, 1384, x3)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x9999999e, -0x55555556, 0x33333334, x1, 1388, x3)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaac, -0x55555556, 0x6, x1, 1392, x3)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x1, -0x55555556, -0x55555555, x1, 1396, x3)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffc, -0x55555556, 0x55555556, x1, 1400, x3)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaae, -0x55555556, 0x4, x1, 1404, x3)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa9, -0x55555556, 0xb503, x1, 1408, x3)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaaa, -0x55555556, 0x0, x1, 1412, x3)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccf, -0x55555556, 0x66666665, x1, 1416, x3)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x99999998, -0x55555556, 0x33333332, x1, 1420, x3)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffe, -0x55555556, 0x55555554, x1, 1424, x3)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa8, -0x55555556, 0x2, x1, 1428, x3)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fae, -0x55555556, 0xb504, x1, 1432, x3)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e056, -0x55555556, -0xb504, x1, 1436, x3)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccc, -0x55555556, 0x66666666, x1, 1440, x3)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x99999999, -0x55555556, 0x33333333, x1, 1444, x3)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaaf, -0x55555556, 0x5, x1, 1448, x3)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x0, -0x55555556, -0x55555556, x1, 1452, x3)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffff, -0x55555556, 0x55555555, x1, 1456, x3)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa9, -0x55555556, 0x3, x1, 1460, x3)
+
+inst_382:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e050, 0x55555555, 0xb505, x1, 1464, x3)
+
+inst_383:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa8, 0x55555555, -0xb503, x1, 1468, x3)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x33333332, 0x55555555, 0x66666667, x1, 1472, x3)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x66666661, 0x55555555, 0x33333334, x1, 1476, x3)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x55555553, 0x55555555, 0x6, x1, 1480, x3)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffe, 0x55555555, -0x55555555, x1, 1484, x3)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x3, 0x55555555, 0x55555556, x1, 1488, x3)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x55555551, 0x55555555, 0x4, x1, 1492, x3)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e056, 0x55555555, 0xb503, x1, 1496, x3)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x55555555, 0x55555555, 0x0, x1, 1500, x3)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x55555555, 0x66666665, x1, 1504, x3)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x66666667, 0x55555555, 0x33333332, x1, 1508, x3)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x55555555, 0x55555554, x1, 1512, x3)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x55555557, 0x55555555, 0x2, x1, 1516, x3)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e051, 0x55555555, 0xb504, x1, 1520, x3)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa9, 0x55555555, -0xb504, x1, 1524, x3)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x33333333, 0x55555555, 0x66666666, x1, 1528, x3)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x66666666, 0x55555555, 0x33333333, x1, 1532, x3)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x55555550, 0x55555555, 0x5, x1, 1536, x3)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffff, 0x55555555, -0x55555556, x1, 1540, x3)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x55555555, 0x55555555, x1, 1544, x3)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x55555556, 0x55555555, 0x3, x1, 1548, x3)
+
+inst_404:
+// rs1_val==3 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xb506, 0x3, 0xb505, x1, 1552, x3)
+
+inst_405:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afe, 0x3, -0xb503, x1, 1556, x3)
+
+inst_406:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x66666664, 0x3, 0x66666667, x1, 1560, x3)
+
+inst_407:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33333337, 0x3, 0x33333334, x1, 1564, x3)
+
+inst_408:
+// rs1_val==3 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x5, 0x3, 0x6, x1, 1568, x3)
+
+inst_409:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa8, 0x3, -0x55555555, x1, 1572, x3)
+
+inst_410:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x55555555, 0x3, 0x55555556, x1, 1576, x3)
+
+inst_411:
+// rs1_val==3 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x7, 0x3, 0x4, x1, 1580, x3)
+
+inst_412:
+// rs1_val==3 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xb500, 0x3, 0xb503, x1, 1584, x3)
+
+inst_413:
+// rs1_val==3 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x3, 0x3, 0x0, x1, 1588, x3)
+
+inst_414:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x66666666, 0x3, 0x66666665, x1, 1592, x3)
+
+inst_415:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x3, 0x33333332, x1, 1596, x3)
+
+inst_416:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x55555557, 0x3, 0x55555554, x1, 1600, x3)
+
+inst_417:
+// rs1_val==3 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x3, 0x2, x1, 1604, x3)
+
+inst_418:
+// rs1_val==3 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xb507, 0x3, 0xb504, x1, 1608, x3)
+
+inst_419:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4aff, 0x3, -0xb504, x1, 1612, x3)
+
+inst_420:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x66666665, 0x3, 0x66666666, x1, 1616, x3)
+
+inst_421:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x3, 0x33333333, x1, 1620, x3)
+
+inst_422:
+// rs1_val==3 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0x3, 0x5, x1, 1624, x3)
+
+inst_423:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa9, 0x3, -0x55555556, x1, 1628, x3)
+
+inst_424:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x55555556, 0x3, 0x55555555, x1, 1632, x3)
+
+inst_425:
+// rs1_val==3 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x3, 0x3, x1, 1636, x3)
+
+inst_426:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x66666665, 0x66666665, x1, 1640, x3)
+
+inst_427:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x55555557, 0x66666665, 0x33333332, x1, 1644, x3)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x66666665, 0x55555554, x1, 1648, x3)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x66666667, 0x66666665, 0x2, x1, 1652, x3)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d361, 0x66666665, 0xb504, x1, 1656, x3)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c99, 0x66666665, -0xb504, x1, 1660, x3)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x3, 0x66666665, 0x66666666, x1, 1664, x3)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x55555556, 0x66666665, 0x33333333, x1, 1668, x3)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x66666660, 0x66666665, 0x5, x1, 1672, x3)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccf, 0x66666665, -0x55555556, x1, 1676, x3)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x66666665, 0x55555555, x1, 1680, x3)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x66666666, 0x66666665, 0x3, x1, 1684, x3)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x33338637, 0x33333332, 0xb505, x1, 1688, x3)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79cf, 0x33333332, -0xb503, x1, 1692, x3)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x55555555, 0x33333332, 0x66666667, x1, 1696, x3)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0x33333332, 0x33333334, x1, 1700, x3)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x33333334, 0x33333332, 0x6, x1, 1704, x3)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x99999999, 0x33333332, -0x55555555, x1, 1708, x3)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x66666664, 0x33333332, 0x55555556, x1, 1712, x3)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x33333336, 0x33333332, 0x4, x1, 1716, x3)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x33338631, 0x33333332, 0xb503, x1, 1720, x3)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x33333332, 0x33333332, 0x0, x1, 1724, x3)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x55555557, 0x33333332, 0x66666665, x1, 1728, x3)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x33333332, 0x33333332, x1, 1732, x3)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x66666666, 0x33333332, 0x55555554, x1, 1736, x3)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x33333332, 0x2, x1, 1740, x3)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x33338636, 0x33333332, 0xb504, x1, 1744, x3)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79ce, 0x33333332, -0xb504, x1, 1748, x3)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x55555554, 0x33333332, 0x66666666, x1, 1752, x3)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x33333332, 0x33333333, x1, 1756, x3)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x33333337, 0x33333332, 0x5, x1, 1760, x3)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x99999998, 0x33333332, -0x55555556, x1, 1764, x3)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x66666667, 0x33333332, 0x55555555, x1, 1768, x3)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x33333332, 0x3, x1, 1772, x3)
+
+inst_460:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e051, 0x55555554, 0xb505, x1, 1776, x3)
+
+inst_461:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa9, 0x55555554, -0xb503, x1, 1780, x3)
+
+inst_462:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x33333333, 0x55555554, 0x66666667, x1, 1784, x3)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x66666660, 0x55555554, 0x33333334, x1, 1788, x3)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x55555552, 0x55555554, 0x6, x1, 1792, x3)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffff, 0x55555554, -0x55555555, x1, 1796, x3)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x2, 0x55555554, 0x55555556, x1, 1800, x3)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x55555550, 0x55555554, 0x4, x1, 1804, x3)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e057, 0x55555554, 0xb503, x1, 1808, x3)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 1812, x3)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x55555554, 0x66666665, x1, 1816, x3)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x66666666, 0x55555554, 0x33333332, x1, 1820, x3)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x55555554, 0x55555554, x1, 1824, x3)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x55555556, 0x55555554, 0x2, x1, 1828, x3)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e050, 0x55555554, 0xb504, x1, 1832, x3)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa8, 0x55555554, -0xb504, x1, 1836, x3)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x33333332, 0x55555554, 0x66666666, x1, 1840, x3)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x66666667, 0x55555554, 0x33333333, x1, 1844, x3)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x55555551, 0x55555554, 0x5, x1, 1848, x3)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffffe, 0x55555554, -0x55555556, x1, 1852, x3)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x55555554, 0x55555555, x1, 1856, x3)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x55555557, 0x55555554, 0x3, x1, 1860, x3)
+
+inst_482:
+// rs1_val==2 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xb507, 0x2, 0xb505, x1, 1864, x3)
+
+inst_483:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4aff, 0x2, -0xb503, x1, 1868, x3)
+
+inst_484:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x66666665, 0x2, 0x66666667, x1, 1872, x3)
+
+inst_485:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33333336, 0x2, 0x33333334, x1, 1876, x3)
+
+inst_486:
+// rs1_val==2 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x4, 0x2, 0x6, x1, 1880, x3)
+
+inst_487:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa9, 0x2, -0x55555555, x1, 1884, x3)
+
+inst_488:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x55555554, 0x2, 0x55555556, x1, 1888, x3)
+
+inst_489:
+// rs1_val==2 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x6, 0x2, 0x4, x1, 1892, x3)
+
+inst_490:
+// rs1_val==2 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xb501, 0x2, 0xb503, x1, 1896, x3)
+
+inst_491:
+// rs1_val==2 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x2, 0x2, 0x0, x1, 1900, x3)
+
+inst_492:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x66666667, 0x2, 0x66666665, x1, 1904, x3)
+
+inst_493:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x2, 0x33333332, x1, 1908, x3)
+
+inst_494:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x55555556, 0x2, 0x55555554, x1, 1912, x3)
+
+inst_495:
+// rs1_val==2 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x2, 0x2, x1, 1916, x3)
+
+inst_496:
+// rs1_val==2 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xb506, 0x2, 0xb504, x1, 1920, x3)
+
+inst_497:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afe, 0x2, -0xb504, x1, 1924, x3)
+
+inst_498:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x66666664, 0x2, 0x66666666, x1, 1928, x3)
+
+inst_499:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33333331, 0x2, 0x33333333, x1, 1932, x3)
+
+inst_500:
+// rs1_val==2 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x7, 0x2, 0x5, x1, 1936, x3)
+
+inst_501:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaaaaa8, 0x2, -0x55555556, x1, 1940, x3)
+
+inst_502:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x55555557, 0x2, 0x55555555, x1, 1944, x3)
+
+inst_503:
+// rs1_val==2 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x2, 0x3, x1, 1948, x3)
+
+inst_504:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0xb504, 0xb505, x1, 1952, x3)
+
+inst_505:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff9, 0xb504, -0xb503, x1, 1956, x3)
+
+inst_506:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d363, 0xb504, 0x66666667, x1, 1960, x3)
+
+inst_507:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x33338630, 0xb504, 0x33333334, x1, 1964, x3)
+
+inst_508:
+// rs1_val==46340 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0xb502, 0xb504, 0x6, x1, 1968, x3)
+
+inst_509:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1faf, 0xb504, -0x55555555, x1, 1972, x3)
+
+inst_510:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e052, 0xb504, 0x55555556, x1, 1976, x3)
+
+inst_511:
+// rs1_val==46340 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0xb500, 0xb504, 0x4, x1, 1980, x3)
+
+inst_512:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x7, 0xb504, 0xb503, x1, 1984, x3)
+
+inst_513:
+// rs1_val==46340 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0xb504, 0xb504, 0x0, x1, 1988, x3)
+
+inst_514:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d361, 0xb504, 0x66666665, x1, 1992, x3)
+
+inst_515:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x33338636, 0xb504, 0x33333332, x1, 1996, x3)
+
+inst_516:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e050, 0xb504, 0x55555554, x1, 2000, x3)
+
+inst_517:
+// rs1_val==46340 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xb506, 0xb504, 0x2, x1, 2004, x3)
+
+inst_518:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0xb504, 0xb504, x1, 2008, x3)
+
+inst_519:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff8, 0xb504, -0xb504, x1, 2012, x3)
+
+inst_520:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d362, 0xb504, 0x66666666, x1, 2016, x3)
+
+inst_521:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x33338637, 0xb504, 0x33333333, x1, 2020, x3)
+
+inst_522:
+// rs1_val==46340 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0xb501, 0xb504, 0x5, x1, 2024, x3)
+
+inst_523:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fae, 0xb504, -0x55555556, x1, 2028, x3)
+
+inst_524:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e051, 0xb504, 0x55555555, x1, 2032, x3)
+
+inst_525:
+// rs1_val==46340 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0xb507, 0xb504, 0x3, x1, 2036, x3)
+
+inst_526:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff9, -0xb504, 0xb505, x1, 2040, x3)
+
+inst_527:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x1, -0xb504, -0xb503, x1, 2044, x3)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c9b, -0xb504, 0x66666667, x1, 0, x3)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79c8, -0xb504, 0x33333334, x1, 4, x3)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afa, -0xb504, 0x6, x1, 8, x3)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e057, -0xb504, -0x55555555, x1, 12, x3)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1faa, -0xb504, 0x55555556, x1, 16, x3)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4af8, -0xb504, 0x4, x1, 20, x3)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xffffffff, -0xb504, 0xb503, x1, 24, x3)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afc, -0xb504, 0x0, x1, 28, x3)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c99, -0xb504, 0x66666665, x1, 32, x3)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79ce, -0xb504, 0x33333332, x1, 36, x3)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa8, -0xb504, 0x55555554, x1, 40, x3)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4afe, -0xb504, 0x2, x1, 44, x3)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0xfffffff8, -0xb504, 0xb504, x1, 48, x3)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x0, -0xb504, -0xb504, x1, 52, x3)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c9a, -0xb504, 0x66666666, x1, 56, x3)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79cf, -0xb504, 0x33333333, x1, 60, x3)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4af9, -0xb504, 0x5, x1, 64, x3)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x5555e056, -0xb504, -0x55555556, x1, 68, x3)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xaaaa1fa9, -0xb504, 0x55555555, x1, 72, x3)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0xffff4aff, -0xb504, 0x3, x1, 76, x3)
+
+inst_548:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d363, 0x66666666, 0xb505, x1, 80, x3)
+
+inst_549:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c9b, 0x66666666, -0xb503, x1, 84, x3)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x1, 0x66666666, 0x66666667, x1, 88, x3)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x55555552, 0x66666666, 0x33333334, x1, 92, x3)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x66666660, 0x66666666, 0x6, x1, 96, x3)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccd, 0x66666666, -0x55555555, x1, 100, x3)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x33333330, 0x66666666, 0x55555556, x1, 104, x3)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x66666662, 0x66666666, 0x4, x1, 108, x3)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d365, 0x66666666, 0xb503, x1, 112, x3)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(xor, x12, x10, x11, 0x66666666, 0x66666666, 0x0, x1, 116, x3)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(xor, x12, x10, x11, 0x3, 0x66666666, 0x66666665, x1, 120, x3)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(xor, x12, x10, x11, 0x55555554, 0x66666666, 0x33333332, x1, 124, x3)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(xor, x12, x10, x11, 0x33333332, 0x66666666, 0x55555554, x1, 128, x3)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(xor, x12, x10, x11, 0x66666664, 0x66666666, 0x2, x1, 132, x3)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x6666d362, 0x66666666, 0xb504, x1, 136, x3)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(xor, x12, x10, x11, 0x99992c9a, 0x66666666, -0xb504, x1, 140, x3)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(xor, x12, x10, x11, 0x0, 0x66666666, 0x66666666, x1, 144, x3)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(xor, x12, x10, x11, 0x55555555, 0x66666666, 0x33333333, x1, 148, x3)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(xor, x12, x10, x11, 0x66666663, 0x66666666, 0x5, x1, 152, x3)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0xcccccccc, 0x66666666, -0x55555556, x1, 156, x3)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x33333333, 0x66666666, 0x55555555, x1, 160, x3)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(xor, x12, x10, x11, 0x66666665, 0x66666666, 0x3, x1, 164, x3)
+
+inst_570:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(xor, x12, x10, x11, 0x33338636, 0x33333333, 0xb505, x1, 168, x3)
+
+inst_571:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0xcccc79ce, 0x33333333, -0xb503, x1, 172, x3)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(xor, x12, x10, x11, 0x55555554, 0x33333333, 0x66666667, x1, 176, x3)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(xor, x12, x10, x11, 0x7, 0x33333333, 0x33333334, x1, 180, x3)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(xor, x12, x10, x11, 0x33333335, 0x33333333, 0x6, x1, 184, x3)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(xor, x12, x10, x11, 0x99999998, 0x33333333, -0x55555555, x1, 188, x3)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(xor, x12, x10, x11, 0x66666665, 0x33333333, 0x55555556, x1, 192, x3)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(xor, x12, x10, x11, 0x33333337, 0x33333333, 0x4, x1, 196, x3)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(xor, x12, x10, x11, 0x33338630, 0x33333333, 0xb503, x1, 200, x3)
+
+inst_579:
+// rs2_val == -1073741825, rs1_val == 1024
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:-0x40000001
+TEST_RR_OP(xor, x12, x10, x11, 0xbffffbff, 0x400, -0x40000001, x1, 204, x3)
+
+inst_580:
+// rs2_val == -536870913, rs1_val == 8192
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:-0x20000001
+TEST_RR_OP(xor, x12, x10, x11, 0xdfffdfff, 0x2000, -0x20000001, x1, 208, x3)
+
+inst_581:
+// rs2_val == -268435457, rs1_val == 1
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:-0x10000001
+TEST_RR_OP(xor, x12, x10, x11, 0xeffffffe, 0x1, -0x10000001, x1, 212, x3)
+
+inst_582:
+// rs2_val == -262145, rs1_val == -65537
+// opcode: xor ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x40001
+TEST_RR_OP(xor, x12, x10, x11, 0x50000, -0x10001, -0x40001, x1, 216, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x7_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x7_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 55*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/xori-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/xori-01.S
new file mode 100644
index 000000000..00d85cb19
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/E/src/xori-01.S
@@ -0,0 +1,2880 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Mon Aug 2 08:58:53 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/riscv-ctg/sample_cgfs/rv32e.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the xori instruction of the RISC-V E extension for the xori covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32E")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",xori)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 != rd, rs1==x12, rd==x13, imm_val == (-2**(12-1)), rs1_val != imm_val, rs1_val < 0 and imm_val < 0, imm_val == -2048, rs1_val == -131073
+// opcode: xori ; op1:x12; dest:x13; op1val:-0x20001; immval:-0x800
+TEST_IMM_OP( xori, x13, x12, 0x207ff, -0x20001, -0x800, x1, 0, x2)
+
+inst_1:
+// rs1 == rd, rs1==x10, rd==x10, rs1_val == 2147483647, rs1_val > 0 and imm_val < 0, rs1_val == (2**(xlen-1)-1), imm_val == -1366
+// opcode: xori ; op1:x10; dest:x10; op1val:0x7fffffff; immval:-0x556
+TEST_IMM_OP( xori, x10, x10, 0x80000555, 0x7fffffff, -0x556, x1, 4, x2)
+
+inst_2:
+// rs1==x8, rd==x4, rs1_val == -1073741825, imm_val == -257
+// opcode: xori ; op1:x8; dest:x4; op1val:-0x40000001; immval:-0x101
+TEST_IMM_OP( xori, x4, x8, 0x40000100, -0x40000001, -0x101, x1, 8, x2)
+
+inst_3:
+// rs1==x6, rd==x7, rs1_val == -536870913, rs1_val < 0 and imm_val > 0, imm_val == 2
+// opcode: xori ; op1:x6; dest:x7; op1val:-0x20000001; immval:0x2
+TEST_IMM_OP( xori, x7, x6, 0xdffffffd, -0x20000001, 0x2, x1, 12, x2)
+
+inst_4:
+// rs1==x9, rd==x14, rs1_val == -268435457,
+// opcode: xori ; op1:x9; dest:x14; op1val:-0x10000001; immval:0x6
+TEST_IMM_OP( xori, x14, x9, 0xeffffff9, -0x10000001, 0x6, x1, 16, x2)
+
+inst_5:
+// rs1==x7, rd==x3, rs1_val == -134217729,
+// opcode: xori ; op1:x7; dest:x3; op1val:-0x8000001; immval:-0x2c
+TEST_IMM_OP( xori, x3, x7, 0x800002b, -0x8000001, -0x2c, x1, 20, x2)
+
+inst_6:
+// rs1==x11, rd==x15, rs1_val == -67108865, imm_val == 16
+// opcode: xori ; op1:x11; dest:x15; op1val:-0x4000001; immval:0x10
+TEST_IMM_OP( xori, x15, x11, 0xfbffffef, -0x4000001, 0x10, x1, 24, x2)
+RVTEST_SIGBASE( x6,signature_x6_0)
+
+inst_7:
+// rs1==x13, rd==x1, rs1_val == -33554433,
+// opcode: xori ; op1:x13; dest:x1; op1val:-0x2000001; immval:0x333
+TEST_IMM_OP( xori, x1, x13, 0xfdfffccc, -0x2000001, 0x333, x6, 0, x7)
+
+inst_8:
+// rs1==x15, rd==x11, rs1_val == -16777217,
+// opcode: xori ; op1:x15; dest:x11; op1val:-0x1000001; immval:0x5
+TEST_IMM_OP( xori, x11, x15, 0xfefffffa, -0x1000001, 0x5, x6, 4, x7)
+
+inst_9:
+// rs1==x4, rd==x8, rs1_val == -8388609, imm_val == -65
+// opcode: xori ; op1:x4; dest:x8; op1val:-0x800001; immval:-0x41
+TEST_IMM_OP( xori, x8, x4, 0x800040, -0x800001, -0x41, x6, 8, x7)
+
+inst_10:
+// rs1==x14, rd==x9, rs1_val == -4194305,
+// opcode: xori ; op1:x14; dest:x9; op1val:-0x400001; immval:0x7
+TEST_IMM_OP( xori, x9, x14, 0xffbffff8, -0x400001, 0x7, x6, 12, x7)
+
+inst_11:
+// rs1==x1, rd==x2, rs1_val == -2097153,
+// opcode: xori ; op1:x1; dest:x2; op1val:-0x200001; immval:-0xa
+TEST_IMM_OP( xori, x2, x1, 0x200009, -0x200001, -0xa, x6, 16, x7)
+
+inst_12:
+// rs1==x3, rd==x5, rs1_val == -1048577,
+// opcode: xori ; op1:x3; dest:x5; op1val:-0x100001; immval:0x665
+TEST_IMM_OP( xori, x5, x3, 0xffeff99a, -0x100001, 0x665, x6, 20, x7)
+
+inst_13:
+// rs1==x5, rd==x12, rs1_val == -524289,
+// opcode: xori ; op1:x5; dest:x12; op1val:-0x80001; immval:-0x4
+TEST_IMM_OP( xori, x12, x5, 0x80003, -0x80001, -0x4, x6, 24, x4)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_14:
+// rs1==x2, rd==x6, rs1_val == -262145,
+// opcode: xori ; op1:x2; dest:x6; op1val:-0x40001; immval:0x2e
+TEST_IMM_OP( xori, x6, x2, 0xfffbffd1, -0x40001, 0x2e, x3, 0, x4)
+
+inst_15:
+// rs1==x0, rs1_val == -65537, imm_val == 512
+// opcode: xori ; op1:x0; dest:x1; op1val:0x0; immval:0x200
+TEST_IMM_OP( xori, x1, x0, 0x200, 0x0, 0x200, x3, 4, x4)
+
+inst_16:
+// rd==x0, rs1_val == -32769, imm_val == 0
+// opcode: xori ; op1:x12; dest:x0; op1val:-0x8001; immval:0x0
+TEST_IMM_OP( xori, x0, x12, 0, -0x8001, 0x0, x3, 8, x4)
+
+inst_17:
+// rs1_val == -16385,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x4001; immval:-0x1
+TEST_IMM_OP( xori, x11, x10, 0x4000, -0x4001, -0x1, x3, 12, x4)
+
+inst_18:
+// rs1_val == -8193,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x2001; immval:-0x4
+TEST_IMM_OP( xori, x11, x10, 0x2003, -0x2001, -0x4, x3, 16, x4)
+
+inst_19:
+// rs1_val == -4097,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x1001; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0xffffefd1, -0x1001, 0x2e, x3, 20, x4)
+
+inst_20:
+// rs1_val == -2049,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x801; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xfffff2ab, -0x801, 0x554, x3, 24, x4)
+
+inst_21:
+// rs1_val == -1025,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x401; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0xfffffbf9, -0x401, 0x6, x3, 28, x4)
+
+inst_22:
+// rs1_val == -513,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x201; immval:-0x6
+TEST_IMM_OP( xori, x11, x10, 0x205, -0x201, -0x6, x3, 32, x4)
+
+inst_23:
+// rs1_val == -257, rs1_val == imm_val
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x101; immval:-0x101
+TEST_IMM_OP( xori, x11, x10, 0x0, -0x101, -0x101, x3, 36, x4)
+
+inst_24:
+// rs1_val == -129, imm_val == -1025
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x81; immval:-0x401
+TEST_IMM_OP( xori, x11, x10, 0x480, -0x81, -0x401, x3, 40, x4)
+
+inst_25:
+// rs1_val == -65, imm_val == 1
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x41; immval:0x1
+TEST_IMM_OP( xori, x11, x10, 0xffffffbe, -0x41, 0x1, x3, 44, x4)
+
+inst_26:
+// rs1_val == -33,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x21; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xffffffdc, -0x21, 0x3, x3, 48, x4)
+
+inst_27:
+// rs1_val == -17, imm_val == -3
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x11; immval:-0x3
+TEST_IMM_OP( xori, x11, x10, 0x12, -0x11, -0x3, x3, 52, x4)
+
+inst_28:
+// rs1_val == -9, imm_val == 1365
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x9; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0xfffffaa2, -0x9, 0x555, x3, 56, x4)
+
+inst_29:
+// rs1_val == -5,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x5; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xfffffaaf, -0x5, 0x554, x3, 60, x4)
+
+inst_30:
+// rs1_val == -3,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x3; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0xfffffaab, -0x3, 0x556, x3, 64, x4)
+
+inst_31:
+// rs1_val == -2,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x2; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffffffd2, -0x2, 0x2c, x3, 68, x4)
+
+inst_32:
+// imm_val == 2047, imm_val == (2**(12-1)-1), rs1_val > 0 and imm_val > 0
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x7ff
+TEST_IMM_OP( xori, x11, x10, 0x66666199, 0x66666666, 0x7ff, x3, 72, x4)
+
+inst_33:
+// imm_val == -513,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x1001; immval:-0x201
+TEST_IMM_OP( xori, x11, x10, 0x1200, -0x1001, -0x201, x3, 76, x4)
+
+inst_34:
+// imm_val == -129,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x20001; immval:-0x81
+TEST_IMM_OP( xori, x11, x10, 0x20080, -0x20001, -0x81, x3, 80, x4)
+
+inst_35:
+// imm_val == -33,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x100001; immval:-0x21
+TEST_IMM_OP( xori, x11, x10, 0x100020, -0x100001, -0x21, x3, 84, x4)
+
+inst_36:
+// imm_val == -17,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x2; immval:-0x11
+TEST_IMM_OP( xori, x11, x10, 0x11, -0x2, -0x11, x3, 88, x4)
+
+inst_37:
+// imm_val == -9,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x100001; immval:-0x9
+TEST_IMM_OP( xori, x11, x10, 0x100008, -0x100001, -0x9, x3, 92, x4)
+
+inst_38:
+// imm_val == -5,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x2001; immval:-0x5
+TEST_IMM_OP( xori, x11, x10, 0x2004, -0x2001, -0x5, x3, 96, x4)
+
+inst_39:
+// imm_val == -2, rs1_val == 262144
+// opcode: xori ; op1:x10; dest:x11; op1val:0x40000; immval:-0x2
+TEST_IMM_OP( xori, x11, x10, 0xfffbfffe, 0x40000, -0x2, x3, 100, x4)
+
+inst_40:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x80000000; immval:-0x8
+TEST_IMM_OP( xori, x11, x10, 0x7ffffff8, -0x80000000, -0x8, x3, 104, x4)
+
+inst_41:
+// rs1_val == 1073741824, imm_val == 64
+// opcode: xori ; op1:x10; dest:x11; op1val:0x40000000; immval:0x40
+TEST_IMM_OP( xori, x11, x10, 0x40000040, 0x40000000, 0x40, x3, 108, x4)
+
+inst_42:
+// rs1_val == 536870912,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x20000000; immval:0x1
+TEST_IMM_OP( xori, x11, x10, 0x20000001, 0x20000000, 0x1, x3, 112, x4)
+
+inst_43:
+// rs1_val == 268435456,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x10000000; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x10000006, 0x10000000, 0x6, x3, 116, x4)
+
+inst_44:
+// rs1_val == 134217728,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x8000000; immval:0x3ff
+TEST_IMM_OP( xori, x11, x10, 0x80003ff, 0x8000000, 0x3ff, x3, 120, x4)
+
+inst_45:
+// rs1_val == 67108864,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4000000; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x4000005, 0x4000000, 0x5, x3, 124, x4)
+
+inst_46:
+// rs1_val == 33554432,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2000000; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xfdffffd3, 0x2000000, -0x2d, x3, 128, x4)
+
+inst_47:
+// rs1_val == 16777216,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x1000000; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x1000003, 0x1000000, 0x3, x3, 132, x4)
+
+inst_48:
+// rs1_val == 8388608,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x800000; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x80002e, 0x800000, 0x2e, x3, 136, x4)
+
+inst_49:
+// rs1_val == 4194304,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x400000; immval:-0x3
+TEST_IMM_OP( xori, x11, x10, 0xffbffffd, 0x400000, -0x3, x3, 140, x4)
+
+inst_50:
+// rs1_val == 2097152,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x200000; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffdfffd4, 0x200000, -0x2c, x3, 144, x4)
+
+inst_51:
+// rs1_val == 1048576,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x100000; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x100554, 0x100000, 0x554, x3, 148, x4)
+
+inst_52:
+// rs1_val == 524288,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x80000; immval:-0x201
+TEST_IMM_OP( xori, x11, x10, 0xfff7fdff, 0x80000, -0x201, x3, 152, x4)
+
+inst_53:
+// rs1_val == 131072,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x20000; immval:-0x2
+TEST_IMM_OP( xori, x11, x10, 0xfffdfffe, 0x20000, -0x2, x3, 156, x4)
+
+inst_54:
+// rs1_val == 65536,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x10000; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x10003, 0x10000, 0x3, x3, 160, x4)
+
+inst_55:
+// rs1_val == 32768,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x8000; immval:0x7ff
+TEST_IMM_OP( xori, x11, x10, 0x87ff, 0x8000, 0x7ff, x3, 164, x4)
+
+inst_56:
+// rs1_val == 16384,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4000; immval:-0x41
+TEST_IMM_OP( xori, x11, x10, 0xffffbfbf, 0x4000, -0x41, x3, 168, x4)
+
+inst_57:
+// rs1_val == 8192,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2000; immval:0x7
+TEST_IMM_OP( xori, x11, x10, 0x2007, 0x2000, 0x7, x3, 172, x4)
+
+inst_58:
+// rs1_val == 4096, imm_val == 4
+// opcode: xori ; op1:x10; dest:x11; op1val:0x1000; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x1004, 0x1000, 0x4, x3, 176, x4)
+
+inst_59:
+// rs1_val == 2048, imm_val == 1024
+// opcode: xori ; op1:x10; dest:x11; op1val:0x800; immval:0x400
+TEST_IMM_OP( xori, x11, x10, 0xc00, 0x800, 0x400, x3, 180, x4)
+
+inst_60:
+// rs1_val == 1024,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x400; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x267, 0x400, 0x667, x3, 184, x4)
+
+inst_61:
+// rs1_val == 512,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x200; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x204, 0x200, 0x4, x3, 188, x4)
+
+inst_62:
+// rs1_val == 256,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x100; immval:-0x8
+TEST_IMM_OP( xori, x11, x10, 0xfffffef8, 0x100, -0x8, x3, 192, x4)
+
+inst_63:
+// rs1_val == 128,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x80; immval:-0x2
+TEST_IMM_OP( xori, x11, x10, 0xffffff7e, 0x80, -0x2, x3, 196, x4)
+
+inst_64:
+// rs1_val == 64,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x40; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x40, 0x40, 0x0, x3, 200, x4)
+
+inst_65:
+// rs1_val == 32,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x20; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x20, 0x20, 0x0, x3, 204, x4)
+
+inst_66:
+// rs1_val == 16,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x10; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x15, 0x10, 0x5, x3, 208, x4)
+
+inst_67:
+// rs1_val == 8,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x8; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xb, 0x8, 0x3, x3, 212, x4)
+
+inst_68:
+// rs1_val == 4, rs1_val==4 and imm_val==-45
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffffffd7, 0x4, -0x2d, x3, 216, x4)
+
+inst_69:
+// rs1_val == 2, rs1_val==2 and imm_val==1364
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x556, 0x2, 0x554, x3, 220, x4)
+
+inst_70:
+// rs1_val == 1,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x1; immval:-0x11
+TEST_IMM_OP( xori, x11, x10, 0xffffffee, 0x1, -0x11, x3, 224, x4)
+
+inst_71:
+// imm_val == 256,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3fffffff; immval:0x100
+TEST_IMM_OP( xori, x11, x10, 0x3ffffeff, 0x3fffffff, 0x100, x3, 228, x4)
+
+inst_72:
+// imm_val == 128, rs1_val == -1431655766
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x80
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa2a, -0x55555556, 0x80, x3, 232, x4)
+
+inst_73:
+// imm_val == 32,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x1; immval:0x20
+TEST_IMM_OP( xori, x11, x10, 0x21, 0x1, 0x20, x3, 236, x4)
+
+inst_74:
+// imm_val == 8,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x7; immval:0x8
+TEST_IMM_OP( xori, x11, x10, 0xfffffff1, -0x7, 0x8, x3, 240, x4)
+
+inst_75:
+// rs1_val==46341 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0xb52b, 0xb505, 0x2e, x3, 244, x4)
+
+inst_76:
+// rs1_val==46341 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad1, 0xb505, -0x2c, x3, 248, x4)
+
+inst_77:
+// rs1_val==46341 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0xb362, 0xb505, 0x667, x3, 252, x4)
+
+inst_78:
+// rs1_val==46341 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0xb631, 0xb505, 0x334, x3, 256, x4)
+
+inst_79:
+// rs1_val==46341 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0xb503, 0xb505, 0x6, x3, 260, x4)
+
+inst_80:
+// rs1_val==46341 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xffff4fae, 0xb505, -0x555, x3, 264, x4)
+
+inst_81:
+// rs1_val==46341 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0xb053, 0xb505, 0x556, x3, 268, x4)
+
+inst_82:
+// rs1_val==46341 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0xb501, 0xb505, 0x4, x3, 272, x4)
+
+inst_83:
+// rs1_val==46341 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0xb529, 0xb505, 0x2c, x3, 276, x4)
+
+inst_84:
+// rs1_val==46341 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0xb505, 0xb505, 0x0, x3, 280, x4)
+
+inst_85:
+// rs1_val==46341 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0xb360, 0xb505, 0x665, x3, 284, x4)
+
+inst_86:
+// rs1_val==46341 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0xb637, 0xb505, 0x332, x3, 288, x4)
+
+inst_87:
+// rs1_val==46341 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xb051, 0xb505, 0x554, x3, 292, x4)
+
+inst_88:
+// rs1_val==46341 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0xb507, 0xb505, 0x2, x3, 296, x4)
+
+inst_89:
+// rs1_val==46341 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0xb528, 0xb505, 0x2d, x3, 300, x4)
+
+inst_90:
+// rs1_val==46341 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad6, 0xb505, -0x2d, x3, 304, x4)
+
+inst_91:
+// rs1_val==46341 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0xb363, 0xb505, 0x666, x3, 308, x4)
+
+inst_92:
+// rs1_val==46341 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0xb636, 0xb505, 0x333, x3, 312, x4)
+
+inst_93:
+// rs1_val==46341 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0xb500, 0xb505, 0x5, x3, 316, x4)
+
+inst_94:
+// rs1_val==46341 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xffff4faf, 0xb505, -0x556, x3, 320, x4)
+
+inst_95:
+// rs1_val==46341 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0xb050, 0xb505, 0x555, x3, 324, x4)
+
+inst_96:
+// rs1_val==46341 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb505; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xb506, 0xb505, 0x3, x3, 328, x4)
+
+inst_97:
+// rs1_val==-46339 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad3, -0xb503, 0x2e, x3, 332, x4)
+
+inst_98:
+// rs1_val==-46339 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xb529, -0xb503, -0x2c, x3, 336, x4)
+
+inst_99:
+// rs1_val==-46339 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0xffff4c9a, -0xb503, 0x667, x3, 340, x4)
+
+inst_100:
+// rs1_val==-46339 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0xffff49c9, -0xb503, 0x334, x3, 344, x4)
+
+inst_101:
+// rs1_val==-46339 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0xffff4afb, -0xb503, 0x6, x3, 348, x4)
+
+inst_102:
+// rs1_val==-46339 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xb056, -0xb503, -0x555, x3, 352, x4)
+
+inst_103:
+// rs1_val==-46339 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0xffff4fab, -0xb503, 0x556, x3, 356, x4)
+
+inst_104:
+// rs1_val==-46339 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0xffff4af9, -0xb503, 0x4, x3, 360, x4)
+
+inst_105:
+// rs1_val==-46339 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad1, -0xb503, 0x2c, x3, 364, x4)
+
+inst_106:
+// rs1_val==-46339 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0xffff4afd, -0xb503, 0x0, x3, 368, x4)
+
+inst_107:
+// rs1_val==-46339 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0xffff4c98, -0xb503, 0x665, x3, 372, x4)
+
+inst_108:
+// rs1_val==-46339 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0xffff49cf, -0xb503, 0x332, x3, 376, x4)
+
+inst_109:
+// rs1_val==-46339 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xffff4fa9, -0xb503, 0x554, x3, 380, x4)
+
+inst_110:
+// rs1_val==-46339 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0xffff4aff, -0xb503, 0x2, x3, 384, x4)
+
+inst_111:
+// rs1_val==-46339 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad0, -0xb503, 0x2d, x3, 388, x4)
+
+inst_112:
+// rs1_val==-46339 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xb52e, -0xb503, -0x2d, x3, 392, x4)
+
+inst_113:
+// rs1_val==-46339 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0xffff4c9b, -0xb503, 0x666, x3, 396, x4)
+
+inst_114:
+// rs1_val==-46339 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0xffff49ce, -0xb503, 0x333, x3, 400, x4)
+
+inst_115:
+// rs1_val==-46339 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0xffff4af8, -0xb503, 0x5, x3, 404, x4)
+
+inst_116:
+// rs1_val==-46339 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xb057, -0xb503, -0x556, x3, 408, x4)
+
+inst_117:
+// rs1_val==-46339 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0xffff4fa8, -0xb503, 0x555, x3, 412, x4)
+
+inst_118:
+// rs1_val==-46339 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb503; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xffff4afe, -0xb503, 0x3, x3, 416, x4)
+
+inst_119:
+// rs1_val==1717986919 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x66666649, 0x66666667, 0x2e, x3, 420, x4)
+
+inst_120:
+// rs1_val==1717986919 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0x999999b3, 0x66666667, -0x2c, x3, 424, x4)
+
+inst_121:
+// rs1_val==1717986919 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x66666000, 0x66666667, 0x667, x3, 428, x4)
+
+inst_122:
+// rs1_val==1717986919 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x66666553, 0x66666667, 0x334, x3, 432, x4)
+
+inst_123:
+// rs1_val==1717986919 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x66666661, 0x66666667, 0x6, x3, 436, x4)
+
+inst_124:
+// rs1_val==1717986919 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0x99999ccc, 0x66666667, -0x555, x3, 440, x4)
+
+inst_125:
+// rs1_val==1717986919 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x66666331, 0x66666667, 0x556, x3, 444, x4)
+
+inst_126:
+// rs1_val==1717986919 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x66666663, 0x66666667, 0x4, x3, 448, x4)
+
+inst_127:
+// rs1_val==1717986919 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x6666664b, 0x66666667, 0x2c, x3, 452, x4)
+
+inst_128:
+// rs1_val==1717986919 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x66666667, 0x66666667, 0x0, x3, 456, x4)
+
+inst_129:
+// rs1_val==1717986919 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x66666002, 0x66666667, 0x665, x3, 460, x4)
+
+inst_130:
+// rs1_val==1717986919 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x66666555, 0x66666667, 0x332, x3, 464, x4)
+
+inst_131:
+// rs1_val==1717986919 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x66666333, 0x66666667, 0x554, x3, 468, x4)
+
+inst_132:
+// rs1_val==1717986919 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x66666665, 0x66666667, 0x2, x3, 472, x4)
+
+inst_133:
+// rs1_val==1717986919 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x6666664a, 0x66666667, 0x2d, x3, 476, x4)
+
+inst_134:
+// rs1_val==1717986919 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0x999999b4, 0x66666667, -0x2d, x3, 480, x4)
+
+inst_135:
+// rs1_val==1717986919 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x66666001, 0x66666667, 0x666, x3, 484, x4)
+
+inst_136:
+// rs1_val==1717986919 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x66666554, 0x66666667, 0x333, x3, 488, x4)
+
+inst_137:
+// rs1_val==1717986919 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x66666662, 0x66666667, 0x5, x3, 492, x4)
+
+inst_138:
+// rs1_val==1717986919 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0x99999ccd, 0x66666667, -0x556, x3, 496, x4)
+
+inst_139:
+// rs1_val==1717986919 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x66666332, 0x66666667, 0x555, x3, 500, x4)
+
+inst_140:
+// rs1_val==1717986919 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666667; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x66666664, 0x66666667, 0x3, x3, 504, x4)
+
+inst_141:
+// rs1_val==858993460 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x3333331a, 0x33333334, 0x2e, x3, 508, x4)
+
+inst_142:
+// rs1_val==858993460 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xcccccce0, 0x33333334, -0x2c, x3, 512, x4)
+
+inst_143:
+// rs1_val==858993460 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x33333553, 0x33333334, 0x667, x3, 516, x4)
+
+inst_144:
+// rs1_val==858993460 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x33333000, 0x33333334, 0x334, x3, 520, x4)
+
+inst_145:
+// rs1_val==858993460 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x33333332, 0x33333334, 0x6, x3, 524, x4)
+
+inst_146:
+// rs1_val==858993460 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xccccc99f, 0x33333334, -0x555, x3, 528, x4)
+
+inst_147:
+// rs1_val==858993460 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x33333662, 0x33333334, 0x556, x3, 532, x4)
+
+inst_148:
+// rs1_val==858993460 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x33333330, 0x33333334, 0x4, x3, 536, x4)
+
+inst_149:
+// rs1_val==858993460 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x33333318, 0x33333334, 0x2c, x3, 540, x4)
+
+inst_150:
+// rs1_val==858993460 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x33333334, 0x33333334, 0x0, x3, 544, x4)
+
+inst_151:
+// rs1_val==858993460 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x33333551, 0x33333334, 0x665, x3, 548, x4)
+
+inst_152:
+// rs1_val==858993460 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x33333006, 0x33333334, 0x332, x3, 552, x4)
+
+inst_153:
+// rs1_val==858993460 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x33333660, 0x33333334, 0x554, x3, 556, x4)
+
+inst_154:
+// rs1_val==858993460 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x33333336, 0x33333334, 0x2, x3, 560, x4)
+
+inst_155:
+// rs1_val==858993460 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x33333319, 0x33333334, 0x2d, x3, 564, x4)
+
+inst_156:
+// rs1_val==858993460 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xcccccce7, 0x33333334, -0x2d, x3, 568, x4)
+
+inst_157:
+// rs1_val==858993460 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x33333552, 0x33333334, 0x666, x3, 572, x4)
+
+inst_158:
+// rs1_val==858993460 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x33333007, 0x33333334, 0x333, x3, 576, x4)
+
+inst_159:
+// rs1_val==858993460 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x33333331, 0x33333334, 0x5, x3, 580, x4)
+
+inst_160:
+// rs1_val==858993460 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xccccc99e, 0x33333334, -0x556, x3, 584, x4)
+
+inst_161:
+// rs1_val==858993460 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x33333661, 0x33333334, 0x555, x3, 588, x4)
+
+inst_162:
+// rs1_val==858993460 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333334; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x33333337, 0x33333334, 0x3, x3, 592, x4)
+
+inst_163:
+// rs1_val==6 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x28, 0x6, 0x2e, x3, 596, x4)
+
+inst_164:
+// rs1_val==6 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffffffd2, 0x6, -0x2c, x3, 600, x4)
+
+inst_165:
+// rs1_val==6 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x661, 0x6, 0x667, x3, 604, x4)
+
+inst_166:
+// rs1_val==6 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x332, 0x6, 0x334, x3, 608, x4)
+
+inst_167:
+// rs1_val==6 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x0, 0x6, 0x6, x3, 612, x4)
+
+inst_168:
+// rs1_val==6 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xfffffaad, 0x6, -0x555, x3, 616, x4)
+
+inst_169:
+// rs1_val==6 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x550, 0x6, 0x556, x3, 620, x4)
+
+inst_170:
+// rs1_val==6 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x2, 0x6, 0x4, x3, 624, x4)
+
+inst_171:
+// rs1_val==6 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x2a, 0x6, 0x2c, x3, 628, x4)
+
+inst_172:
+// rs1_val==6 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x6, 0x6, 0x0, x3, 632, x4)
+
+inst_173:
+// rs1_val==6 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x663, 0x6, 0x665, x3, 636, x4)
+
+inst_174:
+// rs1_val==6 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x334, 0x6, 0x332, x3, 640, x4)
+
+inst_175:
+// rs1_val==6 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x552, 0x6, 0x554, x3, 644, x4)
+
+inst_176:
+// rs1_val==6 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x4, 0x6, 0x2, x3, 648, x4)
+
+inst_177:
+// rs1_val==6 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x2b, 0x6, 0x2d, x3, 652, x4)
+
+inst_178:
+// rs1_val==6 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffffffd5, 0x6, -0x2d, x3, 656, x4)
+
+inst_179:
+// rs1_val==6 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x660, 0x6, 0x666, x3, 660, x4)
+
+inst_180:
+// rs1_val==6 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x335, 0x6, 0x333, x3, 664, x4)
+
+inst_181:
+// rs1_val==6 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x3, 0x6, 0x5, x3, 668, x4)
+
+inst_182:
+// rs1_val==6 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xfffffaac, 0x6, -0x556, x3, 672, x4)
+
+inst_183:
+// rs1_val==6 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x553, 0x6, 0x555, x3, 676, x4)
+
+inst_184:
+// rs1_val==6 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x6; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x5, 0x6, 0x3, x3, 680, x4)
+
+inst_185:
+// rs1_val==-1431655765 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa85, -0x55555555, 0x2e, x3, 684, x4)
+
+inst_186:
+// rs1_val==-1431655765 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0x5555557f, -0x55555555, -0x2c, x3, 688, x4)
+
+inst_187:
+// rs1_val==-1431655765 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaccc, -0x55555555, 0x667, x3, 692, x4)
+
+inst_188:
+// rs1_val==-1431655765 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0xaaaaa99f, -0x55555555, 0x334, x3, 696, x4)
+
+inst_189:
+// rs1_val==-1431655765 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaad, -0x55555555, 0x6, x3, 700, x4)
+
+inst_190:
+// rs1_val==-1431655765 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0x55555000, -0x55555555, -0x555, x3, 704, x4)
+
+inst_191:
+// rs1_val==-1431655765 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaffd, -0x55555555, 0x556, x3, 708, x4)
+
+inst_192:
+// rs1_val==-1431655765 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaaf, -0x55555555, 0x4, x3, 712, x4)
+
+inst_193:
+// rs1_val==-1431655765 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa87, -0x55555555, 0x2c, x3, 716, x4)
+
+inst_194:
+// rs1_val==-1431655765 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaab, -0x55555555, 0x0, x3, 720, x4)
+
+inst_195:
+// rs1_val==-1431655765 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0xaaaaacce, -0x55555555, 0x665, x3, 724, x4)
+
+inst_196:
+// rs1_val==-1431655765 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0xaaaaa999, -0x55555555, 0x332, x3, 728, x4)
+
+inst_197:
+// rs1_val==-1431655765 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xaaaaafff, -0x55555555, 0x554, x3, 732, x4)
+
+inst_198:
+// rs1_val==-1431655765 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaa9, -0x55555555, 0x2, x3, 736, x4)
+
+inst_199:
+// rs1_val==-1431655765 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa86, -0x55555555, 0x2d, x3, 740, x4)
+
+inst_200:
+// rs1_val==-1431655765 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0x55555578, -0x55555555, -0x2d, x3, 744, x4)
+
+inst_201:
+// rs1_val==-1431655765 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaccd, -0x55555555, 0x666, x3, 748, x4)
+
+inst_202:
+// rs1_val==-1431655765 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0xaaaaa998, -0x55555555, 0x333, x3, 752, x4)
+
+inst_203:
+// rs1_val==-1431655765 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaae, -0x55555555, 0x5, x3, 756, x4)
+
+inst_204:
+// rs1_val==-1431655765 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0x55555001, -0x55555555, -0x556, x3, 760, x4)
+
+inst_205:
+// rs1_val==-1431655765 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaffe, -0x55555555, 0x555, x3, 764, x4)
+
+inst_206:
+// rs1_val==-1431655765 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555555; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaa8, -0x55555555, 0x3, x3, 768, x4)
+
+inst_207:
+// rs1_val==1431655766 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x55555578, 0x55555556, 0x2e, x3, 772, x4)
+
+inst_208:
+// rs1_val==1431655766 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa82, 0x55555556, -0x2c, x3, 776, x4)
+
+inst_209:
+// rs1_val==1431655766 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x55555331, 0x55555556, 0x667, x3, 780, x4)
+
+inst_210:
+// rs1_val==1431655766 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x55555662, 0x55555556, 0x334, x3, 784, x4)
+
+inst_211:
+// rs1_val==1431655766 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x55555550, 0x55555556, 0x6, x3, 788, x4)
+
+inst_212:
+// rs1_val==1431655766 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaffd, 0x55555556, -0x555, x3, 792, x4)
+
+inst_213:
+// rs1_val==1431655766 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x55555000, 0x55555556, 0x556, x3, 796, x4)
+
+inst_214:
+// rs1_val==1431655766 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x55555552, 0x55555556, 0x4, x3, 800, x4)
+
+inst_215:
+// rs1_val==1431655766 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x5555557a, 0x55555556, 0x2c, x3, 804, x4)
+
+inst_216:
+// rs1_val==1431655766 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x55555556, 0x55555556, 0x0, x3, 808, x4)
+
+inst_217:
+// rs1_val==1431655766 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x55555333, 0x55555556, 0x665, x3, 812, x4)
+
+inst_218:
+// rs1_val==1431655766 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x55555664, 0x55555556, 0x332, x3, 816, x4)
+
+inst_219:
+// rs1_val==1431655766 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x55555002, 0x55555556, 0x554, x3, 820, x4)
+
+inst_220:
+// rs1_val==1431655766 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x55555554, 0x55555556, 0x2, x3, 824, x4)
+
+inst_221:
+// rs1_val==1431655766 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x5555557b, 0x55555556, 0x2d, x3, 828, x4)
+
+inst_222:
+// rs1_val==1431655766 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa85, 0x55555556, -0x2d, x3, 832, x4)
+
+inst_223:
+// rs1_val==1431655766 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x55555330, 0x55555556, 0x666, x3, 836, x4)
+
+inst_224:
+// rs1_val==1431655766 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x55555665, 0x55555556, 0x333, x3, 840, x4)
+
+inst_225:
+// rs1_val==1431655766 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x55555553, 0x55555556, 0x5, x3, 844, x4)
+
+inst_226:
+// rs1_val==1431655766 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaffc, 0x55555556, -0x556, x3, 848, x4)
+
+inst_227:
+// rs1_val==1431655766 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x55555003, 0x55555556, 0x555, x3, 852, x4)
+
+inst_228:
+// rs1_val==1431655766 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555556; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x55555555, 0x55555556, 0x3, x3, 856, x4)
+
+inst_229:
+// rs1_val==4 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x2a, 0x4, 0x2e, x3, 860, x4)
+
+inst_230:
+// rs1_val==4 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffffffd0, 0x4, -0x2c, x3, 864, x4)
+
+inst_231:
+// rs1_val==4 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x663, 0x4, 0x667, x3, 868, x4)
+
+inst_232:
+// rs1_val==4 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x330, 0x4, 0x334, x3, 872, x4)
+
+inst_233:
+// rs1_val==4 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x2, 0x4, 0x6, x3, 876, x4)
+
+inst_234:
+// rs1_val==4 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xfffffaaf, 0x4, -0x555, x3, 880, x4)
+
+inst_235:
+// rs1_val==4 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x552, 0x4, 0x556, x3, 884, x4)
+
+inst_236:
+// rs1_val==4 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x0, 0x4, 0x4, x3, 888, x4)
+
+inst_237:
+// rs1_val==4 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x28, 0x4, 0x2c, x3, 892, x4)
+
+inst_238:
+// rs1_val==4 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x4, 0x4, 0x0, x3, 896, x4)
+
+inst_239:
+// rs1_val==4 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x661, 0x4, 0x665, x3, 900, x4)
+
+inst_240:
+// rs1_val==4 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x336, 0x4, 0x332, x3, 904, x4)
+
+inst_241:
+// rs1_val==4 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x550, 0x4, 0x554, x3, 908, x4)
+
+inst_242:
+// rs1_val==4 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x6, 0x4, 0x2, x3, 912, x4)
+
+inst_243:
+// rs1_val==4 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x29, 0x4, 0x2d, x3, 916, x4)
+
+inst_244:
+// rs1_val==4 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x662, 0x4, 0x666, x3, 920, x4)
+
+inst_245:
+// rs1_val==4 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x337, 0x4, 0x333, x3, 924, x4)
+
+inst_246:
+// rs1_val==4 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x1, 0x4, 0x5, x3, 928, x4)
+
+inst_247:
+// rs1_val==4 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xfffffaae, 0x4, -0x556, x3, 932, x4)
+
+inst_248:
+// rs1_val==4 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x551, 0x4, 0x555, x3, 936, x4)
+
+inst_249:
+// rs1_val==4 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x4; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x7, 0x4, 0x3, x3, 940, x4)
+
+inst_250:
+// rs1_val==46339 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0xb52d, 0xb503, 0x2e, x3, 944, x4)
+
+inst_251:
+// rs1_val==46339 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad7, 0xb503, -0x2c, x3, 948, x4)
+
+inst_252:
+// rs1_val==46339 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0xb364, 0xb503, 0x667, x3, 952, x4)
+
+inst_253:
+// rs1_val==46339 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0xb637, 0xb503, 0x334, x3, 956, x4)
+
+inst_254:
+// rs1_val==46339 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0xb505, 0xb503, 0x6, x3, 960, x4)
+
+inst_255:
+// rs1_val==46339 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xffff4fa8, 0xb503, -0x555, x3, 964, x4)
+
+inst_256:
+// rs1_val==46339 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0xb055, 0xb503, 0x556, x3, 968, x4)
+
+inst_257:
+// rs1_val==46339 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0xb507, 0xb503, 0x4, x3, 972, x4)
+
+inst_258:
+// rs1_val==46339 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0xb52f, 0xb503, 0x2c, x3, 976, x4)
+
+inst_259:
+// rs1_val==46339 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0xb503, 0xb503, 0x0, x3, 980, x4)
+
+inst_260:
+// rs1_val==46339 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0xb366, 0xb503, 0x665, x3, 984, x4)
+
+inst_261:
+// rs1_val==46339 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0xb631, 0xb503, 0x332, x3, 988, x4)
+
+inst_262:
+// rs1_val==46339 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xb057, 0xb503, 0x554, x3, 992, x4)
+
+inst_263:
+// rs1_val==46339 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0xb501, 0xb503, 0x2, x3, 996, x4)
+
+inst_264:
+// rs1_val==46339 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0xb52e, 0xb503, 0x2d, x3, 1000, x4)
+
+inst_265:
+// rs1_val==46339 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad0, 0xb503, -0x2d, x3, 1004, x4)
+
+inst_266:
+// rs1_val==46339 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0xb365, 0xb503, 0x666, x3, 1008, x4)
+
+inst_267:
+// rs1_val==46339 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0xb630, 0xb503, 0x333, x3, 1012, x4)
+
+inst_268:
+// rs1_val==46339 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0xb506, 0xb503, 0x5, x3, 1016, x4)
+
+inst_269:
+// rs1_val==46339 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xffff4fa9, 0xb503, -0x556, x3, 1020, x4)
+
+inst_270:
+// rs1_val==46339 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0xb056, 0xb503, 0x555, x3, 1024, x4)
+
+inst_271:
+// rs1_val==46339 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb503; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xb500, 0xb503, 0x3, x3, 1028, x4)
+
+inst_272:
+// rs1_val==0 and imm_val==46, rs1_val == 0
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x2e, 0x0, 0x2e, x3, 1032, x4)
+
+inst_273:
+// rs1_val==0 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffffffd4, 0x0, -0x2c, x3, 1036, x4)
+
+inst_274:
+// rs1_val==0 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x667, 0x0, 0x667, x3, 1040, x4)
+
+inst_275:
+// rs1_val==0 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x334, 0x0, 0x334, x3, 1044, x4)
+
+inst_276:
+// rs1_val==0 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x6, 0x0, 0x6, x3, 1048, x4)
+
+inst_277:
+// rs1_val==0 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xfffffaab, 0x0, -0x555, x3, 1052, x4)
+
+inst_278:
+// rs1_val==0 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x556, 0x0, 0x556, x3, 1056, x4)
+
+inst_279:
+// rs1_val==0 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x4, 0x0, 0x4, x3, 1060, x4)
+
+inst_280:
+// rs1_val==0 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x2c, 0x0, 0x2c, x3, 1064, x4)
+
+inst_281:
+// rs1_val==0 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x0, 0x0, 0x0, x3, 1068, x4)
+
+inst_282:
+// rs1_val==0 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x665, 0x0, 0x665, x3, 1072, x4)
+
+inst_283:
+// rs1_val==0 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x332, 0x0, 0x332, x3, 1076, x4)
+
+inst_284:
+// rs1_val==0 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x554, 0x0, 0x554, x3, 1080, x4)
+
+inst_285:
+// rs1_val==0 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x2, 0x0, 0x2, x3, 1084, x4)
+
+inst_286:
+// rs1_val==0 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x2d, 0x0, 0x2d, x3, 1088, x4)
+
+inst_287:
+// rs1_val==0 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffffffd3, 0x0, -0x2d, x3, 1092, x4)
+
+inst_288:
+// rs1_val==0 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x666, 0x0, 0x666, x3, 1096, x4)
+
+inst_289:
+// rs1_val==0 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x333, 0x0, 0x333, x3, 1100, x4)
+
+inst_290:
+// rs1_val==0 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x5, 0x0, 0x5, x3, 1104, x4)
+
+inst_291:
+// rs1_val==0 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xfffffaaa, 0x0, -0x556, x3, 1108, x4)
+
+inst_292:
+// rs1_val==0 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x555, 0x0, 0x555, x3, 1112, x4)
+
+inst_293:
+// rs1_val==0 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x0; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x3, 0x0, 0x3, x3, 1116, x4)
+
+inst_294:
+// rs1_val==1717986917 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x6666664b, 0x66666665, 0x2e, x3, 1120, x4)
+
+inst_295:
+// rs1_val==1717986917 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0x999999b1, 0x66666665, -0x2c, x3, 1124, x4)
+
+inst_296:
+// rs1_val==1717986917 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x66666002, 0x66666665, 0x667, x3, 1128, x4)
+
+inst_297:
+// rs1_val==1717986917 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x66666551, 0x66666665, 0x334, x3, 1132, x4)
+
+inst_298:
+// rs1_val==1717986917 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x66666663, 0x66666665, 0x6, x3, 1136, x4)
+
+inst_299:
+// rs1_val==1717986917 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0x99999cce, 0x66666665, -0x555, x3, 1140, x4)
+
+inst_300:
+// rs1_val==1717986917 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x66666333, 0x66666665, 0x556, x3, 1144, x4)
+
+inst_301:
+// rs1_val==1717986917 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x66666661, 0x66666665, 0x4, x3, 1148, x4)
+
+inst_302:
+// rs1_val==1717986917 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x66666649, 0x66666665, 0x2c, x3, 1152, x4)
+
+inst_303:
+// rs1_val==-1431655766 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0x55555001, -0x55555556, -0x555, x3, 1156, x4)
+
+inst_304:
+// rs1_val==-1431655766 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaffc, -0x55555556, 0x556, x3, 1160, x4)
+
+inst_305:
+// rs1_val==-1431655766 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaae, -0x55555556, 0x4, x3, 1164, x4)
+
+inst_306:
+// rs1_val==-1431655766 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa86, -0x55555556, 0x2c, x3, 1168, x4)
+
+inst_307:
+// rs1_val==-1431655766 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaaa, -0x55555556, 0x0, x3, 1172, x4)
+
+inst_308:
+// rs1_val==-1431655766 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaccf, -0x55555556, 0x665, x3, 1176, x4)
+
+inst_309:
+// rs1_val==-1431655766 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0xaaaaa998, -0x55555556, 0x332, x3, 1180, x4)
+
+inst_310:
+// rs1_val==-1431655766 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaffe, -0x55555556, 0x554, x3, 1184, x4)
+
+inst_311:
+// rs1_val==-1431655766 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaa8, -0x55555556, 0x2, x3, 1188, x4)
+
+inst_312:
+// rs1_val==-1431655766 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa87, -0x55555556, 0x2d, x3, 1192, x4)
+
+inst_313:
+// rs1_val==-1431655766 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0x55555579, -0x55555556, -0x2d, x3, 1196, x4)
+
+inst_314:
+// rs1_val==-1431655766 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaccc, -0x55555556, 0x666, x3, 1200, x4)
+
+inst_315:
+// rs1_val==-1431655766 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0xaaaaa999, -0x55555556, 0x333, x3, 1204, x4)
+
+inst_316:
+// rs1_val==-1431655766 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaaf, -0x55555556, 0x5, x3, 1208, x4)
+
+inst_317:
+// rs1_val==-1431655766 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0x55555000, -0x55555556, -0x556, x3, 1212, x4)
+
+inst_318:
+// rs1_val==-1431655766 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0xaaaaafff, -0x55555556, 0x555, x3, 1216, x4)
+
+inst_319:
+// rs1_val==-1431655766 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaa9, -0x55555556, 0x3, x3, 1220, x4)
+
+inst_320:
+// rs1_val==1431655765 and imm_val==46, rs1_val == 1431655765
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x5555557b, 0x55555555, 0x2e, x3, 1224, x4)
+
+inst_321:
+// rs1_val==1431655765 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa81, 0x55555555, -0x2c, x3, 1228, x4)
+
+inst_322:
+// rs1_val==1431655765 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x55555332, 0x55555555, 0x667, x3, 1232, x4)
+
+inst_323:
+// rs1_val==1431655765 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x55555661, 0x55555555, 0x334, x3, 1236, x4)
+
+inst_324:
+// rs1_val==1431655765 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x55555553, 0x55555555, 0x6, x3, 1240, x4)
+
+inst_325:
+// rs1_val==1431655765 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaffe, 0x55555555, -0x555, x3, 1244, x4)
+
+inst_326:
+// rs1_val==1431655765 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x55555003, 0x55555555, 0x556, x3, 1248, x4)
+
+inst_327:
+// rs1_val==1431655765 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x55555551, 0x55555555, 0x4, x3, 1252, x4)
+
+inst_328:
+// rs1_val==1431655765 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x55555579, 0x55555555, 0x2c, x3, 1256, x4)
+
+inst_329:
+// rs1_val==1431655765 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x55555555, 0x55555555, 0x0, x3, 1260, x4)
+
+inst_330:
+// rs1_val==1431655765 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x55555330, 0x55555555, 0x665, x3, 1264, x4)
+
+inst_331:
+// rs1_val==1431655765 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x55555667, 0x55555555, 0x332, x3, 1268, x4)
+
+inst_332:
+// rs1_val==1431655765 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x55555001, 0x55555555, 0x554, x3, 1272, x4)
+
+inst_333:
+// rs1_val==1431655765 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x55555557, 0x55555555, 0x2, x3, 1276, x4)
+
+inst_334:
+// rs1_val==1431655765 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x55555578, 0x55555555, 0x2d, x3, 1280, x4)
+
+inst_335:
+// rs1_val==1431655765 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa86, 0x55555555, -0x2d, x3, 1284, x4)
+
+inst_336:
+// rs1_val==1431655765 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x55555333, 0x55555555, 0x666, x3, 1288, x4)
+
+inst_337:
+// rs1_val==1431655765 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x55555666, 0x55555555, 0x333, x3, 1292, x4)
+
+inst_338:
+// rs1_val==1431655765 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x55555550, 0x55555555, 0x5, x3, 1296, x4)
+
+inst_339:
+// rs1_val==1431655765 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xaaaaafff, 0x55555555, -0x556, x3, 1300, x4)
+
+inst_340:
+// rs1_val==1431655765 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x55555000, 0x55555555, 0x555, x3, 1304, x4)
+
+inst_341:
+// rs1_val==1431655765 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555555; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x55555556, 0x55555555, 0x3, x3, 1308, x4)
+
+inst_342:
+// rs1_val==3 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x2d, 0x3, 0x2e, x3, 1312, x4)
+
+inst_343:
+// rs1_val==3 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffffffd7, 0x3, -0x2c, x3, 1316, x4)
+
+inst_344:
+// rs1_val==3 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x664, 0x3, 0x667, x3, 1320, x4)
+
+inst_345:
+// rs1_val==3 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x337, 0x3, 0x334, x3, 1324, x4)
+
+inst_346:
+// rs1_val==3 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x5, 0x3, 0x6, x3, 1328, x4)
+
+inst_347:
+// rs1_val==3 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xfffffaa8, 0x3, -0x555, x3, 1332, x4)
+
+inst_348:
+// rs1_val==3 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x555, 0x3, 0x556, x3, 1336, x4)
+
+inst_349:
+// rs1_val==3 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x7, 0x3, 0x4, x3, 1340, x4)
+
+inst_350:
+// rs1_val==3 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x2f, 0x3, 0x2c, x3, 1344, x4)
+
+inst_351:
+// rs1_val==3 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x3, 0x3, 0x0, x3, 1348, x4)
+
+inst_352:
+// rs1_val==3 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x666, 0x3, 0x665, x3, 1352, x4)
+
+inst_353:
+// rs1_val==3 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x331, 0x3, 0x332, x3, 1356, x4)
+
+inst_354:
+// rs1_val==3 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x557, 0x3, 0x554, x3, 1360, x4)
+
+inst_355:
+// rs1_val==3 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x1, 0x3, 0x2, x3, 1364, x4)
+
+inst_356:
+// rs1_val==3 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x2e, 0x3, 0x2d, x3, 1368, x4)
+
+inst_357:
+// rs1_val==3 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffffffd0, 0x3, -0x2d, x3, 1372, x4)
+
+inst_358:
+// rs1_val==3 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x665, 0x3, 0x666, x3, 1376, x4)
+
+inst_359:
+// rs1_val==3 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x330, 0x3, 0x333, x3, 1380, x4)
+
+inst_360:
+// rs1_val==3 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x6, 0x3, 0x5, x3, 1384, x4)
+
+inst_361:
+// rs1_val==3 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xfffffaa9, 0x3, -0x556, x3, 1388, x4)
+
+inst_362:
+// rs1_val==3 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x556, 0x3, 0x555, x3, 1392, x4)
+
+inst_363:
+// rs1_val==3 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x3; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x0, 0x3, 0x3, x3, 1396, x4)
+
+inst_364:
+// rs1_val==1717986917 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x66666665, 0x66666665, 0x0, x3, 1400, x4)
+
+inst_365:
+// rs1_val==1717986917 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x66666000, 0x66666665, 0x665, x3, 1404, x4)
+
+inst_366:
+// rs1_val==1717986917 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x66666557, 0x66666665, 0x332, x3, 1408, x4)
+
+inst_367:
+// rs1_val==1717986917 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x66666331, 0x66666665, 0x554, x3, 1412, x4)
+
+inst_368:
+// rs1_val==1717986917 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x66666667, 0x66666665, 0x2, x3, 1416, x4)
+
+inst_369:
+// rs1_val==1717986917 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x66666648, 0x66666665, 0x2d, x3, 1420, x4)
+
+inst_370:
+// rs1_val==1717986917 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0x999999b6, 0x66666665, -0x2d, x3, 1424, x4)
+
+inst_371:
+// rs1_val==1717986917 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x66666003, 0x66666665, 0x666, x3, 1428, x4)
+
+inst_372:
+// rs1_val==1717986917 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x66666556, 0x66666665, 0x333, x3, 1432, x4)
+
+inst_373:
+// rs1_val==1717986917 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x66666660, 0x66666665, 0x5, x3, 1436, x4)
+
+inst_374:
+// rs1_val==1717986917 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0x99999ccf, 0x66666665, -0x556, x3, 1440, x4)
+
+inst_375:
+// rs1_val==1717986917 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x66666330, 0x66666665, 0x555, x3, 1444, x4)
+
+inst_376:
+// rs1_val==1717986917 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666665; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x66666666, 0x66666665, 0x3, x3, 1448, x4)
+
+inst_377:
+// rs1_val==858993458 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x3333331c, 0x33333332, 0x2e, x3, 1452, x4)
+
+inst_378:
+// rs1_val==858993458 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xcccccce6, 0x33333332, -0x2c, x3, 1456, x4)
+
+inst_379:
+// rs1_val==858993458 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x33333555, 0x33333332, 0x667, x3, 1460, x4)
+
+inst_380:
+// rs1_val==858993458 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x33333006, 0x33333332, 0x334, x3, 1464, x4)
+
+inst_381:
+// rs1_val==858993458 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x33333334, 0x33333332, 0x6, x3, 1468, x4)
+
+inst_382:
+// rs1_val==858993458 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xccccc999, 0x33333332, -0x555, x3, 1472, x4)
+
+inst_383:
+// rs1_val==858993458 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x33333664, 0x33333332, 0x556, x3, 1476, x4)
+
+inst_384:
+// rs1_val==858993458 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x33333336, 0x33333332, 0x4, x3, 1480, x4)
+
+inst_385:
+// rs1_val==858993458 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x3333331e, 0x33333332, 0x2c, x3, 1484, x4)
+
+inst_386:
+// rs1_val==858993458 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x33333332, 0x33333332, 0x0, x3, 1488, x4)
+
+inst_387:
+// rs1_val==858993458 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x33333557, 0x33333332, 0x665, x3, 1492, x4)
+
+inst_388:
+// rs1_val==858993458 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x33333000, 0x33333332, 0x332, x3, 1496, x4)
+
+inst_389:
+// rs1_val==858993458 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x33333666, 0x33333332, 0x554, x3, 1500, x4)
+
+inst_390:
+// rs1_val==858993458 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x33333330, 0x33333332, 0x2, x3, 1504, x4)
+
+inst_391:
+// rs1_val==858993458 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x3333331f, 0x33333332, 0x2d, x3, 1508, x4)
+
+inst_392:
+// rs1_val==858993458 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xcccccce1, 0x33333332, -0x2d, x3, 1512, x4)
+
+inst_393:
+// rs1_val==858993458 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x33333554, 0x33333332, 0x666, x3, 1516, x4)
+
+inst_394:
+// rs1_val==858993458 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x33333001, 0x33333332, 0x333, x3, 1520, x4)
+
+inst_395:
+// rs1_val==858993458 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x33333337, 0x33333332, 0x5, x3, 1524, x4)
+
+inst_396:
+// rs1_val==858993458 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xccccc998, 0x33333332, -0x556, x3, 1528, x4)
+
+inst_397:
+// rs1_val==858993458 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x33333667, 0x33333332, 0x555, x3, 1532, x4)
+
+inst_398:
+// rs1_val==858993458 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333332; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x33333331, 0x33333332, 0x3, x3, 1536, x4)
+
+inst_399:
+// rs1_val==1431655764 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x5555557a, 0x55555554, 0x2e, x3, 1540, x4)
+
+inst_400:
+// rs1_val==1431655764 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa80, 0x55555554, -0x2c, x3, 1544, x4)
+
+inst_401:
+// rs1_val==1431655764 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x55555333, 0x55555554, 0x667, x3, 1548, x4)
+
+inst_402:
+// rs1_val==1431655764 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x55555660, 0x55555554, 0x334, x3, 1552, x4)
+
+inst_403:
+// rs1_val==1431655764 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x55555552, 0x55555554, 0x6, x3, 1556, x4)
+
+inst_404:
+// rs1_val==1431655764 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xaaaaafff, 0x55555554, -0x555, x3, 1560, x4)
+
+inst_405:
+// rs1_val==1431655764 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x55555002, 0x55555554, 0x556, x3, 1564, x4)
+
+inst_406:
+// rs1_val==1431655764 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x55555550, 0x55555554, 0x4, x3, 1568, x4)
+
+inst_407:
+// rs1_val==1431655764 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x55555578, 0x55555554, 0x2c, x3, 1572, x4)
+
+inst_408:
+// rs1_val==1431655764 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x55555554, 0x55555554, 0x0, x3, 1576, x4)
+
+inst_409:
+// rs1_val==1431655764 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x55555331, 0x55555554, 0x665, x3, 1580, x4)
+
+inst_410:
+// rs1_val==1431655764 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x55555666, 0x55555554, 0x332, x3, 1584, x4)
+
+inst_411:
+// rs1_val==1431655764 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x55555000, 0x55555554, 0x554, x3, 1588, x4)
+
+inst_412:
+// rs1_val==1431655764 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x55555556, 0x55555554, 0x2, x3, 1592, x4)
+
+inst_413:
+// rs1_val==1431655764 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x55555579, 0x55555554, 0x2d, x3, 1596, x4)
+
+inst_414:
+// rs1_val==1431655764 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa87, 0x55555554, -0x2d, x3, 1600, x4)
+
+inst_415:
+// rs1_val==1431655764 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x55555332, 0x55555554, 0x666, x3, 1604, x4)
+
+inst_416:
+// rs1_val==1431655764 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x55555667, 0x55555554, 0x333, x3, 1608, x4)
+
+inst_417:
+// rs1_val==1431655764 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x55555551, 0x55555554, 0x5, x3, 1612, x4)
+
+inst_418:
+// rs1_val==1431655764 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaffe, 0x55555554, -0x556, x3, 1616, x4)
+
+inst_419:
+// rs1_val==1431655764 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x55555001, 0x55555554, 0x555, x3, 1620, x4)
+
+inst_420:
+// rs1_val==1431655764 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x55555554; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x55555557, 0x55555554, 0x3, x3, 1624, x4)
+
+inst_421:
+// rs1_val==2 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x2c, 0x2, 0x2e, x3, 1628, x4)
+
+inst_422:
+// rs1_val==2 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffffffd6, 0x2, -0x2c, x3, 1632, x4)
+
+inst_423:
+// rs1_val==2 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x665, 0x2, 0x667, x3, 1636, x4)
+
+inst_424:
+// rs1_val==2 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x336, 0x2, 0x334, x3, 1640, x4)
+
+inst_425:
+// rs1_val==2 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x4, 0x2, 0x6, x3, 1644, x4)
+
+inst_426:
+// rs1_val==2 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xfffffaa9, 0x2, -0x555, x3, 1648, x4)
+
+inst_427:
+// rs1_val==2 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x554, 0x2, 0x556, x3, 1652, x4)
+
+inst_428:
+// rs1_val==2 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x6, 0x2, 0x4, x3, 1656, x4)
+
+inst_429:
+// rs1_val==2 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x2e, 0x2, 0x2c, x3, 1660, x4)
+
+inst_430:
+// rs1_val==2 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x2, 0x2, 0x0, x3, 1664, x4)
+
+inst_431:
+// rs1_val==2 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x667, 0x2, 0x665, x3, 1668, x4)
+
+inst_432:
+// rs1_val==2 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x330, 0x2, 0x332, x3, 1672, x4)
+
+inst_433:
+// rs1_val==2 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x0, 0x2, 0x2, x3, 1676, x4)
+
+inst_434:
+// rs1_val==2 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x2f, 0x2, 0x2d, x3, 1680, x4)
+
+inst_435:
+// rs1_val==2 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffffffd1, 0x2, -0x2d, x3, 1684, x4)
+
+inst_436:
+// rs1_val==2 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x664, 0x2, 0x666, x3, 1688, x4)
+
+inst_437:
+// rs1_val==2 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x331, 0x2, 0x333, x3, 1692, x4)
+
+inst_438:
+// rs1_val==2 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x7, 0x2, 0x5, x3, 1696, x4)
+
+inst_439:
+// rs1_val==2 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xfffffaa8, 0x2, -0x556, x3, 1700, x4)
+
+inst_440:
+// rs1_val==2 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x557, 0x2, 0x555, x3, 1704, x4)
+
+inst_441:
+// rs1_val==2 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x2; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x1, 0x2, 0x3, x3, 1708, x4)
+
+inst_442:
+// rs1_val==46340 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0xb52a, 0xb504, 0x2e, x3, 1712, x4)
+
+inst_443:
+// rs1_val==46340 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad0, 0xb504, -0x2c, x3, 1716, x4)
+
+inst_444:
+// rs1_val==46340 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0xb363, 0xb504, 0x667, x3, 1720, x4)
+
+inst_445:
+// rs1_val==46340 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0xb630, 0xb504, 0x334, x3, 1724, x4)
+
+inst_446:
+// rs1_val==46340 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0xb502, 0xb504, 0x6, x3, 1728, x4)
+
+inst_447:
+// rs1_val==46340 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xffff4faf, 0xb504, -0x555, x3, 1732, x4)
+
+inst_448:
+// rs1_val==46340 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0xb052, 0xb504, 0x556, x3, 1736, x4)
+
+inst_449:
+// rs1_val==46340 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0xb500, 0xb504, 0x4, x3, 1740, x4)
+
+inst_450:
+// rs1_val==46340 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0xb528, 0xb504, 0x2c, x3, 1744, x4)
+
+inst_451:
+// rs1_val==46340 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0xb504, 0xb504, 0x0, x3, 1748, x4)
+
+inst_452:
+// rs1_val==46340 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0xb361, 0xb504, 0x665, x3, 1752, x4)
+
+inst_453:
+// rs1_val==46340 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0xb636, 0xb504, 0x332, x3, 1756, x4)
+
+inst_454:
+// rs1_val==46340 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xb050, 0xb504, 0x554, x3, 1760, x4)
+
+inst_455:
+// rs1_val==46340 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0xb506, 0xb504, 0x2, x3, 1764, x4)
+
+inst_456:
+// rs1_val==46340 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0xb529, 0xb504, 0x2d, x3, 1768, x4)
+
+inst_457:
+// rs1_val==46340 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad7, 0xb504, -0x2d, x3, 1772, x4)
+
+inst_458:
+// rs1_val==46340 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0xb362, 0xb504, 0x666, x3, 1776, x4)
+
+inst_459:
+// rs1_val==46340 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0xb637, 0xb504, 0x333, x3, 1780, x4)
+
+inst_460:
+// rs1_val==46340 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0xb501, 0xb504, 0x5, x3, 1784, x4)
+
+inst_461:
+// rs1_val==46340 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xffff4fae, 0xb504, -0x556, x3, 1788, x4)
+
+inst_462:
+// rs1_val==46340 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0xb051, 0xb504, 0x555, x3, 1792, x4)
+
+inst_463:
+// rs1_val==46340 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0xb504; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xb507, 0xb504, 0x3, x3, 1796, x4)
+
+inst_464:
+// rs1_val==-46340 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad2, -0xb504, 0x2e, x3, 1800, x4)
+
+inst_465:
+// rs1_val==-46340 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xb528, -0xb504, -0x2c, x3, 1804, x4)
+
+inst_466:
+// rs1_val==-46340 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0xffff4c9b, -0xb504, 0x667, x3, 1808, x4)
+
+inst_467:
+// rs1_val==-46340 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0xffff49c8, -0xb504, 0x334, x3, 1812, x4)
+
+inst_468:
+// rs1_val==-46340 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0xffff4afa, -0xb504, 0x6, x3, 1816, x4)
+
+inst_469:
+// rs1_val==-46340 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xb057, -0xb504, -0x555, x3, 1820, x4)
+
+inst_470:
+// rs1_val==-46340 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0xffff4faa, -0xb504, 0x556, x3, 1824, x4)
+
+inst_471:
+// rs1_val==-46340 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0xffff4af8, -0xb504, 0x4, x3, 1828, x4)
+
+inst_472:
+// rs1_val==-46340 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad0, -0xb504, 0x2c, x3, 1832, x4)
+
+inst_473:
+// rs1_val==-46340 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0xffff4afc, -0xb504, 0x0, x3, 1836, x4)
+
+inst_474:
+// rs1_val==-46340 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0xffff4c99, -0xb504, 0x665, x3, 1840, x4)
+
+inst_475:
+// rs1_val==-46340 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0xffff49ce, -0xb504, 0x332, x3, 1844, x4)
+
+inst_476:
+// rs1_val==-46340 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0xffff4fa8, -0xb504, 0x554, x3, 1848, x4)
+
+inst_477:
+// rs1_val==-46340 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0xffff4afe, -0xb504, 0x2, x3, 1852, x4)
+
+inst_478:
+// rs1_val==-46340 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffff4ad1, -0xb504, 0x2d, x3, 1856, x4)
+
+inst_479:
+// rs1_val==-46340 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xb52f, -0xb504, -0x2d, x3, 1860, x4)
+
+inst_480:
+// rs1_val==-46340 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0xffff4c9a, -0xb504, 0x666, x3, 1864, x4)
+
+inst_481:
+// rs1_val==-46340 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0xffff49cf, -0xb504, 0x333, x3, 1868, x4)
+
+inst_482:
+// rs1_val==-46340 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0xffff4af9, -0xb504, 0x5, x3, 1872, x4)
+
+inst_483:
+// rs1_val==-46340 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xb056, -0xb504, -0x556, x3, 1876, x4)
+
+inst_484:
+// rs1_val==-46340 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0xffff4fa9, -0xb504, 0x555, x3, 1880, x4)
+
+inst_485:
+// rs1_val==-46340 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0xb504; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0xffff4aff, -0xb504, 0x3, x3, 1884, x4)
+
+inst_486:
+// rs1_val==1717986918 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x66666648, 0x66666666, 0x2e, x3, 1888, x4)
+
+inst_487:
+// rs1_val==1717986918 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0x999999b2, 0x66666666, -0x2c, x3, 1892, x4)
+
+inst_488:
+// rs1_val==1717986918 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x66666001, 0x66666666, 0x667, x3, 1896, x4)
+
+inst_489:
+// rs1_val==1717986918 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x66666552, 0x66666666, 0x334, x3, 1900, x4)
+
+inst_490:
+// rs1_val==1717986918 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x66666660, 0x66666666, 0x6, x3, 1904, x4)
+
+inst_491:
+// rs1_val==1717986918 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0x99999ccd, 0x66666666, -0x555, x3, 1908, x4)
+
+inst_492:
+// rs1_val==1717986918 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x66666330, 0x66666666, 0x556, x3, 1912, x4)
+
+inst_493:
+// rs1_val==1717986918 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x66666662, 0x66666666, 0x4, x3, 1916, x4)
+
+inst_494:
+// rs1_val==1717986918 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x6666664a, 0x66666666, 0x2c, x3, 1920, x4)
+
+inst_495:
+// rs1_val==1717986918 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x66666666, 0x66666666, 0x0, x3, 1924, x4)
+
+inst_496:
+// rs1_val==1717986918 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x66666003, 0x66666666, 0x665, x3, 1928, x4)
+
+inst_497:
+// rs1_val==1717986918 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x66666554, 0x66666666, 0x332, x3, 1932, x4)
+
+inst_498:
+// rs1_val==1717986918 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x66666332, 0x66666666, 0x554, x3, 1936, x4)
+
+inst_499:
+// rs1_val==1717986918 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x66666664, 0x66666666, 0x2, x3, 1940, x4)
+
+inst_500:
+// rs1_val==1717986918 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x6666664b, 0x66666666, 0x2d, x3, 1944, x4)
+
+inst_501:
+// rs1_val==1717986918 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0x999999b5, 0x66666666, -0x2d, x3, 1948, x4)
+
+inst_502:
+// rs1_val==1717986918 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x66666000, 0x66666666, 0x666, x3, 1952, x4)
+
+inst_503:
+// rs1_val==1717986918 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x66666555, 0x66666666, 0x333, x3, 1956, x4)
+
+inst_504:
+// rs1_val==1717986918 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x66666663, 0x66666666, 0x5, x3, 1960, x4)
+
+inst_505:
+// rs1_val==1717986918 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0x99999ccc, 0x66666666, -0x556, x3, 1964, x4)
+
+inst_506:
+// rs1_val==1717986918 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x66666333, 0x66666666, 0x555, x3, 1968, x4)
+
+inst_507:
+// rs1_val==1717986918 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x66666666; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x66666665, 0x66666666, 0x3, x3, 1972, x4)
+
+inst_508:
+// rs1_val==858993459 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x3333331d, 0x33333333, 0x2e, x3, 1976, x4)
+
+inst_509:
+// rs1_val==858993459 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xcccccce7, 0x33333333, -0x2c, x3, 1980, x4)
+
+inst_510:
+// rs1_val==858993459 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x33333554, 0x33333333, 0x667, x3, 1984, x4)
+
+inst_511:
+// rs1_val==858993459 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x33333007, 0x33333333, 0x334, x3, 1988, x4)
+
+inst_512:
+// rs1_val==858993459 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x33333335, 0x33333333, 0x6, x3, 1992, x4)
+
+inst_513:
+// rs1_val==858993459 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xccccc998, 0x33333333, -0x555, x3, 1996, x4)
+
+inst_514:
+// rs1_val==858993459 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x33333665, 0x33333333, 0x556, x3, 2000, x4)
+
+inst_515:
+// rs1_val==858993459 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x33333337, 0x33333333, 0x4, x3, 2004, x4)
+
+inst_516:
+// rs1_val==858993459 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x3333331f, 0x33333333, 0x2c, x3, 2008, x4)
+
+inst_517:
+// rs1_val==858993459 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x33333333, 0x33333333, 0x0, x3, 2012, x4)
+
+inst_518:
+// rs1_val==858993459 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x33333556, 0x33333333, 0x665, x3, 2016, x4)
+
+inst_519:
+// rs1_val==858993459 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x33333001, 0x33333333, 0x332, x3, 2020, x4)
+
+inst_520:
+// rs1_val==858993459 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x33333667, 0x33333333, 0x554, x3, 2024, x4)
+
+inst_521:
+// rs1_val==858993459 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x33333331, 0x33333333, 0x2, x3, 2028, x4)
+
+inst_522:
+// rs1_val==858993459 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x3333331e, 0x33333333, 0x2d, x3, 2032, x4)
+
+inst_523:
+// rs1_val==858993459 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xcccccce0, 0x33333333, -0x2d, x3, 2036, x4)
+
+inst_524:
+// rs1_val==858993459 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x33333555, 0x33333333, 0x666, x3, 2040, x4)
+
+inst_525:
+// rs1_val==858993459 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x33333000, 0x33333333, 0x333, x3, 2044, x4)
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_526:
+// rs1_val==858993459 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x33333336, 0x33333333, 0x5, x3, 0, x4)
+
+inst_527:
+// rs1_val==858993459 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xccccc999, 0x33333333, -0x556, x3, 4, x4)
+
+inst_528:
+// rs1_val==858993459 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x33333666, 0x33333333, 0x555, x3, 8, x4)
+
+inst_529:
+// rs1_val==858993459 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x33333333; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x33333330, 0x33333333, 0x3, x3, 12, x4)
+
+inst_530:
+// rs1_val==5 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0x2b, 0x5, 0x2e, x3, 16, x4)
+
+inst_531:
+// rs1_val==5 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0xffffffd1, 0x5, -0x2c, x3, 20, x4)
+
+inst_532:
+// rs1_val==5 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0x662, 0x5, 0x667, x3, 24, x4)
+
+inst_533:
+// rs1_val==5 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0x331, 0x5, 0x334, x3, 28, x4)
+
+inst_534:
+// rs1_val==5 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0x3, 0x5, 0x6, x3, 32, x4)
+
+inst_535:
+// rs1_val==5 and imm_val==-1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:-0x555
+TEST_IMM_OP( xori, x11, x10, 0xfffffaae, 0x5, -0x555, x3, 36, x4)
+
+inst_536:
+// rs1_val==5 and imm_val==1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x556
+TEST_IMM_OP( xori, x11, x10, 0x553, 0x5, 0x556, x3, 40, x4)
+
+inst_537:
+// rs1_val==5 and imm_val==4,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x4
+TEST_IMM_OP( xori, x11, x10, 0x1, 0x5, 0x4, x3, 44, x4)
+
+inst_538:
+// rs1_val==5 and imm_val==44,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x2c
+TEST_IMM_OP( xori, x11, x10, 0x29, 0x5, 0x2c, x3, 48, x4)
+
+inst_539:
+// rs1_val==5 and imm_val==0,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0x5, 0x5, 0x0, x3, 52, x4)
+
+inst_540:
+// rs1_val==5 and imm_val==1637,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x665
+TEST_IMM_OP( xori, x11, x10, 0x660, 0x5, 0x665, x3, 56, x4)
+
+inst_541:
+// rs1_val==5 and imm_val==818,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x332
+TEST_IMM_OP( xori, x11, x10, 0x337, 0x5, 0x332, x3, 60, x4)
+
+inst_542:
+// rs1_val==5 and imm_val==1364,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x554
+TEST_IMM_OP( xori, x11, x10, 0x551, 0x5, 0x554, x3, 64, x4)
+
+inst_543:
+// rs1_val==5 and imm_val==2,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x2
+TEST_IMM_OP( xori, x11, x10, 0x7, 0x5, 0x2, x3, 68, x4)
+
+inst_544:
+// rs1_val==5 and imm_val==45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x2d
+TEST_IMM_OP( xori, x11, x10, 0x28, 0x5, 0x2d, x3, 72, x4)
+
+inst_545:
+// rs1_val==5 and imm_val==-45,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:-0x2d
+TEST_IMM_OP( xori, x11, x10, 0xffffffd6, 0x5, -0x2d, x3, 76, x4)
+
+inst_546:
+// rs1_val==5 and imm_val==1638,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x666
+TEST_IMM_OP( xori, x11, x10, 0x663, 0x5, 0x666, x3, 80, x4)
+
+inst_547:
+// rs1_val==5 and imm_val==819,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x333
+TEST_IMM_OP( xori, x11, x10, 0x336, 0x5, 0x333, x3, 84, x4)
+
+inst_548:
+// rs1_val==5 and imm_val==5,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x5
+TEST_IMM_OP( xori, x11, x10, 0x0, 0x5, 0x5, x3, 88, x4)
+
+inst_549:
+// rs1_val==5 and imm_val==-1366,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:-0x556
+TEST_IMM_OP( xori, x11, x10, 0xfffffaaf, 0x5, -0x556, x3, 92, x4)
+
+inst_550:
+// rs1_val==5 and imm_val==1365,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x555
+TEST_IMM_OP( xori, x11, x10, 0x550, 0x5, 0x555, x3, 96, x4)
+
+inst_551:
+// rs1_val==5 and imm_val==3,
+// opcode: xori ; op1:x10; dest:x11; op1val:0x5; immval:0x3
+TEST_IMM_OP( xori, x11, x10, 0x6, 0x5, 0x3, x3, 100, x4)
+
+inst_552:
+// rs1_val==-1431655766 and imm_val==46,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x2e
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaa84, -0x55555556, 0x2e, x3, 104, x4)
+
+inst_553:
+// rs1_val==-1431655766 and imm_val==-44,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:-0x2c
+TEST_IMM_OP( xori, x11, x10, 0x5555557e, -0x55555556, -0x2c, x3, 108, x4)
+
+inst_554:
+// rs1_val==-1431655766 and imm_val==1639,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x667
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaccd, -0x55555556, 0x667, x3, 112, x4)
+
+inst_555:
+// rs1_val==-1431655766 and imm_val==820,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x334
+TEST_IMM_OP( xori, x11, x10, 0xaaaaa99e, -0x55555556, 0x334, x3, 116, x4)
+
+inst_556:
+// rs1_val==-1431655766 and imm_val==6,
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x55555556; immval:0x6
+TEST_IMM_OP( xori, x11, x10, 0xaaaaaaac, -0x55555556, 0x6, x3, 120, x4)
+
+inst_557:
+// rs1_val == -65537, imm_val == 512
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x10001; immval:0x200
+TEST_IMM_OP( xori, x11, x10, 0xfffefdff, -0x10001, 0x200, x3, 124, x4)
+
+inst_558:
+// rs1_val == -32769, imm_val == 0
+// opcode: xori ; op1:x10; dest:x11; op1val:-0x8001; immval:0x0
+TEST_IMM_OP( xori, x11, x10, 0xffff7fff, -0x8001, 0x0, x3, 128, x4)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_0:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 33*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/Makefile
new file mode 100644
index 000000000..69e58e890
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32em -mabi=ilp32e -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/Makefrag
new file mode 100644
index 000000000..fc4cc1989
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/Makefrag
@@ -0,0 +1,43 @@
+# RISC-V Architecture Test RV32EM Makefrag
+#
+# Copyright (c) 2018, Imperas Software Ltd.
+# Copyright (c) 2020, InCore Semiconductors. Pvt. Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Imperas Software Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Imperas Software Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV32EM architectural tests
+
+rv32em_sc_tests = \
+ div-01 \
+ divu-01 \
+ mul-01 \
+ mulh-01 \
+ mulhsu-01 \
+ mulhu-01 \
+ rem-01 \
+ remu-01
+
+rv32em_tests = $(addsuffix .elf, $(rv32em_sc_tests))
+
+target_tests += $(rv32em_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/div-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/div-01.reference_output
new file mode 100644
index 000000000..68ea59019
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/div-01.reference_output
@@ -0,0 +1,581 @@
+00000000
+00000000
+00000001
+00000001
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffd56
+00000000
+00000000
+00000000
+00000001
+00000000
+fffffe01
+00000000
+00000000
+00000000
+00000000
+00000000
+00001ff0
+ffccffcd
+0000003f
+ff03f040
+00f83e0f
+fffc3c3d
+0038e38e
+00019999
+000aaaab
+fc000000
+ffffffc1
+00007fff
+fffe0000
+02aaaaab
+00000001
+0000003f
+ffff8000
+00000000
+00000000
+00000000
+00000000
+00000007
+000000e3
+00000092
+00000000
+00000081
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000333
+00000000
+00000000
+00000000
+0000aaaa
+00000000
+00000000
+00033333
+00000000
+00000008
+00000004
+00000002
+00000000
+08000000
+00000002
+40000000
+ffffffff
+00000000
+00000100
+00000000
+fffff002
+00000000
+fffffe01
+00000000
+00000040
+00002aaa
+00000000
+fffffff1
+00000000
+00000000
+00000020
+00000000
+00000001
+ffffffff
+00000000
+00000000
+00001e2b
+00000000
+00000000
+00002d41
+00000001
+ffffffff
+00000000
+00000000
+00000000
+00005a82
+00000001
+ffffffff
+00000000
+00000000
+00002434
+00000000
+00000000
+00003c57
+00000000
+00000001
+00000000
+00000000
+ffffe1d5
+00000000
+00000000
+ffffd2c0
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+ffffa57f
+00000000
+00000000
+00000000
+00000000
+ffffdbcd
+00000000
+00000000
+ffffc3aa
+000090d0
+ffff6f2e
+00000001
+00000001
+11111111
+ffffffff
+00000001
+19999999
+000090d2
+ffffffff
+00000001
+00000002
+00000001
+33333333
+000090d1
+ffff6f2f
+00000001
+00000002
+147ae147
+ffffffff
+00000001
+22222222
+00004868
+ffffb797
+00000000
+00000001
+08888888
+00000000
+00000000
+0ccccccd
+00004869
+ffffffff
+00000000
+00000001
+00000000
+1999999a
+00004868
+ffffb798
+00000000
+00000001
+0a3d70a4
+00000000
+00000000
+11111111
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000002
+ffff8753
+000078af
+00000000
+ffffffff
+f1c71c72
+00000001
+00000000
+eaaaaaab
+ffff8751
+ffffffff
+00000000
+ffffffff
+ffffffff
+d5555556
+ffff8752
+000078ae
+00000000
+ffffffff
+eeeeeeef
+00000000
+ffffffff
+e38e38e4
+000078ad
+ffff8751
+00000000
+00000001
+0e38e38e
+ffffffff
+00000001
+15555555
+000078af
+ffffffff
+00000000
+00000001
+00000001
+2aaaaaab
+000078ae
+ffff8752
+00000000
+00000001
+11111111
+ffffffff
+00000001
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00001e2b
+00000000
+00000000
+00002d40
+00000001
+ffffffff
+00000000
+00000000
+00000000
+00005a81
+00000000
+00000000
+00000000
+00000000
+00002433
+00000000
+00000000
+00003c56
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+000090d0
+ffff6f2e
+00000000
+00000001
+11111110
+ffffffff
+00000001
+19999999
+000090d2
+ffffffff
+00000000
+00000001
+00000000
+19999999
+00004868
+ffffb798
+00000000
+00000001
+0a3d70a3
+00000000
+00000000
+11111111
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+ffff8753
+000078af
+00000000
+ffffffff
+f1c71c72
+00000001
+ffffffff
+eaaaaaab
+ffff8751
+ffffffff
+00000000
+ffffffff
+ffffffff
+d5555555
+ffff8752
+000078ae
+00000000
+ffffffff
+eeeeeeef
+00000001
+ffffffff
+e38e38e4
+000078ad
+ffff8751
+00000000
+00000001
+0e38e38e
+ffffffff
+00000000
+15555555
+000078af
+ffffffff
+00000000
+00000001
+00000001
+2aaaaaaa
+000078ae
+ffff8752
+00000000
+00000001
+11111111
+00000000
+00000001
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+ffffffff
+00000001
+00000002
+00000001
+33333332
+000090d1
+ffff6f2f
+00000000
+00000001
+147ae147
+ffffffff
+00000001
+22222221
+00004868
+ffffb797
+00000000
+00000000
+08888888
+00000000
+00000000
+0ccccccc
+00004869
+ffffffff
+00000000
+00000001
+00000000
+19999999
+00004868
+ffffb798
+00000000
+00000000
+0a3d70a3
+00000000
+00000000
+11111110
+000078ad
+ffff8751
+00000000
+00000001
+0e38e38e
+00000000
+00000000
+15555555
+000078af
+ffffffff
+00000000
+00000001
+00000001
+2aaaaaaa
+000078ae
+ffff8752
+00000000
+00000001
+11111110
+00000000
+00000000
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00001e2b
+00000000
+00000000
+00002d41
+00000001
+ffffffff
+00000000
+00000000
+00000000
+00005a82
+00000001
+ffffffff
+00000000
+00000000
+00002434
+00000000
+00000000
+00003c56
+00000000
+00000001
+00000000
+00000000
+ffffe1d5
+00000000
+00000000
+ffffd2bf
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+ffffa57e
+ffffffff
+00000001
+00000000
+00000000
+ffffdbcc
+00000000
+00000000
+ffffc3aa
+000090d0
+ffff6f2e
+00000000
+00000001
+11111111
+ffffffff
+00000001
+19999999
+000090d2
+ffffffff
+00000001
+00000002
+00000001
+33333333
+000090d1
+ffff6f2f
+00000001
+00000002
+147ae147
+ffffffff
+00000001
+22222222
+00004868
+ffffb797
+00000000
+00000000
+08888888
+00000000
+00000000
+0ccccccc
+00004869
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/divu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/divu-01.reference_output
new file mode 100644
index 000000000..76f0e23b0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/divu-01.reference_output
@@ -0,0 +1,729 @@
+00000000
+00000000
+00000001
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+3fffffff
+00000000
+0001536c
+00000000
+00000007
+00000001
+00000002
+0000003f
+00000001
+2aa7ffff
+33326666
+0f0effff
+00000000
+1ffff7ff
+00000001
+00000000
+249248db
+00000002
+24924922
+00000001
+3ffffffe
+00000002
+00000001
+00000000
+00000000
+0000007f
+00000055
+00000008
+00000000
+00000000
+00000000
+00000aaa
+00000000
+00001999
+0000ffff
+0001ffff
+00002000
+00000000
+000fffff
+00000040
+00000080
+00000800
+00efffff
+0000016a
+00000000
+01000000
+0fffefff
+7fffffdf
+00080000
+0ba2e8ba
+00040000
+00001000
+00000000
+00800000
+00000000
+00000000
+00000000
+00000000
+00000666
+000000f0
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00010000
+00000001
+00000000
+00000000
+00002aaa
+00000000
+00000000
+00004000
+00000001
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00008000
+00000001
+00000001
+00000000
+00000000
+00003333
+00000000
+00000000
+00005555
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000b505
+00000001
+00000000
+00000000
+00001e2b
+00000000
+00000000
+00002d41
+00000000
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00005a82
+00000000
+00000001
+00000000
+00000000
+00002434
+00000000
+00000000
+00003c57
+00006666
+66666667
+000090d0
+00000001
+00000001
+11111111
+00000000
+00000001
+19999999
+00006667
+ffffffff
+000090d2
+00000001
+00000002
+00000000
+00000001
+33333333
+00006666
+000090d1
+00000001
+00000002
+147ae147
+00000000
+00000001
+22222222
+00003333
+33333334
+00004868
+00000000
+00000001
+08888888
+00000000
+00000000
+0ccccccd
+00003333
+ffffffff
+00004869
+00000000
+00000001
+00000000
+00000000
+1999999a
+00003333
+00004868
+00000000
+00000001
+0a3d70a4
+00000000
+00000000
+11111111
+00000000
+00000006
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000002
+0000aaaa
+aaaaaaab
+0000f15b
+00000001
+00000003
+1c71c71c
+00000001
+00000001
+2aaaaaaa
+0000aaac
+ffffffff
+0000f15e
+00000001
+00000003
+00000001
+00000002
+55555555
+0000aaab
+0000f15d
+00000001
+00000003
+22222222
+00000001
+00000002
+38e38e39
+00005555
+55555556
+000078ad
+00000000
+00000001
+0e38e38e
+00000000
+00000001
+15555555
+00005556
+ffffffff
+000078af
+00000000
+00000001
+00000000
+00000001
+2aaaaaab
+00005555
+000078ae
+00000000
+00000001
+11111111
+00000000
+00000001
+1c71c71c
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+0000fffe
+00000001
+00000000
+00000000
+00002aaa
+00000000
+00000000
+00003fff
+00000001
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00007fff
+00000000
+00000001
+00000000
+00000000
+00003332
+00000000
+00000000
+00005554
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000b503
+00000000
+00000000
+00000000
+00001e2b
+00000000
+00000000
+00002d40
+00000000
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00005a81
+00000000
+00000000
+00000000
+00000000
+00002433
+00000000
+00000000
+00003c56
+00006666
+66666665
+000090d0
+00000000
+00000001
+11111110
+00000000
+00000001
+19999999
+00006667
+ffffffff
+000090d2
+00000001
+00000002
+00000000
+00000001
+33333332
+00006666
+000090d1
+00000000
+00000001
+147ae147
+00000000
+00000001
+22222221
+00003333
+33333332
+00004868
+00000000
+00000000
+08888888
+00000000
+00000000
+0ccccccc
+00003333
+ffffffff
+00004869
+00000000
+00000001
+00000000
+00000000
+19999999
+00003333
+00004868
+00000000
+00000000
+0a3d70a3
+00000000
+00000000
+11111110
+0000aaaa
+aaaaaaa9
+0000f15b
+00000001
+00000003
+1c71c71c
+00000000
+00000001
+2aaaaaaa
+0000aaac
+ffffffff
+0000f15e
+00000001
+00000003
+00000001
+00000002
+55555554
+0000aaab
+0000f15d
+00000001
+00000003
+15555555
+00005556
+ffffffff
+000078af
+00000000
+00000001
+00000000
+00000001
+2aaaaaaa
+00005555
+000078ae
+00000000
+00000001
+11111110
+00000000
+00000000
+1c71c71c
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000ffff
+00000001
+00000000
+00000000
+00002aaa
+00000000
+00000000
+00003fff
+00000001
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00007fff
+00000001
+00000001
+00000000
+00000000
+00003333
+00000000
+00000000
+00005555
+00000000
+0000b504
+00000000
+00000000
+00000000
+00001e2b
+00000000
+00000000
+00002d41
+00000000
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00005a82
+00000000
+00000001
+00000000
+00000000
+00002434
+00000000
+00000000
+00003c56
+00006666
+66666666
+000090d0
+00000000
+00000001
+11111111
+00000000
+00000001
+19999999
+00006667
+ffffffff
+000090d2
+00000001
+00000002
+00000000
+00000001
+33333333
+00006666
+000090d1
+00000001
+00000002
+147ae147
+00000000
+00000001
+22222222
+00003333
+33333333
+00004868
+00000000
+00000000
+08888888
+00000000
+00000000
+0ccccccc
+00003333
+ffffffff
+38e38e38
+00004869
+00000000
+00000001
+00000000
+00000000
+19999999
+00003333
+00004868
+00000000
+00000001
+0a3d70a3
+00000000
+00000000
+11111111
+00000000
+00000005
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+0000aaaa
+aaaaaaaa
+0000f15b
+00000001
+00000003
+1c71c71c
+00000000
+00000001
+2aaaaaaa
+0000aaac
+ffffffff
+0000f15e
+00000001
+00000003
+00000001
+00000002
+55555555
+0000aaab
+0000f15d
+00000001
+00000003
+22222222
+00000001
+00000002
+38e38e38
+00005555
+55555555
+000078ad
+00000000
+00000001
+0e38e38e
+00000000
+00000000
+15555555
+00005556
+ffffffff
+000078af
+00000000
+00000001
+00000000
+00000001
+2aaaaaaa
+00005555
+000078ae
+00000000
+00000001
+11111111
+00000000
+00000001
+1c71c71c
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+22222221
+00000000
+00000001
+00005555
+55555554
+000078ad
+00000000
+00000001
+0e38e38e
+00000000
+00000000
+00000001
+00000001
+00000000
+00000001
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mul-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mul-01.reference_output
new file mode 100644
index 000000000..66fcf6049
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mul-01.reference_output
@@ -0,0 +1,585 @@
+00000002
+2aaaaaab
+00000000
+00000040
+10000101
+00000000
+04080001
+edfffff7
+00000000
+00000000
+00000000
+666ccccd
+00000000
+01080001
+0001999a
+feffff80
+aaab5556
+00108001
+fffbfff0
+08002001
+02001001
+ffffc7f9
+f0000000
+cccccb99
+00000404
+ffbf8000
+04100041
+e0000000
+aaaaaaa5
+80000009
+ffffffe2
+00000033
+00000000
+fffc0000
+5ffffffb
+4aaaaaaa
+ffff0000
+c0800001
+ffcccccc
+00220001
+00044001
+000a0001
+10011001
+fffe0000
+80000000
+00202001
+00001001
+00000aac
+fffffccc
+fffffbfe
+fffdfc00
+ffd209fc
+000000a5
+ffffffb8
+fffffff1
+00000018
+fffffff0
+00000000
+00000000
+f0000000
+00000000
+00000000
+ec000000
+ff000000
+99800000
+01800000
+00000000
+00000000
+fff80000
+02000000
+00000000
+00020000
+fffff000
+fa57e000
+00000a00
+fffff600
+00020000
+00000000
+000000c0
+00000040
+04000000
+fffffffb
+80000000
+00000000
+fc000000
+06000000
+ff800000
+ffc00000
+00000000
+00140000
+6a080000
+00100000
+08000000
+00100000
+00000000
+fffff200
+55555540
+0000000c
+ffffffdf
+80001219
+800157f1
+6666d303
+3333c404
+00043e1e
+00003c57
+000078ae
+0002d414
+7ffea80f
+00000000
+666568f9
+333259fa
+ffff0ea4
+00016a0a
+7fff5d14
+8000a2ec
+66661dfe
+33330eff
+00038919
+ffff8752
+ffffc3a9
+00021f0f
+800157f1
+7ffd3e09
+6665f9cb
+3332a264
+fffbc1ee
+555518ff
+aaaa31fe
+fffd2bf4
+8002c1f7
+00000000
+666763d1
+33340c6a
+aaab9c04
+fffe95fa
+80020cf4
+7ffdf30c
+6666aece
+33335767
+fffc76f1
+5555ce02
+aaaae701
+fffde0f7
+6666d303
+6665f9cb
+d70a3d71
+1eb851ec
+6666666a
+cccccccd
+9999999a
+9999999c
+999a0635
+00000000
+0a3d70a3
+51eb851e
+cccccccc
+ccccccce
+00006c9c
+ffff9364
+70a3d70a
+b851eb85
+00000003
+66666666
+33333333
+33333335
+3333c404
+3332a264
+1eb851ec
+28f5c290
+33333338
+bbbbbbbc
+77777778
+ccccccd0
+cccd5d9c
+00000000
+b851eb84
+c28f5c28
+11111110
+66666668
+000090d0
+ffff6f30
+eb851eb8
+f5c28f5c
+00000004
+88888888
+44444444
+9999999c
+00043e1e
+fffbc1ee
+6666666a
+33333338
+00000024
+00000004
+00000018
+00043e12
+00000000
+6666665e
+3333332c
+fffffff8
+0000000c
+00043e18
+fffbc1e8
+66666664
+33333332
+0000001e
+fffffffc
+fffffffe
+00000012
+00003c57
+555518ff
+cccccccd
+bbbbbbbc
+00000002
+38e38e39
+71c71c72
+aaaaaaac
+aaaae701
+00000000
+77777777
+66666666
+1c71c71c
+55555556
+555591ac
+aaaa6e54
+22222222
+11111111
+55555557
+8e38e38e
+c71c71c7
+00000001
+000078ae
+aaaa31fe
+9999999a
+77777778
+00000004
+71c71c72
+e38e38e4
+55555558
+5555ce02
+00000000
+eeeeeeee
+cccccccc
+38e38e38
+aaaaaaac
+aaab2358
+5554dca8
+44444444
+22222222
+aaaaaaae
+1c71c71c
+8e38e38e
+00000002
+0002d414
+fffd2bf4
+9999999c
+ccccccd0
+00000018
+aaaaaaac
+55555558
+00000010
+0002d40c
+00000000
+99999994
+ccccccc8
+55555550
+00000008
+0002d410
+fffd2bf0
+99999998
+cccccccc
+00000014
+aaaaaaa8
+55555554
+0000000c
+7ffea80f
+8002c1f7
+999a0635
+cccd5d9c
+00043e12
+aaaae701
+5555ce02
+0002d40c
+7ffd3e09
+00000000
+99989c2f
+cccbf396
+555463fc
+00016a06
+7ffdf30c
+80020cf4
+99995132
+cccca899
+0003890f
+aaaa31fe
+555518ff
+00021f09
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+666568f9
+666763d1
+0a3d70a3
+b851eb84
+6666665e
+77777777
+eeeeeeee
+99999994
+00000000
+51eb851f
+8f5c28f6
+bbbbbbbc
+66666666
+ffffdbcc
+00002434
+851eb852
+c28f5c29
+ffffffff
+ddddddde
+eeeeeeef
+99999999
+00038919
+fffc76f1
+00000003
+00000004
+0000001e
+55555557
+aaaaaaae
+00000014
+0003890f
+00000000
+fffffff9
+fffffffa
+aaaaaaa4
+0000000a
+00038914
+fffc76ec
+fffffffe
+ffffffff
+00000019
+55555552
+aaaaaaa9
+0000000f
+ffff8752
+5555ce02
+66666666
+88888888
+fffffffc
+8e38e38e
+1c71c71c
+aaaaaaa8
+aaaa31fe
+00000000
+11111112
+33333334
+c71c71c8
+55555554
+5554dca8
+aaab2358
+bbbbbbbc
+ddddddde
+55555552
+e38e38e4
+71c71c72
+fffffffe
+ffffc3a9
+aaaae701
+33333333
+44444444
+fffffffe
+c71c71c7
+8e38e38e
+55555554
+555518ff
+00000000
+88888889
+9999999a
+e38e38e4
+aaaaaaaa
+aaaa6e54
+555591ac
+ddddddde
+eeeeeeef
+aaaaaaa9
+71c71c72
+38e38e39
+ffffffff
+00021f0f
+fffde0f7
+33333335
+9999999c
+00000012
+00000001
+00000002
+0000000c
+00021f09
+00000000
+3333332f
+99999996
+fffffffc
+00000006
+00021f0c
+fffde0f4
+33333332
+99999999
+0000000f
+fffffffe
+ffffffff
+00000009
+99989c2f
+00000000
+3d70a3d9
+eb851eba
+22222224
+ccccccca
+ffff0294
+0000fd6c
+a3d70a3e
+51eb851f
+fffffff9
+11111112
+88888889
+3333332f
+333259fa
+33340c6a
+51eb851e
+c28f5c28
+3333332c
+66666666
+cccccccc
+ccccccc8
+cccbf396
+00000000
+eb851eba
+5c28f5c4
+66666668
+66666664
+ffff26c8
+0000d938
+1eb851ec
+8f5c28f6
+fffffffa
+33333334
+9999999a
+99999996
+ffff0ea4
+aaab9c04
+cccccccc
+11111110
+fffffff8
+1c71c71c
+38e38e38
+55555550
+555463fc
+00000000
+22222224
+66666668
+8e38e390
+aaaaaaa8
+aaa9b950
+555646b0
+77777778
+bbbbbbbc
+aaaaaaa4
+c71c71c8
+e38e38e4
+fffffffc
+00016a0a
+fffe95fa
+ccccccce
+66666668
+55555556
+aaaaaaac
+00000008
+00016a06
+00000000
+ccccccca
+66666664
+aaaaaaa8
+00000004
+00016a08
+fffe95f8
+cccccccc
+66666666
+0000000a
+55555554
+aaaaaaaa
+00000006
+7fff5d14
+80020cf4
+00006c9c
+000090d0
+00043e18
+555591ac
+aaab2358
+0002d410
+7ffdf30c
+00000000
+ffff0294
+ffff26c8
+aaa9b950
+00016a08
+7ffea810
+800157f0
+ffffb798
+ffffdbcc
+00038914
+5554dca8
+aaaa6e54
+00021f0c
+8000a2ec
+7ffdf30c
+ffff9364
+ffff6f30
+fffbc1e8
+aaaa6e54
+5554dca8
+fffd2bf0
+80020cf4
+00000000
+0000fd6c
+0000d938
+555646b0
+fffe95f8
+800157f0
+7ffea810
+00004868
+00002434
+fffc76ec
+aaab2358
+555591ac
+fffde0f4
+66661dfe
+6666aece
+70a3d70a
+eb851eb8
+66666664
+22222222
+44444444
+99999998
+99995132
+00000000
+a3d70a3e
+1eb851ec
+77777778
+cccccccc
+ffffb798
+00004868
+0a3d70a4
+851eb852
+fffffffe
+bbbbbbbc
+ddddddde
+33333332
+33330eff
+33335767
+b851eb85
+f5c28f5c
+33333332
+11111111
+22222222
+cccccccc
+cccca899
+f8000000
+fffffff8
+fb7ffff7
+f7ffffe0
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulh-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulh-01.reference_output
new file mode 100644
index 000000000..dba60c2eb
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulh-01.reference_output
@@ -0,0 +1,591 @@
+ffffffff
+00005a81
+3fffffff
+00001000
+fccccccc
+fffffa57
+00000000
+00080000
+00000000
+ffdfffff
+ffefffff
+00040000
+fffccccc
+00000002
+fffffbff
+00000000
+ffffdfff
+fffff333
+fffff999
+ffffffff
+00000000
+ffffffff
+ffffffff
+ffffffff
+fffffff7
+00000000
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+000016a0
+fffff4af
+000002d4
+ff555555
+00002000
+ffe66666
+00000000
+ffffffff
+00000000
+fffeaaaa
+00000020
+ffffaaaa
+00000000
+fffffd55
+ffffffff
+00000002
+00000000
+ffffffd5
+00000015
+00000000
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+20000000
+00000001
+00000080
+ffbfffff
+fff7ffff
+00cccccc
+00200000
+00555555
+00000000
+00000016
+00000000
+0003ffff
+00000000
+ffffffff
+00000000
+00000fff
+00000002
+ffffffff
+fffffe00
+00000040
+00000000
+00000000
+ffffffff
+0000000c
+ffffffff
+ffffffff
+ffffffff
+00000000
+00005a81
+00000000
+00000001
+ffffffff
+ffaaaaaa
+ffd55555
+00080000
+00000000
+00000000
+00000000
+00000100
+ffffefff
+ffffffbf
+fffffaaa
+0000001f
+00000019
+fffffff8
+00000000
+00000000
+ffffffff
+00004868
+00002434
+00000000
+ffffc3a9
+00003c57
+00000000
+00000000
+00000000
+00004868
+00002434
+00003c56
+00000000
+00000000
+ffffffff
+00004868
+00002434
+00000000
+ffffc3a8
+00003c56
+00000000
+ffffffff
+00000000
+ffffb798
+ffffdbcc
+ffffffff
+00003c56
+ffffc3a9
+ffffffff
+ffffffff
+00000000
+ffffb798
+ffffdbcc
+ffffc3a9
+ffffffff
+ffffffff
+00000000
+ffffb798
+ffffdbcc
+ffffffff
+00003c56
+ffffc3a9
+ffffffff
+00004868
+ffffb798
+28f5c28f
+147ae148
+00000002
+dddddddd
+22222222
+00000001
+00004867
+00000000
+28f5c28f
+147ae147
+22222221
+00000000
+00004868
+ffffb797
+28f5c28f
+147ae147
+00000002
+dddddddd
+22222222
+00000001
+00002434
+ffffdbcc
+147ae148
+0a3d70a4
+00000001
+eeeeeeee
+11111111
+00000000
+00002433
+00000000
+147ae147
+0a3d70a3
+11111111
+00000000
+00002434
+ffffdbcb
+147ae147
+0a3d70a3
+00000001
+eeeeeeee
+11111111
+00000000
+00000000
+ffffffff
+00000002
+00000001
+00000000
+fffffffe
+00000002
+00000000
+00000000
+00000000
+00000002
+00000001
+00000001
+00000000
+00000000
+ffffffff
+00000002
+00000001
+00000000
+fffffffd
+00000001
+00000000
+ffffc3a9
+00003c56
+dddddddd
+eeeeeeee
+fffffffe
+1c71c71c
+e38e38e3
+fffffffe
+ffffc3a9
+00000000
+ddddddde
+eeeeeeef
+e38e38e4
+ffffffff
+ffffc3a9
+00003c56
+ddddddde
+eeeeeeef
+fffffffe
+1c71c71c
+e38e38e3
+ffffffff
+00003c57
+ffffc3a9
+22222222
+11111111
+00000002
+e38e38e3
+1c71c71c
+00000001
+00003c56
+00000000
+22222221
+11111110
+1c71c71c
+00000000
+00003c56
+ffffc3a9
+22222222
+11111111
+00000001
+e38e38e3
+1c71c71c
+00000001
+00000000
+ffffffff
+00000001
+00000000
+00000000
+fffffffe
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+ffffffff
+00000001
+00000000
+00000000
+fffffffe
+00000001
+00000000
+00000000
+ffffffff
+00004867
+00002433
+00000000
+ffffc3a9
+00003c56
+00000000
+00000000
+00000000
+00004867
+00002433
+00003c56
+00000000
+00000000
+ffffffff
+00004867
+00002433
+00000000
+ffffc3a9
+00003c56
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00004868
+ffffb798
+28f5c28f
+147ae147
+00000002
+ddddddde
+22222221
+00000001
+00004867
+00000000
+00000000
+147ae147
+0a3d70a3
+11111110
+00000000
+00002433
+ffffdbcc
+147ae147
+0a3d70a3
+00000000
+eeeeeeee
+11111110
+00000000
+00000000
+ffffffff
+00000002
+00000001
+00000000
+fffffffe
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+ffffffff
+00000001
+00000000
+00000000
+fffffffe
+00000001
+00000000
+ffffc3a8
+00003c56
+dddddddd
+eeeeeeee
+fffffffd
+1c71c71c
+e38e38e3
+fffffffe
+ffffc3a9
+00000000
+ddddddde
+eeeeeeef
+e38e38e3
+ffffffff
+ffffc3a9
+00003c56
+dddddddd
+eeeeeeee
+fffffffe
+1c71c71c
+e38e38e3
+fffffffe
+00003c56
+ffffc3a9
+22222222
+11111111
+00000001
+e38e38e3
+1c71c71c
+00000001
+00003c56
+00000000
+22222221
+11111110
+1c71c71b
+00000000
+00003c56
+ffffc3a9
+22222221
+11111110
+00000001
+e38e38e3
+1c71c71c
+00000000
+00000000
+ffffffff
+00000001
+00000000
+00000000
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000001
+00000000
+00000000
+fffffffe
+00000000
+00000000
+28f5c28e
+147ae146
+22222221
+00000000
+00004867
+ffffb798
+28f5c28e
+147ae147
+00000001
+ddddddde
+22222221
+00000001
+00002434
+ffffdbcc
+147ae147
+0a3d70a3
+00000001
+eeeeeeef
+11111110
+00000000
+00002433
+00000000
+147ae146
+0a3d70a3
+11111110
+00000000
+00002433
+ffffdbcc
+147ae147
+0a3d70a3
+00000000
+eeeeeeef
+11111110
+00000000
+00003c56
+ffffc3a9
+22222221
+11111111
+00000001
+e38e38e4
+1c71c71c
+00000001
+00003c56
+00000000
+22222221
+11111110
+1c71c71b
+00000000
+00003c56
+ffffc3a9
+22222221
+11111110
+00000001
+e38e38e3
+1c71c71b
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+ffffffff
+00004868
+00002434
+00000000
+ffffc3a9
+00003c56
+00000000
+00000000
+00000000
+00004867
+00002433
+00003c56
+00000000
+00000000
+ffffffff
+00004867
+00002433
+00000000
+ffffc3a9
+00003c56
+00000000
+ffffffff
+00000000
+ffffb797
+ffffdbcb
+ffffffff
+00003c56
+ffffc3a9
+ffffffff
+ffffffff
+00000000
+ffffb798
+ffffdbcc
+ffffc3a9
+ffffffff
+ffffffff
+00000000
+ffffb798
+ffffdbcc
+ffffffff
+00003c56
+ffffc3a9
+ffffffff
+00004868
+ffffb798
+28f5c28f
+147ae147
+00000002
+ddddddde
+22222222
+00000001
+00004867
+00000000
+28f5c28e
+147ae147
+22222221
+00000000
+00004867
+ffffb798
+28f5c28f
+147ae147
+00000001
+dddddddd
+22222221
+00000001
+00002434
+ffffdbcc
+147ae147
+0a3d70a3
+00000001
+eeeeeeef
+11111111
+00000000
+00002433
+00080000
+00000020
+ffffffff
+ffff9999
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulhsu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulhsu-01.reference_output
new file mode 100644
index 000000000..197dc32c5
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulhsu-01.reference_output
@@ -0,0 +1,654 @@
+0000aaaa
+d5555555
+00000100
+00000000
+fffffff0
+00000000
+fffffc0f
+00000001
+fffffffe
+0007fbff
+000001ff
+554aaaaa
+55500000
+fffffbff
+c000ffff
+00000000
+fffffffb
+0000b503
+00000002
+fffffff9
+0000b504
+aaaaad55
+fffffffe
+fffeffff
+03fffffb
+66666632
+00000002
+66666658
+00000005
+efffffff
+ffff4afd
+00000003
+f7ffffff
+7ff7fffe
+fffffffe
+ffffffff
+ffffffff
+ff000001
+ff800003
+ffffffc0
+ffe1ffff
+fffffffe
+fffffeff
+fffff7ff
+ffffffff
+ffffffff
+ffffffff
+ffffdfff
+ffffffff
+fffff7ff
+fffffdff
+fffffeff
+ffffffff
+ffffffbf
+ffffffdf
+fffffffd
+fffffffd
+00000040
+00000400
+08000000
+ffff7fff
+ffffffbf
+01555555
+00000000
+fffffffe
+000ccccc
+00000000
+0002aaaa
+00015555
+00000800
+fffffdff
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000019
+00000000
+fffffffd
+00000000
+00000000
+00000000
+ffffff80
+00000001
+00040000
+00000000
+00000001
+002aaaaa
+003ffdff
+001fffef
+00000040
+0001ffff
+00000000
+00002aaa
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000007
+00000000
+00000000
+00000000
+00000000
+00004868
+00002434
+00000000
+000078ae
+00003c57
+00000000
+00000000
+00000000
+00000000
+00004868
+00002434
+000078ad
+00003c56
+00000000
+00000000
+00000000
+00004868
+00002434
+00000000
+000078ad
+00003c56
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffb798
+ffffdbcc
+ffffffff
+ffff8753
+ffffc3a9
+ffffffff
+ffffffff
+00000000
+ffffffff
+ffffb798
+ffffdbcc
+ffff8753
+ffffc3a9
+ffffffff
+ffffffff
+ffffffff
+ffffb798
+ffffdbcc
+ffffffff
+ffff8753
+ffffc3a9
+ffffffff
+00006666
+00000000
+00004868
+28f5c28f
+147ae148
+00000002
+44444444
+22222222
+00000001
+00006665
+00000000
+00004867
+28f5c28f
+147ae147
+44444443
+22222221
+00000000
+00006666
+00004868
+28f5c28f
+147ae147
+00000002
+44444444
+22222222
+00000001
+00003333
+00000000
+00002434
+147ae148
+0a3d70a4
+00000001
+22222222
+11111111
+00000000
+00003332
+00000000
+00002433
+147ae147
+0a3d70a3
+22222222
+11111111
+00000000
+00003333
+00002434
+147ae147
+0a3d70a3
+00000001
+22222222
+11111111
+00000000
+00000000
+00000000
+00000000
+00000002
+00000001
+00000000
+00000004
+00000002
+00000000
+00000000
+00000000
+00000000
+00000002
+00000001
+00000003
+00000001
+00000000
+00000000
+00000000
+00000002
+00000001
+00000000
+00000003
+00000001
+00000000
+ffffaaaa
+ffffffff
+ffffc3a9
+dddddddd
+eeeeeeee
+fffffffe
+c71c71c7
+e38e38e3
+fffffffe
+ffffaaab
+00000000
+ffffc3a9
+ddddddde
+eeeeeeef
+c71c71c7
+e38e38e4
+ffffffff
+ffffaaab
+ffffc3a9
+ddddddde
+eeeeeeef
+fffffffe
+c71c71c7
+e38e38e3
+ffffffff
+00005555
+00000000
+00003c57
+22222222
+11111111
+00000002
+38e38e39
+1c71c71c
+00000001
+00005554
+00000000
+00003c56
+22222221
+11111110
+38e38e38
+1c71c71c
+00000000
+00005555
+00003c56
+22222222
+11111111
+00000001
+38e38e39
+1c71c71c
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000002
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000002
+00000001
+00000000
+00000000
+00000000
+00000000
+00004867
+00002433
+00000000
+000078ac
+00003c56
+00000000
+00000000
+00000000
+00000000
+00004867
+00002433
+000078ac
+00003c56
+00000000
+00000000
+00000000
+00004867
+00002433
+00000000
+000078ac
+00003c56
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00006666
+00000000
+00004868
+28f5c28f
+147ae147
+00000002
+44444443
+22222221
+00000001
+00006665
+00000000
+00004867
+28f5c28e
+147ae146
+44444442
+22222221
+00000000
+00006665
+00004867
+28f5c28e
+147ae147
+00000001
+44444443
+22222221
+00000001
+00003333
+00000000
+00002434
+147ae147
+0a3d70a3
+00000001
+22222221
+11111110
+00003332
+00000000
+00002433
+147ae146
+0a3d70a3
+22222221
+11111110
+00000000
+00003332
+00002433
+147ae147
+0a3d70a3
+ffffffff
+ffffffff
+00000000
+ffffffff
+ffffb798
+ffffdbcc
+ffff8752
+ffffc3a9
+ffffffff
+ffffffff
+ffffffff
+ffffb798
+ffffdbcc
+ffffffff
+ffff8752
+ffffc3a9
+ffffffff
+00006666
+00000000
+00004868
+28f5c28f
+147ae147
+00000002
+44444444
+22222222
+00000001
+00006665
+00000000
+00004867
+28f5c28e
+147ae147
+44444443
+22222221
+00000000
+00006665
+00004867
+28f5c28f
+147ae147
+00000001
+44444443
+22222221
+00000001
+00003333
+00000000
+00002434
+147ae147
+0a3d70a3
+00000001
+22222222
+11111111
+00000000
+00003332
+00000000
+00002433
+147ae147
+0a3d70a3
+22222221
+11111110
+00000000
+00003332
+00002433
+147ae147
+0a3d70a3
+00000000
+22222221
+11111110
+00000000
+00000000
+00000000
+00000000
+00000002
+00000001
+00000000
+00000003
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000003
+00000001
+00000000
+ffffaaaa
+ffffffff
+ffffc3a8
+dddddddd
+eeeeeeee
+fffffffd
+c71c71c6
+e38e38e3
+fffffffe
+ffffaaab
+00000000
+ffffc3a9
+ddddddde
+eeeeeeef
+c71c71c7
+e38e38e3
+ffffffff
+ffffaaaa
+ffffc3a9
+dddddddd
+eeeeeeee
+fffffffe
+c71c71c6
+e38e38e3
+fffffffe
+00005555
+00000000
+00003c56
+22222222
+11111111
+00000001
+38e38e38
+1c71c71c
+00000001
+00005554
+00000000
+00000000
+00003c56
+22222221
+11111110
+38e38e38
+1c71c71b
+00000000
+00005554
+00003c56
+22222221
+11111110
+00000001
+38e38e38
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000002
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+22222221
+11111110
+00000000
+00005555
+00000000
+00003c56
+fffffffe
+22222221
+11111111
+00000001
+38e38e38
+1c71c71c
+00000001
+00005554
+00000000
+00003c56
+22222221
+11111110
+38e38e37
+1c71c71b
+00000000
+00005554
+00003c56
+22222221
+11111110
+00000001
+38e38e37
+1c71c71b
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00004868
+00002434
+00000000
+000078ad
+00003c56
+00000000
+00000000
+00000000
+00000000
+00004867
+00002433
+000078ad
+00003c56
+00000000
+00000000
+00000000
+00004867
+00002433
+00000000
+000078ad
+00003c56
+ffffffff
+ffffffff
+ffffffff
+ffffb797
+ffffdbcb
+ffffffff
+ffff8752
+ffffc3a9
+000bffff
+59999997
+00000004
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulhu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulhu-01.reference_output
new file mode 100644
index 000000000..4143c8c36
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/mulhu-01.reference_output
@@ -0,0 +1,724 @@
+00000000
+00003fff
+fff0003e
+00000000
+077fffff
+0000001e
+fbffffbf
+00000000
+0000fefe
+ff7fffde
+33266665
+0000003f
+fbf03ffe
+0000b4fd
+00007ffd
+3332cccc
+00000010
+0000fffd
+003fffef
+00000012
+ff7ff006
+00000004
+ffffdbfe
+ffff7dfe
+0000007f
+fffff77e
+fffffdbe
+fffffede
+00000012
+0003ffff
+0000b504
+ffffffdc
+0000001f
+7ffdfffe
+b3fffffe
+dffff1fe
+77fffffe
+00000000
+0000fdfe
+feff00fe
+ffbffffa
+ffdf800e
+00ffefff
+00000007
+000fffdf
+1fffdfff
+00000000
+ffffedfe
+666664cc
+ff7fff7e
+7ffffff6
+ffffffb6
+0000003f
+000000ff
+effffffd
+00100000
+15555555
+00000080
+07efffff
+03bfffff
+01ffffff
+0000005a
+003fffff
+000aaaaa
+00000200
+00000200
+00000200
+00002000
+00004000
+00003f7f
+00000666
+00000555
+000007fd
+00000000
+000000aa
+0000007f
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00080000
+00000000
+01feffff
+00000000
+00000000
+00003ff7
+00000000
+00000000
+00000000
+000001ff
+00000000
+0000000f
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00006666
+00003333
+00000000
+0000aaaa
+00005555
+00000000
+00000000
+00000000
+00000000
+00006666
+00003333
+0000aaaa
+00005555
+00000000
+00000000
+00000000
+00006666
+00003333
+00000000
+0000aaaa
+00005555
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00004868
+00002434
+00000000
+000078ae
+00003c57
+00000000
+00000000
+00000000
+00000000
+00004868
+00002434
+000078ad
+00003c56
+00000000
+00000000
+00000000
+00004868
+00002434
+00000000
+000078ad
+00003c56
+00000000
+00006666
+00000000
+00004868
+28f5c28f
+147ae148
+00000002
+44444444
+22222222
+00000001
+00006665
+00000000
+00004867
+28f5c28f
+147ae147
+44444443
+22222221
+00000000
+00006666
+00004868
+28f5c28f
+147ae147
+00000002
+44444444
+22222222
+00000001
+00003333
+00002434
+147ae148
+0a3d70a4
+00000001
+22222222
+11111111
+00000000
+00003332
+00000000
+00002433
+147ae147
+0a3d70a3
+22222222
+11111111
+00000000
+00003333
+00002434
+147ae147
+0a3d70a3
+00000001
+22222222
+11111111
+00000000
+00000000
+00000000
+00000000
+00000002
+00000001
+00000000
+00000004
+00000002
+00000000
+00000000
+00000000
+00000000
+00000002
+00000001
+00000003
+00000001
+00000000
+00000000
+00000000
+00000002
+00000001
+00000000
+00000003
+00000001
+00000000
+0000aaaa
+00000000
+000078ae
+44444444
+22222222
+00000004
+71c71c72
+38e38e39
+00000002
+0000aaa9
+00000000
+000078ac
+44444443
+22222221
+71c71c70
+38e38e38
+00000001
+0000aaaa
+000078ad
+44444444
+22222222
+00000003
+71c71c71
+38e38e38
+00000002
+00005555
+00000000
+00003c57
+22222222
+11111111
+00000002
+38e38e39
+1c71c71c
+00000001
+00005554
+00000000
+00003c56
+22222221
+11111110
+38e38e38
+1c71c71c
+00000000
+00005555
+00003c56
+22222222
+11111111
+00000001
+38e38e39
+1c71c71c
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000002
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000002
+00000001
+00000000
+00000000
+00000000
+00000000
+00006665
+00003332
+00000000
+0000aaa9
+00005554
+00000000
+00000000
+00000000
+00000000
+00006665
+00003332
+0000aaa9
+00005554
+00000000
+00000000
+00000000
+00006665
+00003332
+00000000
+0000aaa9
+00005554
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00004867
+00002433
+00000000
+000078ac
+00003c56
+00000000
+00000000
+00000000
+00000000
+00004867
+00002433
+000078ac
+00003c56
+00000000
+00000000
+00000000
+00004867
+00002433
+00000000
+000078ac
+00003c56
+00000000
+00006666
+00000000
+00004868
+28f5c28f
+147ae147
+00000002
+44444443
+22222221
+00000001
+00006665
+00000000
+00004867
+28f5c28e
+147ae146
+44444442
+22222221
+00000000
+00006665
+00004867
+28f5c28e
+147ae147
+00000001
+44444443
+22222221
+00000001
+00003333
+00000000
+00002434
+147ae147
+0a3d70a3
+00000001
+22222221
+11111110
+00000000
+00003332
+00000000
+00002433
+147ae146
+0a3d70a3
+22222221
+11111110
+00000000
+00003332
+00002433
+147ae147
+0a3d70a3
+00000000
+22222221
+11111110
+00000000
+0000aaaa
+00000000
+000078ad
+44444443
+22222222
+00000003
+71c71c70
+38e38e38
+00000002
+0000aaa9
+00000000
+000078ac
+44444442
+22222221
+71c71c6f
+38e38e37
+00000001
+0000aaa9
+000078ad
+44444443
+22222221
+00000001
+00005554
+00000000
+00003c56
+22222221
+11111110
+38e38e37
+1c71c71b
+00000000
+00005554
+00003c56
+22222221
+11111110
+00000001
+38e38e37
+1c71c71b
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00006666
+00003333
+00000000
+0000aaaa
+00005555
+00000000
+00000000
+00000000
+00000000
+00006665
+00003332
+0000aaa9
+00005554
+00000000
+00000000
+00000000
+00006665
+00003332
+00000000
+0000aaa9
+00005554
+00000000
+00000000
+00000000
+00000000
+00004868
+00002434
+00000000
+000078ad
+00003c56
+00000000
+00000000
+00000000
+00000000
+00004867
+00002433
+000078ad
+00003c56
+00000000
+00000000
+00000000
+00004867
+00002433
+00000000
+000078ad
+00003c56
+00000000
+00006666
+00000000
+00004868
+28f5c28f
+147ae147
+00000002
+44444444
+22222222
+00000001
+00006665
+00000000
+00004867
+28f5c28e
+147ae147
+44444443
+22222221
+00000000
+00006665
+00004867
+28f5c28f
+147ae147
+00000001
+44444443
+22222221
+00000001
+00003333
+00000000
+00002434
+147ae147
+0a3d70a3
+00000001
+22222222
+11111111
+00000000
+00003332
+00000000
+00002433
+00005555
+147ae147
+0a3d70a3
+22222221
+22222221
+11111110
+00000000
+00003332
+00002433
+147ae147
+0a3d70a3
+00000000
+22222221
+11111110
+00000000
+00000000
+00000000
+00000000
+00000002
+00000001
+00000000
+00000003
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000003
+00000001
+00000000
+0000aaaa
+00000000
+000078ad
+44444444
+22222222
+00000003
+71c71c71
+38e38e39
+00000002
+0000aaa9
+00000000
+000078ac
+44444443
+22222221
+71c71c70
+38e38e37
+00000001
+0000aaa9
+000078ad
+44444443
+22222221
+00000003
+71c71c70
+38e38e38
+00000001
+00005555
+00000000
+00003c56
+22222222
+11111111
+00000001
+38e38e38
+1c71c71c
+00000001
+00005554
+00000000
+00003c56
+22222221
+11111110
+38e38e38
+1c71c71b
+00000000
+00005554
+00003c56
+22222221
+11111110
+00000001
+38e38e38
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000002
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000003
+71c71c70
+00001fff
+38e38e38
+00000001
+00000000
+00003c56
+11111111
+00000001
+38e38e38
+1c71c71c
+bff9fffe
+0006ffff
+54aaaaa9
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/rem-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/rem-01.reference_output
new file mode 100644
index 000000000..37ac3dfc4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/rem-01.reference_output
@@ -0,0 +1,586 @@
+0000b503
+00000800
+00000000
+00000000
+fffffeff
+ff7fffff
+03333326
+04000000
+00000400
+ffffffef
+00000002
+fff003ff
+00000000
+00032668
+00000004
+00000000
+ffffbffe
+00000005
+00000000
+fffffb07
+00000000
+000003fe
+00000060
+fffffffd
+fffffffb
+00000020
+ffffffee
+00000008
+00000008
+fffffffc
+ffffffff
+00000000
+ffff3ffe
+ffffffff
+ffffffdf
+fdffffff
+feffffff
+ffbfffff
+ffdfffff
+ffefffff
+ffff8913
+ffff7fff
+fffffffb
+ffffffff
+ffffffff
+fffff7ff
+fffffbff
+fffffdff
+ffffffbf
+ffffffdf
+fffffff7
+fffffffb
+fffffffd
+fffffffe
+00000100
+eaaaaaaa
+ffffffdf
+ffff4afc
+00000010
+0000b505
+ffff4afc
+00266667
+ffeaaaaa
+00000020
+00000007
+00000002
+00006667
+00000004
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+fffffff9
+00000008
+00000000
+00000005
+00000000
+00000000
+00000000
+00000000
+000000c1
+20000000
+00000000
+00000000
+01000000
+00800000
+00000000
+00200000
+00080000
+00000000
+00000001
+00000010
+00000200
+00000000
+00000001
+00000001
+00000000
+00000002
+0000b505
+0000b505
+00000003
+0000b505
+0000b505
+00000001
+00000002
+0000b505
+0000b505
+0000b505
+0000b505
+00000001
+00000001
+00000001
+0000b505
+0000b505
+00000001
+0000b505
+0000b505
+00000000
+ffff4afd
+00000000
+ffff4afd
+ffff4afd
+ffffffff
+ffff4afd
+ffff4afd
+fffffffd
+00000000
+ffff4afd
+ffff4afd
+ffff4afd
+ffff4afd
+ffffffff
+ffff4afd
+ffff4afd
+ffff4afd
+ffff4afd
+fffffffc
+ffff4afd
+ffff4afd
+ffffffff
+00008257
+000039f1
+00000000
+33333333
+00000001
+11111112
+11111111
+00000003
+000039f1
+66666667
+00000002
+00000003
+11111113
+00000001
+00005e23
+00005e23
+00000001
+00000001
+00000004
+11111111
+11111112
+00000001
+0000412c
+00001cf9
+33333334
+00000000
+00000004
+33333334
+33333334
+00000000
+00001cf9
+33333334
+33333334
+00000002
+33333334
+00000000
+00008994
+00008994
+33333334
+00000001
+00000000
+33333334
+33333334
+00000001
+00000006
+00000006
+00000006
+00000006
+00000000
+00000006
+00000006
+00000002
+00000006
+00000006
+00000006
+00000006
+00000006
+00000000
+00000006
+00000006
+00000006
+00000006
+00000001
+00000006
+00000006
+00000000
+ffff570c
+ffffcfb8
+aaaaaaab
+dddddddf
+ffffffff
+00000000
+aaaaaaab
+ffffffff
+ffffcfb8
+aaaaaaab
+aaaaaaab
+dddddddd
+ffffffff
+ffffffff
+ffff9363
+ffff9363
+aaaaaaab
+ddddddde
+00000000
+aaaaaaab
+00000000
+ffffffff
+0000a8f5
+00003049
+55555556
+22222222
+00000002
+00000001
+00000000
+00000002
+00003049
+55555556
+55555556
+22222224
+00000002
+00000000
+00006c9e
+00006c9e
+55555556
+22222223
+00000001
+00000000
+00000001
+00000002
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000000
+00000004
+00000004
+00000004
+00000004
+00000004
+00000000
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000001
+0000b503
+00000000
+0000b503
+0000b503
+00000001
+0000b503
+0000b503
+00000003
+00000000
+0000b503
+0000b503
+0000b503
+0000b503
+00000001
+0000b503
+0000b503
+0000b503
+0000b503
+00000004
+0000b503
+0000b503
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00008255
+000039ef
+66666665
+33333331
+00000005
+11111110
+1111110f
+00000001
+000039ef
+33333333
+33333333
+00000001
+33333333
+00000001
+00008993
+00008993
+33333333
+00000000
+00000004
+33333333
+33333333
+00000000
+00000005
+00000005
+00000005
+00000005
+00000005
+00000005
+00000005
+00000001
+00000005
+00000005
+00000005
+00000005
+00000005
+00000001
+00000005
+00000005
+00000005
+00000005
+00000000
+00000005
+00000005
+00000002
+ffff570b
+ffffcfb7
+aaaaaaaa
+ddddddde
+fffffffe
+ffffffff
+00000000
+fffffffe
+ffffcfb7
+aaaaaaaa
+aaaaaaaa
+dddddddc
+fffffffe
+00000000
+ffff9362
+ffff9362
+aaaaaaaa
+dddddddd
+ffffffff
+00000000
+ffffffff
+fffffffe
+0000a8f4
+00003048
+55555555
+22222221
+00000001
+00000000
+55555555
+00000001
+00003048
+55555555
+55555555
+22222223
+00000001
+00000001
+00006c9d
+00006c9d
+55555555
+22222222
+00000000
+55555555
+00000000
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000000
+66666665
+00000000
+00000001
+11111111
+00000001
+00005e21
+00005e21
+66666665
+33333332
+00000002
+1111110f
+11111110
+00000002
+0000412a
+00001cf7
+33333332
+33333332
+00000002
+33333332
+33333332
+00000002
+00001cf7
+33333332
+33333332
+00000000
+33333332
+00000000
+00008992
+00008992
+33333332
+33333332
+00000003
+33333332
+33333332
+00000002
+0000a8f3
+00003047
+55555554
+22222220
+00000000
+55555554
+55555554
+00000000
+00003047
+55555554
+55555554
+22222222
+00000000
+00000000
+00006c9c
+00006c9c
+55555554
+22222221
+00000004
+55555554
+55555554
+00000000
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000000
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+0000b504
+00000001
+0000b504
+0000b504
+00000002
+0000b504
+0000b504
+00000000
+00000001
+0000b504
+0000b504
+0000b504
+0000b504
+00000000
+00000000
+00000000
+0000b504
+0000b504
+00000000
+0000b504
+0000b504
+00000002
+ffff4afc
+ffffffff
+ffff4afc
+ffff4afc
+fffffffe
+ffff4afc
+ffff4afc
+00000000
+ffffffff
+ffff4afc
+ffff4afc
+ffff4afc
+ffff4afc
+00000000
+00000000
+00000000
+ffff4afc
+ffff4afc
+00000000
+ffff4afc
+ffff4afc
+fffffffe
+00008256
+000039f0
+66666666
+33333332
+00000000
+11111111
+11111110
+00000002
+000039f0
+66666666
+00000001
+00000002
+11111112
+00000000
+00005e22
+00005e22
+00000000
+00000000
+00000003
+11111110
+11111111
+00000000
+0000412b
+00001cf8
+33333333
+33333333
+00000003
+33333333
+33333333
+00000003
+00001cf8
+fbffffff
+fffdffff
+01ffffff
+fffffff9
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/remu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/remu-01.reference_output
new file mode 100644
index 000000000..e8914d920
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/references/remu-01.reference_output
@@ -0,0 +1,725 @@
+00000020
+33333332
+00000000
+00000000
+0ffc0000
+00020000
+00000000
+00000000
+00000003
+007fffe0
+00000010
+fffffffb
+ff7fffff
+0000b503
+fbffffff
+ffdfffff
+00000000
+00004000
+0000000c
+00000000
+00000ff8
+20000000
+00010000
+000000c0
+00000400
+00000001
+33333332
+ffffffbf
+00000000
+ffff7fff
+00000001
+00000400
+001fffff
+000001ff
+0000a9bb
+f7ffffff
+fdffffff
+32333335
+00000005
+0000000d
+fff7ffff
+fffdffff
+001fe000
+00000009
+01fff800
+00000003
+fffffdff
+0000000f
+00000f7f
+ffffffef
+00001ffe
+55555554
+00000020
+1fff7fff
+0000000b
+00000002
+00400000
+01333332
+00000005
+00000010
+003ff7ff
+00000000
+00000080
+00000100
+0001ffff
+0000ff7f
+00007ff7
+00000000
+00001fdf
+00000004
+000003ff
+00000067
+00000000
+00000008
+00000004
+00000003
+00000000
+00000000
+80000000
+40000000
+10000000
+00002160
+00000000
+01000000
+00000000
+00200000
+00080000
+00040000
+00004000
+00002000
+00001000
+00000800
+00000002
+00000040
+00000000
+00000000
+00004afb
+00010000
+00010000
+00000004
+00010000
+00010000
+00000000
+00000002
+00010000
+00004afd
+00010000
+00010000
+00010000
+00010000
+00000000
+00000001
+00004afc
+00010000
+00010000
+00000001
+00010000
+00010000
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+00000001
+0000b505
+00000000
+00000000
+0000b505
+0000b505
+00000003
+0000b505
+0000b505
+00000001
+0000b505
+0000b505
+00000002
+0000b505
+0000b505
+0000b505
+0000b505
+00000001
+0000b505
+00000001
+0000b505
+0000b505
+00000001
+0000b505
+0000b505
+00000000
+00006667
+00000000
+00008257
+00000000
+33333333
+00000001
+66666667
+11111111
+00000003
+00003335
+66666667
+000039f1
+00000002
+00000003
+66666667
+11111113
+00000001
+0000cccd
+00005e23
+00000001
+00000001
+00000004
+66666667
+11111112
+00000001
+00003334
+00000000
+0000412c
+33333334
+00000000
+00000004
+33333334
+33333334
+00000000
+0000999a
+33333334
+00001cf9
+33333334
+00000002
+33333334
+33333334
+00000000
+00006667
+00008994
+33333334
+00000001
+00000000
+33333334
+33333334
+00000001
+00000006
+00000000
+00000006
+00000006
+00000006
+00000000
+00000006
+00000006
+00000002
+00000006
+00000006
+00000006
+00000006
+00000006
+00000006
+00000006
+00000000
+00000006
+00000006
+00000006
+00000006
+00000001
+00000006
+00000006
+00000000
+0000aaab
+00000000
+00009ce4
+44444444
+1111110f
+00000003
+00000000
+55555555
+00000003
+00000003
+aaaaaaab
+00006091
+44444446
+11111115
+00000002
+00000003
+00000001
+00005556
+00002437
+44444445
+11111112
+00000001
+00000001
+00000001
+00000000
+00005556
+00000000
+0000a8f5
+55555556
+22222222
+00000002
+55555556
+00000000
+00000002
+00000002
+55555556
+00003049
+55555556
+22222224
+55555556
+00000002
+00000000
+0000aaab
+00006c9e
+55555556
+22222223
+00000001
+55555556
+00000001
+00000002
+00000004
+00000000
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000000
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000000
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000004
+00000001
+0000fffe
+00000000
+00004af9
+0000fffe
+0000fffe
+00000002
+0000fffe
+0000fffe
+00000002
+00000000
+0000fffe
+00004afb
+0000fffe
+0000fffe
+0000fffe
+0000fffe
+00000000
+0000fffe
+00004afa
+0000fffe
+0000fffe
+00000004
+0000fffe
+0000fffe
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000b503
+00000000
+0000b503
+0000b503
+0000b503
+00000001
+0000b503
+0000b503
+00000003
+0000b503
+0000b503
+00000000
+0000b503
+0000b503
+0000b503
+0000b503
+00000001
+0000b503
+0000b503
+0000b503
+0000b503
+00000004
+0000b503
+0000b503
+00000001
+00006665
+00000000
+00008255
+66666665
+33333331
+00000005
+66666665
+1111110f
+00000001
+00003333
+66666665
+000039ef
+00000000
+00000001
+66666665
+11111111
+00000001
+0000cccb
+00005e21
+66666665
+33333332
+00000002
+66666665
+11111110
+00000002
+00003332
+00000000
+0000412a
+33333332
+33333332
+00000002
+33333332
+33333332
+00000002
+00009998
+33333332
+00001cf7
+33333332
+00000000
+33333332
+33333332
+00000000
+00006665
+00008992
+33333332
+33333332
+00000003
+33333332
+33333332
+00000002
+0000aaa9
+00000000
+00009ce2
+44444442
+1111110d
+00000001
+aaaaaaa9
+55555553
+00000001
+00000001
+aaaaaaa9
+0000608f
+44444444
+11111113
+00000000
+00000001
+00000001
+00005554
+00002435
+44444443
+11111110
+00000004
+00000000
+00000000
+55555554
+00003047
+55555554
+22222222
+55555554
+00000000
+00000000
+0000aaa9
+00006c9c
+55555554
+22222221
+00000004
+55555554
+55555554
+00000000
+00000002
+00000000
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000000
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+00000002
+0000ffff
+00000000
+00004afa
+0000ffff
+0000ffff
+00000003
+0000ffff
+0000ffff
+00000003
+00000001
+0000ffff
+00004afc
+0000ffff
+0000ffff
+0000ffff
+0000ffff
+00000001
+00000000
+00004afb
+0000ffff
+0000ffff
+00000000
+0000ffff
+0000ffff
+00000000
+0000b504
+00000000
+0000b504
+0000b504
+0000b504
+00000002
+0000b504
+0000b504
+00000000
+0000b504
+0000b504
+00000001
+0000b504
+0000b504
+0000b504
+0000b504
+00000000
+0000b504
+00000000
+0000b504
+0000b504
+00000000
+0000b504
+0000b504
+00000002
+00006666
+00000000
+00008256
+66666666
+33333332
+00000000
+66666666
+11111110
+00000002
+00003334
+66666666
+000039f0
+00000001
+00000002
+66666666
+11111112
+00000000
+0000cccc
+00005e22
+00000000
+00000000
+00000003
+66666666
+11111111
+00000000
+00003333
+00000000
+0000412b
+33333333
+33333333
+00000003
+33333333
+33333333
+00000003
+00009999
+33333333
+00000001
+00001cf8
+33333333
+00000001
+33333333
+33333333
+00000001
+00006666
+00008993
+33333333
+00000000
+00000004
+33333333
+33333333
+00000000
+00000005
+00000000
+00000005
+00000005
+00000005
+00000005
+00000005
+00000005
+00000001
+00000005
+00000005
+00000005
+00000005
+00000005
+00000005
+00000005
+00000001
+00000005
+00000005
+00000005
+00000005
+00000000
+00000005
+00000005
+00000002
+0000aaaa
+00000000
+00009ce3
+44444443
+1111110e
+00000002
+aaaaaaaa
+55555554
+00000002
+00000002
+aaaaaaaa
+00006090
+44444445
+11111114
+00000001
+00000002
+00000000
+00005555
+00002436
+44444444
+11111111
+00000000
+00000000
+00000000
+00000002
+00005555
+00000000
+0000a8f4
+55555555
+22222221
+00000001
+55555555
+55555555
+00000001
+00000001
+55555555
+00003048
+55555555
+22222223
+55555555
+00000001
+00000001
+0000aaaa
+00006c9d
+55555555
+22222222
+00000000
+55555555
+00000000
+00000001
+00000003
+00000000
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000001
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000003
+00000000
+aaaaaaa9
+00000010
+55555554
+00005554
+00000000
+0000a8f3
+55555554
+22222220
+00000000
+55555554
+55555554
+00008000
+0000000c
+55555555
+dfffffff
+001ffffc
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/div-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/div-01.S
new file mode 100644
index 000000000..4b1fbcac7
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/div-01.S
@@ -0,0 +1,2990 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 07:22:49 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32em.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the div instruction of the RISC-V M extension for the div covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EM")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*M.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",div)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs2 == rd != rs1, rs1==x7, rs2==x11, rd==x11, rs1_val != rs2_val, rs1_val > 0 and rs2_val > 0, rs2_val == 128
+// opcode: div ; op1:x7; op2:x11; dest:x11; op1val:0x6; op2val:0x80
+TEST_RR_OP(div, x11, x7, x11, 0x0, 0x6, 0x80, x2, 0, x3)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x15, rs2==x8, rd==x15, rs2_val == 2147483647, rs1_val < 0 and rs2_val > 0, rs2_val == (2**(xlen-1)-1), rs1_val == -131073
+// opcode: div ; op1:x15; op2:x8; dest:x15; op1val:-0x20001; op2val:0x7fffffff
+TEST_RR_OP(div, x15, x15, x8, 0x0, -0x20001, 0x7fffffff, x2, 4, x3)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x9, rs2==x9, rd==x9, rs2_val == -1073741825, rs1_val < 0 and rs2_val < 0
+// opcode: div ; op1:x9; op2:x9; dest:x9; op1val:-0x8; op2val:-0x8
+TEST_RR_OP(div, x9, x9, x9, 0x1, -0x8, -0x8, x2, 8, x3)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x4, rs2==x4, rd==x5, rs2_val == -536870913, rs1_val == 16384, rs1_val > 0 and rs2_val < 0
+// opcode: div ; op1:x4; op2:x4; dest:x5; op1val:0x4000; op2val:0x4000
+TEST_RR_OP(div, x5, x4, x4, 0x1, 0x4000, 0x4000, x2, 12, x3)
+
+inst_4:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x12, rs2==x0, rd==x7, rs2_val == -268435457, rs1_val == -4194305
+// opcode: div ; op1:x12; op2:x0; dest:x7; op1val:-0x400001; op2val:0x0
+TEST_RR_OP(div, x7, x12, x0, 0xFFFFFFFF, -0x400001, 0x0, x2, 16, x3)
+
+inst_5:
+// rs1==x6, rs2==x1, rd==x8, rs2_val == -134217729, rs1_val == 16
+// opcode: div ; op1:x6; op2:x1; dest:x8; op1val:0x10; op2val:-0x8000001
+TEST_RR_OP(div, x8, x6, x1, 0x0, 0x10, -0x8000001, x2, 20, x3)
+
+inst_6:
+// rs1==x13, rs2==x15, rd==x0, rs2_val == -67108865,
+// opcode: div ; op1:x13; op2:x15; dest:x0; op1val:0x66666666; op2val:-0x4000001
+TEST_RR_OP(div, x0, x13, x15, 0, 0x66666666, -0x4000001, x2, 24, x3)
+
+inst_7:
+// rs1==x14, rs2==x13, rd==x6, rs2_val == -33554433, rs1_val == 4096
+// opcode: div ; op1:x14; op2:x13; dest:x6; op1val:0x1000; op2val:-0x2000001
+TEST_RR_OP(div, x6, x14, x13, 0x0, 0x1000, -0x2000001, x2, 28, x9)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_8:
+// rs1==x1, rs2==x5, rd==x10, rs2_val == -16777217,
+// opcode: div ; op1:x1; op2:x5; dest:x10; op1val:-0x20001; op2val:-0x1000001
+TEST_RR_OP(div, x10, x1, x5, 0x0, -0x20001, -0x1000001, x4, 0, x9)
+
+inst_9:
+// rs1==x8, rs2==x12, rd==x2, rs2_val == -8388609, rs1_val == 4
+// opcode: div ; op1:x8; op2:x12; dest:x2; op1val:0x4; op2val:-0x800001
+TEST_RR_OP(div, x2, x8, x12, 0x0, 0x4, -0x800001, x4, 4, x9)
+
+inst_10:
+// rs1==x10, rs2==x3, rd==x1, rs2_val == -4194305, rs1_val == -32769
+// opcode: div ; op1:x10; op2:x3; dest:x1; op1val:-0x8001; op2val:-0x400001
+TEST_RR_OP(div, x1, x10, x3, 0x0, -0x8001, -0x400001, x4, 8, x9)
+
+inst_11:
+// rs1==x3, rs2==x14, rd==x12, rs2_val == -2097153, rs1_val == 1431655765
+// opcode: div ; op1:x3; op2:x14; dest:x12; op1val:0x55555555; op2val:-0x200001
+TEST_RR_OP(div, x12, x3, x14, -0x2aa, 0x55555555, -0x200001, x4, 12, x9)
+
+inst_12:
+// rs1==x0, rs2==x6, rd==x13, rs2_val == -1048577,
+// opcode: div ; op1:x0; op2:x6; dest:x13; op1val:0x0; op2val:-0x100001
+TEST_RR_OP(div, x13, x0, x6, 0x0, 0x0, -0x100001, x4, 16, x9)
+
+inst_13:
+// rs1==x11, rs2==x7, rd==x3, rs2_val == -524289, rs1_val == -17
+// opcode: div ; op1:x11; op2:x7; dest:x3; op1val:-0x11; op2val:-0x80001
+TEST_RR_OP(div, x3, x11, x7, 0x0, -0x11, -0x80001, x4, 20, x9)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_14:
+// rs1==x2, rs2==x10, rd==x4, rs2_val == -262145,
+// opcode: div ; op1:x2; op2:x10; dest:x4; op1val:-0xb503; op2val:-0x40001
+TEST_RR_OP(div, x4, x2, x10, 0x0, -0xb503, -0x40001, x1, 0, x3)
+
+inst_15:
+// rs1==x5, rs2==x2, rd==x14, rs2_val == -131073, rs1_val == rs2_val
+// opcode: div ; op1:x5; op2:x2; dest:x14; op1val:-0x20001; op2val:-0x20001
+TEST_RR_OP(div, x14, x5, x2, 0x1, -0x20001, -0x20001, x1, 4, x3)
+
+inst_16:
+// rs2_val == -65537,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x8; op2val:-0x10001
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x8, -0x10001, x1, 8, x3)
+
+inst_17:
+// rs2_val == -32769, rs1_val == 16777216
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:-0x8001
+TEST_RR_OP(div, x12, x10, x11, -0x1ff, 0x1000000, -0x8001, x1, 12, x3)
+
+inst_18:
+// rs2_val == -16385,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:-0x4001
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x7, -0x4001, x1, 16, x3)
+
+inst_19:
+// rs2_val == -8193, rs1_val == -3
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x2001
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x3, -0x2001, x1, 20, x3)
+
+inst_20:
+// rs2_val == -4097, rs1_val == 512
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:-0x1001
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x200, -0x1001, x1, 24, x3)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x801
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, -0x801, x1, 28, x3)
+
+inst_22:
+// rs2_val == -1025, rs1_val == -513
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:-0x401
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x201, -0x401, x1, 32, x3)
+
+inst_23:
+// rs2_val == -513,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:-0x201
+TEST_RR_OP(div, x12, x10, x11, 0x1ff0, -0x400001, -0x201, x1, 36, x3)
+
+inst_24:
+// rs2_val == -257,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x101
+TEST_RR_OP(div, x12, x10, x11, -0x330033, 0x33333333, -0x101, x1, 40, x3)
+
+inst_25:
+// rs2_val == -129, rs1_val == -8193
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:-0x81
+TEST_RR_OP(div, x12, x10, x11, 0x3f, -0x2001, -0x81, x1, 44, x3)
+
+inst_26:
+// rs2_val == -65, rs1_val == 1073741824
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:-0x41
+TEST_RR_OP(div, x12, x10, x11, -0xfc0fc0, 0x40000000, -0x41, x1, 48, x3)
+
+inst_27:
+// rs2_val == -33, rs1_val == -536870913
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:-0x21
+TEST_RR_OP(div, x12, x10, x11, 0xf83e0f, -0x20000001, -0x21, x1, 52, x3)
+
+inst_28:
+// rs2_val == -17, rs1_val == 4194304
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:-0x11
+TEST_RR_OP(div, x12, x10, x11, -0x3c3c3, 0x400000, -0x11, x1, 56, x3)
+
+inst_29:
+// rs2_val == -9, rs1_val == -33554433
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:-0x9
+TEST_RR_OP(div, x12, x10, x11, 0x38e38e, -0x2000001, -0x9, x1, 60, x3)
+
+inst_30:
+// rs2_val == -5, rs1_val == -524289
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:-0x5
+TEST_RR_OP(div, x12, x10, x11, 0x19999, -0x80001, -0x5, x1, 64, x3)
+
+inst_31:
+// rs2_val == -3, rs1_val == -2097153
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x3
+TEST_RR_OP(div, x12, x10, x11, 0xaaaab, -0x200001, -0x3, x1, 68, x3)
+
+inst_32:
+// rs2_val == -2, rs1_val == 134217728
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:-0x2
+TEST_RR_OP(div, x12, x10, x11, -0x4000000, 0x8000000, -0x2, x1, 72, x3)
+
+inst_33:
+// rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:-0x2000001
+TEST_RR_OP(div, x12, x10, x11, -0x3f, 0x7fffffff, -0x2000001, x1, 76, x3)
+
+inst_34:
+// rs1_val == -1073741825,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:-0x8001
+TEST_RR_OP(div, x12, x10, x11, 0x7fff, -0x40000001, -0x8001, x1, 80, x3)
+
+inst_35:
+// rs1_val == -268435457, rs2_val == 2048
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:0x800
+TEST_RR_OP(div, x12, x10, x11, -0x20000, -0x10000001, 0x800, x1, 84, x3)
+
+inst_36:
+// rs1_val == -134217729,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x3
+TEST_RR_OP(div, x12, x10, x11, 0x2aaaaab, -0x8000001, -0x3, x1, 88, x3)
+
+inst_37:
+// rs1_val == -67108865,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:-0x4000001
+TEST_RR_OP(div, x12, x10, x11, 0x1, -0x4000001, -0x4000001, x1, 92, x3)
+
+inst_38:
+// rs1_val == -16777217,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:-0x40001
+TEST_RR_OP(div, x12, x10, x11, 0x3f, -0x1000001, -0x40001, x1, 96, x3)
+
+inst_39:
+// rs1_val == -8388609, rs2_val == 256
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:0x100
+TEST_RR_OP(div, x12, x10, x11, -0x8000, -0x800001, 0x100, x1, 100, x3)
+
+inst_40:
+// rs1_val == -1048577,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x100001, 0x66666665, x1, 104, x3)
+
+inst_41:
+// rs1_val == -262145, rs2_val == 524288
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x80000
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x40001, 0x80000, x1, 108, x3)
+
+inst_42:
+// rs1_val == -65537,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x100001
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x10001, -0x100001, x1, 112, x3)
+
+inst_43:
+// rs1_val == -16385, rs2_val == 2097152
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0x200000
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x4001, 0x200000, x1, 116, x3)
+
+inst_44:
+// rs1_val == -4097,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:-0x201
+TEST_RR_OP(div, x12, x10, x11, 0x7, -0x1001, -0x201, x1, 120, x3)
+
+inst_45:
+// rs1_val == -2049,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:-0x9
+TEST_RR_OP(div, x12, x10, x11, 0xe3, -0x801, -0x9, x1, 124, x3)
+
+inst_46:
+// rs1_val == -1025,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:-0x7
+TEST_RR_OP(div, x12, x10, x11, 0x92, -0x401, -0x7, x1, 128, x3)
+
+inst_47:
+// rs1_val == -257, rs2_val == 4194304
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0x400000
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x101, 0x400000, x1, 132, x3)
+
+inst_48:
+// rs1_val == -129,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:-0x1
+TEST_RR_OP(div, x12, x10, x11, 0x81, -0x81, -0x1, x1, 136, x3)
+
+inst_49:
+// rs1_val == -65,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:-0x40001
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x41, -0x40001, x1, 140, x3)
+
+inst_50:
+// rs1_val == -33,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:-0x40001
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x21, -0x40001, x1, 144, x3)
+
+inst_51:
+// rs1_val == -9,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x9, 0x66666665, x1, 148, x3)
+
+inst_52:
+// rs1_val == -5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:-0x400001
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x5, -0x400001, x1, 152, x3)
+
+inst_53:
+// rs1_val == -2, rs2_val == 64
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x40
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x2, 0x40, x1, 156, x3)
+
+inst_54:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x80000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x3, -0x80000000, x1, 160, x3)
+
+inst_55:
+// rs2_val == 1073741824,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0x40000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x2001, 0x40000000, x1, 164, x3)
+
+inst_56:
+// rs2_val == 536870912, rs1_val == 1048576
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x20000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x100000, 0x20000000, x1, 168, x3)
+
+inst_57:
+// rs2_val == 268435456, rs1_val == 2
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x10000000, x1, 172, x3)
+
+inst_58:
+// rs2_val == 134217728,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x8000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x4000001, 0x8000000, x1, 176, x3)
+
+inst_59:
+// rs2_val == 67108864,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x4000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x21, 0x4000000, x1, 180, x3)
+
+inst_60:
+// rs2_val == 33554432,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0x2000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x101, 0x2000000, x1, 184, x3)
+
+inst_61:
+// rs2_val == 16777216, rs1_val == 256
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x1000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x100, 0x1000000, x1, 188, x3)
+
+inst_62:
+// rs2_val == 8388608,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x800000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x400000, 0x800000, x1, 192, x3)
+
+inst_63:
+// rs2_val == 1048576,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x100000
+TEST_RR_OP(div, x12, x10, x11, 0x333, 0x33333334, 0x100000, x1, 196, x3)
+
+inst_64:
+// rs2_val == 262144,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x40000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x40000, x1, 200, x3)
+
+inst_65:
+// rs2_val == 131072, rs1_val == 0
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x20000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x20000, x1, 204, x3)
+
+inst_66:
+// rs2_val == 65536,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x10000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x1000, 0x10000, x1, 208, x3)
+
+inst_67:
+// rs2_val == 32768,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x8000
+TEST_RR_OP(div, x12, x10, x11, 0xaaaa, 0x55555555, 0x8000, x1, 212, x3)
+
+inst_68:
+// rs2_val == 16384, rs1_val == 1
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x4000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x1, 0x4000, x1, 216, x3)
+
+inst_69:
+// rs2_val == 8192,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x2000, x1, 220, x3)
+
+inst_70:
+// rs2_val == 4096,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x1000
+TEST_RR_OP(div, x12, x10, x11, 0x33333, 0x33333334, 0x1000, x1, 224, x3)
+
+inst_71:
+// rs2_val == 1024,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:0x400
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x41, 0x400, x1, 228, x3)
+
+inst_72:
+// rs2_val == 512,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x200
+TEST_RR_OP(div, x12, x10, x11, 0x8, 0x1000, 0x200, x1, 232, x3)
+
+inst_73:
+// rs2_val == 32, rs1_val == 128
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x20
+TEST_RR_OP(div, x12, x10, x11, 0x4, 0x80, 0x20, x1, 236, x3)
+
+inst_74:
+// rs2_val == 16, rs1_val == 32
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x10
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x20, 0x10, x1, 240, x3)
+
+inst_75:
+// rs2_val == 8,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x8
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x8, x1, 244, x3)
+
+inst_76:
+// rs2_val == 4, rs1_val == 536870912
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x8000000, 0x20000000, 0x4, x1, 248, x3)
+
+inst_77:
+// rs2_val == 2, rs1_val==5 and rs2_val==2
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x5, 0x2, x1, 252, x3)
+
+inst_78:
+// rs2_val == 1,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x1
+TEST_RR_OP(div, x12, x10, x11, 0x40000000, 0x40000000, 0x1, x1, 256, x3)
+
+inst_79:
+// rs1_val == -2147483648, rs2_val == 0, rs1_val == (-2**(xlen-1))
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, -0x80000000, 0x0, x1, 260, x3)
+
+inst_80:
+// rs1_val == 268435456,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x10000000, 0x66666667, x1, 264, x3)
+
+inst_81:
+// rs1_val == 67108864,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0x40000
+TEST_RR_OP(div, x12, x10, x11, 0x100, 0x4000000, 0x40000, x1, 268, x3)
+
+inst_82:
+// rs1_val == 33554432,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2000000, 0x55555556, x1, 272, x3)
+
+inst_83:
+// rs1_val == 8388608,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:-0x801
+TEST_RR_OP(div, x12, x10, x11, -0xffe, 0x800000, -0x801, x1, 276, x3)
+
+inst_84:
+// rs1_val == 2097152,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:-0x80000000
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x200000, -0x80000000, x1, 280, x3)
+
+inst_85:
+// rs1_val == 524288,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:-0x401
+TEST_RR_OP(div, x12, x10, x11, -0x1ff, 0x80000, -0x401, x1, 284, x3)
+
+inst_86:
+// rs1_val == 262144,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x40000, 0x33333333, x1, 288, x3)
+
+inst_87:
+// rs1_val == 131072,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x800
+TEST_RR_OP(div, x12, x10, x11, 0x40, 0x20000, 0x800, x1, 292, x3)
+
+inst_88:
+// rs1_val == 65536,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x2aaa, 0x10000, 0x6, x1, 296, x3)
+
+inst_89:
+// rs1_val == 32768,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:-0x40001
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x8000, -0x40001, x1, 300, x3)
+
+inst_90:
+// rs1_val == 8192,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:-0x201
+TEST_RR_OP(div, x12, x10, x11, -0xf, 0x2000, -0x201, x1, 304, x3)
+
+inst_91:
+// rs1_val == 2048,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x800, 0x33333333, x1, 308, x3)
+
+inst_92:
+// rs1_val == 1024,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:-0x20001
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x400, -0x20001, x1, 312, x3)
+
+inst_93:
+// rs1_val == 64,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x20, 0x40, 0x2, x1, 316, x3)
+
+inst_94:
+// rs1_val == 8,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x8, 0x66666667, x1, 320, x3)
+
+inst_95:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0xb505, 0xb505, x1, 324, x3)
+
+inst_96:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0xb505, -0xb503, x1, 328, x3)
+
+inst_97:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x66666667, x1, 332, x3)
+
+inst_98:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x33333334, x1, 336, x3)
+
+inst_99:
+// rs1_val==46341 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x1e2b, 0xb505, 0x6, x1, 340, x3)
+
+inst_100:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, -0x55555555, x1, 344, x3)
+
+inst_101:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x55555556, x1, 348, x3)
+
+inst_102:
+// rs1_val==46341 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x2d41, 0xb505, 0x4, x1, 352, x3)
+
+inst_103:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0xb505, 0xb503, x1, 356, x3)
+
+inst_104:
+// rs1_val==46341 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0xb505, 0x0, x1, 360, x3)
+
+inst_105:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x66666665, x1, 364, x3)
+
+inst_106:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x33333332, x1, 368, x3)
+
+inst_107:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x55555554, x1, 372, x3)
+
+inst_108:
+// rs1_val==46341 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x5a82, 0xb505, 0x2, x1, 376, x3)
+
+inst_109:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0xb505, 0xb504, x1, 380, x3)
+
+inst_110:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0xb505, -0xb504, x1, 384, x3)
+
+inst_111:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x66666666, x1, 388, x3)
+
+inst_112:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x33333333, x1, 392, x3)
+
+inst_113:
+// rs1_val==46341 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x2434, 0xb505, 0x5, x1, 396, x3)
+
+inst_114:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, -0x55555556, x1, 400, x3)
+
+inst_115:
+// rs1_val==46341 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb505, 0x55555555, x1, 404, x3)
+
+inst_116:
+// rs1_val==46341 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x3c57, 0xb505, 0x3, x1, 408, x3)
+
+inst_117:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0xb505, x1, 412, x3)
+
+inst_118:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x1, -0xb503, -0xb503, x1, 416, x3)
+
+inst_119:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x66666667, x1, 420, x3)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x33333334, x1, 424, x3)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, -0x1e2b, -0xb503, 0x6, x1, 428, x3)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, -0x55555555, x1, 432, x3)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x55555556, x1, 436, x3)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, -0x2d40, -0xb503, 0x4, x1, 440, x3)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0xb503, 0xb503, x1, 444, x3)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, -0xb503, 0x0, x1, 448, x3)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x66666665, x1, 452, x3)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x33333332, x1, 456, x3)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x55555554, x1, 460, x3)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, -0x5a81, -0xb503, 0x2, x1, 464, x3)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0xb504, x1, 468, x3)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, -0xb504, x1, 472, x3)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x66666666, x1, 476, x3)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x33333333, x1, 480, x3)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, -0x2433, -0xb503, 0x5, x1, 484, x3)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, -0x55555556, x1, 488, x3)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb503, 0x55555555, x1, 492, x3)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, -0x3c56, -0xb503, 0x3, x1, 496, x3)
+
+inst_139:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x90d0, 0x66666667, 0xb505, x1, 500, x3)
+
+inst_140:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x90d2, 0x66666667, -0xb503, x1, 504, x3)
+
+inst_141:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666667, 0x66666667, x1, 508, x3)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666667, 0x33333334, x1, 512, x3)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x11111111, 0x66666667, 0x6, x1, 516, x3)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x66666667, -0x55555555, x1, 520, x3)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666667, 0x55555556, x1, 524, x3)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x19999999, 0x66666667, 0x4, x1, 528, x3)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x90d2, 0x66666667, 0xb503, x1, 532, x3)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x66666667, 0x0, x1, 536, x3)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666667, 0x66666665, x1, 540, x3)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x66666667, 0x33333332, x1, 544, x3)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666667, 0x55555554, x1, 548, x3)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x33333333, 0x66666667, 0x2, x1, 552, x3)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x90d1, 0x66666667, 0xb504, x1, 556, x3)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x90d1, 0x66666667, -0xb504, x1, 560, x3)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666667, 0x66666666, x1, 564, x3)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x66666667, 0x33333333, x1, 568, x3)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x147ae147, 0x66666667, 0x5, x1, 572, x3)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x66666667, -0x55555556, x1, 576, x3)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666667, 0x55555555, x1, 580, x3)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x22222222, 0x66666667, 0x3, x1, 584, x3)
+
+inst_161:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x4868, 0x33333334, 0xb505, x1, 588, x3)
+
+inst_162:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x4869, 0x33333334, -0xb503, x1, 592, x3)
+
+inst_163:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333334, 0x66666667, x1, 596, x3)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x33333334, 0x33333334, x1, 600, x3)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x8888888, 0x33333334, 0x6, x1, 604, x3)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333334, -0x55555555, x1, 608, x3)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333334, 0x55555556, x1, 612, x3)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0xccccccd, 0x33333334, 0x4, x1, 616, x3)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x4869, 0x33333334, 0xb503, x1, 620, x3)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x33333334, 0x0, x1, 624, x3)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333334, 0x66666665, x1, 628, x3)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x33333334, 0x33333332, x1, 632, x3)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333334, 0x55555554, x1, 636, x3)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x1999999a, 0x33333334, 0x2, x1, 640, x3)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x4868, 0x33333334, 0xb504, x1, 644, x3)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x4868, 0x33333334, -0xb504, x1, 648, x3)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333334, 0x66666666, x1, 652, x3)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x33333334, 0x33333333, x1, 656, x3)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0xa3d70a4, 0x33333334, 0x5, x1, 660, x3)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333334, -0x55555556, x1, 664, x3)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333334, 0x55555555, x1, 668, x3)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x11111111, 0x33333334, 0x3, x1, 672, x3)
+
+inst_183:
+// rs1_val==6 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0xb505, x1, 676, x3)
+
+inst_184:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, -0xb503, x1, 680, x3)
+
+inst_185:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x66666667, x1, 684, x3)
+
+inst_186:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x33333334, x1, 688, x3)
+
+inst_187:
+// rs1_val==6 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x6, 0x6, x1, 692, x3)
+
+inst_188:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, -0x55555555, x1, 696, x3)
+
+inst_189:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x55555556, x1, 700, x3)
+
+inst_190:
+// rs1_val==6 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x6, 0x4, x1, 704, x3)
+
+inst_191:
+// rs1_val==6 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0xb503, x1, 708, x3)
+
+inst_192:
+// rs1_val==6 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x6, 0x0, x1, 712, x3)
+
+inst_193:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x66666665, x1, 716, x3)
+
+inst_194:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x33333332, x1, 720, x3)
+
+inst_195:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x55555554, x1, 724, x3)
+
+inst_196:
+// rs1_val==6 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x3, 0x6, 0x2, x1, 728, x3)
+
+inst_197:
+// rs1_val==6 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0xb504, x1, 732, x3)
+
+inst_198:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, -0xb504, x1, 736, x3)
+
+inst_199:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x66666666, x1, 740, x3)
+
+inst_200:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x33333333, x1, 744, x3)
+
+inst_201:
+// rs1_val==6 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x6, 0x5, x1, 748, x3)
+
+inst_202:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, -0x55555556, x1, 752, x3)
+
+inst_203:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x6, 0x55555555, x1, 756, x3)
+
+inst_204:
+// rs1_val==6 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x6, 0x3, x1, 760, x3)
+
+inst_205:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, -0x78ad, -0x55555555, 0xb505, x1, 764, x3)
+
+inst_206:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x78af, -0x55555555, -0xb503, x1, 768, x3)
+
+inst_207:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x55555555, 0x66666667, x1, 772, x3)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555555, 0x33333334, x1, 776, x3)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, -0xe38e38e, -0x55555555, 0x6, x1, 780, x3)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x1, -0x55555555, -0x55555555, x1, 784, x3)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x55555555, 0x55555556, x1, 788, x3)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, -0x15555555, -0x55555555, 0x4, x1, 792, x3)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x78af, -0x55555555, 0xb503, x1, 796, x3)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, -0x55555555, 0x0, x1, 800, x3)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x55555555, 0x66666665, x1, 804, x3)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555555, 0x33333332, x1, 808, x3)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555555, 0x55555554, x1, 812, x3)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, -0x2aaaaaaa, -0x55555555, 0x2, x1, 816, x3)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x78ae, -0x55555555, 0xb504, x1, 820, x3)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x78ae, -0x55555555, -0xb504, x1, 824, x3)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x55555555, 0x66666666, x1, 828, x3)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555555, 0x33333333, x1, 832, x3)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, -0x11111111, -0x55555555, 0x5, x1, 836, x3)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x55555555, -0x55555556, x1, 840, x3)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555555, 0x55555555, x1, 844, x3)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, -0x1c71c71c, -0x55555555, 0x3, x1, 848, x3)
+
+inst_227:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x78ad, 0x55555556, 0xb505, x1, 852, x3)
+
+inst_228:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x78af, 0x55555556, -0xb503, x1, 856, x3)
+
+inst_229:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555556, 0x66666667, x1, 860, x3)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555556, 0x33333334, x1, 864, x3)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0xe38e38e, 0x55555556, 0x6, x1, 868, x3)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x55555556, -0x55555555, x1, 872, x3)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555556, 0x55555556, x1, 876, x3)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x15555555, 0x55555556, 0x4, x1, 880, x3)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x78af, 0x55555556, 0xb503, x1, 884, x3)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x55555556, 0x0, x1, 888, x3)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555556, 0x66666665, x1, 892, x3)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555556, 0x33333332, x1, 896, x3)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555556, 0x55555554, x1, 900, x3)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x2aaaaaab, 0x55555556, 0x2, x1, 904, x3)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x78ae, 0x55555556, 0xb504, x1, 908, x3)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x78ae, 0x55555556, -0xb504, x1, 912, x3)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555556, 0x66666666, x1, 916, x3)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555556, 0x33333333, x1, 920, x3)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x11111111, 0x55555556, 0x5, x1, 924, x3)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x55555556, -0x55555556, x1, 928, x3)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555556, 0x55555555, x1, 932, x3)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x3, x1, 936, x3)
+
+inst_249:
+// rs1_val==4 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0xb505, x1, 940, x3)
+
+inst_250:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, -0xb503, x1, 944, x3)
+
+inst_251:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x66666667, x1, 948, x3)
+
+inst_252:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x33333334, x1, 952, x3)
+
+inst_253:
+// rs1_val==4 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x6, x1, 956, x3)
+
+inst_254:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, -0x55555555, x1, 960, x3)
+
+inst_255:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x55555556, x1, 964, x3)
+
+inst_256:
+// rs1_val==4 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x4, 0x4, x1, 968, x3)
+
+inst_257:
+// rs1_val==4 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0xb503, x1, 972, x3)
+
+inst_258:
+// rs1_val==4 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x4, 0x0, x1, 976, x3)
+
+inst_259:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x66666665, x1, 980, x3)
+
+inst_260:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x33333332, x1, 984, x3)
+
+inst_261:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x55555554, x1, 988, x3)
+
+inst_262:
+// rs1_val==4 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x4, 0x2, x1, 992, x3)
+
+inst_263:
+// rs1_val==4 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0xb504, x1, 996, x3)
+
+inst_264:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, -0xb504, x1, 1000, x3)
+
+inst_265:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x66666666, x1, 1004, x3)
+
+inst_266:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x33333333, x1, 1008, x3)
+
+inst_267:
+// rs1_val==4 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x5, x1, 1012, x3)
+
+inst_268:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, -0x55555556, x1, 1016, x3)
+
+inst_269:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4, 0x55555555, x1, 1020, x3)
+
+inst_270:
+// rs1_val==4 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x4, 0x3, x1, 1024, x3)
+
+inst_271:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0xb505, x1, 1028, x3)
+
+inst_272:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0xb503, -0xb503, x1, 1032, x3)
+
+inst_273:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x66666667, x1, 1036, x3)
+
+inst_274:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x33333334, x1, 1040, x3)
+
+inst_275:
+// rs1_val==46339 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x1e2b, 0xb503, 0x6, x1, 1044, x3)
+
+inst_276:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, -0x55555555, x1, 1048, x3)
+
+inst_277:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x55555556, x1, 1052, x3)
+
+inst_278:
+// rs1_val==46339 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x2d40, 0xb503, 0x4, x1, 1056, x3)
+
+inst_279:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0xb503, 0xb503, x1, 1060, x3)
+
+inst_280:
+// rs1_val==46339 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0xb503, 0x0, x1, 1064, x3)
+
+inst_281:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x66666665, x1, 1068, x3)
+
+inst_282:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x33333332, x1, 1072, x3)
+
+inst_283:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x55555554, x1, 1076, x3)
+
+inst_284:
+// rs1_val==46339 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x5a81, 0xb503, 0x2, x1, 1080, x3)
+
+inst_285:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0xb504, x1, 1084, x3)
+
+inst_286:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, -0xb504, x1, 1088, x3)
+
+inst_287:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x66666666, x1, 1092, x3)
+
+inst_288:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x33333333, x1, 1096, x3)
+
+inst_289:
+// rs1_val==46339 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x2433, 0xb503, 0x5, x1, 1100, x3)
+
+inst_290:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, -0x55555556, x1, 1104, x3)
+
+inst_291:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb503, 0x55555555, x1, 1108, x3)
+
+inst_292:
+// rs1_val==46339 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x3c56, 0xb503, 0x3, x1, 1112, x3)
+
+inst_293:
+// rs1_val==0 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0xb505, x1, 1116, x3)
+
+inst_294:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, -0xb503, x1, 1120, x3)
+
+inst_295:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x66666667, x1, 1124, x3)
+
+inst_296:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x33333334, x1, 1128, x3)
+
+inst_297:
+// rs1_val==0 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x6, x1, 1132, x3)
+
+inst_298:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, -0x55555555, x1, 1136, x3)
+
+inst_299:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x55555556, x1, 1140, x3)
+
+inst_300:
+// rs1_val==0 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x4, x1, 1144, x3)
+
+inst_301:
+// rs1_val==0 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0xb503, x1, 1148, x3)
+
+inst_302:
+// rs1_val==0 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x0, 0x0, x1, 1152, x3)
+
+inst_303:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x66666665, x1, 1156, x3)
+
+inst_304:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x33333332, x1, 1160, x3)
+
+inst_305:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x55555554, x1, 1164, x3)
+
+inst_306:
+// rs1_val==0 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x2, x1, 1168, x3)
+
+inst_307:
+// rs1_val==0 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0xb504, x1, 1172, x3)
+
+inst_308:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, -0xb504, x1, 1176, x3)
+
+inst_309:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x66666666, x1, 1180, x3)
+
+inst_310:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x33333333, x1, 1184, x3)
+
+inst_311:
+// rs1_val==0 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x5, x1, 1188, x3)
+
+inst_312:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, -0x55555556, x1, 1192, x3)
+
+inst_313:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x55555555, x1, 1196, x3)
+
+inst_314:
+// rs1_val==0 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x0, 0x3, x1, 1200, x3)
+
+inst_315:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x90d0, 0x66666665, 0xb505, x1, 1204, x3)
+
+inst_316:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x90d2, 0x66666665, -0xb503, x1, 1208, x3)
+
+inst_317:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x66666665, 0x66666667, x1, 1212, x3)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666665, 0x33333334, x1, 1216, x3)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x11111110, 0x66666665, 0x6, x1, 1220, x3)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x66666665, -0x55555555, x1, 1224, x3)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666665, 0x55555556, x1, 1228, x3)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x19999999, 0x66666665, 0x4, x1, 1232, x3)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x90d2, 0x66666665, 0xb503, x1, 1236, x3)
+
+inst_324:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x33333333, 0x0, x1, 1240, x3)
+
+inst_325:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, 0x66666665, x1, 1244, x3)
+
+inst_326:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x33333333, 0x33333332, x1, 1248, x3)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, 0x55555554, x1, 1252, x3)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x19999999, 0x33333333, 0x2, x1, 1256, x3)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x4868, 0x33333333, 0xb504, x1, 1260, x3)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x4868, 0x33333333, -0xb504, x1, 1264, x3)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, 0x66666666, x1, 1268, x3)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x33333333, 0x33333333, x1, 1272, x3)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x5, x1, 1276, x3)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, -0x55555556, x1, 1280, x3)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, 0x55555555, x1, 1284, x3)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x11111111, 0x33333333, 0x3, x1, 1288, x3)
+
+inst_337:
+// rs1_val==5 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0xb505, x1, 1292, x3)
+
+inst_338:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, -0xb503, x1, 1296, x3)
+
+inst_339:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x66666667, x1, 1300, x3)
+
+inst_340:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x33333334, x1, 1304, x3)
+
+inst_341:
+// rs1_val==5 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x6, x1, 1308, x3)
+
+inst_342:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, -0x55555555, x1, 1312, x3)
+
+inst_343:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x55555556, x1, 1316, x3)
+
+inst_344:
+// rs1_val==5 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x5, 0x4, x1, 1320, x3)
+
+inst_345:
+// rs1_val==5 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0xb503, x1, 1324, x3)
+
+inst_346:
+// rs1_val==5 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x5, 0x0, x1, 1328, x3)
+
+inst_347:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x66666665, x1, 1332, x3)
+
+inst_348:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x33333332, x1, 1336, x3)
+
+inst_349:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x55555554, x1, 1340, x3)
+
+inst_350:
+// rs1_val==5 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0xb504, x1, 1344, x3)
+
+inst_351:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, -0xb504, x1, 1348, x3)
+
+inst_352:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x66666666, x1, 1352, x3)
+
+inst_353:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x33333333, x1, 1356, x3)
+
+inst_354:
+// rs1_val==5 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x5, 0x5, x1, 1360, x3)
+
+inst_355:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, -0x55555556, x1, 1364, x3)
+
+inst_356:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x5, 0x55555555, x1, 1368, x3)
+
+inst_357:
+// rs1_val==5 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x5, 0x3, x1, 1372, x3)
+
+inst_358:
+// rs1_val==-1431655766 and rs2_val==46341, rs1_val == -1431655766
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, -0x78ad, -0x55555556, 0xb505, x1, 1376, x3)
+
+inst_359:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x78af, -0x55555556, -0xb503, x1, 1380, x3)
+
+inst_360:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x55555556, 0x66666667, x1, 1384, x3)
+
+inst_361:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555556, 0x33333334, x1, 1388, x3)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, -0xe38e38e, -0x55555556, 0x6, x1, 1392, x3)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x1, -0x55555556, -0x55555555, x1, 1396, x3)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555556, 0x55555556, x1, 1400, x3)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, -0x15555555, -0x55555556, 0x4, x1, 1404, x3)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x78af, -0x55555556, 0xb503, x1, 1408, x3)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, -0x55555556, 0x0, x1, 1412, x3)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x55555556, 0x66666665, x1, 1416, x3)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555556, 0x33333332, x1, 1420, x3)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555556, 0x55555554, x1, 1424, x3)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, -0x2aaaaaab, -0x55555556, 0x2, x1, 1428, x3)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x78ae, -0x55555556, 0xb504, x1, 1432, x3)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x78ae, -0x55555556, -0xb504, x1, 1436, x3)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x55555556, 0x66666666, x1, 1440, x3)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555556, 0x33333333, x1, 1444, x3)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, -0x11111111, -0x55555556, 0x5, x1, 1448, x3)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x1, -0x55555556, -0x55555556, x1, 1452, x3)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0x55555556, 0x55555555, x1, 1456, x3)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, -0x1c71c71c, -0x55555556, 0x3, x1, 1460, x3)
+
+inst_380:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x78ad, 0x55555555, 0xb505, x1, 1464, x3)
+
+inst_381:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x78af, 0x55555555, -0xb503, x1, 1468, x3)
+
+inst_382:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555555, 0x66666667, x1, 1472, x3)
+
+inst_383:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555555, 0x33333334, x1, 1476, x3)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0xe38e38e, 0x55555555, 0x6, x1, 1480, x3)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x55555555, -0x55555555, x1, 1484, x3)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555555, 0x55555556, x1, 1488, x3)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x15555555, 0x55555555, 0x4, x1, 1492, x3)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x78af, 0x55555555, 0xb503, x1, 1496, x3)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x55555555, 0x0, x1, 1500, x3)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555555, 0x66666665, x1, 1504, x3)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555555, 0x33333332, x1, 1508, x3)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555555, 0x55555554, x1, 1512, x3)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x2aaaaaaa, 0x55555555, 0x2, x1, 1516, x3)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x78ae, 0x55555555, 0xb504, x1, 1520, x3)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x78ae, 0x55555555, -0xb504, x1, 1524, x3)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555555, 0x66666666, x1, 1528, x3)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555555, 0x33333333, x1, 1532, x3)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x11111111, 0x55555555, 0x5, x1, 1536, x3)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555555, -0x55555556, x1, 1540, x3)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555555, 0x55555555, x1, 1544, x3)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x1c71c71c, 0x55555555, 0x3, x1, 1548, x3)
+
+inst_402:
+// rs1_val==3 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0xb505, x1, 1552, x3)
+
+inst_403:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, -0xb503, x1, 1556, x3)
+
+inst_404:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x66666667, x1, 1560, x3)
+
+inst_405:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x33333334, x1, 1564, x3)
+
+inst_406:
+// rs1_val==3 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x6, x1, 1568, x3)
+
+inst_407:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, -0x55555555, x1, 1572, x3)
+
+inst_408:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x55555556, x1, 1576, x3)
+
+inst_409:
+// rs1_val==3 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x4, x1, 1580, x3)
+
+inst_410:
+// rs1_val==3 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0xb503, x1, 1584, x3)
+
+inst_411:
+// rs1_val==3 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x3, 0x0, x1, 1588, x3)
+
+inst_412:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x66666665, x1, 1592, x3)
+
+inst_413:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x33333332, x1, 1596, x3)
+
+inst_414:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x55555554, x1, 1600, x3)
+
+inst_415:
+// rs1_val==3 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x3, 0x2, x1, 1604, x3)
+
+inst_416:
+// rs1_val==3 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0xb504, x1, 1608, x3)
+
+inst_417:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, -0xb504, x1, 1612, x3)
+
+inst_418:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x66666666, x1, 1616, x3)
+
+inst_419:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x33333333, x1, 1620, x3)
+
+inst_420:
+// rs1_val==3 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x5, x1, 1624, x3)
+
+inst_421:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, -0x55555556, x1, 1628, x3)
+
+inst_422:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x3, 0x55555555, x1, 1632, x3)
+
+inst_423:
+// rs1_val==3 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x3, 0x3, x1, 1636, x3)
+
+inst_424:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x66666665, 0x0, x1, 1640, x3)
+
+inst_425:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666665, 0x66666665, x1, 1644, x3)
+
+inst_426:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x66666665, 0x33333332, x1, 1648, x3)
+
+inst_427:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666665, 0x55555554, x1, 1652, x3)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x33333332, 0x66666665, 0x2, x1, 1656, x3)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x90d1, 0x66666665, 0xb504, x1, 1660, x3)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x90d1, 0x66666665, -0xb504, x1, 1664, x3)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x66666665, 0x66666666, x1, 1668, x3)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666665, 0x33333333, x1, 1672, x3)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x147ae147, 0x66666665, 0x5, x1, 1676, x3)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x66666665, -0x55555556, x1, 1680, x3)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666665, 0x55555555, x1, 1684, x3)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x22222221, 0x66666665, 0x3, x1, 1688, x3)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x4868, 0x33333332, 0xb505, x1, 1692, x3)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x4869, 0x33333332, -0xb503, x1, 1696, x3)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, 0x66666667, x1, 1700, x3)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, 0x33333334, x1, 1704, x3)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x8888888, 0x33333332, 0x6, x1, 1708, x3)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, -0x55555555, x1, 1712, x3)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, 0x55555556, x1, 1716, x3)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0xccccccc, 0x33333332, 0x4, x1, 1720, x3)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x4869, 0x33333332, 0xb503, x1, 1724, x3)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x33333332, 0x0, x1, 1728, x3)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, 0x66666665, x1, 1732, x3)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x33333332, 0x33333332, x1, 1736, x3)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, 0x55555554, x1, 1740, x3)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x19999999, 0x33333332, 0x2, x1, 1744, x3)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x4868, 0x33333332, 0xb504, x1, 1748, x3)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x4868, 0x33333332, -0xb504, x1, 1752, x3)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, 0x66666666, x1, 1756, x3)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, 0x33333333, x1, 1760, x3)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x5, x1, 1764, x3)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, -0x55555556, x1, 1768, x3)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333332, 0x55555555, x1, 1772, x3)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x11111110, 0x33333332, 0x3, x1, 1776, x3)
+
+inst_459:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x78ad, 0x55555554, 0xb505, x1, 1780, x3)
+
+inst_460:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x78af, 0x55555554, -0xb503, x1, 1784, x3)
+
+inst_461:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555554, 0x66666667, x1, 1788, x3)
+
+inst_462:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555554, 0x33333334, x1, 1792, x3)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0xe38e38e, 0x55555554, 0x6, x1, 1796, x3)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555554, -0x55555555, x1, 1800, x3)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555554, 0x55555556, x1, 1804, x3)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x15555555, 0x55555554, 0x4, x1, 1808, x3)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x78af, 0x55555554, 0xb503, x1, 1812, x3)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x55555554, 0x0, x1, 1816, x3)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555554, 0x66666665, x1, 1820, x3)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555554, 0x33333332, x1, 1824, x3)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555554, 0x55555554, x1, 1828, x3)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x2aaaaaaa, 0x55555554, 0x2, x1, 1832, x3)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x78ae, 0x55555554, 0xb504, x1, 1836, x3)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x78ae, 0x55555554, -0xb504, x1, 1840, x3)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555554, 0x66666666, x1, 1844, x3)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x55555554, 0x33333333, x1, 1848, x3)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x11111110, 0x55555554, 0x5, x1, 1852, x3)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555554, -0x55555556, x1, 1856, x3)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x55555554, 0x55555555, x1, 1860, x3)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x1c71c71c, 0x55555554, 0x3, x1, 1864, x3)
+
+inst_481:
+// rs1_val==2 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0xb505, x1, 1868, x3)
+
+inst_482:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, -0xb503, x1, 1872, x3)
+
+inst_483:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x66666667, x1, 1876, x3)
+
+inst_484:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x33333334, x1, 1880, x3)
+
+inst_485:
+// rs1_val==2 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x6, x1, 1884, x3)
+
+inst_486:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, -0x55555555, x1, 1888, x3)
+
+inst_487:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x55555556, x1, 1892, x3)
+
+inst_488:
+// rs1_val==2 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x4, x1, 1896, x3)
+
+inst_489:
+// rs1_val==2 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0xb503, x1, 1900, x3)
+
+inst_490:
+// rs1_val==2 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x2, 0x0, x1, 1904, x3)
+
+inst_491:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x66666665, x1, 1908, x3)
+
+inst_492:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x33333332, x1, 1912, x3)
+
+inst_493:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x55555554, x1, 1916, x3)
+
+inst_494:
+// rs1_val==2 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x2, 0x2, x1, 1920, x3)
+
+inst_495:
+// rs1_val==2 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0xb504, x1, 1924, x3)
+
+inst_496:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, -0xb504, x1, 1928, x3)
+
+inst_497:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x66666666, x1, 1932, x3)
+
+inst_498:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x33333333, x1, 1936, x3)
+
+inst_499:
+// rs1_val==2 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x5, x1, 1940, x3)
+
+inst_500:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, -0x55555556, x1, 1944, x3)
+
+inst_501:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x55555555, x1, 1948, x3)
+
+inst_502:
+// rs1_val==2 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x2, 0x3, x1, 1952, x3)
+
+inst_503:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0xb505, x1, 1956, x3)
+
+inst_504:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0xb504, -0xb503, x1, 1960, x3)
+
+inst_505:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x66666667, x1, 1964, x3)
+
+inst_506:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x33333334, x1, 1968, x3)
+
+inst_507:
+// rs1_val==46340 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x1e2b, 0xb504, 0x6, x1, 1972, x3)
+
+inst_508:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, -0x55555555, x1, 1976, x3)
+
+inst_509:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x55555556, x1, 1980, x3)
+
+inst_510:
+// rs1_val==46340 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x2d41, 0xb504, 0x4, x1, 1984, x3)
+
+inst_511:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0xb504, 0xb503, x1, 1988, x3)
+
+inst_512:
+// rs1_val==46340 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0xb504, 0x0, x1, 1992, x3)
+
+inst_513:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x66666665, x1, 1996, x3)
+
+inst_514:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x33333332, x1, 2000, x3)
+
+inst_515:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x55555554, x1, 2004, x3)
+
+inst_516:
+// rs1_val==46340 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x5a82, 0xb504, 0x2, x1, 2008, x3)
+
+inst_517:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0xb504, 0xb504, x1, 2012, x3)
+
+inst_518:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0xb504, -0xb504, x1, 2016, x3)
+
+inst_519:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x66666666, x1, 2020, x3)
+
+inst_520:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x33333333, x1, 2024, x3)
+
+inst_521:
+// rs1_val==46340 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x2434, 0xb504, 0x5, x1, 2028, x3)
+
+inst_522:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, -0x55555556, x1, 2032, x3)
+
+inst_523:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0xb504, 0x55555555, x1, 2036, x3)
+
+inst_524:
+// rs1_val==46340 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x3c56, 0xb504, 0x3, x1, 2040, x3)
+
+inst_525:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0xb505, x1, 2044, x3)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_526:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x1, -0xb504, -0xb503, x1, 0, x3)
+
+inst_527:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x66666667, x1, 4, x3)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x33333334, x1, 8, x3)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, -0x1e2b, -0xb504, 0x6, x1, 12, x3)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, -0x55555555, x1, 16, x3)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x55555556, x1, 20, x3)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, -0x2d41, -0xb504, 0x4, x1, 24, x3)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0xb504, 0xb503, x1, 28, x3)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, -0xb504, 0x0, x1, 32, x3)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x66666665, x1, 36, x3)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x33333332, x1, 40, x3)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x55555554, x1, 44, x3)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, -0x5a82, -0xb504, 0x2, x1, 48, x3)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x1, -0xb504, 0xb504, x1, 52, x3)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x1, -0xb504, -0xb504, x1, 56, x3)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x66666666, x1, 60, x3)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x33333333, x1, 64, x3)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, -0x2434, -0xb504, 0x5, x1, 68, x3)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, -0x55555556, x1, 72, x3)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0xb504, 0x55555555, x1, 76, x3)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, -0x3c56, -0xb504, 0x3, x1, 80, x3)
+
+inst_547:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x90d0, 0x66666666, 0xb505, x1, 84, x3)
+
+inst_548:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x90d2, 0x66666666, -0xb503, x1, 88, x3)
+
+inst_549:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x66666666, 0x66666667, x1, 92, x3)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666666, 0x33333334, x1, 96, x3)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x11111111, 0x66666666, 0x6, x1, 100, x3)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x66666666, -0x55555555, x1, 104, x3)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666666, 0x55555556, x1, 108, x3)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0x19999999, 0x66666666, 0x4, x1, 112, x3)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x90d2, 0x66666666, 0xb503, x1, 116, x3)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(div, x12, x10, x11, 0xFFFFFFFF, 0x66666666, 0x0, x1, 120, x3)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666666, 0x66666665, x1, 124, x3)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x66666666, 0x33333332, x1, 128, x3)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666666, 0x55555554, x1, 132, x3)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(div, x12, x10, x11, 0x33333333, 0x66666666, 0x2, x1, 136, x3)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(div, x12, x10, x11, 0x90d1, 0x66666666, 0xb504, x1, 140, x3)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(div, x12, x10, x11, -0x90d1, 0x66666666, -0xb504, x1, 144, x3)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666666, 0x66666666, x1, 148, x3)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(div, x12, x10, x11, 0x2, 0x66666666, 0x33333333, x1, 152, x3)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(div, x12, x10, x11, 0x147ae147, 0x66666666, 0x5, x1, 156, x3)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(div, x12, x10, x11, -0x1, 0x66666666, -0x55555556, x1, 160, x3)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x1, 0x66666666, 0x55555555, x1, 164, x3)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(div, x12, x10, x11, 0x22222222, 0x66666666, 0x3, x1, 168, x3)
+
+inst_569:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(div, x12, x10, x11, 0x4868, 0x33333333, 0xb505, x1, 172, x3)
+
+inst_570:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(div, x12, x10, x11, -0x4869, 0x33333333, -0xb503, x1, 176, x3)
+
+inst_571:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, 0x66666667, x1, 180, x3)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, 0x33333334, x1, 184, x3)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(div, x12, x10, x11, 0x8888888, 0x33333333, 0x6, x1, 188, x3)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, -0x55555555, x1, 192, x3)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x33333333, 0x55555556, x1, 196, x3)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(div, x12, x10, x11, 0xccccccc, 0x33333333, 0x4, x1, 200, x3)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(div, x12, x10, x11, 0x4869, 0x33333333, 0xb503, x1, 204, x3)
+
+inst_578:
+// rs2_val == -1073741825, rs1_val < 0 and rs2_val < 0
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x8; op2val:-0x40000001
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x8, -0x40000001, x1, 208, x3)
+
+inst_579:
+// rs2_val == -536870913, rs1_val == 16384, rs1_val > 0 and rs2_val < 0
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:-0x20000001
+TEST_RR_OP(div, x12, x10, x11, 0x0, 0x4000, -0x20000001, x1, 212, x3)
+
+inst_580:
+// rs2_val == -268435457, rs1_val == -4194305
+// opcode: div ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:-0x10000001
+TEST_RR_OP(div, x12, x10, x11, 0x0, -0x400001, -0x10000001, x1, 216, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 55*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/divu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/divu-01.S
new file mode 100644
index 000000000..1519ccfde
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/divu-01.S
@@ -0,0 +1,3730 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 07:22:49 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32em.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the divu instruction of the RISC-V M extension for the divu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EM")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*M.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",divu)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs2 == rd != rs1, rs1==x2, rs2==x9, rd==x9, rs1_val != rs2_val and rs1_val > 0 and rs2_val > 0, rs2_val == 4286578687, rs1_val > 0 and rs2_val > 0, rs1_val == 1431655765
+// opcode: divu ; op1:x2; op2:x9; dest:x9; op1val:0x55555555; op2val:0xff7fffff
+TEST_RR_OP(divu, x9, x2, x9, 0x0, 0x55555555, 0xff7fffff, x1, 0, x3)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x14, rs2==x12, rd==x14, rs2_val == 2147483647,
+// opcode: divu ; op1:x14; op2:x12; dest:x14; op1val:0x13; op2val:0x7fffffff
+TEST_RR_OP(divu, x14, x14, x12, 0x0, 0x13, 0x7fffffff, x1, 4, x3)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x11, rs2==x11, rd==x11, rs2_val == 3221225471, rs1_val == 4294836223
+// opcode: divu ; op1:x11; op2:x11; dest:x11; op1val:0xfffdffff; op2val:0xfffdffff
+TEST_RR_OP(divu, x11, x11, x11, 0x1, 0xfffdffff, 0xfffdffff, x1, 8, x3)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x4, rs2==x4, rd==x15, rs2_val == 3758096383, rs1_val == 4294967263
+// opcode: divu ; op1:x4; op2:x4; dest:x15; op1val:0xffffffdf; op2val:0xffffffdf
+TEST_RR_OP(divu, x15, x4, x4, 0x1, 0xffffffdf, 0xffffffdf, x1, 12, x3)
+
+inst_4:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x9, rs2==x8, rd==x13, rs2_val == 4026531839,
+// opcode: divu ; op1:x9; op2:x8; dest:x13; op1val:0xfffe; op2val:0xefffffff
+TEST_RR_OP(divu, x13, x9, x8, 0x0, 0xfffe, 0xefffffff, x1, 16, x3)
+
+inst_5:
+// rs1==x12, rs2==x0, rd==x6, rs2_val == 4160749567, rs1_val == 1048576
+// opcode: divu ; op1:x12; op2:x0; dest:x6; op1val:0x100000; op2val:0x0
+TEST_RR_OP(divu, x6, x12, x0, 0xFFFFFFFF, 0x100000, 0x0, x1, 20, x3)
+
+inst_6:
+// rs1==x7, rs2==x13, rd==x12, rs2_val == 4227858431, rs1_val == 32768
+// opcode: divu ; op1:x7; op2:x13; dest:x12; op1val:0x8000; op2val:0xfbffffff
+TEST_RR_OP(divu, x12, x7, x13, 0x0, 0x8000, 0xfbffffff, x1, 24, x3)
+
+inst_7:
+// rs1==x10, rs2==x5, rd==x8, rs2_val == 4261412863, rs1_val == 8
+// opcode: divu ; op1:x10; op2:x5; dest:x8; op1val:0x8; op2val:0xfdffffff
+TEST_RR_OP(divu, x8, x10, x5, 0x0, 0x8, 0xfdffffff, x1, 28, x6)
+RVTEST_SIGBASE( x9,signature_x9_0)
+
+inst_8:
+// rs1==x13, rs2==x7, rd==x3, rs2_val == 4278190079,
+// opcode: divu ; op1:x13; op2:x7; dest:x3; op1val:0x12; op2val:0xfeffffff
+TEST_RR_OP(divu, x3, x13, x7, 0x0, 0x12, 0xfeffffff, x9, 0, x6)
+
+inst_9:
+// rs1==x3, rs2==x14, rd==x2, rs2_val == 4290772991, rs1_val == 4294967167
+// opcode: divu ; op1:x3; op2:x14; dest:x2; op1val:0xffffff7f; op2val:0xffbfffff
+TEST_RR_OP(divu, x2, x3, x14, 0x1, 0xffffff7f, 0xffbfffff, x9, 4, x6)
+
+inst_10:
+// rs1==x5, rs2==x10, rd==x0, rs2_val == 4292870143, rs1_val == 4294443007
+// opcode: divu ; op1:x5; op2:x10; dest:x0; op1val:0xfff7ffff; op2val:0xffdfffff
+TEST_RR_OP(divu, x0, x5, x10, 0, 0xfff7ffff, 0xffdfffff, x9, 8, x6)
+
+inst_11:
+// rs1==x15, rs2==x3, rd==x1, rs2_val == 4293918719,
+// opcode: divu ; op1:x15; op2:x3; dest:x1; op1val:0xfff7ffff; op2val:0xffefffff
+TEST_RR_OP(divu, x1, x15, x3, 0x1, 0xfff7ffff, 0xffefffff, x9, 12, x6)
+
+inst_12:
+// rs1==x8, rs2==x1, rd==x10, rs2_val == 4294443007, rs1_val == 1
+// opcode: divu ; op1:x8; op2:x1; dest:x10; op1val:0x1; op2val:0xfff7ffff
+TEST_RR_OP(divu, x10, x8, x1, 0x0, 0x1, 0xfff7ffff, x9, 16, x6)
+
+inst_13:
+// rs1==x1, rs2==x15, rd==x4, rs2_val == 4294705151,
+// opcode: divu ; op1:x1; op2:x15; dest:x4; op1val:0x3; op2val:0xfffbffff
+TEST_RR_OP(divu, x4, x1, x15, 0x0, 0x3, 0xfffbffff, x9, 20, x6)
+
+inst_14:
+// rs1==x0, rs2==x2, rd==x5, rs2_val == 4294836223, rs1_val == 4294967231
+// opcode: divu ; op1:x0; op2:x2; dest:x5; op1val:0x0; op2val:0xfffdffff
+TEST_RR_OP(divu, x5, x0, x2, 0x0, 0x0, 0xfffdffff, x9, 24, x3)
+
+inst_15:
+// rs1==x6, rs2_val == 4294901759,
+// opcode: divu ; op1:x6; op2:x12; dest:x7; op1val:0x55555555; op2val:0xfffeffff
+TEST_RR_OP(divu, x7, x6, x12, 0x0, 0x55555555, 0xfffeffff, x9, 28, x3)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_16:
+// rs2==x6, rs2_val == 4294934527,
+// opcode: divu ; op1:x14; op2:x6; dest:x13; op1val:0x8000; op2val:0xffff7fff
+TEST_RR_OP(divu, x13, x14, x6, 0x0, 0x8000, 0xffff7fff, x1, 0, x3)
+
+inst_17:
+// rs2_val == 4294950911,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xffffbfff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0xffffbfff, x1, 4, x3)
+
+inst_18:
+// rs2_val == 4294959103, rs1_val == 0
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xffffdfff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xffffdfff, x1, 8, x3)
+
+inst_19:
+// rs2_val == 4294963199,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xffffefff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xffffefff, x1, 12, x3)
+
+inst_20:
+// rs2_val == 4294965247, rs1_val == 4292870143
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffdfffff; op2val:0xfffff7ff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffdfffff, 0xfffff7ff, x1, 16, x3)
+
+inst_21:
+// rs2_val == 4294966271, rs1_val == 2
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xfffffbff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xfffffbff, x1, 20, x3)
+
+inst_22:
+// rs2_val == 4294966783,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xfffffdff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0xfffffdff, x1, 24, x3)
+
+inst_23:
+// rs2_val == 4294967039, rs1_val == 4
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xfffffeff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xfffffeff, x1, 28, x3)
+
+inst_24:
+// rs2_val == 4294967167, rs1_val == 536870912
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0xffffff7f
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x20000000, 0xffffff7f, x1, 32, x3)
+
+inst_25:
+// rs2_val == 4294967231, rs1_val == 4294963199
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffefff; op2val:0xffffffbf
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffffefff, 0xffffffbf, x1, 36, x3)
+
+inst_26:
+// rs2_val == 4294967263, rs1_val == 4294959103
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfff; op2val:0xffffffdf
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffffdfff, 0xffffffdf, x1, 40, x3)
+
+inst_27:
+// rs2_val == 4294967279,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffefff; op2val:0xffffffef
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffffefff, 0xffffffef, x1, 44, x3)
+
+inst_28:
+// rs2_val == 4294967287,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xe; op2val:0xfffffff7
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xe, 0xfffffff7, x1, 48, x3)
+
+inst_29:
+// rs2_val == 4294967291,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xfffffffb
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xfffffffb, x1, 52, x3)
+
+inst_30:
+// rs2_val == 4294967293,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffbf; op2val:0xfffffffd
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffffffbf, 0xfffffffd, x1, 56, x3)
+
+inst_31:
+// rs2_val == 4294967294,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xfffffffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666667, 0xfffffffe, x1, 60, x3)
+
+inst_32:
+// rs1_val == 2147483647, rs2_val == 1073741824
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x40000000
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x7fffffff, 0x40000000, x1, 64, x3)
+
+inst_33:
+// rs1_val == 3221225471,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffff; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x3fffffff, 0xbfffffff, 0x3, x1, 68, x3)
+
+inst_34:
+// rs1_val == 3758096383,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffff; op2val:0xffdfffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xdfffffff, 0xffdfffff, x1, 72, x3)
+
+inst_35:
+// rs1_val == 4026531839,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x1536c, 0xefffffff, 0xb503, x1, 76, x3)
+
+inst_36:
+// rs1_val == 4160749567,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xf7ffffff; op2val:0xff7fffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xf7ffffff, 0xff7fffff, x1, 80, x3)
+
+inst_37:
+// rs1_val == 4227858431, rs2_val == 536870912
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfbffffff; op2val:0x20000000
+TEST_RR_OP(divu, x12, x10, x11, 0x7, 0xfbffffff, 0x20000000, x1, 84, x3)
+
+inst_38:
+// rs1_val == 4261412863,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfdffffff; op2val:0xfbffffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfdffffff, 0xfbffffff, x1, 88, x3)
+
+inst_39:
+// rs1_val == 4278190079,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfeffffff; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0xfeffffff, 0x66666667, x1, 92, x3)
+
+inst_40:
+// rs1_val == 4286578687, rs2_val == 67108864
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xff7fffff; op2val:0x4000000
+TEST_RR_OP(divu, x12, x10, x11, 0x3f, 0xff7fffff, 0x4000000, x1, 96, x3)
+
+inst_41:
+// rs1_val == 4290772991,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffbfffff; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xffbfffff, 0xaaaaaaa9, x1, 100, x3)
+
+inst_42:
+// rs1_val == 4293918719,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffefffff; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x2aa7ffff, 0xffefffff, 0x6, x1, 104, x3)
+
+inst_43:
+// rs1_val == 4294705151,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffbffff; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x33326666, 0xfffbffff, 0x5, x1, 108, x3)
+
+inst_44:
+// rs1_val == 4294901759,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffeffff; op2val:0x11
+TEST_RR_OP(divu, x12, x10, x11, 0xf0effff, 0xfffeffff, 0x11, x1, 112, x3)
+
+inst_45:
+// rs1_val == 4294934527,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff7fff; op2val:0xfffffffd
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff7fff, 0xfffffffd, x1, 116, x3)
+
+inst_46:
+// rs1_val == 4294950911, rs2_val == 8
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffbfff; op2val:0x8
+TEST_RR_OP(divu, x12, x10, x11, 0x1ffff7ff, 0xffffbfff, 0x8, x1, 120, x3)
+
+inst_47:
+// rs1_val == 4294965247, rs2_val == 2147483648
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffff7ff; op2val:0x80000000
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfffff7ff, 0x80000000, x1, 124, x3)
+
+inst_48:
+// rs1_val == 4294966271,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffbff; op2val:0xffffffbf
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffffbff, 0xffffffbf, x1, 128, x3)
+
+inst_49:
+// rs1_val == 4294966783,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffdff; op2val:0x7
+TEST_RR_OP(divu, x12, x10, x11, 0x249248db, 0xfffffdff, 0x7, x1, 132, x3)
+
+inst_50:
+// rs1_val == 4294967039,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffeff; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0xfffffeff, 0x66666667, x1, 136, x3)
+
+inst_51:
+// rs1_val == 4294967279,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffef; op2val:0x7
+TEST_RR_OP(divu, x12, x10, x11, 0x24924922, 0xffffffef, 0x7, x1, 140, x3)
+
+inst_52:
+// rs1_val == 4294967287,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff7; op2val:0xff7fffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfffffff7, 0xff7fffff, x1, 144, x3)
+
+inst_53:
+// rs1_val == 4294967291, rs2_val == 4
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffb; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x3ffffffe, 0xfffffffb, 0x4, x1, 148, x3)
+
+inst_54:
+// rs1_val == 4294967293,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffd; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0xfffffffd, 0x66666665, x1, 152, x3)
+
+inst_55:
+// rs1_val == 4294967294,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffe; op2val:0xffdfffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfffffffe, 0xffdfffff, x1, 156, x3)
+
+inst_56:
+// rs2_val == 268435456,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xa; op2val:0x10000000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xa, 0x10000000, x1, 160, x3)
+
+inst_57:
+// rs2_val == 134217728, rs1_val == 16777216
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x8000000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1000000, 0x8000000, x1, 164, x3)
+
+inst_58:
+// rs2_val == 33554432,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfff; op2val:0x2000000
+TEST_RR_OP(divu, x12, x10, x11, 0x7f, 0xffffdfff, 0x2000000, x1, 168, x3)
+
+inst_59:
+// rs2_val == 16777216,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x1000000
+TEST_RR_OP(divu, x12, x10, x11, 0x55, 0x55555555, 0x1000000, x1, 172, x3)
+
+inst_60:
+// rs2_val == 8388608, rs1_val == 67108864
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0x800000
+TEST_RR_OP(divu, x12, x10, x11, 0x8, 0x4000000, 0x800000, x1, 176, x3)
+
+inst_61:
+// rs2_val == 4194304, rs1_val == 262144
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x400000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x40000, 0x400000, x1, 180, x3)
+
+inst_62:
+// rs2_val == 2097152,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x12; op2val:0x200000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x12, 0x200000, x1, 184, x3)
+
+inst_63:
+// rs2_val == 1048576,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x100000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x100000, x1, 188, x3)
+
+inst_64:
+// rs2_val == 524288,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x80000
+TEST_RR_OP(divu, x12, x10, x11, 0xaaa, 0x55555555, 0x80000, x1, 192, x3)
+
+inst_65:
+// rs2_val == 262144, rs1_val == 32
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x40000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x20, 0x40000, x1, 196, x3)
+
+inst_66:
+// rs2_val == 131072,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x20000
+TEST_RR_OP(divu, x12, x10, x11, 0x1999, 0x33333333, 0x20000, x1, 200, x3)
+
+inst_67:
+// rs2_val == 65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffdf; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0xffff, 0xffffffdf, 0x10000, x1, 204, x3)
+
+inst_68:
+// rs2_val == 32768,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfff; op2val:0x8000
+TEST_RR_OP(divu, x12, x10, x11, 0x1ffff, 0xffffdfff, 0x8000, x1, 208, x3)
+
+inst_69:
+// rs2_val == 16384, rs1_val == 134217728
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x4000
+TEST_RR_OP(divu, x12, x10, x11, 0x2000, 0x8000000, 0x4000, x1, 212, x3)
+
+inst_70:
+// rs2_val == 8192,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0x2000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x7, 0x2000, x1, 216, x3)
+
+inst_71:
+// rs2_val == 4096, rs1_val == (2**(xlen)-1)
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff; op2val:0x1000
+TEST_RR_OP(divu, x12, x10, x11, 0xfffff, 0xffffffff, 0x1000, x1, 220, x3)
+
+inst_72:
+// rs2_val == 2048, rs1_val == 131072
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x800
+TEST_RR_OP(divu, x12, x10, x11, 0x40, 0x20000, 0x800, x1, 224, x3)
+
+inst_73:
+// rs2_val == 1024,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x400
+TEST_RR_OP(divu, x12, x10, x11, 0x80, 0x20000, 0x400, x1, 228, x3)
+
+inst_74:
+// rs2_val == 512,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x200
+TEST_RR_OP(divu, x12, x10, x11, 0x800, 0x100000, 0x200, x1, 232, x3)
+
+inst_75:
+// rs2_val == 256,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0x100
+TEST_RR_OP(divu, x12, x10, x11, 0xefffff, 0xefffffff, 0x100, x1, 236, x3)
+
+inst_76:
+// rs2_val == 128,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x80
+TEST_RR_OP(divu, x12, x10, x11, 0x16a, 0xb503, 0x80, x1, 240, x3)
+
+inst_77:
+// rs2_val == 64,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xc; op2val:0x40
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xc, 0x40, x1, 244, x3)
+
+inst_78:
+// rs2_val == 32,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x20
+TEST_RR_OP(divu, x12, x10, x11, 0x1000000, 0x20000000, 0x20, x1, 248, x3)
+
+inst_79:
+// rs2_val == 16,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffeffff; op2val:0x10
+TEST_RR_OP(divu, x12, x10, x11, 0xfffefff, 0xfffeffff, 0x10, x1, 252, x3)
+
+inst_80:
+// rs2_val == 2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffbf; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x7fffffdf, 0xffffffbf, 0x2, x1, 256, x3)
+
+inst_81:
+// rs2_val == 1, rs1_val == 524288
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x80000, 0x80000, 0x1, x1, 260, x3)
+
+inst_82:
+// rs1_val == 2147483648,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x80000000; op2val:0xb
+TEST_RR_OP(divu, x12, x10, x11, 0xba2e8ba, 0x80000000, 0xb, x1, 264, x3)
+
+inst_83:
+// rs1_val == 1073741824,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x1000
+TEST_RR_OP(divu, x12, x10, x11, 0x40000, 0x40000000, 0x1000, x1, 268, x3)
+
+inst_84:
+// rs1_val == 268435456,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1000, 0x10000000, 0xffff, x1, 272, x3)
+
+inst_85:
+// rs1_val == 33554432,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2000000, 0x55555556, x1, 276, x3)
+
+inst_86:
+// rs1_val == 8388608,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x800000, 0x800000, 0x1, x1, 280, x3)
+
+inst_87:
+// rs1_val == 4194304,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0xffffefff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x400000, 0xffffefff, x1, 284, x3)
+
+inst_88:
+// rs1_val == 2097152,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0xfdffffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x200000, 0xfdffffff, x1, 288, x3)
+
+inst_89:
+// rs1_val == 65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x2000000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x2000000, x1, 292, x3)
+
+inst_90:
+// rs1_val == 16384, rs2_val == (2**(xlen)-1)
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0xffffffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4000, 0xffffffff, x1, 296, x3)
+
+inst_91:
+// rs1_val == 8192,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x666, 0x2000, 0x5, x1, 300, x3)
+
+inst_92:
+// rs1_val == 4096,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x11
+TEST_RR_OP(divu, x12, x10, x11, 0xf0, 0x1000, 0x11, x1, 304, x3)
+
+inst_93:
+// rs1_val == 2048,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x800, 0xaaaaaaa9, x1, 308, x3)
+
+inst_94:
+// rs1_val == 1024,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0xffffffef
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x400, 0xffffffef, x1, 312, x3)
+
+inst_95:
+// rs1_val == 512,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0xfffffffd
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x200, 0xfffffffd, x1, 316, x3)
+
+inst_96:
+// rs1_val == 256,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x40000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x100, 0x40000, x1, 320, x3)
+
+inst_97:
+// rs1_val == 128,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0xfffbffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x80, 0xfffbffff, x1, 324, x3)
+
+inst_98:
+// rs1_val == 64,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x40, 0x10000, x1, 328, x3)
+
+inst_99:
+// rs1_val == 16,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0xff7fffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10, 0xff7fffff, x1, 332, x3)
+
+inst_100:
+// rs1_val==65536 and rs2_val==65536, rs1_val == rs2_val and rs1_val > 0 and rs2_val > 0
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x10000, 0x10000, x1, 336, x3)
+
+inst_101:
+// rs1_val==65536 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x10000, 0x10000, 0x1, x1, 340, x3)
+
+inst_102:
+// rs1_val==65536 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x10000, 0xb505, x1, 344, x3)
+
+inst_103:
+// rs1_val==65536 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x66666667, x1, 348, x3)
+
+inst_104:
+// rs1_val==65536 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x33333334, x1, 352, x3)
+
+inst_105:
+// rs1_val==65536 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaa, 0x10000, 0x6, x1, 356, x3)
+
+inst_106:
+// rs1_val==65536 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0xaaaaaaab, x1, 360, x3)
+
+inst_107:
+// rs1_val==65536 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x55555556, x1, 364, x3)
+
+inst_108:
+// rs1_val==65536 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x4000, 0x10000, 0x4, x1, 368, x3)
+
+inst_109:
+// rs1_val==65536 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x10000, 0xfffe, x1, 372, x3)
+
+inst_110:
+// rs1_val==65536 and rs2_val==0, rs2_val == 0
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x10000, 0x0, x1, 376, x3)
+
+inst_111:
+// rs1_val==65536 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x10000, 0xb503, x1, 380, x3)
+
+inst_112:
+// rs1_val==65536 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x66666665, x1, 384, x3)
+
+inst_113:
+// rs1_val==65536 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x33333332, x1, 388, x3)
+
+inst_114:
+// rs1_val==65536 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0xaaaaaaa9, x1, 392, x3)
+
+inst_115:
+// rs1_val==65536 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x55555554, x1, 396, x3)
+
+inst_116:
+// rs1_val==65536 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x8000, 0x10000, 0x2, x1, 400, x3)
+
+inst_117:
+// rs1_val==65536 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x10000, 0xffff, x1, 404, x3)
+
+inst_118:
+// rs1_val==65536 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x10000, 0xb504, x1, 408, x3)
+
+inst_119:
+// rs1_val==65536 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x66666666, x1, 412, x3)
+
+inst_120:
+// rs1_val==65536 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x33333333, x1, 416, x3)
+
+inst_121:
+// rs1_val==65536 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x10000, 0x5, x1, 420, x3)
+
+inst_122:
+// rs1_val==65536 and rs2_val==2863311530, rs2_val == 2863311530
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0xaaaaaaaa, x1, 424, x3)
+
+inst_123:
+// rs1_val==65536 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x10000, 0x55555555, x1, 428, x3)
+
+inst_124:
+// rs1_val==65536 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x5555, 0x10000, 0x3, x1, 432, x3)
+
+inst_125:
+// rs1_val==1 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x10000, x1, 436, x3)
+
+inst_126:
+// rs1_val==1 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x1, 0x1, x1, 440, x3)
+
+inst_127:
+// rs1_val==1 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xb505, x1, 444, x3)
+
+inst_128:
+// rs1_val==1 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x66666667, x1, 448, x3)
+
+inst_129:
+// rs1_val==1 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x33333334, x1, 452, x3)
+
+inst_130:
+// rs1_val==1 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x6, x1, 456, x3)
+
+inst_131:
+// rs1_val==1 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xaaaaaaab, x1, 460, x3)
+
+inst_132:
+// rs1_val==1 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x55555556, x1, 464, x3)
+
+inst_133:
+// rs1_val==1 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x4, x1, 468, x3)
+
+inst_134:
+// rs1_val==1 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xfffe, x1, 472, x3)
+
+inst_135:
+// rs1_val==1 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x1, 0x0, x1, 476, x3)
+
+inst_136:
+// rs1_val==1 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xb503, x1, 480, x3)
+
+inst_137:
+// rs1_val==1 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x66666665, x1, 484, x3)
+
+inst_138:
+// rs1_val==1 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x33333332, x1, 488, x3)
+
+inst_139:
+// rs1_val==1 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xaaaaaaa9, x1, 492, x3)
+
+inst_140:
+// rs1_val==1 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x55555554, x1, 496, x3)
+
+inst_141:
+// rs1_val==1 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x2, x1, 500, x3)
+
+inst_142:
+// rs1_val==1 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xffff, x1, 504, x3)
+
+inst_143:
+// rs1_val==1 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xb504, x1, 508, x3)
+
+inst_144:
+// rs1_val==1 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x66666666, x1, 512, x3)
+
+inst_145:
+// rs1_val==1 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x33333333, x1, 516, x3)
+
+inst_146:
+// rs1_val==1 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x5, x1, 520, x3)
+
+inst_147:
+// rs1_val==1 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0xaaaaaaaa, x1, 524, x3)
+
+inst_148:
+// rs1_val==1 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x55555555, x1, 528, x3)
+
+inst_149:
+// rs1_val==1 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x1, 0x3, x1, 532, x3)
+
+inst_150:
+// rs1_val==46341 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x10000, x1, 536, x3)
+
+inst_151:
+// rs1_val==46341 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0xb505, 0xb505, 0x1, x1, 540, x3)
+
+inst_152:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xb505, 0xb505, x1, 544, x3)
+
+inst_153:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x66666667, x1, 548, x3)
+
+inst_154:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x33333334, x1, 552, x3)
+
+inst_155:
+// rs1_val==46341 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x1e2b, 0xb505, 0x6, x1, 556, x3)
+
+inst_156:
+// rs1_val==46341 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0xaaaaaaab, x1, 560, x3)
+
+inst_157:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x55555556, x1, 564, x3)
+
+inst_158:
+// rs1_val==46341 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x2d41, 0xb505, 0x4, x1, 568, x3)
+
+inst_159:
+// rs1_val==46341 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0xfffe, x1, 572, x3)
+
+inst_160:
+// rs1_val==46341 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0xb505, 0x0, x1, 576, x3)
+
+inst_161:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xb505, 0xb503, x1, 580, x3)
+
+inst_162:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x66666665, x1, 584, x3)
+
+inst_163:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x33333332, x1, 588, x3)
+
+inst_164:
+// rs1_val==46341 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0xaaaaaaa9, x1, 592, x3)
+
+inst_165:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x55555554, x1, 596, x3)
+
+inst_166:
+// rs1_val==46341 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x5a82, 0xb505, 0x2, x1, 600, x3)
+
+inst_167:
+// rs1_val==46341 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0xffff, x1, 604, x3)
+
+inst_168:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xb505, 0xb504, x1, 608, x3)
+
+inst_169:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x66666666, x1, 612, x3)
+
+inst_170:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x33333333, x1, 616, x3)
+
+inst_171:
+// rs1_val==46341 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x2434, 0xb505, 0x5, x1, 620, x3)
+
+inst_172:
+// rs1_val==46341 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0xaaaaaaaa, x1, 624, x3)
+
+inst_173:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb505, 0x55555555, x1, 628, x3)
+
+inst_174:
+// rs1_val==46341 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x3c57, 0xb505, 0x3, x1, 632, x3)
+
+inst_175:
+// rs1_val==1717986919 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x6666, 0x66666667, 0x10000, x1, 636, x3)
+
+inst_176:
+// rs1_val==1717986919 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x66666667, 0x66666667, 0x1, x1, 640, x3)
+
+inst_177:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x90d0, 0x66666667, 0xb505, x1, 644, x3)
+
+inst_178:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666667, 0x66666667, x1, 648, x3)
+
+inst_179:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666667, 0x33333334, x1, 652, x3)
+
+inst_180:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x11111111, 0x66666667, 0x6, x1, 656, x3)
+
+inst_181:
+// rs1_val==1717986919 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666667, 0xaaaaaaab, x1, 660, x3)
+
+inst_182:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666667, 0x55555556, x1, 664, x3)
+
+inst_183:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x19999999, 0x66666667, 0x4, x1, 668, x3)
+
+inst_184:
+// rs1_val==1717986919 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x6667, 0x66666667, 0xfffe, x1, 672, x3)
+
+inst_185:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x66666667, 0x0, x1, 676, x3)
+
+inst_186:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x90d2, 0x66666667, 0xb503, x1, 680, x3)
+
+inst_187:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666667, 0x66666665, x1, 684, x3)
+
+inst_188:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x66666667, 0x33333332, x1, 688, x3)
+
+inst_189:
+// rs1_val==1717986919 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666667, 0xaaaaaaa9, x1, 692, x3)
+
+inst_190:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666667, 0x55555554, x1, 696, x3)
+
+inst_191:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x33333333, 0x66666667, 0x2, x1, 700, x3)
+
+inst_192:
+// rs1_val==1717986919 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x6666, 0x66666667, 0xffff, x1, 704, x3)
+
+inst_193:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x90d1, 0x66666667, 0xb504, x1, 708, x3)
+
+inst_194:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666667, 0x66666666, x1, 712, x3)
+
+inst_195:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x66666667, 0x33333333, x1, 716, x3)
+
+inst_196:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x147ae147, 0x66666667, 0x5, x1, 720, x3)
+
+inst_197:
+// rs1_val==1717986919 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666667, 0xaaaaaaaa, x1, 724, x3)
+
+inst_198:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666667, 0x55555555, x1, 728, x3)
+
+inst_199:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x22222222, 0x66666667, 0x3, x1, 732, x3)
+
+inst_200:
+// rs1_val==858993460 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333334, 0x10000, x1, 736, x3)
+
+inst_201:
+// rs1_val==858993460 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x33333334, 0x33333334, 0x1, x1, 740, x3)
+
+inst_202:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x4868, 0x33333334, 0xb505, x1, 744, x3)
+
+inst_203:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0x66666667, x1, 748, x3)
+
+inst_204:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x33333334, 0x33333334, x1, 752, x3)
+
+inst_205:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x8888888, 0x33333334, 0x6, x1, 756, x3)
+
+inst_206:
+// rs1_val==858993460 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0xaaaaaaab, x1, 760, x3)
+
+inst_207:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0x55555556, x1, 764, x3)
+
+inst_208:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0xccccccd, 0x33333334, 0x4, x1, 768, x3)
+
+inst_209:
+// rs1_val==858993460 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333334, 0xfffe, x1, 772, x3)
+
+inst_210:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x33333334, 0x0, x1, 776, x3)
+
+inst_211:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x4869, 0x33333334, 0xb503, x1, 780, x3)
+
+inst_212:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0x66666665, x1, 784, x3)
+
+inst_213:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x33333334, 0x33333332, x1, 788, x3)
+
+inst_214:
+// rs1_val==858993460 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0xaaaaaaa9, x1, 792, x3)
+
+inst_215:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0x55555554, x1, 796, x3)
+
+inst_216:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x1999999a, 0x33333334, 0x2, x1, 800, x3)
+
+inst_217:
+// rs1_val==858993460 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333334, 0xffff, x1, 804, x3)
+
+inst_218:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x4868, 0x33333334, 0xb504, x1, 808, x3)
+
+inst_219:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0x66666666, x1, 812, x3)
+
+inst_220:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x33333334, 0x33333333, x1, 816, x3)
+
+inst_221:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0xa3d70a4, 0x33333334, 0x5, x1, 820, x3)
+
+inst_222:
+// rs1_val==858993460 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0xaaaaaaaa, x1, 824, x3)
+
+inst_223:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333334, 0x55555555, x1, 828, x3)
+
+inst_224:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x11111111, 0x33333334, 0x3, x1, 832, x3)
+
+inst_225:
+// rs1_val==6 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x10000, x1, 836, x3)
+
+inst_226:
+// rs1_val==6 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x6, 0x6, 0x1, x1, 840, x3)
+
+inst_227:
+// rs1_val==6 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0xb505, x1, 844, x3)
+
+inst_228:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x66666667, x1, 848, x3)
+
+inst_229:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x33333334, x1, 852, x3)
+
+inst_230:
+// rs1_val==6 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x6, 0x6, x1, 856, x3)
+
+inst_231:
+// rs1_val==6 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0xaaaaaaab, x1, 860, x3)
+
+inst_232:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x55555556, x1, 864, x3)
+
+inst_233:
+// rs1_val==6 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x6, 0x4, x1, 868, x3)
+
+inst_234:
+// rs1_val==6 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0xfffe, x1, 872, x3)
+
+inst_235:
+// rs1_val==6 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x6, 0x0, x1, 876, x3)
+
+inst_236:
+// rs1_val==6 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0xb503, x1, 880, x3)
+
+inst_237:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x66666665, x1, 884, x3)
+
+inst_238:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x33333332, x1, 888, x3)
+
+inst_239:
+// rs1_val==6 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0xaaaaaaa9, x1, 892, x3)
+
+inst_240:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x55555554, x1, 896, x3)
+
+inst_241:
+// rs1_val==6 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0x6, 0x2, x1, 900, x3)
+
+inst_242:
+// rs1_val==6 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0xffff, x1, 904, x3)
+
+inst_243:
+// rs1_val==6 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0xb504, x1, 908, x3)
+
+inst_244:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x66666666, x1, 912, x3)
+
+inst_245:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x33333333, x1, 916, x3)
+
+inst_246:
+// rs1_val==6 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x6, 0x5, x1, 920, x3)
+
+inst_247:
+// rs1_val==6 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0xaaaaaaaa, x1, 924, x3)
+
+inst_248:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x6, 0x55555555, x1, 928, x3)
+
+inst_249:
+// rs1_val==6 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x6, 0x3, x1, 932, x3)
+
+inst_250:
+// rs1_val==2863311531 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0xaaaa, 0xaaaaaaab, 0x10000, x1, 936, x3)
+
+inst_251:
+// rs1_val==2863311531 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0xaaaaaaab, 0xaaaaaaab, 0x1, x1, 940, x3)
+
+inst_252:
+// rs1_val==2863311531 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0xf15b, 0xaaaaaaab, 0xb505, x1, 944, x3)
+
+inst_253:
+// rs1_val==2863311531 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaab, 0x66666667, x1, 948, x3)
+
+inst_254:
+// rs1_val==2863311531 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaab, 0x33333334, x1, 952, x3)
+
+inst_255:
+// rs1_val==2863311531 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x1c71c71c, 0xaaaaaaab, 0x6, x1, 956, x3)
+
+inst_256:
+// rs1_val==2863311531 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaab, 0xaaaaaaab, x1, 960, x3)
+
+inst_257:
+// rs1_val==2863311531 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaab, 0x55555556, x1, 964, x3)
+
+inst_258:
+// rs1_val==2863311531 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaaaaaa, 0xaaaaaaab, 0x4, x1, 968, x3)
+
+inst_259:
+// rs1_val==2863311531 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0xaaac, 0xaaaaaaab, 0xfffe, x1, 972, x3)
+
+inst_260:
+// rs1_val==2863311531 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0xaaaaaaab, 0x0, x1, 976, x3)
+
+inst_261:
+// rs1_val==2863311531 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0xf15e, 0xaaaaaaab, 0xb503, x1, 980, x3)
+
+inst_262:
+// rs1_val==2863311531 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaab, 0x66666665, x1, 984, x3)
+
+inst_263:
+// rs1_val==2863311531 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaab, 0x33333332, x1, 988, x3)
+
+inst_264:
+// rs1_val==2863311531 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaab, 0xaaaaaaa9, x1, 992, x3)
+
+inst_265:
+// rs1_val==2863311531 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0xaaaaaaab, 0x55555554, x1, 996, x3)
+
+inst_266:
+// rs1_val==2863311531 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x55555555, 0xaaaaaaab, 0x2, x1, 1000, x3)
+
+inst_267:
+// rs1_val==2863311531 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0xaaab, 0xaaaaaaab, 0xffff, x1, 1004, x3)
+
+inst_268:
+// rs1_val==2863311531 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0xf15d, 0xaaaaaaab, 0xb504, x1, 1008, x3)
+
+inst_269:
+// rs1_val==2863311531 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaab, 0x66666666, x1, 1012, x3)
+
+inst_270:
+// rs1_val==2863311531 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaab, 0x33333333, x1, 1016, x3)
+
+inst_271:
+// rs1_val==2863311531 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x22222222, 0xaaaaaaab, 0x5, x1, 1020, x3)
+
+inst_272:
+// rs1_val==2863311531 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaab, 0xaaaaaaaa, x1, 1024, x3)
+
+inst_273:
+// rs1_val==2863311531 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0xaaaaaaab, 0x55555555, x1, 1028, x3)
+
+inst_274:
+// rs1_val==2863311531 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x38e38e39, 0xaaaaaaab, 0x3, x1, 1032, x3)
+
+inst_275:
+// rs1_val==1431655766 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x5555, 0x55555556, 0x10000, x1, 1036, x3)
+
+inst_276:
+// rs1_val==1431655766 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x55555556, 0x55555556, 0x1, x1, 1040, x3)
+
+inst_277:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x78ad, 0x55555556, 0xb505, x1, 1044, x3)
+
+inst_278:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555556, 0x66666667, x1, 1048, x3)
+
+inst_279:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555556, 0x33333334, x1, 1052, x3)
+
+inst_280:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0xe38e38e, 0x55555556, 0x6, x1, 1056, x3)
+
+inst_281:
+// rs1_val==1431655766 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555556, 0xaaaaaaab, x1, 1060, x3)
+
+inst_282:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555556, 0x55555556, x1, 1064, x3)
+
+inst_283:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x15555555, 0x55555556, 0x4, x1, 1068, x3)
+
+inst_284:
+// rs1_val==1431655766 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x5556, 0x55555556, 0xfffe, x1, 1072, x3)
+
+inst_285:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x55555556, 0x0, x1, 1076, x3)
+
+inst_286:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x78af, 0x55555556, 0xb503, x1, 1080, x3)
+
+inst_287:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555556, 0x66666665, x1, 1084, x3)
+
+inst_288:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555556, 0x33333332, x1, 1088, x3)
+
+inst_289:
+// rs1_val==1431655766 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555556, 0xaaaaaaa9, x1, 1092, x3)
+
+inst_290:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555556, 0x55555554, x1, 1096, x3)
+
+inst_291:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaaaaab, 0x55555556, 0x2, x1, 1100, x3)
+
+inst_292:
+// rs1_val==1431655766 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x5555, 0x55555556, 0xffff, x1, 1104, x3)
+
+inst_293:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x78ae, 0x55555556, 0xb504, x1, 1108, x3)
+
+inst_294:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555556, 0x66666666, x1, 1112, x3)
+
+inst_295:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555556, 0x33333333, x1, 1116, x3)
+
+inst_296:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x11111111, 0x55555556, 0x5, x1, 1120, x3)
+
+inst_297:
+// rs1_val==1431655766 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555556, 0xaaaaaaaa, x1, 1124, x3)
+
+inst_298:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555556, 0x55555555, x1, 1128, x3)
+
+inst_299:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x3, x1, 1132, x3)
+
+inst_300:
+// rs1_val==4 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x10000, x1, 1136, x3)
+
+inst_301:
+// rs1_val==4 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x4, 0x4, 0x1, x1, 1140, x3)
+
+inst_302:
+// rs1_val==4 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xb505, x1, 1144, x3)
+
+inst_303:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x66666667, x1, 1148, x3)
+
+inst_304:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x33333334, x1, 1152, x3)
+
+inst_305:
+// rs1_val==4 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x6, x1, 1156, x3)
+
+inst_306:
+// rs1_val==4 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xaaaaaaab, x1, 1160, x3)
+
+inst_307:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x55555556, x1, 1164, x3)
+
+inst_308:
+// rs1_val==4 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x4, 0x4, x1, 1168, x3)
+
+inst_309:
+// rs1_val==4 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xfffe, x1, 1172, x3)
+
+inst_310:
+// rs1_val==4 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x4, 0x0, x1, 1176, x3)
+
+inst_311:
+// rs1_val==4 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xb503, x1, 1180, x3)
+
+inst_312:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x66666665, x1, 1184, x3)
+
+inst_313:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x33333332, x1, 1188, x3)
+
+inst_314:
+// rs1_val==4 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xaaaaaaa9, x1, 1192, x3)
+
+inst_315:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x55555554, x1, 1196, x3)
+
+inst_316:
+// rs1_val==4 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x4, 0x2, x1, 1200, x3)
+
+inst_317:
+// rs1_val==4 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xffff, x1, 1204, x3)
+
+inst_318:
+// rs1_val==4 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xb504, x1, 1208, x3)
+
+inst_319:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x66666666, x1, 1212, x3)
+
+inst_320:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x33333333, x1, 1216, x3)
+
+inst_321:
+// rs1_val==4 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x5, x1, 1220, x3)
+
+inst_322:
+// rs1_val==4 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0xaaaaaaaa, x1, 1224, x3)
+
+inst_323:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x4, 0x55555555, x1, 1228, x3)
+
+inst_324:
+// rs1_val==4 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x4, 0x3, x1, 1232, x3)
+
+inst_325:
+// rs1_val==65534 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x10000, x1, 1236, x3)
+
+inst_326:
+// rs1_val==65534 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0xfffe, 0xfffe, 0x1, x1, 1240, x3)
+
+inst_327:
+// rs1_val==65534 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfffe, 0xb505, x1, 1244, x3)
+
+inst_328:
+// rs1_val==65534 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x66666667, x1, 1248, x3)
+
+inst_329:
+// rs1_val==65534 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x33333334, x1, 1252, x3)
+
+inst_330:
+// rs1_val==65534 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaa, 0xfffe, 0x6, x1, 1256, x3)
+
+inst_331:
+// rs1_val==65534 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0xaaaaaaab, x1, 1260, x3)
+
+inst_332:
+// rs1_val==65534 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x55555556, x1, 1264, x3)
+
+inst_333:
+// rs1_val==65534 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x3fff, 0xfffe, 0x4, x1, 1268, x3)
+
+inst_334:
+// rs1_val==65534 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfffe, 0xfffe, x1, 1272, x3)
+
+inst_335:
+// rs1_val==65534 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0xfffe, 0x0, x1, 1276, x3)
+
+inst_336:
+// rs1_val==65534 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfffe, 0xb503, x1, 1280, x3)
+
+inst_337:
+// rs1_val==65534 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x66666665, x1, 1284, x3)
+
+inst_338:
+// rs1_val==65534 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x33333332, x1, 1288, x3)
+
+inst_339:
+// rs1_val==65534 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0xaaaaaaa9, x1, 1292, x3)
+
+inst_340:
+// rs1_val==65534 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x55555554, x1, 1296, x3)
+
+inst_341:
+// rs1_val==65534 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x7fff, 0xfffe, 0x2, x1, 1300, x3)
+
+inst_342:
+// rs1_val==65534 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0xffff, x1, 1304, x3)
+
+inst_343:
+// rs1_val==65534 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfffe, 0xb504, x1, 1308, x3)
+
+inst_344:
+// rs1_val==65534 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x66666666, x1, 1312, x3)
+
+inst_345:
+// rs1_val==65534 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x33333333, x1, 1316, x3)
+
+inst_346:
+// rs1_val==65534 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x3332, 0xfffe, 0x5, x1, 1320, x3)
+
+inst_347:
+// rs1_val==65534 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0xaaaaaaaa, x1, 1324, x3)
+
+inst_348:
+// rs1_val==65534 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xfffe, 0x55555555, x1, 1328, x3)
+
+inst_349:
+// rs1_val==65534 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x5554, 0xfffe, 0x3, x1, 1332, x3)
+
+inst_350:
+// rs1_val==0 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x10000, x1, 1336, x3)
+
+inst_351:
+// rs1_val==0 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x1, x1, 1340, x3)
+
+inst_352:
+// rs1_val==0 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xb505, x1, 1344, x3)
+
+inst_353:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x66666667, x1, 1348, x3)
+
+inst_354:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x33333334, x1, 1352, x3)
+
+inst_355:
+// rs1_val==0 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x6, x1, 1356, x3)
+
+inst_356:
+// rs1_val==0 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaab, x1, 1360, x3)
+
+inst_357:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x55555556, x1, 1364, x3)
+
+inst_358:
+// rs1_val==0 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x4, x1, 1368, x3)
+
+inst_359:
+// rs1_val==0 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xfffe, x1, 1372, x3)
+
+inst_360:
+// rs1_val==0 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x0, 0x0, x1, 1376, x3)
+
+inst_361:
+// rs1_val==0 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xb503, x1, 1380, x3)
+
+inst_362:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x66666665, x1, 1384, x3)
+
+inst_363:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x33333332, x1, 1388, x3)
+
+inst_364:
+// rs1_val==0 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaa9, x1, 1392, x3)
+
+inst_365:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x55555554, x1, 1396, x3)
+
+inst_366:
+// rs1_val==0 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x2, x1, 1400, x3)
+
+inst_367:
+// rs1_val==0 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xffff, x1, 1404, x3)
+
+inst_368:
+// rs1_val==0 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xb504, x1, 1408, x3)
+
+inst_369:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x66666666, x1, 1412, x3)
+
+inst_370:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x33333333, x1, 1416, x3)
+
+inst_371:
+// rs1_val==0 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x5, x1, 1420, x3)
+
+inst_372:
+// rs1_val==0 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaaa, x1, 1424, x3)
+
+inst_373:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x55555555, x1, 1428, x3)
+
+inst_374:
+// rs1_val==0 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x0, 0x3, x1, 1432, x3)
+
+inst_375:
+// rs1_val==46339 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x10000, x1, 1436, x3)
+
+inst_376:
+// rs1_val==46339 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0xb503, 0xb503, 0x1, x1, 1440, x3)
+
+inst_377:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0xb505, x1, 1444, x3)
+
+inst_378:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x66666667, x1, 1448, x3)
+
+inst_379:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x33333334, x1, 1452, x3)
+
+inst_380:
+// rs1_val==46339 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x1e2b, 0xb503, 0x6, x1, 1456, x3)
+
+inst_381:
+// rs1_val==46339 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0xaaaaaaab, x1, 1460, x3)
+
+inst_382:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x55555556, x1, 1464, x3)
+
+inst_383:
+// rs1_val==46339 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x2d40, 0xb503, 0x4, x1, 1468, x3)
+
+inst_384:
+// rs1_val==46339 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0xfffe, x1, 1472, x3)
+
+inst_385:
+// rs1_val==46339 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0xb503, 0x0, x1, 1476, x3)
+
+inst_386:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xb503, 0xb503, x1, 1480, x3)
+
+inst_387:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x66666665, x1, 1484, x3)
+
+inst_388:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x33333332, x1, 1488, x3)
+
+inst_389:
+// rs1_val==46339 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0xaaaaaaa9, x1, 1492, x3)
+
+inst_390:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x55555554, x1, 1496, x3)
+
+inst_391:
+// rs1_val==46339 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x5a81, 0xb503, 0x2, x1, 1500, x3)
+
+inst_392:
+// rs1_val==46339 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0xffff, x1, 1504, x3)
+
+inst_393:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0xb504, x1, 1508, x3)
+
+inst_394:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x66666666, x1, 1512, x3)
+
+inst_395:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x33333333, x1, 1516, x3)
+
+inst_396:
+// rs1_val==46339 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x2433, 0xb503, 0x5, x1, 1520, x3)
+
+inst_397:
+// rs1_val==46339 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0xaaaaaaaa, x1, 1524, x3)
+
+inst_398:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb503, 0x55555555, x1, 1528, x3)
+
+inst_399:
+// rs1_val==46339 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x3c56, 0xb503, 0x3, x1, 1532, x3)
+
+inst_400:
+// rs1_val==1717986917 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x6666, 0x66666665, 0x10000, x1, 1536, x3)
+
+inst_401:
+// rs1_val==1717986917 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x66666665, 0x66666665, 0x1, x1, 1540, x3)
+
+inst_402:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x90d0, 0x66666665, 0xb505, x1, 1544, x3)
+
+inst_403:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666665, 0x66666667, x1, 1548, x3)
+
+inst_404:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666665, 0x33333334, x1, 1552, x3)
+
+inst_405:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x11111110, 0x66666665, 0x6, x1, 1556, x3)
+
+inst_406:
+// rs1_val==1717986917 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666665, 0xaaaaaaab, x1, 1560, x3)
+
+inst_407:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666665, 0x55555556, x1, 1564, x3)
+
+inst_408:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x19999999, 0x66666665, 0x4, x1, 1568, x3)
+
+inst_409:
+// rs1_val==1717986917 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x6667, 0x66666665, 0xfffe, x1, 1572, x3)
+
+inst_410:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x66666665, 0x0, x1, 1576, x3)
+
+inst_411:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x90d2, 0x66666665, 0xb503, x1, 1580, x3)
+
+inst_412:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666665, 0x66666665, x1, 1584, x3)
+
+inst_413:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x66666665, 0x33333332, x1, 1588, x3)
+
+inst_414:
+// rs1_val==1717986917 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666665, 0xaaaaaaa9, x1, 1592, x3)
+
+inst_415:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666665, 0x55555554, x1, 1596, x3)
+
+inst_416:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x33333332, 0x66666665, 0x2, x1, 1600, x3)
+
+inst_417:
+// rs1_val==1717986917 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x6666, 0x66666665, 0xffff, x1, 1604, x3)
+
+inst_418:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x90d1, 0x66666665, 0xb504, x1, 1608, x3)
+
+inst_419:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666665, 0x66666666, x1, 1612, x3)
+
+inst_420:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666665, 0x33333333, x1, 1616, x3)
+
+inst_421:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x147ae147, 0x66666665, 0x5, x1, 1620, x3)
+
+inst_422:
+// rs1_val==1717986917 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666665, 0xaaaaaaaa, x1, 1624, x3)
+
+inst_423:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666665, 0x55555555, x1, 1628, x3)
+
+inst_424:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x22222221, 0x66666665, 0x3, x1, 1632, x3)
+
+inst_425:
+// rs1_val==858993458 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333332, 0x10000, x1, 1636, x3)
+
+inst_426:
+// rs1_val==858993458 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x33333332, 0x33333332, 0x1, x1, 1640, x3)
+
+inst_427:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x4868, 0x33333332, 0xb505, x1, 1644, x3)
+
+inst_428:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0x66666667, x1, 1648, x3)
+
+inst_429:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0x33333334, x1, 1652, x3)
+
+inst_430:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x8888888, 0x33333332, 0x6, x1, 1656, x3)
+
+inst_431:
+// rs1_val==858993458 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0xaaaaaaab, x1, 1660, x3)
+
+inst_432:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0x55555556, x1, 1664, x3)
+
+inst_433:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0xccccccc, 0x33333332, 0x4, x1, 1668, x3)
+
+inst_434:
+// rs1_val==858993458 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333332, 0xfffe, x1, 1672, x3)
+
+inst_435:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x33333332, 0x0, x1, 1676, x3)
+
+inst_436:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x4869, 0x33333332, 0xb503, x1, 1680, x3)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0x66666665, x1, 1684, x3)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x33333332, 0x33333332, x1, 1688, x3)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0xaaaaaaa9, x1, 1692, x3)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0x55555554, x1, 1696, x3)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x19999999, 0x33333332, 0x2, x1, 1700, x3)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333332, 0xffff, x1, 1704, x3)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x4868, 0x33333332, 0xb504, x1, 1708, x3)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0x66666666, x1, 1712, x3)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0x33333333, x1, 1716, x3)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x5, x1, 1720, x3)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0xaaaaaaaa, x1, 1724, x3)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333332, 0x55555555, x1, 1728, x3)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x11111110, 0x33333332, 0x3, x1, 1732, x3)
+
+inst_450:
+// rs1_val==2863311529 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0xaaaa, 0xaaaaaaa9, 0x10000, x1, 1736, x3)
+
+inst_451:
+// rs1_val==2863311529 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0xaaaaaaa9, 0xaaaaaaa9, 0x1, x1, 1740, x3)
+
+inst_452:
+// rs1_val==2863311529 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0xf15b, 0xaaaaaaa9, 0xb505, x1, 1744, x3)
+
+inst_453:
+// rs1_val==2863311529 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x66666667, x1, 1748, x3)
+
+inst_454:
+// rs1_val==2863311529 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaa9, 0x33333334, x1, 1752, x3)
+
+inst_455:
+// rs1_val==2863311529 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x1c71c71c, 0xaaaaaaa9, 0x6, x1, 1756, x3)
+
+inst_456:
+// rs1_val==2863311529 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xaaaaaaab, x1, 1760, x3)
+
+inst_457:
+// rs1_val==2863311529 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x55555556, x1, 1764, x3)
+
+inst_458:
+// rs1_val==2863311529 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaaaaaa, 0xaaaaaaa9, 0x4, x1, 1768, x3)
+
+inst_459:
+// rs1_val==2863311529 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0xaaac, 0xaaaaaaa9, 0xfffe, x1, 1772, x3)
+
+inst_460:
+// rs1_val==2863311529 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0xaaaaaaa9, 0x0, x1, 1776, x3)
+
+inst_461:
+// rs1_val==2863311529 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0xf15e, 0xaaaaaaa9, 0xb503, x1, 1780, x3)
+
+inst_462:
+// rs1_val==2863311529 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x66666665, x1, 1784, x3)
+
+inst_463:
+// rs1_val==2863311529 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaa9, 0x33333332, x1, 1788, x3)
+
+inst_464:
+// rs1_val==2863311529 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0xaaaaaaa9, x1, 1792, x3)
+
+inst_465:
+// rs1_val==2863311529 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0xaaaaaaa9, 0x55555554, x1, 1796, x3)
+
+inst_466:
+// rs1_val==2863311529 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x55555554, 0xaaaaaaa9, 0x2, x1, 1800, x3)
+
+inst_467:
+// rs1_val==2863311529 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0xaaab, 0xaaaaaaa9, 0xffff, x1, 1804, x3)
+
+inst_468:
+// rs1_val==2863311529 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0xf15d, 0xaaaaaaa9, 0xb504, x1, 1808, x3)
+
+inst_469:
+// rs1_val==2863311529 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x66666666, x1, 1812, x3)
+
+inst_470:
+// rs1_val==2863311529 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaa9, 0x33333333, x1, 1816, x3)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x15555555, 0x55555554, 0x4, x1, 1820, x3)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x5556, 0x55555554, 0xfffe, x1, 1824, x3)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x55555554, 0x0, x1, 1828, x3)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x78af, 0x55555554, 0xb503, x1, 1832, x3)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555554, 0x66666665, x1, 1836, x3)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555554, 0x33333332, x1, 1840, x3)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555554, 0xaaaaaaa9, x1, 1844, x3)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555554, 0x55555554, x1, 1848, x3)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaaaaaa, 0x55555554, 0x2, x1, 1852, x3)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x5555, 0x55555554, 0xffff, x1, 1856, x3)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x78ae, 0x55555554, 0xb504, x1, 1860, x3)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555554, 0x66666666, x1, 1864, x3)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555554, 0x33333333, x1, 1868, x3)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x11111110, 0x55555554, 0x5, x1, 1872, x3)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555554, 0xaaaaaaaa, x1, 1876, x3)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555554, 0x55555555, x1, 1880, x3)
+
+inst_487:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x1c71c71c, 0x55555554, 0x3, x1, 1884, x3)
+
+inst_488:
+// rs1_val==2 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x10000, x1, 1888, x3)
+
+inst_489:
+// rs1_val==2 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x2, 0x1, x1, 1892, x3)
+
+inst_490:
+// rs1_val==2 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xb505, x1, 1896, x3)
+
+inst_491:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x66666667, x1, 1900, x3)
+
+inst_492:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x33333334, x1, 1904, x3)
+
+inst_493:
+// rs1_val==2 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x6, x1, 1908, x3)
+
+inst_494:
+// rs1_val==2 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xaaaaaaab, x1, 1912, x3)
+
+inst_495:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x55555556, x1, 1916, x3)
+
+inst_496:
+// rs1_val==2 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x4, x1, 1920, x3)
+
+inst_497:
+// rs1_val==2 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xfffe, x1, 1924, x3)
+
+inst_498:
+// rs1_val==2 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x2, 0x0, x1, 1928, x3)
+
+inst_499:
+// rs1_val==2 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xb503, x1, 1932, x3)
+
+inst_500:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x66666665, x1, 1936, x3)
+
+inst_501:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x33333332, x1, 1940, x3)
+
+inst_502:
+// rs1_val==2 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xaaaaaaa9, x1, 1944, x3)
+
+inst_503:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x55555554, x1, 1948, x3)
+
+inst_504:
+// rs1_val==2 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x2, 0x2, x1, 1952, x3)
+
+inst_505:
+// rs1_val==2 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xffff, x1, 1956, x3)
+
+inst_506:
+// rs1_val==2 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xb504, x1, 1960, x3)
+
+inst_507:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x66666666, x1, 1964, x3)
+
+inst_508:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x33333333, x1, 1968, x3)
+
+inst_509:
+// rs1_val==2 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x5, x1, 1972, x3)
+
+inst_510:
+// rs1_val==2 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0xaaaaaaaa, x1, 1976, x3)
+
+inst_511:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x55555555, x1, 1980, x3)
+
+inst_512:
+// rs1_val==2 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x2, 0x3, x1, 1984, x3)
+
+inst_513:
+// rs1_val==65535 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x10000, x1, 1988, x3)
+
+inst_514:
+// rs1_val==65535 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0xffff, 0xffff, 0x1, x1, 1992, x3)
+
+inst_515:
+// rs1_val==65535 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xffff, 0xb505, x1, 1996, x3)
+
+inst_516:
+// rs1_val==65535 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x66666667, x1, 2000, x3)
+
+inst_517:
+// rs1_val==65535 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x33333334, x1, 2004, x3)
+
+inst_518:
+// rs1_val==65535 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaa, 0xffff, 0x6, x1, 2008, x3)
+
+inst_519:
+// rs1_val==65535 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0xaaaaaaab, x1, 2012, x3)
+
+inst_520:
+// rs1_val==65535 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x55555556, x1, 2016, x3)
+
+inst_521:
+// rs1_val==65535 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x3fff, 0xffff, 0x4, x1, 2020, x3)
+
+inst_522:
+// rs1_val==65535 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xffff, 0xfffe, x1, 2024, x3)
+
+inst_523:
+// rs1_val==65535 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0xffff, 0x0, x1, 2028, x3)
+
+inst_524:
+// rs1_val==65535 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xffff, 0xb503, x1, 2032, x3)
+
+inst_525:
+// rs1_val==65535 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x66666665, x1, 2036, x3)
+
+inst_526:
+// rs1_val==65535 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x33333332, x1, 2040, x3)
+
+inst_527:
+// rs1_val==65535 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0xaaaaaaa9, x1, 2044, x3)
+RVTEST_SIGBASE( x1,signature_x1_3)
+
+inst_528:
+// rs1_val==65535 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x55555554, x1, 0, x3)
+
+inst_529:
+// rs1_val==65535 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x7fff, 0xffff, 0x2, x1, 4, x3)
+
+inst_530:
+// rs1_val==65535 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xffff, 0xffff, x1, 8, x3)
+
+inst_531:
+// rs1_val==65535 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xffff, 0xb504, x1, 12, x3)
+
+inst_532:
+// rs1_val==65535 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x66666666, x1, 16, x3)
+
+inst_533:
+// rs1_val==65535 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x33333333, x1, 20, x3)
+
+inst_534:
+// rs1_val==65535 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0xffff, 0x5, x1, 24, x3)
+
+inst_535:
+// rs1_val==65535 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0xaaaaaaaa, x1, 28, x3)
+
+inst_536:
+// rs1_val==65535 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xffff, 0x55555555, x1, 32, x3)
+
+inst_537:
+// rs1_val==65535 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x5555, 0xffff, 0x3, x1, 36, x3)
+
+inst_538:
+// rs1_val==46340 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x10000, x1, 40, x3)
+
+inst_539:
+// rs1_val==46340 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0xb504, 0xb504, 0x1, x1, 44, x3)
+
+inst_540:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0xb505, x1, 48, x3)
+
+inst_541:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x66666667, x1, 52, x3)
+
+inst_542:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x33333334, x1, 56, x3)
+
+inst_543:
+// rs1_val==46340 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x1e2b, 0xb504, 0x6, x1, 60, x3)
+
+inst_544:
+// rs1_val==46340 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0xaaaaaaab, x1, 64, x3)
+
+inst_545:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x55555556, x1, 68, x3)
+
+inst_546:
+// rs1_val==46340 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x2d41, 0xb504, 0x4, x1, 72, x3)
+
+inst_547:
+// rs1_val==46340 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0xfffe, x1, 76, x3)
+
+inst_548:
+// rs1_val==46340 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0xb504, 0x0, x1, 80, x3)
+
+inst_549:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xb504, 0xb503, x1, 84, x3)
+
+inst_550:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x66666665, x1, 88, x3)
+
+inst_551:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x33333332, x1, 92, x3)
+
+inst_552:
+// rs1_val==46340 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0xaaaaaaa9, x1, 96, x3)
+
+inst_553:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x55555554, x1, 100, x3)
+
+inst_554:
+// rs1_val==46340 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x5a82, 0xb504, 0x2, x1, 104, x3)
+
+inst_555:
+// rs1_val==46340 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0xffff, x1, 108, x3)
+
+inst_556:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xb504, 0xb504, x1, 112, x3)
+
+inst_557:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x66666666, x1, 116, x3)
+
+inst_558:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x33333333, x1, 120, x3)
+
+inst_559:
+// rs1_val==46340 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x2434, 0xb504, 0x5, x1, 124, x3)
+
+inst_560:
+// rs1_val==46340 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0xaaaaaaaa, x1, 128, x3)
+
+inst_561:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xb504, 0x55555555, x1, 132, x3)
+
+inst_562:
+// rs1_val==46340 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x3c56, 0xb504, 0x3, x1, 136, x3)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x6666, 0x66666666, 0x10000, x1, 140, x3)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x66666666, 0x66666666, 0x1, x1, 144, x3)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x90d0, 0x66666666, 0xb505, x1, 148, x3)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666666, 0x66666667, x1, 152, x3)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666666, 0x33333334, x1, 156, x3)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x11111111, 0x66666666, 0x6, x1, 160, x3)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666666, 0xaaaaaaab, x1, 164, x3)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666666, 0x55555556, x1, 168, x3)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x19999999, 0x66666666, 0x4, x1, 172, x3)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x6667, 0x66666666, 0xfffe, x1, 176, x3)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x66666666, 0x0, x1, 180, x3)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x90d2, 0x66666666, 0xb503, x1, 184, x3)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666666, 0x66666665, x1, 188, x3)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x66666666, 0x33333332, x1, 192, x3)
+
+inst_577:
+// rs1_val==1717986918 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666666, 0xaaaaaaa9, x1, 196, x3)
+
+inst_578:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666666, 0x55555554, x1, 200, x3)
+
+inst_579:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x33333333, 0x66666666, 0x2, x1, 204, x3)
+
+inst_580:
+// rs1_val==1717986918 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x6666, 0x66666666, 0xffff, x1, 208, x3)
+
+inst_581:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x90d1, 0x66666666, 0xb504, x1, 212, x3)
+
+inst_582:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666666, 0x66666666, x1, 216, x3)
+
+inst_583:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x66666666, 0x33333333, x1, 220, x3)
+
+inst_584:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x147ae147, 0x66666666, 0x5, x1, 224, x3)
+
+inst_585:
+// rs1_val==1717986918 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x66666666, 0xaaaaaaaa, x1, 228, x3)
+
+inst_586:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x66666666, 0x55555555, x1, 232, x3)
+
+inst_587:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x22222222, 0x66666666, 0x3, x1, 236, x3)
+
+inst_588:
+// rs1_val==858993459 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333333, 0x10000, x1, 240, x3)
+
+inst_589:
+// rs1_val==858993459 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x33333333, 0x33333333, 0x1, x1, 244, x3)
+
+inst_590:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x4868, 0x33333333, 0xb505, x1, 248, x3)
+
+inst_591:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0x66666667, x1, 252, x3)
+
+inst_592:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0x33333334, x1, 256, x3)
+
+inst_593:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x8888888, 0x33333333, 0x6, x1, 260, x3)
+
+inst_594:
+// rs1_val==858993459 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0xaaaaaaab, x1, 264, x3)
+
+inst_595:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0x55555556, x1, 268, x3)
+
+inst_596:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0xccccccc, 0x33333333, 0x4, x1, 272, x3)
+
+inst_597:
+// rs1_val==858993459 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333333, 0xfffe, x1, 276, x3)
+
+inst_598:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x33333333, 0x0, x1, 280, x3)
+
+inst_599:
+// rs1_val==2863311529 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x38e38e38, 0xaaaaaaa9, 0x3, x1, 284, x3)
+
+inst_600:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x4869, 0x33333333, 0xb503, x1, 288, x3)
+
+inst_601:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0x66666665, x1, 292, x3)
+
+inst_602:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x33333333, 0x33333332, x1, 296, x3)
+
+inst_603:
+// rs1_val==858993459 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0xaaaaaaa9, x1, 300, x3)
+
+inst_604:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0x55555554, x1, 304, x3)
+
+inst_605:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x19999999, 0x33333333, 0x2, x1, 308, x3)
+
+inst_606:
+// rs1_val==858993459 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x3333, 0x33333333, 0xffff, x1, 312, x3)
+
+inst_607:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x4868, 0x33333333, 0xb504, x1, 316, x3)
+
+inst_608:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0x66666666, x1, 320, x3)
+
+inst_609:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x33333333, 0x33333333, x1, 324, x3)
+
+inst_610:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x5, x1, 328, x3)
+
+inst_611:
+// rs1_val==858993459 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0xaaaaaaaa, x1, 332, x3)
+
+inst_612:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x33333333, 0x55555555, x1, 336, x3)
+
+inst_613:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x11111111, 0x33333333, 0x3, x1, 340, x3)
+
+inst_614:
+// rs1_val==5 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x10000, x1, 344, x3)
+
+inst_615:
+// rs1_val==5 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x5, 0x5, 0x1, x1, 348, x3)
+
+inst_616:
+// rs1_val==5 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0xb505, x1, 352, x3)
+
+inst_617:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x66666667, x1, 356, x3)
+
+inst_618:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x33333334, x1, 360, x3)
+
+inst_619:
+// rs1_val==5 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x6, x1, 364, x3)
+
+inst_620:
+// rs1_val==5 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0xaaaaaaab, x1, 368, x3)
+
+inst_621:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x55555556, x1, 372, x3)
+
+inst_622:
+// rs1_val==5 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x5, 0x4, x1, 376, x3)
+
+inst_623:
+// rs1_val==5 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0xfffe, x1, 380, x3)
+
+inst_624:
+// rs1_val==5 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x5, 0x0, x1, 384, x3)
+
+inst_625:
+// rs1_val==5 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0xb503, x1, 388, x3)
+
+inst_626:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x66666665, x1, 392, x3)
+
+inst_627:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x33333332, x1, 396, x3)
+
+inst_628:
+// rs1_val==5 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0xaaaaaaa9, x1, 400, x3)
+
+inst_629:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x55555554, x1, 404, x3)
+
+inst_630:
+// rs1_val==5 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0x5, 0x2, x1, 408, x3)
+
+inst_631:
+// rs1_val==5 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0xffff, x1, 412, x3)
+
+inst_632:
+// rs1_val==5 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0xb504, x1, 416, x3)
+
+inst_633:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x66666666, x1, 420, x3)
+
+inst_634:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x33333333, x1, 424, x3)
+
+inst_635:
+// rs1_val==5 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x5, 0x5, x1, 428, x3)
+
+inst_636:
+// rs1_val==5 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0xaaaaaaaa, x1, 432, x3)
+
+inst_637:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x5, 0x55555555, x1, 436, x3)
+
+inst_638:
+// rs1_val==5 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x5, 0x3, x1, 440, x3)
+
+inst_639:
+// rs1_val==2863311530 and rs2_val==65536, rs1_val == 2863311530
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0xaaaa, 0xaaaaaaaa, 0x10000, x1, 444, x3)
+
+inst_640:
+// rs1_val==2863311530 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0xaaaaaaaa, 0xaaaaaaaa, 0x1, x1, 448, x3)
+
+inst_641:
+// rs1_val==2863311530 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0xf15b, 0xaaaaaaaa, 0xb505, x1, 452, x3)
+
+inst_642:
+// rs1_val==2863311530 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0x66666667, x1, 456, x3)
+
+inst_643:
+// rs1_val==2863311530 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaaa, 0x33333334, x1, 460, x3)
+
+inst_644:
+// rs1_val==2863311530 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x1c71c71c, 0xaaaaaaaa, 0x6, x1, 464, x3)
+
+inst_645:
+// rs1_val==2863311530 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xaaaaaaab, x1, 468, x3)
+
+inst_646:
+// rs1_val==2863311530 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0x55555556, x1, 472, x3)
+
+inst_647:
+// rs1_val==2863311530 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaaaaaa, 0xaaaaaaaa, 0x4, x1, 476, x3)
+
+inst_648:
+// rs1_val==2863311530 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0xaaac, 0xaaaaaaaa, 0xfffe, x1, 480, x3)
+
+inst_649:
+// rs1_val==2863311530 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0xaaaaaaaa, 0x0, x1, 484, x3)
+
+inst_650:
+// rs1_val==2863311530 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0xf15e, 0xaaaaaaaa, 0xb503, x1, 488, x3)
+
+inst_651:
+// rs1_val==2863311530 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0x66666665, x1, 492, x3)
+
+inst_652:
+// rs1_val==2863311530 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaaa, 0x33333332, x1, 496, x3)
+
+inst_653:
+// rs1_val==2863311530 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0xaaaaaaa9, x1, 500, x3)
+
+inst_654:
+// rs1_val==2863311530 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0xaaaaaaaa, 0x55555554, x1, 504, x3)
+
+inst_655:
+// rs1_val==2863311530 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x55555555, 0xaaaaaaaa, 0x2, x1, 508, x3)
+
+inst_656:
+// rs1_val==2863311530 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0xaaab, 0xaaaaaaaa, 0xffff, x1, 512, x3)
+
+inst_657:
+// rs1_val==2863311530 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0xf15d, 0xaaaaaaaa, 0xb504, x1, 516, x3)
+
+inst_658:
+// rs1_val==2863311530 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0x66666666, x1, 520, x3)
+
+inst_659:
+// rs1_val==2863311530 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0xaaaaaaaa, 0x33333333, x1, 524, x3)
+
+inst_660:
+// rs1_val==2863311530 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x22222222, 0xaaaaaaaa, 0x5, x1, 528, x3)
+
+inst_661:
+// rs1_val==2863311530 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0xaaaaaaaa, x1, 532, x3)
+
+inst_662:
+// rs1_val==2863311530 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x2, 0xaaaaaaaa, 0x55555555, x1, 536, x3)
+
+inst_663:
+// rs1_val==2863311530 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x38e38e38, 0xaaaaaaaa, 0x3, x1, 540, x3)
+
+inst_664:
+// rs1_val==1431655765 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x5555, 0x55555555, 0x10000, x1, 544, x3)
+
+inst_665:
+// rs1_val==1431655765 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x55555555, 0x55555555, 0x1, x1, 548, x3)
+
+inst_666:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x78ad, 0x55555555, 0xb505, x1, 552, x3)
+
+inst_667:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555555, 0x66666667, x1, 556, x3)
+
+inst_668:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555555, 0x33333334, x1, 560, x3)
+
+inst_669:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0xe38e38e, 0x55555555, 0x6, x1, 564, x3)
+
+inst_670:
+// rs1_val==1431655765 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555555, 0xaaaaaaab, x1, 568, x3)
+
+inst_671:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555555, 0x55555556, x1, 572, x3)
+
+inst_672:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x15555555, 0x55555555, 0x4, x1, 576, x3)
+
+inst_673:
+// rs1_val==1431655765 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x5556, 0x55555555, 0xfffe, x1, 580, x3)
+
+inst_674:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x55555555, 0x0, x1, 584, x3)
+
+inst_675:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x78af, 0x55555555, 0xb503, x1, 588, x3)
+
+inst_676:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555555, 0x66666665, x1, 592, x3)
+
+inst_677:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555555, 0x33333332, x1, 596, x3)
+
+inst_678:
+// rs1_val==1431655765 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555555, 0xaaaaaaa9, x1, 600, x3)
+
+inst_679:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555555, 0x55555554, x1, 604, x3)
+
+inst_680:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x2aaaaaaa, 0x55555555, 0x2, x1, 608, x3)
+
+inst_681:
+// rs1_val==1431655765 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x5555, 0x55555555, 0xffff, x1, 612, x3)
+
+inst_682:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x78ae, 0x55555555, 0xb504, x1, 616, x3)
+
+inst_683:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555555, 0x66666666, x1, 620, x3)
+
+inst_684:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555555, 0x33333333, x1, 624, x3)
+
+inst_685:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x11111111, 0x55555555, 0x5, x1, 628, x3)
+
+inst_686:
+// rs1_val==1431655765 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555555, 0xaaaaaaaa, x1, 632, x3)
+
+inst_687:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555555, 0x55555555, x1, 636, x3)
+
+inst_688:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x1c71c71c, 0x55555555, 0x3, x1, 640, x3)
+
+inst_689:
+// rs1_val==3 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x10000, x1, 644, x3)
+
+inst_690:
+// rs1_val==3 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x3, 0x3, 0x1, x1, 648, x3)
+
+inst_691:
+// rs1_val==3 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0xb505, x1, 652, x3)
+
+inst_692:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x66666667, x1, 656, x3)
+
+inst_693:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x33333334, x1, 660, x3)
+
+inst_694:
+// rs1_val==3 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x6, x1, 664, x3)
+
+inst_695:
+// rs1_val==3 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0xaaaaaaab, x1, 668, x3)
+
+inst_696:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x55555556, x1, 672, x3)
+
+inst_697:
+// rs1_val==3 and rs2_val==4,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x4, x1, 676, x3)
+
+inst_698:
+// rs1_val==3 and rs2_val==65534,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xfffe
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0xfffe, x1, 680, x3)
+
+inst_699:
+// rs1_val==3 and rs2_val==0,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(divu, x12, x10, x11, 0xFFFFFFFF, 0x3, 0x0, x1, 684, x3)
+
+inst_700:
+// rs1_val==3 and rs2_val==46339,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0xb503, x1, 688, x3)
+
+inst_701:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x66666665, x1, 692, x3)
+
+inst_702:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x33333332, x1, 696, x3)
+
+inst_703:
+// rs1_val==3 and rs2_val==2863311529,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaa9
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0xaaaaaaa9, x1, 700, x3)
+
+inst_704:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x55555554, x1, 704, x3)
+
+inst_705:
+// rs1_val==3 and rs2_val==2,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x3, 0x2, x1, 708, x3)
+
+inst_706:
+// rs1_val==3 and rs2_val==65535,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0xffff, x1, 712, x3)
+
+inst_707:
+// rs1_val==3 and rs2_val==46340,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0xb504, x1, 716, x3)
+
+inst_708:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x66666666, x1, 720, x3)
+
+inst_709:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x33333333, x1, 724, x3)
+
+inst_710:
+// rs1_val==3 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x5, x1, 728, x3)
+
+inst_711:
+// rs1_val==3 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0xaaaaaaaa, x1, 732, x3)
+
+inst_712:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x3, 0x55555555, x1, 736, x3)
+
+inst_713:
+// rs1_val==3 and rs2_val==3,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x3, 0x3, x1, 740, x3)
+
+inst_714:
+// rs1_val==2863311529 and rs2_val==5,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x5
+TEST_RR_OP(divu, x12, x10, x11, 0x22222221, 0xaaaaaaa9, 0x5, x1, 744, x3)
+
+inst_715:
+// rs1_val==2863311529 and rs2_val==2863311530,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaaa
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xaaaaaaaa, x1, 748, x3)
+
+inst_716:
+// rs1_val==2863311529 and rs2_val==1431655765,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555555
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x55555555, x1, 752, x3)
+
+inst_717:
+// rs1_val==1431655764 and rs2_val==65536,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x10000
+TEST_RR_OP(divu, x12, x10, x11, 0x5555, 0x55555554, 0x10000, x1, 756, x3)
+
+inst_718:
+// rs1_val==1431655764 and rs2_val==1,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x1
+TEST_RR_OP(divu, x12, x10, x11, 0x55555554, 0x55555554, 0x1, x1, 760, x3)
+
+inst_719:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(divu, x12, x10, x11, 0x78ad, 0x55555554, 0xb505, x1, 764, x3)
+
+inst_720:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555554, 0x66666667, x1, 768, x3)
+
+inst_721:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0x55555554, 0x33333334, x1, 772, x3)
+
+inst_722:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(divu, x12, x10, x11, 0xe38e38e, 0x55555554, 0x6, x1, 776, x3)
+
+inst_723:
+// rs1_val==1431655764 and rs2_val==2863311531,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaab
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555554, 0xaaaaaaab, x1, 780, x3)
+
+inst_724:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x55555554, 0x55555556, x1, 784, x3)
+
+inst_725:
+// rs2_val == 3221225471, rs1_val == 4294836223
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xfffdffff; op2val:0xbfffffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xfffdffff, 0xbfffffff, x1, 788, x3)
+
+inst_726:
+// rs2_val == 3758096383, rs1_val == 4294967263
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffdf; op2val:0xdfffffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xffffffdf, 0xdfffffff, x1, 792, x3)
+
+inst_727:
+// rs2_val == 4160749567, rs1_val == 1048576
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0xf7ffffff
+TEST_RR_OP(divu, x12, x10, x11, 0x0, 0x100000, 0xf7ffffff, x1, 796, x3)
+
+inst_728:
+// rs2_val == 4294836223, rs1_val == 4294967231
+// opcode: divu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffbf; op2val:0xfffdffff
+TEST_RR_OP(divu, x12, x10, x11, 0x1, 0xffffffbf, 0xfffdffff, x1, 800, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x9_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_3:
+ .fill 201*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mul-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mul-01.S
new file mode 100644
index 000000000..8177ccfe9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mul-01.S
@@ -0,0 +1,3010 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 07:22:49 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32em.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the mul instruction of the RISC-V M extension for the mul covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EM")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*M.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",mul)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs2 == rd != rs1, rs1==x6, rs2==x10, rd==x10, rs1_val != rs2_val, rs1_val==6 and rs2_val==-1431655765, rs1_val > 0 and rs2_val < 0
+// opcode: mul ; op1:x6; op2:x10; dest:x10; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(mul, x10, x6, x10, 0x2, 0x6, -0x55555555, x2, 0, x11)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x7, rs2==x1, rd==x7, rs2_val == 2147483647, rs1_val == 1431655765, rs2_val == (2**(xlen-1)-1), rs1_val > 0 and rs2_val > 0
+// opcode: mul ; op1:x7; op2:x1; dest:x7; op1val:0x55555555; op2val:0x7fffffff
+TEST_RR_OP(mul, x7, x7, x1, 0x2aaaaaab, 0x55555555, 0x7fffffff, x2, 4, x11)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x14, rs2==x14, rd==x14, rs2_val == -1073741825, rs1_val == 134217728
+// opcode: mul ; op1:x14; op2:x14; dest:x14; op1val:0x8000000; op2val:0x8000000
+TEST_RR_OP(mul, x14, x14, x14, 0x0, 0x8000000, 0x8000000, x2, 8, x11)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x15, rs2==x15, rd==x1, rs2_val == -536870913, rs1_val == 8
+// opcode: mul ; op1:x15; op2:x15; dest:x1; op1val:0x8; op2val:0x8
+TEST_RR_OP(mul, x1, x15, x15, 0x40, 0x8, 0x8, x2, 12, x11)
+
+inst_4:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x3, rs2==x9, rd==x4, rs2_val == -268435457, rs1_val == -257, rs1_val < 0 and rs2_val < 0
+// opcode: mul ; op1:x3; op2:x9; dest:x4; op1val:-0x101; op2val:-0x10000001
+TEST_RR_OP(mul, x4, x3, x9, 0x10000101, -0x101, -0x10000001, x2, 16, x11)
+
+inst_5:
+// rs1==x5, rs2==x0, rd==x8, rs2_val == -134217729, rs1_val == 4
+// opcode: mul ; op1:x5; op2:x0; dest:x8; op1val:0x4; op2val:0x0
+TEST_RR_OP(mul, x8, x5, x0, 0x0, 0x4, 0x0, x2, 20, x11)
+
+inst_6:
+// rs1==x12, rs2==x13, rd==x15, rs2_val == -67108865, rs1_val == -524289
+// opcode: mul ; op1:x12; op2:x13; dest:x15; op1val:-0x80001; op2val:-0x4000001
+TEST_RR_OP(mul, x15, x12, x13, 0x4080001, -0x80001, -0x4000001, x2, 24, x3)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_7:
+// rs1==x9, rs2==x4, rd==x11, rs2_val == -33554433,
+// opcode: mul ; op1:x9; op2:x4; dest:x11; op1val:0x9; op2val:-0x2000001
+TEST_RR_OP(mul, x11, x9, x4, 0xedfffff7, 0x9, -0x2000001, x1, 0, x3)
+
+inst_8:
+// rs1==x10, rs2==x5, rd==x6, rs2_val == -16777217, rs1_val == 0
+// opcode: mul ; op1:x10; op2:x5; dest:x6; op1val:0x0; op2val:-0x1000001
+TEST_RR_OP(mul, x6, x10, x5, 0x0, 0x0, -0x1000001, x1, 4, x3)
+
+inst_9:
+// rs1==x13, rs2==x8, rd==x0, rs2_val == -8388609,
+// opcode: mul ; op1:x13; op2:x8; dest:x0; op1val:0x9; op2val:-0x800001
+TEST_RR_OP(mul, x0, x13, x8, 0, 0x9, -0x800001, x1, 8, x3)
+
+inst_10:
+// rs1==x0, rs2==x6, rd==x5, rs2_val == -4194305, rs1_val == 32
+// opcode: mul ; op1:x0; op2:x6; dest:x5; op1val:0x0; op2val:-0x400001
+TEST_RR_OP(mul, x5, x0, x6, 0x0, 0x0, -0x400001, x1, 12, x10)
+
+inst_11:
+// rs1==x8, rs2==x2, rd==x13, rs2_val == -2097153,
+// opcode: mul ; op1:x8; op2:x2; dest:x13; op1val:0x33333333; op2val:-0x200001
+TEST_RR_OP(mul, x13, x8, x2, 0x666ccccd, 0x33333333, -0x200001, x1, 16, x10)
+
+inst_12:
+// rs1==x4, rs2==x11, rd==x3, rs2_val == -1048577,
+// opcode: mul ; op1:x4; op2:x11; dest:x3; op1val:0x0; op2val:-0x100001
+TEST_RR_OP(mul, x3, x4, x11, 0x0, 0x0, -0x100001, x1, 20, x10)
+
+inst_13:
+// rs1==x2, rs2==x3, rd==x9, rs2_val == -524289, rs1_val == -16777217
+// opcode: mul ; op1:x2; op2:x3; dest:x9; op1val:-0x1000001; op2val:-0x80001
+TEST_RR_OP(mul, x9, x2, x3, 0x1080001, -0x1000001, -0x80001, x1, 24, x10)
+
+inst_14:
+// rs1==x11, rs2==x7, rd==x12, rs2_val == -262145,
+// opcode: mul ; op1:x11; op2:x7; dest:x12; op1val:0x66666666; op2val:-0x40001
+TEST_RR_OP(mul, x12, x11, x7, 0x1999a, 0x66666666, -0x40001, x1, 28, x10)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_15:
+// rs1==x1, rs2==x12, rd==x2, rs2_val == -131073, rs1_val == 128
+// opcode: mul ; op1:x1; op2:x12; dest:x2; op1val:0x80; op2val:-0x20001
+TEST_RR_OP(mul, x2, x1, x12, 0xfeffff80, 0x80, -0x20001, x3, 0, x4)
+
+inst_16:
+// rs2_val == -65537, rs1_val == -1431655766
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x10001
+TEST_RR_OP(mul, x12, x10, x11, 0xaaab5556, -0x55555556, -0x10001, x3, 4, x4)
+
+inst_17:
+// rs2_val == -32769, rs1_val == -1048577
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:-0x8001
+TEST_RR_OP(mul, x12, x10, x11, 0x108001, -0x100001, -0x8001, x3, 8, x4)
+
+inst_18:
+// rs2_val == -16385, rs1_val == 16
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:-0x4001
+TEST_RR_OP(mul, x12, x10, x11, 0xfffbfff0, 0x10, -0x4001, x3, 12, x4)
+
+inst_19:
+// rs2_val == -8193, rs1_val == -134217729
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x2001
+TEST_RR_OP(mul, x12, x10, x11, 0x8002001, -0x8000001, -0x2001, x3, 16, x4)
+
+inst_20:
+// rs2_val == -4097, rs1_val == -33554433
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:-0x1001
+TEST_RR_OP(mul, x12, x10, x11, 0x2001001, -0x2000001, -0x1001, x3, 20, x4)
+
+inst_21:
+// rs2_val == -2049,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:-0x801
+TEST_RR_OP(mul, x12, x10, x11, 0xffffc7f9, 0x7, -0x801, x3, 24, x4)
+
+inst_22:
+// rs2_val == -1025, rs1_val == 268435456
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:-0x401
+TEST_RR_OP(mul, x12, x10, x11, 0xf0000000, 0x10000000, -0x401, x3, 28, x4)
+
+inst_23:
+// rs2_val == -513,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x201
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccb99, 0x66666667, -0x201, x3, 32, x4)
+
+inst_24:
+// rs2_val == -257,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x4; op2val:-0x101
+TEST_RR_OP(mul, x12, x10, x11, 0x404, -0x4, -0x101, x3, 36, x4)
+
+inst_25:
+// rs2_val == -129, rs1_val == 32768
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:-0x81
+TEST_RR_OP(mul, x12, x10, x11, 0xffbf8000, 0x8000, -0x81, x3, 40, x4)
+
+inst_26:
+// rs2_val == -65,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:-0x41
+TEST_RR_OP(mul, x12, x10, x11, 0x4100041, -0x100001, -0x41, x3, 44, x4)
+
+inst_27:
+// rs2_val == -33, rs1_val == 536870912
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:-0x21
+TEST_RR_OP(mul, x12, x10, x11, 0xe0000000, 0x20000000, -0x21, x3, 48, x4)
+
+inst_28:
+// rs2_val == -17,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x11
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa5, -0x55555555, -0x11, x3, 52, x4)
+
+inst_29:
+// rs2_val == -9, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:-0x9
+TEST_RR_OP(mul, x12, x10, x11, 0x80000009, 0x7fffffff, -0x9, x3, 56, x4)
+
+inst_30:
+// rs2_val == -5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xffffffe2, 0x6, -0x5, x3, 60, x4)
+
+inst_31:
+// rs2_val == -3, rs1_val == -17
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:-0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x33, -0x11, -0x3, x3, 64, x4)
+
+inst_32:
+// rs2_val == -2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, -0x2, x3, 68, x4)
+
+inst_33:
+// rs1_val == -1073741825, rs1_val < 0 and rs2_val > 0, rs2_val == 262144
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:0x40000
+TEST_RR_OP(mul, x12, x10, x11, 0xfffc0000, -0x40000001, 0x40000, x3, 72, x4)
+
+inst_34:
+// rs1_val == -536870913,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x5ffffffb, -0x20000001, 0x5, x3, 76, x4)
+
+inst_35:
+// rs1_val == -268435457,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x4aaaaaaa, -0x10000001, 0x55555556, x3, 80, x4)
+
+inst_36:
+// rs1_val == -67108865, rs2_val == 65536
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x10000
+TEST_RR_OP(mul, x12, x10, x11, 0xffff0000, -0x4000001, 0x10000, x3, 84, x4)
+
+inst_37:
+// rs1_val == -8388609,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:0x3fffffff
+TEST_RR_OP(mul, x12, x10, x11, 0xc0800001, -0x800001, 0x3fffffff, x3, 88, x4)
+
+inst_38:
+// rs1_val == -4194305,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xffcccccc, -0x400001, 0x33333334, x3, 92, x4)
+
+inst_39:
+// rs1_val == -2097153,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x20001
+TEST_RR_OP(mul, x12, x10, x11, 0x220001, -0x200001, -0x20001, x3, 96, x4)
+
+inst_40:
+// rs1_val == -262145,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:-0x4001
+TEST_RR_OP(mul, x12, x10, x11, 0x44001, -0x40001, -0x4001, x3, 100, x4)
+
+inst_41:
+// rs1_val == -131073,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:-0x80001
+TEST_RR_OP(mul, x12, x10, x11, 0xa0001, -0x20001, -0x80001, x3, 104, x4)
+
+inst_42:
+// rs1_val == -65537,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x1001
+TEST_RR_OP(mul, x12, x10, x11, 0x10011001, -0x10001, -0x1001, x3, 108, x4)
+
+inst_43:
+// rs1_val == -32769, rs2_val == 131072
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x20000
+TEST_RR_OP(mul, x12, x10, x11, 0xfffe0000, -0x8001, 0x20000, x3, 112, x4)
+
+inst_44:
+// rs1_val == -16385, rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:-0x80000000
+TEST_RR_OP(mul, x12, x10, x11, 0x80000000, -0x4001, -0x80000000, x3, 116, x4)
+
+inst_45:
+// rs1_val == -8193,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:-0x200001
+TEST_RR_OP(mul, x12, x10, x11, 0x202001, -0x2001, -0x200001, x3, 120, x4)
+
+inst_46:
+// rs1_val == -4097,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:-0x1
+TEST_RR_OP(mul, x12, x10, x11, 0x1001, -0x1001, -0x1, x3, 124, x4)
+
+inst_47:
+// rs1_val == -2049,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xaac, -0x801, 0x55555554, x3, 128, x4)
+
+inst_48:
+// rs1_val == -1025,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffccc, -0x401, 0x33333334, x3, 132, x4)
+
+inst_49:
+// rs1_val == -513, rs2_val == 2
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffbfe, -0x201, 0x2, x3, 136, x4)
+
+inst_50:
+// rs1_val == -129, rs2_val == 1024
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x400
+TEST_RR_OP(mul, x12, x10, x11, 0xfffdfc00, -0x81, 0x400, x3, 140, x4)
+
+inst_51:
+// rs1_val == -65,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xffd209fc, -0x41, 0xb504, x3, 144, x4)
+
+inst_52:
+// rs1_val == -33,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:-0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xa5, -0x21, -0x5, x3, 148, x4)
+
+inst_53:
+// rs1_val == -9, rs2_val == 8
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x8
+TEST_RR_OP(mul, x12, x10, x11, 0xffffffb8, -0x9, 0x8, x3, 152, x4)
+
+inst_54:
+// rs1_val == -5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffff1, -0x5, 0x3, x3, 156, x4)
+
+inst_55:
+// rs1_val == -3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x8
+TEST_RR_OP(mul, x12, x10, x11, 0x18, -0x3, -0x8, x3, 160, x4)
+
+inst_56:
+// rs1_val == -2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x8
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffff0, -0x2, 0x8, x3, 164, x4)
+
+inst_57:
+// rs2_val == 1073741824,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x40000000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x33333334, 0x40000000, x3, 168, x4)
+
+inst_58:
+// rs2_val == 536870912,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x20000000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x10, 0x20000000, x3, 172, x4)
+
+inst_59:
+// rs2_val == 268435456,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0x10000000
+TEST_RR_OP(mul, x12, x10, x11, 0xf0000000, -0x4001, 0x10000000, x3, 176, x4)
+
+inst_60:
+// rs2_val == 134217728, rs1_val == 1048576
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x8000000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x100000, 0x8000000, x3, 180, x4)
+
+inst_61:
+// rs2_val == 67108864, rs1_val == 256
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x4000000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x100, 0x4000000, x3, 184, x4)
+
+inst_62:
+// rs2_val == 33554432,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xa; op2val:0x2000000
+TEST_RR_OP(mul, x12, x10, x11, 0xec000000, -0xa, 0x2000000, x3, 188, x4)
+
+inst_63:
+// rs2_val == 16777216,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x1000000
+TEST_RR_OP(mul, x12, x10, x11, 0xff000000, -0x40001, 0x1000000, x3, 192, x4)
+
+inst_64:
+// rs2_val == 8388608,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x800000
+TEST_RR_OP(mul, x12, x10, x11, 0x99800000, 0x33333333, 0x800000, x3, 196, x4)
+
+inst_65:
+// rs2_val == 4194304,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x400000
+TEST_RR_OP(mul, x12, x10, x11, 0x1800000, 0x6, 0x400000, x3, 200, x4)
+
+inst_66:
+// rs2_val == 2097152, rs1_val == 4096
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x200000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x1000, 0x200000, x3, 204, x4)
+
+inst_67:
+// rs2_val == 1048576, rs1_val == 16777216
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x100000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x1000000, 0x100000, x3, 208, x4)
+
+inst_68:
+// rs2_val == 524288,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:0x80000
+TEST_RR_OP(mul, x12, x10, x11, 0xfff80000, -0x40000001, 0x80000, x3, 212, x4)
+
+inst_69:
+// rs2_val == 32768, rs1_val == 1024
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x8000
+TEST_RR_OP(mul, x12, x10, x11, 0x2000000, 0x400, 0x8000, x3, 216, x4)
+
+inst_70:
+// rs2_val == 16384, rs1_val == 524288
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x4000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x80000, 0x4000, x3, 220, x4)
+
+inst_71:
+// rs2_val == 8192,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x2000
+TEST_RR_OP(mul, x12, x10, x11, 0x20000, 0x10, 0x2000, x3, 224, x4)
+
+inst_72:
+// rs2_val == 4096,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x1000
+TEST_RR_OP(mul, x12, x10, x11, 0xfffff000, 0x7fffffff, 0x1000, x3, 228, x4)
+
+inst_73:
+// rs2_val == 2048,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x800
+TEST_RR_OP(mul, x12, x10, x11, 0xfa57e000, -0xb504, 0x800, x3, 232, x4)
+
+inst_74:
+// rs2_val == 512,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x200
+TEST_RR_OP(mul, x12, x10, x11, 0xa00, 0x5, 0x200, x3, 236, x4)
+
+inst_75:
+// rs2_val == 256,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xa; op2val:0x100
+TEST_RR_OP(mul, x12, x10, x11, 0xfffff600, -0xa, 0x100, x3, 240, x4)
+
+inst_76:
+// rs2_val == 128,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x80
+TEST_RR_OP(mul, x12, x10, x11, 0x20000, 0x400, 0x80, x3, 244, x4)
+
+inst_77:
+// rs2_val == 64,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x40
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x40, x3, 248, x4)
+
+inst_78:
+// rs2_val == 32,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x20
+TEST_RR_OP(mul, x12, x10, x11, 0xc0, 0x6, 0x20, x3, 252, x4)
+
+inst_79:
+// rs2_val == 16,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x10
+TEST_RR_OP(mul, x12, x10, x11, 0x40, 0x4, 0x10, x3, 256, x4)
+
+inst_80:
+// rs2_val == 4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x4000000, 0x1000000, 0x4, x3, 260, x4)
+
+inst_81:
+// rs2_val == 1,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x1
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffb, -0x5, 0x1, x3, 264, x4)
+
+inst_82:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x9
+TEST_RR_OP(mul, x12, x10, x11, 0x80000000, -0x80000000, 0x9, x3, 268, x4)
+
+inst_83:
+// rs1_val == 1073741824,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x100000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x40000000, 0x100000, x3, 272, x4)
+
+inst_84:
+// rs1_val == 67108864,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:-0x101
+TEST_RR_OP(mul, x12, x10, x11, 0xfc000000, 0x4000000, -0x101, x3, 276, x4)
+
+inst_85:
+// rs1_val == 33554432,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x6000000, 0x2000000, 0x3, x3, 280, x4)
+
+inst_86:
+// rs1_val == 8388608,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:-0x20001
+TEST_RR_OP(mul, x12, x10, x11, 0xff800000, 0x800000, -0x20001, x3, 284, x4)
+
+inst_87:
+// rs1_val == 4194304,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:-0x8000001
+TEST_RR_OP(mul, x12, x10, x11, 0xffc00000, 0x400000, -0x8000001, x3, 288, x4)
+
+inst_88:
+// rs1_val == 2097152,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x2000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x200000, 0x2000, x3, 292, x4)
+
+inst_89:
+// rs1_val == 262144,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x140000, 0x40000, 0x5, x3, 296, x4)
+
+inst_90:
+// rs1_val == 131072,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x6a080000, 0x20000, 0xb504, x3, 300, x4)
+
+inst_91:
+// rs1_val == 65536,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x10
+TEST_RR_OP(mul, x12, x10, x11, 0x100000, 0x10000, 0x10, x3, 304, x4)
+
+inst_92:
+// rs1_val == 16384,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0x2000
+TEST_RR_OP(mul, x12, x10, x11, 0x8000000, 0x4000, 0x2000, x3, 308, x4)
+
+inst_93:
+// rs1_val == 8192,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x80
+TEST_RR_OP(mul, x12, x10, x11, 0x100000, 0x2000, 0x80, x3, 312, x4)
+
+inst_94:
+// rs1_val == 2048,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x2000000
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x800, 0x2000000, x3, 316, x4)
+
+inst_95:
+// rs1_val == 512,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:-0x7
+TEST_RR_OP(mul, x12, x10, x11, 0xfffff200, 0x200, -0x7, x3, 320, x4)
+
+inst_96:
+// rs1_val == 64, rs2_val == 1431655765
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x55555540, 0x40, 0x55555555, x3, 324, x4)
+
+inst_97:
+// rs1_val == 2, rs1_val==2 and rs2_val==6
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0xc, 0x2, 0x6, x3, 328, x4)
+
+inst_98:
+// rs1_val == 1,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:-0x21
+TEST_RR_OP(mul, x12, x10, x11, 0xffffffdf, 0x1, -0x21, x3, 332, x4)
+
+inst_99:
+// rs1_val==46341 and rs2_val==46341, rs1_val == rs2_val
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x80001219, 0xb505, 0xb505, x3, 336, x4)
+
+inst_100:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x800157f1, 0xb505, -0xb503, x3, 340, x4)
+
+inst_101:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x6666d303, 0xb505, 0x66666667, x3, 344, x4)
+
+inst_102:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x3333c404, 0xb505, 0x33333334, x3, 348, x4)
+
+inst_103:
+// rs1_val==46341 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x43e1e, 0xb505, 0x6, x3, 352, x4)
+
+inst_104:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x3c57, 0xb505, -0x55555555, x3, 356, x4)
+
+inst_105:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x78ae, 0xb505, 0x55555556, x3, 360, x4)
+
+inst_106:
+// rs1_val==46341 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x2d414, 0xb505, 0x4, x3, 364, x4)
+
+inst_107:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffea80f, 0xb505, 0xb503, x3, 368, x4)
+
+inst_108:
+// rs1_val==46341 and rs2_val==0, rs2_val == 0
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0xb505, 0x0, x3, 372, x4)
+
+inst_109:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x666568f9, 0xb505, 0x66666665, x3, 376, x4)
+
+inst_110:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x333259fa, 0xb505, 0x33333332, x3, 380, x4)
+
+inst_111:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xffff0ea4, 0xb505, 0x55555554, x3, 384, x4)
+
+inst_112:
+// rs1_val==46341 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x16a0a, 0xb505, 0x2, x3, 388, x4)
+
+inst_113:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x7fff5d14, 0xb505, 0xb504, x3, 392, x4)
+
+inst_114:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x8000a2ec, 0xb505, -0xb504, x3, 396, x4)
+
+inst_115:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x66661dfe, 0xb505, 0x66666666, x3, 400, x4)
+
+inst_116:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x33330eff, 0xb505, 0x33333333, x3, 404, x4)
+
+inst_117:
+// rs1_val==46341 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x38919, 0xb505, 0x5, x3, 408, x4)
+
+inst_118:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xffff8752, 0xb505, -0x55555556, x3, 412, x4)
+
+inst_119:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xffffc3a9, 0xb505, 0x55555555, x3, 416, x4)
+
+inst_120:
+// rs1_val==46341 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x21f0f, 0xb505, 0x3, x3, 420, x4)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x800157f1, -0xb503, 0xb505, x3, 424, x4)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffd3e09, -0xb503, -0xb503, x3, 428, x4)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x6665f9cb, -0xb503, 0x66666667, x3, 432, x4)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x3332a264, -0xb503, 0x33333334, x3, 436, x4)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0xfffbc1ee, -0xb503, 0x6, x3, 440, x4)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x555518ff, -0xb503, -0x55555555, x3, 444, x4)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaa31fe, -0xb503, 0x55555556, x3, 448, x4)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0xfffd2bf4, -0xb503, 0x4, x3, 452, x4)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x8002c1f7, -0xb503, 0xb503, x3, 456, x4)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, -0xb503, 0x0, x3, 460, x4)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x666763d1, -0xb503, 0x66666665, x3, 464, x4)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x33340c6a, -0xb503, 0x33333332, x3, 468, x4)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xaaab9c04, -0xb503, 0x55555554, x3, 472, x4)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xfffe95fa, -0xb503, 0x2, x3, 476, x4)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x80020cf4, -0xb503, 0xb504, x3, 480, x4)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffdf30c, -0xb503, -0xb504, x3, 484, x4)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x6666aece, -0xb503, 0x66666666, x3, 488, x4)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x33335767, -0xb503, 0x33333333, x3, 492, x4)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xfffc76f1, -0xb503, 0x5, x3, 496, x4)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x5555ce02, -0xb503, -0x55555556, x3, 500, x4)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaae701, -0xb503, 0x55555555, x3, 504, x4)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0xfffde0f7, -0xb503, 0x3, x3, 508, x4)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x6666d303, 0x66666667, 0xb505, x3, 512, x4)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x6665f9cb, 0x66666667, -0xb503, x3, 516, x4)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0xd70a3d71, 0x66666667, 0x66666667, x3, 520, x4)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x1eb851ec, 0x66666667, 0x33333334, x3, 524, x4)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x6666666a, 0x66666667, 0x6, x3, 528, x4)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccd, 0x66666667, -0x55555555, x3, 532, x4)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x9999999a, 0x66666667, 0x55555556, x3, 536, x4)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x9999999c, 0x66666667, 0x4, x3, 540, x4)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x999a0635, 0x66666667, 0xb503, x3, 544, x4)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x66666667, 0x0, x3, 548, x4)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xa3d70a3, 0x66666667, 0x66666665, x3, 552, x4)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x51eb851e, 0x66666667, 0x33333332, x3, 556, x4)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccc, 0x66666667, 0x55555554, x3, 560, x4)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xccccccce, 0x66666667, 0x2, x3, 564, x4)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x6c9c, 0x66666667, 0xb504, x3, 568, x4)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xffff9364, 0x66666667, -0xb504, x3, 572, x4)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x70a3d70a, 0x66666667, 0x66666666, x3, 576, x4)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xb851eb85, 0x66666667, 0x33333333, x3, 580, x4)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x3, 0x66666667, 0x5, x3, 584, x4)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x66666666, 0x66666667, -0x55555556, x3, 588, x4)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x33333333, 0x66666667, 0x55555555, x3, 592, x4)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x33333335, 0x66666667, 0x3, x3, 596, x4)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x3333c404, 0x33333334, 0xb505, x3, 600, x4)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x3332a264, 0x33333334, -0xb503, x3, 604, x4)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x1eb851ec, 0x33333334, 0x66666667, x3, 608, x4)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x28f5c290, 0x33333334, 0x33333334, x3, 612, x4)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x33333338, 0x33333334, 0x6, x3, 616, x4)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xbbbbbbbc, 0x33333334, -0x55555555, x3, 620, x4)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x77777778, 0x33333334, 0x55555556, x3, 624, x4)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0xccccccd0, 0x33333334, 0x4, x3, 628, x4)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xcccd5d9c, 0x33333334, 0xb503, x3, 632, x4)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x33333334, 0x0, x3, 636, x4)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xb851eb84, 0x33333334, 0x66666665, x3, 640, x4)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0xc28f5c28, 0x33333334, 0x33333332, x3, 644, x4)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x11111110, 0x33333334, 0x55555554, x3, 648, x4)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x66666668, 0x33333334, 0x2, x3, 652, x4)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x90d0, 0x33333334, 0xb504, x3, 656, x4)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xffff6f30, 0x33333334, -0xb504, x3, 660, x4)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0xeb851eb8, 0x33333334, 0x66666666, x3, 664, x4)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xf5c28f5c, 0x33333334, 0x33333333, x3, 668, x4)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x4, 0x33333334, 0x5, x3, 672, x4)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x88888888, 0x33333334, -0x55555556, x3, 676, x4)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x44444444, 0x33333334, 0x55555555, x3, 680, x4)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x9999999c, 0x33333334, 0x3, x3, 684, x4)
+
+inst_187:
+// rs1_val==6 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x43e1e, 0x6, 0xb505, x3, 688, x4)
+
+inst_188:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xfffbc1ee, 0x6, -0xb503, x3, 692, x4)
+
+inst_189:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x6666666a, 0x6, 0x66666667, x3, 696, x4)
+
+inst_190:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x33333338, 0x6, 0x33333334, x3, 700, x4)
+
+inst_191:
+// rs1_val==6 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x24, 0x6, 0x6, x3, 704, x4)
+
+inst_192:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x4, 0x6, 0x55555556, x3, 708, x4)
+
+inst_193:
+// rs1_val==6 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x18, 0x6, 0x4, x3, 712, x4)
+
+inst_194:
+// rs1_val==6 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x43e12, 0x6, 0xb503, x3, 716, x4)
+
+inst_195:
+// rs1_val==6 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x6, 0x0, x3, 720, x4)
+
+inst_196:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x6666665e, 0x6, 0x66666665, x3, 724, x4)
+
+inst_197:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x3333332c, 0x6, 0x33333332, x3, 728, x4)
+
+inst_198:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffff8, 0x6, 0x55555554, x3, 732, x4)
+
+inst_199:
+// rs1_val==6 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xc, 0x6, 0x2, x3, 736, x4)
+
+inst_200:
+// rs1_val==6 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x43e18, 0x6, 0xb504, x3, 740, x4)
+
+inst_201:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xfffbc1e8, 0x6, -0xb504, x3, 744, x4)
+
+inst_202:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x66666664, 0x6, 0x66666666, x3, 748, x4)
+
+inst_203:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x33333332, 0x6, 0x33333333, x3, 752, x4)
+
+inst_204:
+// rs1_val==6 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x1e, 0x6, 0x5, x3, 756, x4)
+
+inst_205:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffc, 0x6, -0x55555556, x3, 760, x4)
+
+inst_206:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffe, 0x6, 0x55555555, x3, 764, x4)
+
+inst_207:
+// rs1_val==6 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x12, 0x6, 0x3, x3, 768, x4)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x3c57, -0x55555555, 0xb505, x3, 772, x4)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x555518ff, -0x55555555, -0xb503, x3, 776, x4)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccd, -0x55555555, 0x66666667, x3, 780, x4)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xbbbbbbbc, -0x55555555, 0x33333334, x3, 784, x4)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x2, -0x55555555, 0x6, x3, 788, x4)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x38e38e39, -0x55555555, -0x55555555, x3, 792, x4)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x71c71c72, -0x55555555, 0x55555556, x3, 796, x4)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaac, -0x55555555, 0x4, x3, 800, x4)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaae701, -0x55555555, 0xb503, x3, 804, x4)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, -0x55555555, 0x0, x3, 808, x4)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x77777777, -0x55555555, 0x66666665, x3, 812, x4)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x66666666, -0x55555555, 0x33333332, x3, 816, x4)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x1c71c71c, -0x55555555, 0x55555554, x3, 820, x4)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x55555556, -0x55555555, 0x2, x3, 824, x4)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x555591ac, -0x55555555, 0xb504, x3, 828, x4)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaa6e54, -0x55555555, -0xb504, x3, 832, x4)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x22222222, -0x55555555, 0x66666666, x3, 836, x4)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x11111111, -0x55555555, 0x33333333, x3, 840, x4)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x55555557, -0x55555555, 0x5, x3, 844, x4)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x8e38e38e, -0x55555555, -0x55555556, x3, 848, x4)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xc71c71c7, -0x55555555, 0x55555555, x3, 852, x4)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x1, -0x55555555, 0x3, x3, 856, x4)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x78ae, 0x55555556, 0xb505, x3, 860, x4)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaa31fe, 0x55555556, -0xb503, x3, 864, x4)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x9999999a, 0x55555556, 0x66666667, x3, 868, x4)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x77777778, 0x55555556, 0x33333334, x3, 872, x4)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x4, 0x55555556, 0x6, x3, 876, x4)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x71c71c72, 0x55555556, -0x55555555, x3, 880, x4)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xe38e38e4, 0x55555556, 0x55555556, x3, 884, x4)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x55555558, 0x55555556, 0x4, x3, 888, x4)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x5555ce02, 0x55555556, 0xb503, x3, 892, x4)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x55555556, 0x0, x3, 896, x4)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xeeeeeeee, 0x55555556, 0x66666665, x3, 900, x4)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccc, 0x55555556, 0x33333332, x3, 904, x4)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x38e38e38, 0x55555556, 0x55555554, x3, 908, x4)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaac, 0x55555556, 0x2, x3, 912, x4)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xaaab2358, 0x55555556, 0xb504, x3, 916, x4)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x5554dca8, 0x55555556, -0xb504, x3, 920, x4)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x44444444, 0x55555556, 0x66666666, x3, 924, x4)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x22222222, 0x55555556, 0x33333333, x3, 928, x4)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaae, 0x55555556, 0x5, x3, 932, x4)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x1c71c71c, 0x55555556, -0x55555556, x3, 936, x4)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x8e38e38e, 0x55555556, 0x55555555, x3, 940, x4)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x2, 0x55555556, 0x3, x3, 944, x4)
+
+inst_252:
+// rs1_val==4 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x2d414, 0x4, 0xb505, x3, 948, x4)
+
+inst_253:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xfffd2bf4, 0x4, -0xb503, x3, 952, x4)
+
+inst_254:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x9999999c, 0x4, 0x66666667, x3, 956, x4)
+
+inst_255:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xccccccd0, 0x4, 0x33333334, x3, 960, x4)
+
+inst_256:
+// rs1_val==4 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x18, 0x4, 0x6, x3, 964, x4)
+
+inst_257:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaac, 0x4, -0x55555555, x3, 968, x4)
+
+inst_258:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x55555558, 0x4, 0x55555556, x3, 972, x4)
+
+inst_259:
+// rs1_val==4 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x10, 0x4, 0x4, x3, 976, x4)
+
+inst_260:
+// rs1_val==4 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x2d40c, 0x4, 0xb503, x3, 980, x4)
+
+inst_261:
+// rs1_val==4 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x4, 0x0, x3, 984, x4)
+
+inst_262:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x99999994, 0x4, 0x66666665, x3, 988, x4)
+
+inst_263:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0xccccccc8, 0x4, 0x33333332, x3, 992, x4)
+
+inst_264:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x55555550, 0x4, 0x55555554, x3, 996, x4)
+
+inst_265:
+// rs1_val==4 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x8, 0x4, 0x2, x3, 1000, x4)
+
+inst_266:
+// rs1_val==4 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x2d410, 0x4, 0xb504, x3, 1004, x4)
+
+inst_267:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xfffd2bf0, 0x4, -0xb504, x3, 1008, x4)
+
+inst_268:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x99999998, 0x4, 0x66666666, x3, 1012, x4)
+
+inst_269:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccc, 0x4, 0x33333333, x3, 1016, x4)
+
+inst_270:
+// rs1_val==4 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x14, 0x4, 0x5, x3, 1020, x4)
+
+inst_271:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa8, 0x4, -0x55555556, x3, 1024, x4)
+
+inst_272:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x55555554, 0x4, 0x55555555, x3, 1028, x4)
+
+inst_273:
+// rs1_val==4 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0xc, 0x4, 0x3, x3, 1032, x4)
+
+inst_274:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffea80f, 0xb503, 0xb505, x3, 1036, x4)
+
+inst_275:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x8002c1f7, 0xb503, -0xb503, x3, 1040, x4)
+
+inst_276:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x999a0635, 0xb503, 0x66666667, x3, 1044, x4)
+
+inst_277:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xcccd5d9c, 0xb503, 0x33333334, x3, 1048, x4)
+
+inst_278:
+// rs1_val==46339 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x43e12, 0xb503, 0x6, x3, 1052, x4)
+
+inst_279:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaae701, 0xb503, -0x55555555, x3, 1056, x4)
+
+inst_280:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x5555ce02, 0xb503, 0x55555556, x3, 1060, x4)
+
+inst_281:
+// rs1_val==46339 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x2d40c, 0xb503, 0x4, x3, 1064, x4)
+
+inst_282:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffd3e09, 0xb503, 0xb503, x3, 1068, x4)
+
+inst_283:
+// rs1_val==46339 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0xb503, 0x0, x3, 1072, x4)
+
+inst_284:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x99989c2f, 0xb503, 0x66666665, x3, 1076, x4)
+
+inst_285:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0xcccbf396, 0xb503, 0x33333332, x3, 1080, x4)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x555463fc, 0xb503, 0x55555554, x3, 1084, x4)
+
+inst_287:
+// rs1_val==46339 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x16a06, 0xb503, 0x2, x3, 1088, x4)
+
+inst_288:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffdf30c, 0xb503, 0xb504, x3, 1092, x4)
+
+inst_289:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x80020cf4, 0xb503, -0xb504, x3, 1096, x4)
+
+inst_290:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x99995132, 0xb503, 0x66666666, x3, 1100, x4)
+
+inst_291:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xcccca899, 0xb503, 0x33333333, x3, 1104, x4)
+
+inst_292:
+// rs1_val==46339 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x3890f, 0xb503, 0x5, x3, 1108, x4)
+
+inst_293:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaa31fe, 0xb503, -0x55555556, x3, 1112, x4)
+
+inst_294:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x555518ff, 0xb503, 0x55555555, x3, 1116, x4)
+
+inst_295:
+// rs1_val==46339 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x21f09, 0xb503, 0x3, x3, 1120, x4)
+
+inst_296:
+// rs1_val==0 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0xb505, x3, 1124, x4)
+
+inst_297:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, -0xb503, x3, 1128, x4)
+
+inst_298:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x66666667, x3, 1132, x4)
+
+inst_299:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x33333334, x3, 1136, x4)
+
+inst_300:
+// rs1_val==0 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x6, x3, 1140, x4)
+
+inst_301:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, -0x55555555, x3, 1144, x4)
+
+inst_302:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x55555556, x3, 1148, x4)
+
+inst_303:
+// rs1_val==0 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x4, x3, 1152, x4)
+
+inst_304:
+// rs1_val==0 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0xb503, x3, 1156, x4)
+
+inst_305:
+// rs1_val==0 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x0, x3, 1160, x4)
+
+inst_306:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x66666665, x3, 1164, x4)
+
+inst_307:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x33333332, x3, 1168, x4)
+
+inst_308:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x55555554, x3, 1172, x4)
+
+inst_309:
+// rs1_val==0 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x2, x3, 1176, x4)
+
+inst_310:
+// rs1_val==0 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0xb504, x3, 1180, x4)
+
+inst_311:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, -0xb504, x3, 1184, x4)
+
+inst_312:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x66666666, x3, 1188, x4)
+
+inst_313:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x33333333, x3, 1192, x4)
+
+inst_314:
+// rs1_val==0 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x5, x3, 1196, x4)
+
+inst_315:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, -0x55555556, x3, 1200, x4)
+
+inst_316:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x55555555, x3, 1204, x4)
+
+inst_317:
+// rs1_val==0 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x0, 0x3, x3, 1208, x4)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x666568f9, 0x66666665, 0xb505, x3, 1212, x4)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x666763d1, 0x66666665, -0xb503, x3, 1216, x4)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0xa3d70a3, 0x66666665, 0x66666667, x3, 1220, x4)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xb851eb84, 0x66666665, 0x33333334, x3, 1224, x4)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x6666665e, 0x66666665, 0x6, x3, 1228, x4)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x77777777, 0x66666665, -0x55555555, x3, 1232, x4)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xeeeeeeee, 0x66666665, 0x55555556, x3, 1236, x4)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x99999994, 0x66666665, 0x4, x3, 1240, x4)
+
+inst_326:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x33333333, 0x0, x3, 1244, x4)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x51eb851f, 0x33333333, 0x66666665, x3, 1248, x4)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x8f5c28f6, 0x33333333, 0x33333332, x3, 1252, x4)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xbbbbbbbc, 0x33333333, 0x55555554, x3, 1256, x4)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x66666666, 0x33333333, 0x2, x3, 1260, x4)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xffffdbcc, 0x33333333, 0xb504, x3, 1264, x4)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x2434, 0x33333333, -0xb504, x3, 1268, x4)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x851eb852, 0x33333333, 0x66666666, x3, 1272, x4)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xc28f5c29, 0x33333333, 0x33333333, x3, 1276, x4)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xffffffff, 0x33333333, 0x5, x3, 1280, x4)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xddddddde, 0x33333333, -0x55555556, x3, 1284, x4)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xeeeeeeef, 0x33333333, 0x55555555, x3, 1288, x4)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x99999999, 0x33333333, 0x3, x3, 1292, x4)
+
+inst_339:
+// rs1_val==5 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x38919, 0x5, 0xb505, x3, 1296, x4)
+
+inst_340:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xfffc76f1, 0x5, -0xb503, x3, 1300, x4)
+
+inst_341:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x3, 0x5, 0x66666667, x3, 1304, x4)
+
+inst_342:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x4, 0x5, 0x33333334, x3, 1308, x4)
+
+inst_343:
+// rs1_val==5 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x1e, 0x5, 0x6, x3, 1312, x4)
+
+inst_344:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x55555557, 0x5, -0x55555555, x3, 1316, x4)
+
+inst_345:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaae, 0x5, 0x55555556, x3, 1320, x4)
+
+inst_346:
+// rs1_val==5 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x14, 0x5, 0x4, x3, 1324, x4)
+
+inst_347:
+// rs1_val==5 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x3890f, 0x5, 0xb503, x3, 1328, x4)
+
+inst_348:
+// rs1_val==5 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x5, 0x0, x3, 1332, x4)
+
+inst_349:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffff9, 0x5, 0x66666665, x3, 1336, x4)
+
+inst_350:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffa, 0x5, 0x33333332, x3, 1340, x4)
+
+inst_351:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa4, 0x5, 0x55555554, x3, 1344, x4)
+
+inst_352:
+// rs1_val==5 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xa, 0x5, 0x2, x3, 1348, x4)
+
+inst_353:
+// rs1_val==5 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x38914, 0x5, 0xb504, x3, 1352, x4)
+
+inst_354:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xfffc76ec, 0x5, -0xb504, x3, 1356, x4)
+
+inst_355:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffe, 0x5, 0x66666666, x3, 1360, x4)
+
+inst_356:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xffffffff, 0x5, 0x33333333, x3, 1364, x4)
+
+inst_357:
+// rs1_val==5 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x19, 0x5, 0x5, x3, 1368, x4)
+
+inst_358:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x55555552, 0x5, -0x55555556, x3, 1372, x4)
+
+inst_359:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa9, 0x5, 0x55555555, x3, 1376, x4)
+
+inst_360:
+// rs1_val==5 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0xf, 0x5, 0x3, x3, 1380, x4)
+
+inst_361:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0xffff8752, -0x55555556, 0xb505, x3, 1384, x4)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x5555ce02, -0x55555556, -0xb503, x3, 1388, x4)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x66666666, -0x55555556, 0x66666667, x3, 1392, x4)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x88888888, -0x55555556, 0x33333334, x3, 1396, x4)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffc, -0x55555556, 0x6, x3, 1400, x4)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x8e38e38e, -0x55555556, -0x55555555, x3, 1404, x4)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x1c71c71c, -0x55555556, 0x55555556, x3, 1408, x4)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa8, -0x55555556, 0x4, x3, 1412, x4)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaa31fe, -0x55555556, 0xb503, x3, 1416, x4)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, -0x55555556, 0x0, x3, 1420, x4)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x11111112, -0x55555556, 0x66666665, x3, 1424, x4)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x33333334, -0x55555556, 0x33333332, x3, 1428, x4)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xc71c71c8, -0x55555556, 0x55555554, x3, 1432, x4)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x55555554, -0x55555556, 0x2, x3, 1436, x4)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x5554dca8, -0x55555556, 0xb504, x3, 1440, x4)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xaaab2358, -0x55555556, -0xb504, x3, 1444, x4)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0xbbbbbbbc, -0x55555556, 0x66666666, x3, 1448, x4)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xddddddde, -0x55555556, 0x33333333, x3, 1452, x4)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x55555552, -0x55555556, 0x5, x3, 1456, x4)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xe38e38e4, -0x55555556, -0x55555556, x3, 1460, x4)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x71c71c72, -0x55555556, 0x55555555, x3, 1464, x4)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffe, -0x55555556, 0x3, x3, 1468, x4)
+
+inst_383:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0xffffc3a9, 0x55555555, 0xb505, x3, 1472, x4)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaae701, 0x55555555, -0xb503, x3, 1476, x4)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x33333333, 0x55555555, 0x66666667, x3, 1480, x4)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x44444444, 0x55555555, 0x33333334, x3, 1484, x4)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffe, 0x55555555, 0x6, x3, 1488, x4)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xc71c71c7, 0x55555555, -0x55555555, x3, 1492, x4)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x8e38e38e, 0x55555555, 0x55555556, x3, 1496, x4)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x55555554, 0x55555555, 0x4, x3, 1500, x4)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x555518ff, 0x55555555, 0xb503, x3, 1504, x4)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x55555555, 0x0, x3, 1508, x4)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x88888889, 0x55555555, 0x66666665, x3, 1512, x4)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x9999999a, 0x55555555, 0x33333332, x3, 1516, x4)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xe38e38e4, 0x55555555, 0x55555554, x3, 1520, x4)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaaa, 0x55555555, 0x2, x3, 1524, x4)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaa6e54, 0x55555555, 0xb504, x3, 1528, x4)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x555591ac, 0x55555555, -0xb504, x3, 1532, x4)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0xddddddde, 0x55555555, 0x66666666, x3, 1536, x4)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xeeeeeeef, 0x55555555, 0x33333333, x3, 1540, x4)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa9, 0x55555555, 0x5, x3, 1544, x4)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x71c71c72, 0x55555555, -0x55555556, x3, 1548, x4)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x38e38e39, 0x55555555, 0x55555555, x3, 1552, x4)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0xffffffff, 0x55555555, 0x3, x3, 1556, x4)
+
+inst_405:
+// rs1_val==3 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x21f0f, 0x3, 0xb505, x3, 1560, x4)
+
+inst_406:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xfffde0f7, 0x3, -0xb503, x3, 1564, x4)
+
+inst_407:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x33333335, 0x3, 0x66666667, x3, 1568, x4)
+
+inst_408:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x9999999c, 0x3, 0x33333334, x3, 1572, x4)
+
+inst_409:
+// rs1_val==3 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x12, 0x3, 0x6, x3, 1576, x4)
+
+inst_410:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x1, 0x3, -0x55555555, x3, 1580, x4)
+
+inst_411:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x2, 0x3, 0x55555556, x3, 1584, x4)
+
+inst_412:
+// rs1_val==3 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0xc, 0x3, 0x4, x3, 1588, x4)
+
+inst_413:
+// rs1_val==3 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x21f09, 0x3, 0xb503, x3, 1592, x4)
+
+inst_414:
+// rs1_val==3 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x3, 0x0, x3, 1596, x4)
+
+inst_415:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x3333332f, 0x3, 0x66666665, x3, 1600, x4)
+
+inst_416:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x99999996, 0x3, 0x33333332, x3, 1604, x4)
+
+inst_417:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffc, 0x3, 0x55555554, x3, 1608, x4)
+
+inst_418:
+// rs1_val==3 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x6, 0x3, 0x2, x3, 1612, x4)
+
+inst_419:
+// rs1_val==3 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x21f0c, 0x3, 0xb504, x3, 1616, x4)
+
+inst_420:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xfffde0f4, 0x3, -0xb504, x3, 1620, x4)
+
+inst_421:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x33333332, 0x3, 0x66666666, x3, 1624, x4)
+
+inst_422:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x99999999, 0x3, 0x33333333, x3, 1628, x4)
+
+inst_423:
+// rs1_val==3 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xf, 0x3, 0x5, x3, 1632, x4)
+
+inst_424:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffe, 0x3, -0x55555556, x3, 1636, x4)
+
+inst_425:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xffffffff, 0x3, 0x55555555, x3, 1640, x4)
+
+inst_426:
+// rs1_val==3 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x9, 0x3, 0x3, x3, 1644, x4)
+
+inst_427:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x99989c2f, 0x66666665, 0xb503, x3, 1648, x4)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x66666665, 0x0, x3, 1652, x4)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x3d70a3d9, 0x66666665, 0x66666665, x3, 1656, x4)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0xeb851eba, 0x66666665, 0x33333332, x3, 1660, x4)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x22222224, 0x66666665, 0x55555554, x3, 1664, x4)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xccccccca, 0x66666665, 0x2, x3, 1668, x4)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xffff0294, 0x66666665, 0xb504, x3, 1672, x4)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xfd6c, 0x66666665, -0xb504, x3, 1676, x4)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0xa3d70a3e, 0x66666665, 0x66666666, x3, 1680, x4)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x51eb851f, 0x66666665, 0x33333333, x3, 1684, x4)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffff9, 0x66666665, 0x5, x3, 1688, x4)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x11111112, 0x66666665, -0x55555556, x3, 1692, x4)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x88888889, 0x66666665, 0x55555555, x3, 1696, x4)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x3333332f, 0x66666665, 0x3, x3, 1700, x4)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x333259fa, 0x33333332, 0xb505, x3, 1704, x4)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x33340c6a, 0x33333332, -0xb503, x3, 1708, x4)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x51eb851e, 0x33333332, 0x66666667, x3, 1712, x4)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xc28f5c28, 0x33333332, 0x33333334, x3, 1716, x4)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x3333332c, 0x33333332, 0x6, x3, 1720, x4)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x66666666, 0x33333332, -0x55555555, x3, 1724, x4)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccc, 0x33333332, 0x55555556, x3, 1728, x4)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0xccccccc8, 0x33333332, 0x4, x3, 1732, x4)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xcccbf396, 0x33333332, 0xb503, x3, 1736, x4)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x33333332, 0x0, x3, 1740, x4)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xeb851eba, 0x33333332, 0x66666665, x3, 1744, x4)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x5c28f5c4, 0x33333332, 0x33333332, x3, 1748, x4)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x66666668, 0x33333332, 0x55555554, x3, 1752, x4)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x66666664, 0x33333332, 0x2, x3, 1756, x4)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xffff26c8, 0x33333332, 0xb504, x3, 1760, x4)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xd938, 0x33333332, -0xb504, x3, 1764, x4)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x1eb851ec, 0x33333332, 0x66666666, x3, 1768, x4)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x8f5c28f6, 0x33333332, 0x33333333, x3, 1772, x4)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffa, 0x33333332, 0x5, x3, 1776, x4)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x33333334, 0x33333332, -0x55555556, x3, 1780, x4)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x9999999a, 0x33333332, 0x55555555, x3, 1784, x4)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x99999996, 0x33333332, 0x3, x3, 1788, x4)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0xffff0ea4, 0x55555554, 0xb505, x3, 1792, x4)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xaaab9c04, 0x55555554, -0xb503, x3, 1796, x4)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccc, 0x55555554, 0x66666667, x3, 1800, x4)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x11111110, 0x55555554, 0x33333334, x3, 1804, x4)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffff8, 0x55555554, 0x6, x3, 1808, x4)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x1c71c71c, 0x55555554, -0x55555555, x3, 1812, x4)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x38e38e38, 0x55555554, 0x55555556, x3, 1816, x4)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x55555550, 0x55555554, 0x4, x3, 1820, x4)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x555463fc, 0x55555554, 0xb503, x3, 1824, x4)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x55555554, 0x0, x3, 1828, x4)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0x22222224, 0x55555554, 0x66666665, x3, 1832, x4)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x66666668, 0x55555554, 0x33333332, x3, 1836, x4)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x8e38e390, 0x55555554, 0x55555554, x3, 1840, x4)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa8, 0x55555554, 0x2, x3, 1844, x4)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xaaa9b950, 0x55555554, 0xb504, x3, 1848, x4)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x555646b0, 0x55555554, -0xb504, x3, 1852, x4)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x77777778, 0x55555554, 0x66666666, x3, 1856, x4)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xbbbbbbbc, 0x55555554, 0x33333333, x3, 1860, x4)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa4, 0x55555554, 0x5, x3, 1864, x4)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xc71c71c8, 0x55555554, -0x55555556, x3, 1868, x4)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xe38e38e4, 0x55555554, 0x55555555, x3, 1872, x4)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffc, 0x55555554, 0x3, x3, 1876, x4)
+
+inst_485:
+// rs1_val==2 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x16a0a, 0x2, 0xb505, x3, 1880, x4)
+
+inst_486:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xfffe95fa, 0x2, -0xb503, x3, 1884, x4)
+
+inst_487:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0xccccccce, 0x2, 0x66666667, x3, 1888, x4)
+
+inst_488:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x66666668, 0x2, 0x33333334, x3, 1892, x4)
+
+inst_489:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x55555556, 0x2, -0x55555555, x3, 1896, x4)
+
+inst_490:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaac, 0x2, 0x55555556, x3, 1900, x4)
+
+inst_491:
+// rs1_val==2 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x8, 0x2, 0x4, x3, 1904, x4)
+
+inst_492:
+// rs1_val==2 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x16a06, 0x2, 0xb503, x3, 1908, x4)
+
+inst_493:
+// rs1_val==2 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x2, 0x0, x3, 1912, x4)
+
+inst_494:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xccccccca, 0x2, 0x66666665, x3, 1916, x4)
+
+inst_495:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x66666664, 0x2, 0x33333332, x3, 1920, x4)
+
+inst_496:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaa8, 0x2, 0x55555554, x3, 1924, x4)
+
+inst_497:
+// rs1_val==2 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x4, 0x2, 0x2, x3, 1928, x4)
+
+inst_498:
+// rs1_val==2 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x16a08, 0x2, 0xb504, x3, 1932, x4)
+
+inst_499:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xfffe95f8, 0x2, -0xb504, x3, 1936, x4)
+
+inst_500:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccc, 0x2, 0x66666666, x3, 1940, x4)
+
+inst_501:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x66666666, 0x2, 0x33333333, x3, 1944, x4)
+
+inst_502:
+// rs1_val==2 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xa, 0x2, 0x5, x3, 1948, x4)
+
+inst_503:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x55555554, 0x2, -0x55555556, x3, 1952, x4)
+
+inst_504:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaaaaaa, 0x2, 0x55555555, x3, 1956, x4)
+
+inst_505:
+// rs1_val==2 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x6, 0x2, 0x3, x3, 1960, x4)
+
+inst_506:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x7fff5d14, 0xb504, 0xb505, x3, 1964, x4)
+
+inst_507:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x80020cf4, 0xb504, -0xb503, x3, 1968, x4)
+
+inst_508:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x6c9c, 0xb504, 0x66666667, x3, 1972, x4)
+
+inst_509:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0x90d0, 0xb504, 0x33333334, x3, 1976, x4)
+
+inst_510:
+// rs1_val==46340 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x43e18, 0xb504, 0x6, x3, 1980, x4)
+
+inst_511:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x555591ac, 0xb504, -0x55555555, x3, 1984, x4)
+
+inst_512:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xaaab2358, 0xb504, 0x55555556, x3, 1988, x4)
+
+inst_513:
+// rs1_val==46340 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x2d410, 0xb504, 0x4, x3, 1992, x4)
+
+inst_514:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffdf30c, 0xb504, 0xb503, x3, 1996, x4)
+
+inst_515:
+// rs1_val==46340 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0xb504, 0x0, x3, 2000, x4)
+
+inst_516:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xffff0294, 0xb504, 0x66666665, x3, 2004, x4)
+
+inst_517:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0xffff26c8, 0xb504, 0x33333332, x3, 2008, x4)
+
+inst_518:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0xaaa9b950, 0xb504, 0x55555554, x3, 2012, x4)
+
+inst_519:
+// rs1_val==46340 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0x16a08, 0xb504, 0x2, x3, 2016, x4)
+
+inst_520:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffea810, 0xb504, 0xb504, x3, 2020, x4)
+
+inst_521:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x800157f0, 0xb504, -0xb504, x3, 2024, x4)
+
+inst_522:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0xffffb798, 0xb504, 0x66666666, x3, 2028, x4)
+
+inst_523:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0xffffdbcc, 0xb504, 0x33333333, x3, 2032, x4)
+
+inst_524:
+// rs1_val==46340 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0x38914, 0xb504, 0x5, x3, 2036, x4)
+
+inst_525:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x5554dca8, 0xb504, -0x55555556, x3, 2040, x4)
+
+inst_526:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaa6e54, 0xb504, 0x55555555, x3, 2044, x4)
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_527:
+// rs1_val==46340 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x21f0c, 0xb504, 0x3, x3, 0, x4)
+
+inst_528:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x8000a2ec, -0xb504, 0xb505, x3, 4, x4)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffdf30c, -0xb504, -0xb503, x3, 8, x4)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0xffff9364, -0xb504, 0x66666667, x3, 12, x4)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xffff6f30, -0xb504, 0x33333334, x3, 16, x4)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0xfffbc1e8, -0xb504, 0x6, x3, 20, x4)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xaaaa6e54, -0xb504, -0x55555555, x3, 24, x4)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x5554dca8, -0xb504, 0x55555556, x3, 28, x4)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0xfffd2bf0, -0xb504, 0x4, x3, 32, x4)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x80020cf4, -0xb504, 0xb503, x3, 36, x4)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, -0xb504, 0x0, x3, 40, x4)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xfd6c, -0xb504, 0x66666665, x3, 44, x4)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0xd938, -0xb504, 0x33333332, x3, 48, x4)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x555646b0, -0xb504, 0x55555554, x3, 52, x4)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xfffe95f8, -0xb504, 0x2, x3, 56, x4)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x800157f0, -0xb504, 0xb504, x3, 60, x4)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x7ffea810, -0xb504, -0xb504, x3, 64, x4)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0x4868, -0xb504, 0x66666666, x3, 68, x4)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x2434, -0xb504, 0x33333333, x3, 72, x4)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xfffc76ec, -0xb504, 0x5, x3, 76, x4)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xaaab2358, -0xb504, -0x55555556, x3, 80, x4)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x555591ac, -0xb504, 0x55555555, x3, 84, x4)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0xfffde0f4, -0xb504, 0x3, x3, 88, x4)
+
+inst_550:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x66661dfe, 0x66666666, 0xb505, x3, 92, x4)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x6666aece, 0x66666666, -0xb503, x3, 96, x4)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0x70a3d70a, 0x66666666, 0x66666667, x3, 100, x4)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xeb851eb8, 0x66666666, 0x33333334, x3, 104, x4)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x66666664, 0x66666666, 0x6, x3, 108, x4)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x22222222, 0x66666666, -0x55555555, x3, 112, x4)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x44444444, 0x66666666, 0x55555556, x3, 116, x4)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0x99999998, 0x66666666, 0x4, x3, 120, x4)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x99995132, 0x66666666, 0xb503, x3, 124, x4)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(mul, x12, x10, x11, 0x0, 0x66666666, 0x0, x3, 128, x4)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(mul, x12, x10, x11, 0xa3d70a3e, 0x66666666, 0x66666665, x3, 132, x4)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(mul, x12, x10, x11, 0x1eb851ec, 0x66666666, 0x33333332, x3, 136, x4)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(mul, x12, x10, x11, 0x77777778, 0x66666666, 0x55555554, x3, 140, x4)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccc, 0x66666666, 0x2, x3, 144, x4)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0xffffb798, 0x66666666, 0xb504, x3, 148, x4)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(mul, x12, x10, x11, 0x4868, 0x66666666, -0xb504, x3, 152, x4)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(mul, x12, x10, x11, 0xa3d70a4, 0x66666666, 0x66666666, x3, 156, x4)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(mul, x12, x10, x11, 0x851eb852, 0x66666666, 0x33333333, x3, 160, x4)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffffe, 0x66666666, 0x5, x3, 164, x4)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0xbbbbbbbc, 0x66666666, -0x55555556, x3, 168, x4)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0xddddddde, 0x66666666, 0x55555555, x3, 172, x4)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(mul, x12, x10, x11, 0x33333332, 0x66666666, 0x3, x3, 176, x4)
+
+inst_572:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(mul, x12, x10, x11, 0x33330eff, 0x33333333, 0xb505, x3, 180, x4)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0x33335767, 0x33333333, -0xb503, x3, 184, x4)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(mul, x12, x10, x11, 0xb851eb85, 0x33333333, 0x66666667, x3, 188, x4)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(mul, x12, x10, x11, 0xf5c28f5c, 0x33333333, 0x33333334, x3, 192, x4)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(mul, x12, x10, x11, 0x33333332, 0x33333333, 0x6, x3, 196, x4)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(mul, x12, x10, x11, 0x11111111, 0x33333333, -0x55555555, x3, 200, x4)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(mul, x12, x10, x11, 0x22222222, 0x33333333, 0x55555556, x3, 204, x4)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(mul, x12, x10, x11, 0xcccccccc, 0x33333333, 0x4, x3, 208, x4)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(mul, x12, x10, x11, 0xcccca899, 0x33333333, 0xb503, x3, 212, x4)
+
+inst_581:
+// rs2_val == -1073741825, rs1_val == 134217728
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:-0x40000001
+TEST_RR_OP(mul, x12, x10, x11, 0xf8000000, 0x8000000, -0x40000001, x3, 216, x4)
+
+inst_582:
+// rs2_val == -536870913, rs1_val == 8
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:-0x20000001
+TEST_RR_OP(mul, x12, x10, x11, 0xfffffff8, 0x8, -0x20000001, x3, 220, x4)
+
+inst_583:
+// rs2_val == -8388609,
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x9; op2val:-0x800001
+TEST_RR_OP(mul, x12, x10, x11, 0xfb7ffff7, 0x9, -0x800001, x3, 224, x4)
+
+inst_584:
+// rs2_val == -4194305, rs1_val == 32
+// opcode: mul ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:-0x400001
+TEST_RR_OP(mul, x12, x10, x11, 0xf7ffffe0, 0x20, -0x400001, x3, 228, x4)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 58*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulh-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulh-01.S
new file mode 100644
index 000000000..8de953dbe
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulh-01.S
@@ -0,0 +1,3040 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 07:22:49 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32em.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the mulh instruction of the RISC-V M extension for the mulh covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EM")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*M.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",mulh)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs2 == rd != rs1, rs1==x8, rs2==x5, rd==x5, rs1_val != rs2_val, rs1_val == 4, rs2_val == -67108865, rs1_val > 0 and rs2_val < 0
+// opcode: mulh ; op1:x8; op2:x5; dest:x5; op1val:0x4; op2val:-0x4000001
+TEST_RR_OP(mulh, x5, x8, x5, 0xffffffff, 0x4, -0x4000001, x2, 0, x3)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x13, rs2==x6, rd==x13, rs2_val == 2147483647, rs1_val > 0 and rs2_val > 0, rs2_val == (2**(xlen-1)-1)
+// opcode: mulh ; op1:x13; op2:x6; dest:x13; op1val:0xb504; op2val:0x7fffffff
+TEST_RR_OP(mulh, x13, x13, x6, 0x5a81, 0xb504, 0x7fffffff, x2, 4, x3)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x14, rs2==x14, rd==x14, rs2_val == -1073741825, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: mulh ; op1:x14; op2:x14; dest:x14; op1val:0x7fffffff; op2val:0x7fffffff
+TEST_RR_OP(mulh, x14, x14, x14, 0x3fffffff, 0x7fffffff, 0x7fffffff, x2, 8, x3)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x4, rs2==x4, rd==x1, rs2_val == -536870913, rs1_val < 0 and rs2_val < 0, rs1_val == -4194305
+// opcode: mulh ; op1:x4; op2:x4; dest:x1; op1val:-0x400001; op2val:-0x400001
+TEST_RR_OP(mulh, x1, x4, x4, 0x1000, -0x400001, -0x400001, x2, 12, x3)
+
+inst_4:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x10, rs2==x13, rd==x7, rs2_val == -268435457,
+// opcode: mulh ; op1:x10; op2:x13; dest:x7; op1val:0x33333333; op2val:-0x10000001
+TEST_RR_OP(mulh, x7, x10, x13, 0xfccccccc, 0x33333333, -0x10000001, x2, 16, x3)
+
+inst_5:
+// rs1==x11, rs2==x12, rd==x15, rs2_val == -134217729,
+// opcode: mulh ; op1:x11; op2:x12; dest:x15; op1val:0xb505; op2val:-0x8000001
+TEST_RR_OP(mulh, x15, x11, x12, 0xfffffa57, 0xb505, -0x8000001, x2, 20, x3)
+RVTEST_SIGBASE( x5,signature_x5_0)
+
+inst_6:
+// rs1==x0, rs2==x15, rd==x10, rs2_val == -33554433, rs1_val == -4097
+// opcode: mulh ; op1:x0; op2:x15; dest:x10; op1val:0x0; op2val:-0x2000001
+TEST_RR_OP(mulh, x10, x0, x15, 0x0, 0x0, -0x2000001, x5, 0, x11)
+
+inst_7:
+// rs1==x6, rs2==x2, rd==x8, rs2_val == -16777217, rs1_val == -134217729
+// opcode: mulh ; op1:x6; op2:x2; dest:x8; op1val:-0x8000001; op2val:-0x1000001
+TEST_RR_OP(mulh, x8, x6, x2, 0x80000, -0x8000001, -0x1000001, x5, 4, x11)
+
+inst_8:
+// rs1==x2, rs2==x0, rd==x9, rs2_val == -8388609, rs1_val == 256
+// opcode: mulh ; op1:x2; op2:x0; dest:x9; op1val:0x100; op2val:0x0
+TEST_RR_OP(mulh, x9, x2, x0, 0x0, 0x100, 0x0, x5, 8, x11)
+
+inst_9:
+// rs1==x9, rs2==x3, rd==x2, rs2_val == -4194305,
+// opcode: mulh ; op1:x9; op2:x3; dest:x2; op1val:0x7fffffff; op2val:-0x400001
+TEST_RR_OP(mulh, x2, x9, x3, 0xffdfffff, 0x7fffffff, -0x400001, x5, 12, x11)
+
+inst_10:
+// rs1==x15, rs2==x7, rd==x4, rs2_val == -2097153,
+// opcode: mulh ; op1:x15; op2:x7; dest:x4; op1val:0x7fffffff; op2val:-0x200001
+TEST_RR_OP(mulh, x4, x15, x7, 0xffefffff, 0x7fffffff, -0x200001, x5, 16, x11)
+
+inst_11:
+// rs1==x1, rs2==x8, rd==x12, rs2_val == -1048577, rs1_val == -1073741825
+// opcode: mulh ; op1:x1; op2:x8; dest:x12; op1val:-0x40000001; op2val:-0x100001
+TEST_RR_OP(mulh, x12, x1, x8, 0x40000, -0x40000001, -0x100001, x5, 20, x11)
+
+inst_12:
+// rs1==x3, rs2==x10, rd==x11, rs2_val == -524289,
+// opcode: mulh ; op1:x3; op2:x10; dest:x11; op1val:0x66666665; op2val:-0x80001
+TEST_RR_OP(mulh, x11, x3, x10, 0xfffccccc, 0x66666665, -0x80001, x5, 24, x4)
+RVTEST_SIGBASE( x2,signature_x2_2)
+
+inst_13:
+// rs1==x12, rs2==x9, rd==x6, rs2_val == -262145,
+// opcode: mulh ; op1:x12; op2:x9; dest:x6; op1val:-0xb504; op2val:-0x40001
+TEST_RR_OP(mulh, x6, x12, x9, 0x2, -0xb504, -0x40001, x2, 0, x4)
+
+inst_14:
+// rs1==x7, rs2==x1, rd==x3, rs2_val == -131073, rs1_val == 33554432
+// opcode: mulh ; op1:x7; op2:x1; dest:x3; op1val:0x2000000; op2val:-0x20001
+TEST_RR_OP(mulh, x3, x7, x1, 0xfffffbff, 0x2000000, -0x20001, x2, 4, x4)
+
+inst_15:
+// rs1==x5, rs2==x11, rd==x0, rs2_val == -65537,
+// opcode: mulh ; op1:x5; op2:x11; dest:x0; op1val:0x66666667; op2val:-0x10001
+TEST_RR_OP(mulh, x0, x5, x11, 0, 0x66666667, -0x10001, x2, 8, x4)
+
+inst_16:
+// rs2_val == -32769, rs1_val == 1073741824
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:-0x8001
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdfff, 0x40000000, -0x8001, x2, 12, x4)
+
+inst_17:
+// rs2_val == -16385,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x4001
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffff333, 0x33333333, -0x4001, x2, 16, x4)
+
+inst_18:
+// rs2_val == -8193,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x2001
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffff999, 0x33333332, -0x2001, x2, 20, x4)
+
+inst_19:
+// rs2_val == -4097, rs1_val == 8
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:-0x1001
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x8, -0x1001, x2, 24, x4)
+
+inst_20:
+// rs2_val == -2049, rs1_val == 0
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x801
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, -0x801, x2, 28, x4)
+
+inst_21:
+// rs2_val == -1025, rs1_val == 32768
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:-0x401
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x8000, -0x401, x2, 32, x4)
+
+inst_22:
+// rs2_val == -513,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x9; op2val:-0x201
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x9, -0x201, x2, 36, x4)
+
+inst_23:
+// rs2_val == -257,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:-0x101
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x8, -0x101, x2, 40, x4)
+
+inst_24:
+// rs2_val == -129, rs1_val == 268435456
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:-0x81
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffff7, 0x10000000, -0x81, x2, 44, x4)
+
+inst_25:
+// rs2_val == -65, rs1_val == -32769
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:-0x41
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x8001, -0x41, x2, 48, x4)
+
+inst_26:
+// rs2_val == -33, rs1_val == 1
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:-0x21
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x1, -0x21, x2, 52, x4)
+
+inst_27:
+// rs2_val == -17, rs1_val == 2048
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:-0x11
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x800, -0x11, x2, 56, x4)
+
+inst_28:
+// rs2_val == -9, rs1_val == 2097152
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:-0x9
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x200000, -0x9, x2, 60, x4)
+
+inst_29:
+// rs2_val == -5, rs1_val == -8193
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:-0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x2001, -0x5, x2, 64, x4)
+
+inst_30:
+// rs2_val == -3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:-0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x2001, -0x3, x2, 68, x4)
+
+inst_31:
+// rs2_val == -2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, -0x2, x2, 72, x4)
+
+inst_32:
+// rs1_val == -536870913,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x16a0, -0x20000001, -0xb503, x2, 76, x4)
+
+inst_33:
+// rs1_val == -268435457, rs1_val < 0 and rs2_val > 0
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffff4af, -0x10000001, 0xb504, x2, 80, x4)
+
+inst_34:
+// rs1_val == -67108865,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x2d4, -0x4000001, -0xb503, x2, 84, x4)
+
+inst_35:
+// rs1_val == -33554433, rs2_val == 1431655765
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xff555555, -0x2000001, 0x55555555, x2, 88, x4)
+
+inst_36:
+// rs1_val == -16777217,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:-0x200001
+TEST_RR_OP(mulh, x12, x10, x11, 0x2000, -0x1000001, -0x200001, x2, 92, x4)
+
+inst_37:
+// rs1_val == -8388609,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0xffe66666, -0x800001, 0x33333332, x2, 96, x4)
+
+inst_38:
+// rs1_val == -2097153,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0xa
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x200001, -0xa, x2, 100, x4)
+
+inst_39:
+// rs1_val == -1048577,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x100001, 0x5, x2, 104, x4)
+
+inst_40:
+// rs1_val == -524289,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:-0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x80001, -0x4, x2, 108, x4)
+
+inst_41:
+// rs1_val == -262145,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffeaaaa, -0x40001, 0x55555556, x2, 112, x4)
+
+inst_42:
+// rs1_val == -131073,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:-0x100001
+TEST_RR_OP(mulh, x12, x10, x11, 0x20, -0x20001, -0x100001, x2, 116, x4)
+
+inst_43:
+// rs1_val == -65537,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffaaaa, -0x10001, 0x55555554, x2, 120, x4)
+
+inst_44:
+// rs1_val == -16385,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:-0x1
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x4001, -0x1, x2, 124, x4)
+
+inst_45:
+// rs1_val == -2049,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffd55, -0x801, 0x55555554, x2, 128, x4)
+
+inst_46:
+// rs1_val == -1025, rs2_val == 4
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x401, 0x4, x2, 132, x4)
+
+inst_47:
+// rs1_val == -513,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:-0x1000001
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, -0x201, -0x1000001, x2, 136, x4)
+
+inst_48:
+// rs1_val == -257,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:-0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x101, -0x5, x2, 140, x4)
+
+inst_49:
+// rs1_val == -129,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffd5, -0x81, 0x55555555, x2, 144, x4)
+
+inst_50:
+// rs1_val == -65, rs2_val == -1431655766
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x15, -0x41, -0x55555556, x2, 148, x4)
+
+inst_51:
+// rs1_val == -33,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:-0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x21, -0x4, x2, 152, x4)
+
+inst_52:
+// rs1_val == -17, rs2_val == 8388608
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x800000
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x11, 0x800000, x2, 156, x4)
+
+inst_53:
+// rs1_val == -9, rs2_val == 128
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x80
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x9, 0x80, x2, 160, x4)
+
+inst_54:
+// rs1_val == -5, rs2_val == 65536
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x10000
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x5, 0x10000, x2, 164, x4)
+
+inst_55:
+// rs1_val == -3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x4001
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x3, -0x4001, x2, 168, x4)
+
+inst_56:
+// rs1_val == -2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:-0x9
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x2, -0x9, x2, 172, x4)
+
+inst_57:
+// rs2_val == -2147483648, rs2_val == (-2**(xlen-1))
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x40000000; op2val:-0x80000000
+TEST_RR_OP(mulh, x12, x10, x11, 0x20000000, -0x40000000, -0x80000000, x2, 176, x4)
+
+inst_58:
+// rs2_val == 1073741824,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x40000000
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x4, 0x40000000, x2, 180, x4)
+
+inst_59:
+// rs2_val == 536870912, rs1_val == 1024
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x20000000
+TEST_RR_OP(mulh, x12, x10, x11, 0x80, 0x400, 0x20000000, x2, 184, x4)
+
+inst_60:
+// rs2_val == 268435456,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x10000000
+TEST_RR_OP(mulh, x12, x10, x11, 0xffbfffff, -0x4000001, 0x10000000, x2, 188, x4)
+
+inst_61:
+// rs2_val == 134217728,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x8000000
+TEST_RR_OP(mulh, x12, x10, x11, 0xfff7ffff, -0x1000001, 0x8000000, x2, 192, x4)
+
+inst_62:
+// rs2_val == 67108864,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4000000
+TEST_RR_OP(mulh, x12, x10, x11, 0xcccccc, 0x33333334, 0x4000000, x2, 196, x4)
+
+inst_63:
+// rs2_val == 33554432,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x2000000
+TEST_RR_OP(mulh, x12, x10, x11, 0x200000, 0x10000000, 0x2000000, x2, 200, x4)
+
+inst_64:
+// rs2_val == 16777216, rs1_val == 1431655765
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x1000000
+TEST_RR_OP(mulh, x12, x10, x11, 0x555555, 0x55555555, 0x1000000, x2, 204, x4)
+
+inst_65:
+// rs2_val == 4194304,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x400000
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x400000, x2, 208, x4)
+
+inst_66:
+// rs2_val == 2097152,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x200000
+TEST_RR_OP(mulh, x12, x10, x11, 0x16, 0xb503, 0x200000, x2, 212, x4)
+
+inst_67:
+// rs2_val == 1048576, rs1_val == 2
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x100000
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x100000, x2, 216, x4)
+
+inst_68:
+// rs2_val == 524288,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x80000
+TEST_RR_OP(mulh, x12, x10, x11, 0x3ffff, 0x7fffffff, 0x80000, x2, 220, x4)
+
+inst_69:
+// rs2_val == 262144, rs1_val == 512
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x40000
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x200, 0x40000, x2, 224, x4)
+
+inst_70:
+// rs2_val == 131072,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x20000
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x5, 0x20000, x2, 228, x4)
+
+inst_71:
+// rs2_val == 32768,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x8000
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x8000, x2, 232, x4)
+
+inst_72:
+// rs2_val == 16384,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3fffffff; op2val:0x4000
+TEST_RR_OP(mulh, x12, x10, x11, 0xfff, 0x3fffffff, 0x4000, x2, 236, x4)
+
+inst_73:
+// rs2_val == 8192, rs1_val == 1048576
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x2000
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x100000, 0x2000, x2, 240, x4)
+
+inst_74:
+// rs2_val == 4096,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x1000
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x81, 0x1000, x2, 244, x4)
+
+inst_75:
+// rs2_val == 2048,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x40000000; op2val:0x800
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffe00, -0x40000000, 0x800, x2, 248, x4)
+
+inst_76:
+// rs2_val == 1024,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x400
+TEST_RR_OP(mulh, x12, x10, x11, 0x40, 0x10000000, 0x400, x2, 252, x4)
+
+inst_77:
+// rs2_val == 512,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x200
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0x200, x2, 256, x4)
+
+inst_78:
+// rs2_val == 256,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x100
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x100000, 0x100, x2, 260, x4)
+
+inst_79:
+// rs2_val == 64,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x7; op2val:0x40
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x7, 0x40, x2, 264, x4)
+
+inst_80:
+// rs2_val == 32,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x20
+TEST_RR_OP(mulh, x12, x10, x11, 0xc, 0x66666666, 0x20, x2, 268, x4)
+
+inst_81:
+// rs2_val == 16,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x10
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x1000001, 0x10, x2, 272, x4)
+
+inst_82:
+// rs2_val == 8,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:0x8
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x41, 0x8, x2, 276, x4)
+
+inst_83:
+// rs2_val == 2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x100001, 0x2, x2, 280, x4)
+
+inst_84:
+// rs2_val == 1,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3fffffff; op2val:0x1
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3fffffff, 0x1, x2, 284, x4)
+
+inst_85:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x5a81, -0x80000000, -0xb503, x2, 288, x4)
+
+inst_86:
+// rs1_val == 536870912,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x20000000, 0x3, x2, 292, x4)
+
+inst_87:
+// rs1_val == 134217728,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x20
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x8000000, 0x20, x2, 296, x4)
+
+inst_88:
+// rs1_val == 67108864,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:-0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x4000000, -0x3, x2, 300, x4)
+
+inst_89:
+// rs1_val == 16777216,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffaaaaaa, 0x1000000, -0x55555555, x2, 304, x4)
+
+inst_90:
+// rs1_val == 8388608,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xffd55555, 0x800000, -0x55555556, x2, 308, x4)
+
+inst_91:
+// rs1_val == 4194304,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x20000000
+TEST_RR_OP(mulh, x12, x10, x11, 0x80000, 0x400000, 0x20000000, x2, 312, x4)
+
+inst_92:
+// rs1_val == 524288,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x1000
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x80000, 0x1000, x2, 316, x4)
+
+inst_93:
+// rs1_val == 262144,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x200
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x40000, 0x200, x2, 320, x4)
+
+inst_94:
+// rs1_val == 131072,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x20000, 0x2, x2, 324, x4)
+
+inst_95:
+// rs1_val == 65536,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x1000000
+TEST_RR_OP(mulh, x12, x10, x11, 0x100, 0x10000, 0x1000000, x2, 328, x4)
+
+inst_96:
+// rs1_val == 16384,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:-0x40000001
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffefff, 0x4000, -0x40000001, x2, 332, x4)
+
+inst_97:
+// rs1_val == 8192,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:-0x2000001
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffbf, 0x2000, -0x2000001, x2, 336, x4)
+
+inst_98:
+// rs1_val == 4096,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffaaa, 0x1000, -0x55555555, x2, 340, x4)
+
+inst_99:
+// rs1_val == 128,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x3fffffff
+TEST_RR_OP(mulh, x12, x10, x11, 0x1f, 0x80, 0x3fffffff, x2, 344, x4)
+
+inst_100:
+// rs1_val == 64,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x19, 0x40, 0x66666665, x2, 348, x4)
+
+inst_101:
+// rs1_val == 32,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:-0x40000000
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffff8, 0x20, -0x40000000, x2, 352, x4)
+
+inst_102:
+// rs1_val == 16,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x40000
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x10, 0x40000, x2, 356, x4)
+
+inst_103:
+// rs1_val==46341 and rs2_val==46341, rs1_val == rs2_val
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0xb505, x2, 360, x4)
+
+inst_104:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0xb505, -0xb503, x2, 364, x4)
+
+inst_105:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x4868, 0xb505, 0x66666667, x2, 368, x4)
+
+inst_106:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x2434, 0xb505, 0x33333334, x2, 372, x4)
+
+inst_107:
+// rs1_val==46341 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0x6, x2, 376, x4)
+
+inst_108:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0xb505, -0x55555555, x2, 380, x4)
+
+inst_109:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c57, 0xb505, 0x55555556, x2, 384, x4)
+
+inst_110:
+// rs1_val==46341 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0x4, x2, 388, x4)
+
+inst_111:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0xb503, x2, 392, x4)
+
+inst_112:
+// rs1_val==46341 and rs2_val==0, rs2_val == 0
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0x0, x2, 396, x4)
+
+inst_113:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x4868, 0xb505, 0x66666665, x2, 400, x4)
+
+inst_114:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x2434, 0xb505, 0x33333332, x2, 404, x4)
+
+inst_115:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0xb505, 0x55555554, x2, 408, x4)
+
+inst_116:
+// rs1_val==46341 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0x2, x2, 412, x4)
+
+inst_117:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0xb504, x2, 416, x4)
+
+inst_118:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0xb505, -0xb504, x2, 420, x4)
+
+inst_119:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x4868, 0xb505, 0x66666666, x2, 424, x4)
+
+inst_120:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x2434, 0xb505, 0x33333333, x2, 428, x4)
+
+inst_121:
+// rs1_val==46341 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0x5, x2, 432, x4)
+
+inst_122:
+// rs1_val==46341 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a8, 0xb505, -0x55555556, x2, 436, x4)
+
+inst_123:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0xb505, 0x55555555, x2, 440, x4)
+
+inst_124:
+// rs1_val==46341 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb505, 0x3, x2, 444, x4)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb503, 0xb505, x2, 448, x4)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0xb503, -0xb503, x2, 452, x4)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, -0xb503, 0x66666667, x2, 456, x4)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, -0xb503, 0x33333334, x2, 460, x4)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb503, 0x6, x2, 464, x4)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, -0xb503, -0x55555555, x2, 468, x4)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0xb503, 0x55555556, x2, 472, x4)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb503, 0x4, x2, 476, x4)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb503, 0xb503, x2, 480, x4)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0xb503, 0x0, x2, 484, x4)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, -0xb503, 0x66666665, x2, 488, x4)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, -0xb503, 0x33333332, x2, 492, x4)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0xb503, 0x55555554, x2, 496, x4)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb503, 0x2, x2, 500, x4)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb503, 0xb504, x2, 504, x4)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0xb503, -0xb504, x2, 508, x4)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, -0xb503, 0x66666666, x2, 512, x4)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, -0xb503, 0x33333333, x2, 516, x4)
+
+inst_143:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb503, 0x5, x2, 520, x4)
+
+inst_144:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, -0xb503, -0x55555556, x2, 524, x4)
+
+inst_145:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0xb503, 0x55555555, x2, 528, x4)
+
+inst_146:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb503, 0x3, x2, 532, x4)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x4868, 0x66666667, 0xb505, x2, 536, x4)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, 0x66666667, -0xb503, x2, 540, x4)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666667, x2, 544, x4)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae148, 0x66666667, 0x33333334, x2, 548, x4)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x66666667, 0x6, x2, 552, x4)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xdddddddd, 0x66666667, -0x55555555, x2, 556, x4)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222222, 0x66666667, 0x55555556, x2, 560, x4)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x66666667, 0x4, x2, 564, x4)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0x66666667, 0xb503, x2, 568, x4)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x66666667, 0x0, x2, 572, x4)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666665, x2, 576, x4)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x66666667, 0x33333332, x2, 580, x4)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x66666667, 0x55555554, x2, 584, x4)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x66666667, 0x2, x2, 588, x4)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x4868, 0x66666667, 0xb504, x2, 592, x4)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb797, 0x66666667, -0xb504, x2, 596, x4)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666666, x2, 600, x4)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x66666667, 0x33333333, x2, 604, x4)
+
+inst_165:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x66666667, 0x5, x2, 608, x4)
+
+inst_166:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xdddddddd, 0x66666667, -0x55555556, x2, 612, x4)
+
+inst_167:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222222, 0x66666667, 0x55555555, x2, 616, x4)
+
+inst_168:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x66666667, 0x3, x2, 620, x4)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x2434, 0x33333334, 0xb505, x2, 624, x4)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, 0x33333334, -0xb503, x2, 628, x4)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae148, 0x33333334, 0x66666667, x2, 632, x4)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a4, 0x33333334, 0x33333334, x2, 636, x4)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x33333334, 0x6, x2, 640, x4)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeee, 0x33333334, -0x55555555, x2, 644, x4)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111111, 0x33333334, 0x55555556, x2, 648, x4)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333334, 0x4, x2, 652, x4)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0x33333334, 0xb503, x2, 656, x4)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333334, 0x0, x2, 660, x4)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x33333334, 0x66666665, x2, 664, x4)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a3, 0x33333334, 0x33333332, x2, 668, x4)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111111, 0x33333334, 0x55555554, x2, 672, x4)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333334, 0x2, x2, 676, x4)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x2434, 0x33333334, 0xb504, x2, 680, x4)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcb, 0x33333334, -0xb504, x2, 684, x4)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x33333334, 0x66666666, x2, 688, x4)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a3, 0x33333334, 0x33333333, x2, 692, x4)
+
+inst_187:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x33333334, 0x5, x2, 696, x4)
+
+inst_188:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeee, 0x33333334, -0x55555556, x2, 700, x4)
+
+inst_189:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111111, 0x33333334, 0x55555555, x2, 704, x4)
+
+inst_190:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333334, 0x3, x2, 708, x4)
+
+inst_191:
+// rs1_val==6 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0xb505, x2, 712, x4)
+
+inst_192:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x6, -0xb503, x2, 716, x4)
+
+inst_193:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x6, 0x66666667, x2, 720, x4)
+
+inst_194:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x6, 0x33333334, x2, 724, x4)
+
+inst_195:
+// rs1_val==6 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0x6, x2, 728, x4)
+
+inst_196:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, 0x6, -0x55555555, x2, 732, x4)
+
+inst_197:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x6, 0x55555556, x2, 736, x4)
+
+inst_198:
+// rs1_val==6 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0x4, x2, 740, x4)
+
+inst_199:
+// rs1_val==6 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0xb503, x2, 744, x4)
+
+inst_200:
+// rs1_val==6 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0x0, x2, 748, x4)
+
+inst_201:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x6, 0x66666665, x2, 752, x4)
+
+inst_202:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x6, 0x33333332, x2, 756, x4)
+
+inst_203:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x6, 0x55555554, x2, 760, x4)
+
+inst_204:
+// rs1_val==6 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0x2, x2, 764, x4)
+
+inst_205:
+// rs1_val==6 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0xb504, x2, 768, x4)
+
+inst_206:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x6, -0xb504, x2, 772, x4)
+
+inst_207:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x6, 0x66666666, x2, 776, x4)
+
+inst_208:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x6, 0x33333333, x2, 780, x4)
+
+inst_209:
+// rs1_val==6 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0x5, x2, 784, x4)
+
+inst_210:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffd, 0x6, -0x55555556, x2, 788, x4)
+
+inst_211:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x6, 0x55555555, x2, 792, x4)
+
+inst_212:
+// rs1_val==6 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x6, 0x3, x2, 796, x4)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0x55555555, 0xb505, x2, 800, x4)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, -0x55555555, -0xb503, x2, 804, x4)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0xdddddddd, -0x55555555, 0x66666667, x2, 808, x4)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeee, -0x55555555, 0x33333334, x2, 812, x4)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, -0x55555555, 0x6, x2, 816, x4)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, -0x55555555, -0x55555555, x2, 820, x4)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, -0x55555555, 0x55555556, x2, 824, x4)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, -0x55555555, 0x4, x2, 828, x4)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0x55555555, 0xb503, x2, 832, x4)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x55555555, 0x0, x2, 836, x4)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0xddddddde, -0x55555555, 0x66666665, x2, 840, x4)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeef, -0x55555555, 0x33333332, x2, 844, x4)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e4, -0x55555555, 0x55555554, x2, 848, x4)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x55555555, 0x2, x2, 852, x4)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0x55555555, 0xb504, x2, 856, x4)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, -0x55555555, -0xb504, x2, 860, x4)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0xddddddde, -0x55555555, 0x66666666, x2, 864, x4)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeef, -0x55555555, 0x33333333, x2, 868, x4)
+
+inst_231:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, -0x55555555, 0x5, x2, 872, x4)
+
+inst_232:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, -0x55555555, -0x55555556, x2, 876, x4)
+
+inst_233:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, -0x55555555, 0x55555555, x2, 880, x4)
+
+inst_234:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x55555555, 0x3, x2, 884, x4)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c57, 0x55555556, 0xb505, x2, 888, x4)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0x55555556, -0xb503, x2, 892, x4)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222222, 0x55555556, 0x66666667, x2, 896, x4)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111111, 0x55555556, 0x33333334, x2, 900, x4)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x55555556, 0x6, x2, 904, x4)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, 0x55555556, -0x55555555, x2, 908, x4)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555556, x2, 912, x4)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555556, 0x4, x2, 916, x4)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0x55555556, 0xb503, x2, 920, x4)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x55555556, 0x0, x2, 924, x4)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x55555556, 0x66666665, x2, 928, x4)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x55555556, 0x33333332, x2, 932, x4)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555554, x2, 936, x4)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x55555556, 0x2, x2, 940, x4)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0x55555556, 0xb504, x2, 944, x4)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0x55555556, -0xb504, x2, 948, x4)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222222, 0x55555556, 0x66666666, x2, 952, x4)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111111, 0x55555556, 0x33333333, x2, 956, x4)
+
+inst_253:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555556, 0x5, x2, 960, x4)
+
+inst_254:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, 0x55555556, -0x55555556, x2, 964, x4)
+
+inst_255:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555555, x2, 968, x4)
+
+inst_256:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555556, 0x3, x2, 972, x4)
+
+inst_257:
+// rs1_val==4 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0xb505, x2, 976, x4)
+
+inst_258:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x4, -0xb503, x2, 980, x4)
+
+inst_259:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x4, 0x66666667, x2, 984, x4)
+
+inst_260:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x33333334, x2, 988, x4)
+
+inst_261:
+// rs1_val==4 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x6, x2, 992, x4)
+
+inst_262:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, 0x4, -0x55555555, x2, 996, x4)
+
+inst_263:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x4, 0x55555556, x2, 1000, x4)
+
+inst_264:
+// rs1_val==4 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x4, x2, 1004, x4)
+
+inst_265:
+// rs1_val==4 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0xb503, x2, 1008, x4)
+
+inst_266:
+// rs1_val==4 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x0, x2, 1012, x4)
+
+inst_267:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x4, 0x66666665, x2, 1016, x4)
+
+inst_268:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x33333332, x2, 1020, x4)
+
+inst_269:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x4, 0x55555554, x2, 1024, x4)
+
+inst_270:
+// rs1_val==4 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x2, x2, 1028, x4)
+
+inst_271:
+// rs1_val==4 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0xb504, x2, 1032, x4)
+
+inst_272:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x4, -0xb504, x2, 1036, x4)
+
+inst_273:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x4, 0x66666666, x2, 1040, x4)
+
+inst_274:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x33333333, x2, 1044, x4)
+
+inst_275:
+// rs1_val==4 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x5, x2, 1048, x4)
+
+inst_276:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, 0x4, -0x55555556, x2, 1052, x4)
+
+inst_277:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x4, 0x55555555, x2, 1056, x4)
+
+inst_278:
+// rs1_val==4 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x4, 0x3, x2, 1060, x4)
+
+inst_279:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0xb505, x2, 1064, x4)
+
+inst_280:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0xb503, -0xb503, x2, 1068, x4)
+
+inst_281:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0xb503, 0x66666667, x2, 1072, x4)
+
+inst_282:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0xb503, 0x33333334, x2, 1076, x4)
+
+inst_283:
+// rs1_val==46339 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0x6, x2, 1080, x4)
+
+inst_284:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0xb503, -0x55555555, x2, 1084, x4)
+
+inst_285:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0xb503, 0x55555556, x2, 1088, x4)
+
+inst_286:
+// rs1_val==46339 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0x4, x2, 1092, x4)
+
+inst_287:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0xb503, x2, 1096, x4)
+
+inst_288:
+// rs1_val==46339 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0x0, x2, 1100, x4)
+
+inst_289:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0xb503, 0x66666665, x2, 1104, x4)
+
+inst_290:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0xb503, 0x33333332, x2, 1108, x4)
+
+inst_291:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0xb503, 0x55555554, x2, 1112, x4)
+
+inst_292:
+// rs1_val==46339 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0x2, x2, 1116, x4)
+
+inst_293:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0xb504, x2, 1120, x4)
+
+inst_294:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0xb503, -0xb504, x2, 1124, x4)
+
+inst_295:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0xb503, 0x66666666, x2, 1128, x4)
+
+inst_296:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0xb503, 0x33333333, x2, 1132, x4)
+
+inst_297:
+// rs1_val==46339 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0x5, x2, 1136, x4)
+
+inst_298:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0xb503, -0x55555556, x2, 1140, x4)
+
+inst_299:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0xb503, 0x55555555, x2, 1144, x4)
+
+inst_300:
+// rs1_val==46339 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb503, 0x3, x2, 1148, x4)
+
+inst_301:
+// rs1_val==0 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0xb505, x2, 1152, x4)
+
+inst_302:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, -0xb503, x2, 1156, x4)
+
+inst_303:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x66666667, x2, 1160, x4)
+
+inst_304:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x33333334, x2, 1164, x4)
+
+inst_305:
+// rs1_val==0 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x6, x2, 1168, x4)
+
+inst_306:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, -0x55555555, x2, 1172, x4)
+
+inst_307:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x55555556, x2, 1176, x4)
+
+inst_308:
+// rs1_val==0 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x4, x2, 1180, x4)
+
+inst_309:
+// rs1_val==0 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0xb503, x2, 1184, x4)
+
+inst_310:
+// rs1_val==0 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x0, x2, 1188, x4)
+
+inst_311:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x66666665, x2, 1192, x4)
+
+inst_312:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x33333332, x2, 1196, x4)
+
+inst_313:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x55555554, x2, 1200, x4)
+
+inst_314:
+// rs1_val==0 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x2, x2, 1204, x4)
+
+inst_315:
+// rs1_val==0 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0xb504, x2, 1208, x4)
+
+inst_316:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, -0xb504, x2, 1212, x4)
+
+inst_317:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x66666666, x2, 1216, x4)
+
+inst_318:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x33333333, x2, 1220, x4)
+
+inst_319:
+// rs1_val==0 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x5, x2, 1224, x4)
+
+inst_320:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, -0x55555556, x2, 1228, x4)
+
+inst_321:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x55555555, x2, 1232, x4)
+
+inst_322:
+// rs1_val==0 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x0, 0x3, x2, 1236, x4)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x4868, 0x66666665, 0xb505, x2, 1240, x4)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, 0x66666665, -0xb503, x2, 1244, x4)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28f, 0x66666665, 0x66666667, x2, 1248, x4)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x66666665, 0x33333334, x2, 1252, x4)
+
+inst_327:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x66666665, 0x6, x2, 1256, x4)
+
+inst_328:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xddddddde, 0x66666665, -0x55555555, x2, 1260, x4)
+
+inst_329:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x66666665, 0x55555556, x2, 1264, x4)
+
+inst_330:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x66666665, 0x4, x2, 1268, x4)
+
+inst_331:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0x66666665, 0xb503, x2, 1272, x4)
+
+inst_332:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x66666665, 0x0, x2, 1276, x4)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333333, 0x0, x2, 1280, x4)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666665, x2, 1284, x4)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333332, x2, 1288, x4)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x33333333, 0x55555554, x2, 1292, x4)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333333, 0x2, x2, 1296, x4)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0x33333333, 0xb504, x2, 1300, x4)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, 0x33333333, -0xb504, x2, 1304, x4)
+
+inst_340:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666666, x2, 1308, x4)
+
+inst_341:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333333, x2, 1312, x4)
+
+inst_342:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333333, 0x5, x2, 1316, x4)
+
+inst_343:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeee, 0x33333333, -0x55555556, x2, 1320, x4)
+
+inst_344:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x33333333, 0x55555555, x2, 1324, x4)
+
+inst_345:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333333, 0x3, x2, 1328, x4)
+
+inst_346:
+// rs1_val==5 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0xb505, x2, 1332, x4)
+
+inst_347:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x5, -0xb503, x2, 1336, x4)
+
+inst_348:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x5, 0x66666667, x2, 1340, x4)
+
+inst_349:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x5, 0x33333334, x2, 1344, x4)
+
+inst_350:
+// rs1_val==5 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x6, x2, 1348, x4)
+
+inst_351:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, 0x5, -0x55555555, x2, 1352, x4)
+
+inst_352:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x5, 0x55555556, x2, 1356, x4)
+
+inst_353:
+// rs1_val==5 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x4, x2, 1360, x4)
+
+inst_354:
+// rs1_val==5 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0xb503, x2, 1364, x4)
+
+inst_355:
+// rs1_val==5 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x0, x2, 1368, x4)
+
+inst_356:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x5, 0x66666665, x2, 1372, x4)
+
+inst_357:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x33333332, x2, 1376, x4)
+
+inst_358:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x5, 0x55555554, x2, 1380, x4)
+
+inst_359:
+// rs1_val==5 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x2, x2, 1384, x4)
+
+inst_360:
+// rs1_val==5 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0xb504, x2, 1388, x4)
+
+inst_361:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x5, -0xb504, x2, 1392, x4)
+
+inst_362:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x5, 0x66666666, x2, 1396, x4)
+
+inst_363:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x33333333, x2, 1400, x4)
+
+inst_364:
+// rs1_val==5 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x5, x2, 1404, x4)
+
+inst_365:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, 0x5, -0x55555556, x2, 1408, x4)
+
+inst_366:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x5, 0x55555555, x2, 1412, x4)
+
+inst_367:
+// rs1_val==5 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x5, 0x3, x2, 1416, x4)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==46341, rs1_val == -1431655766
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a8, -0x55555556, 0xb505, x2, 1420, x4)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, -0x55555556, -0xb503, x2, 1424, x4)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0xdddddddd, -0x55555556, 0x66666667, x2, 1428, x4)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeee, -0x55555556, 0x33333334, x2, 1432, x4)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffd, -0x55555556, 0x6, x2, 1436, x4)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, -0x55555556, -0x55555555, x2, 1440, x4)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, -0x55555556, 0x55555556, x2, 1444, x4)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, -0x55555556, 0x4, x2, 1448, x4)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0x55555556, 0xb503, x2, 1452, x4)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0x55555556, 0x0, x2, 1456, x4)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0xddddddde, -0x55555556, 0x66666665, x2, 1460, x4)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeef, -0x55555556, 0x33333332, x2, 1464, x4)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, -0x55555556, 0x55555554, x2, 1468, x4)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0x55555556, 0x2, x2, 1472, x4)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0x55555556, 0xb504, x2, 1476, x4)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, -0x55555556, -0xb504, x2, 1480, x4)
+
+inst_384:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0xdddddddd, -0x55555556, 0x66666666, x2, 1484, x4)
+
+inst_385:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeee, -0x55555556, 0x33333333, x2, 1488, x4)
+
+inst_386:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, -0x55555556, 0x5, x2, 1492, x4)
+
+inst_387:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, -0x55555556, -0x55555556, x2, 1496, x4)
+
+inst_388:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, -0x55555556, 0x55555555, x2, 1500, x4)
+
+inst_389:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, -0x55555556, 0x3, x2, 1504, x4)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0x55555555, 0xb505, x2, 1508, x4)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0x55555555, -0xb503, x2, 1512, x4)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222222, 0x55555555, 0x66666667, x2, 1516, x4)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111111, 0x55555555, 0x33333334, x2, 1520, x4)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555555, 0x6, x2, 1524, x4)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, 0x55555555, -0x55555555, x2, 1528, x4)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, 0x55555555, 0x55555556, x2, 1532, x4)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555555, 0x4, x2, 1536, x4)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0x55555555, 0xb503, x2, 1540, x4)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x55555555, 0x0, x2, 1544, x4)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x55555555, 0x66666665, x2, 1548, x4)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x55555555, 0x33333332, x2, 1552, x4)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71b, 0x55555555, 0x55555554, x2, 1556, x4)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x55555555, 0x2, x2, 1560, x4)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0x55555555, 0xb504, x2, 1564, x4)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0x55555555, -0xb504, x2, 1568, x4)
+
+inst_406:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x55555555, 0x66666666, x2, 1572, x4)
+
+inst_407:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x55555555, 0x33333333, x2, 1576, x4)
+
+inst_408:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555555, 0x5, x2, 1580, x4)
+
+inst_409:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, 0x55555555, -0x55555556, x2, 1584, x4)
+
+inst_410:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, 0x55555555, 0x55555555, x2, 1588, x4)
+
+inst_411:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x55555555, 0x3, x2, 1592, x4)
+
+inst_412:
+// rs1_val==3 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0xb505, x2, 1596, x4)
+
+inst_413:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x3, -0xb503, x2, 1600, x4)
+
+inst_414:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x3, 0x66666667, x2, 1604, x4)
+
+inst_415:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x33333334, x2, 1608, x4)
+
+inst_416:
+// rs1_val==3 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x6, x2, 1612, x4)
+
+inst_417:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x3, -0x55555555, x2, 1616, x4)
+
+inst_418:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x3, 0x55555556, x2, 1620, x4)
+
+inst_419:
+// rs1_val==3 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x4, x2, 1624, x4)
+
+inst_420:
+// rs1_val==3 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0xb503, x2, 1628, x4)
+
+inst_421:
+// rs1_val==3 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x0, x2, 1632, x4)
+
+inst_422:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x3, 0x66666665, x2, 1636, x4)
+
+inst_423:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x33333332, x2, 1640, x4)
+
+inst_424:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x55555554, x2, 1644, x4)
+
+inst_425:
+// rs1_val==3 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x2, x2, 1648, x4)
+
+inst_426:
+// rs1_val==3 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0xb504, x2, 1652, x4)
+
+inst_427:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x3, -0xb504, x2, 1656, x4)
+
+inst_428:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x3, 0x66666666, x2, 1660, x4)
+
+inst_429:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x33333333, x2, 1664, x4)
+
+inst_430:
+// rs1_val==3 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x5, x2, 1668, x4)
+
+inst_431:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xfffffffe, 0x3, -0x55555556, x2, 1672, x4)
+
+inst_432:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x55555555, x2, 1676, x4)
+
+inst_433:
+// rs1_val==3 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x3, 0x3, x2, 1680, x4)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28e, 0x66666665, 0x66666665, x2, 1684, x4)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae146, 0x66666665, 0x33333332, x2, 1688, x4)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x66666665, 0x55555554, x2, 1692, x4)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x66666665, 0x2, x2, 1696, x4)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0x66666665, 0xb504, x2, 1700, x4)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, 0x66666665, -0xb504, x2, 1704, x4)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28e, 0x66666665, 0x66666666, x2, 1708, x4)
+
+inst_441:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x66666665, 0x33333333, x2, 1712, x4)
+
+inst_442:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x66666665, 0x5, x2, 1716, x4)
+
+inst_443:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xddddddde, 0x66666665, -0x55555556, x2, 1720, x4)
+
+inst_444:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x66666665, 0x55555555, x2, 1724, x4)
+
+inst_445:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x66666665, 0x3, x2, 1728, x4)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x2434, 0x33333332, 0xb505, x2, 1732, x4)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, 0x33333332, -0xb503, x2, 1736, x4)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x33333332, 0x66666667, x2, 1740, x4)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333334, x2, 1744, x4)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x33333332, 0x6, x2, 1748, x4)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeef, 0x33333332, -0x55555555, x2, 1752, x4)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x33333332, 0x55555556, x2, 1756, x4)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333332, 0x4, x2, 1760, x4)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0x33333332, 0xb503, x2, 1764, x4)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333332, 0x0, x2, 1768, x4)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae146, 0x33333332, 0x66666665, x2, 1772, x4)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333332, x2, 1776, x4)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x33333332, 0x55555554, x2, 1780, x4)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333332, 0x2, x2, 1784, x4)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0x33333332, 0xb504, x2, 1788, x4)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, 0x33333332, -0xb504, x2, 1792, x4)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x33333332, 0x66666666, x2, 1796, x4)
+
+inst_463:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333333, x2, 1800, x4)
+
+inst_464:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333332, 0x5, x2, 1804, x4)
+
+inst_465:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeef, 0x33333332, -0x55555556, x2, 1808, x4)
+
+inst_466:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x33333332, 0x55555555, x2, 1812, x4)
+
+inst_467:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333332, 0x3, x2, 1816, x4)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0x55555554, 0xb505, x2, 1820, x4)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0x55555554, -0xb503, x2, 1824, x4)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x55555554, 0x66666667, x2, 1828, x4)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111111, 0x55555554, 0x33333334, x2, 1832, x4)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555554, 0x6, x2, 1836, x4)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e4, 0x55555554, -0x55555555, x2, 1840, x4)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71c, 0x55555554, 0x55555556, x2, 1844, x4)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555554, 0x4, x2, 1848, x4)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0x55555554, 0xb503, x2, 1852, x4)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x55555554, 0x0, x2, 1856, x4)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x55555554, 0x66666665, x2, 1860, x4)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x55555554, 0x33333332, x2, 1864, x4)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71b, 0x55555554, 0x55555554, x2, 1868, x4)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x55555554, 0x2, x2, 1872, x4)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0x55555554, 0xb504, x2, 1876, x4)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0x55555554, -0xb504, x2, 1880, x4)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x55555554, 0x66666666, x2, 1884, x4)
+
+inst_485:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111110, 0x55555554, 0x33333333, x2, 1888, x4)
+
+inst_486:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x55555554, 0x5, x2, 1892, x4)
+
+inst_487:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xe38e38e3, 0x55555554, -0x55555556, x2, 1896, x4)
+
+inst_488:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x1c71c71b, 0x55555554, 0x55555555, x2, 1900, x4)
+
+inst_489:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x55555554, 0x3, x2, 1904, x4)
+
+inst_490:
+// rs1_val==2 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0xb505, x2, 1908, x4)
+
+inst_491:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x2, -0xb503, x2, 1912, x4)
+
+inst_492:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x66666667, x2, 1916, x4)
+
+inst_493:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x33333334, x2, 1920, x4)
+
+inst_494:
+// rs1_val==2 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x6, x2, 1924, x4)
+
+inst_495:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x2, -0x55555555, x2, 1928, x4)
+
+inst_496:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x55555556, x2, 1932, x4)
+
+inst_497:
+// rs1_val==2 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x4, x2, 1936, x4)
+
+inst_498:
+// rs1_val==2 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0xb503, x2, 1940, x4)
+
+inst_499:
+// rs1_val==2 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x0, x2, 1944, x4)
+
+inst_500:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x66666665, x2, 1948, x4)
+
+inst_501:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x33333332, x2, 1952, x4)
+
+inst_502:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x55555554, x2, 1956, x4)
+
+inst_503:
+// rs1_val==2 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x2, x2, 1960, x4)
+
+inst_504:
+// rs1_val==2 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0xb504, x2, 1964, x4)
+
+inst_505:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x2, -0xb504, x2, 1968, x4)
+
+inst_506:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x66666666, x2, 1972, x4)
+
+inst_507:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x33333333, x2, 1976, x4)
+
+inst_508:
+// rs1_val==2 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x5, x2, 1980, x4)
+
+inst_509:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x2, -0x55555556, x2, 1984, x4)
+
+inst_510:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x55555555, x2, 1988, x4)
+
+inst_511:
+// rs1_val==2 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x2, 0x3, x2, 1992, x4)
+
+inst_512:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0xb505, x2, 1996, x4)
+
+inst_513:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0xb504, -0xb503, x2, 2000, x4)
+
+inst_514:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x4868, 0xb504, 0x66666667, x2, 2004, x4)
+
+inst_515:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x2434, 0xb504, 0x33333334, x2, 2008, x4)
+
+inst_516:
+// rs1_val==46340 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0x6, x2, 2012, x4)
+
+inst_517:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0xb504, -0x55555555, x2, 2016, x4)
+
+inst_518:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0xb504, 0x55555556, x2, 2020, x4)
+
+inst_519:
+// rs1_val==46340 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0x4, x2, 2024, x4)
+
+inst_520:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0xb503, x2, 2028, x4)
+
+inst_521:
+// rs1_val==46340 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0x0, x2, 2032, x4)
+
+inst_522:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0xb504, 0x66666665, x2, 2036, x4)
+
+inst_523:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0xb504, 0x33333332, x2, 2040, x4)
+
+inst_524:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0xb504, 0x55555554, x2, 2044, x4)
+RVTEST_SIGBASE( x2,signature_x2_3)
+
+inst_525:
+// rs1_val==46340 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0x2, x2, 0, x4)
+
+inst_526:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0xb504, x2, 4, x4)
+
+inst_527:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0xb504, -0xb504, x2, 8, x4)
+
+inst_528:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0xb504, 0x66666666, x2, 12, x4)
+
+inst_529:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0xb504, 0x33333333, x2, 16, x4)
+
+inst_530:
+// rs1_val==46340 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0x5, x2, 20, x4)
+
+inst_531:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, 0xb504, -0x55555556, x2, 24, x4)
+
+inst_532:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, 0xb504, 0x55555555, x2, 28, x4)
+
+inst_533:
+// rs1_val==46340 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0xb504, 0x3, x2, 32, x4)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb504, 0xb505, x2, 36, x4)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0xb504, -0xb503, x2, 40, x4)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb797, -0xb504, 0x66666667, x2, 44, x4)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcb, -0xb504, 0x33333334, x2, 48, x4)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb504, 0x6, x2, 52, x4)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, -0xb504, -0x55555555, x2, 56, x4)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0xb504, 0x55555556, x2, 60, x4)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb504, 0x4, x2, 64, x4)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb504, 0xb503, x2, 68, x4)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0xb504, 0x0, x2, 72, x4)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, -0xb504, 0x66666665, x2, 76, x4)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, -0xb504, 0x33333332, x2, 80, x4)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0xb504, 0x55555554, x2, 84, x4)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb504, 0x2, x2, 88, x4)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb504, 0xb504, x2, 92, x4)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, -0xb504, -0xb504, x2, 96, x4)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, -0xb504, 0x66666666, x2, 100, x4)
+
+inst_551:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, -0xb504, 0x33333333, x2, 104, x4)
+
+inst_552:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb504, 0x5, x2, 108, x4)
+
+inst_553:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x3c56, -0xb504, -0x55555556, x2, 112, x4)
+
+inst_554:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffc3a9, -0xb504, 0x55555555, x2, 116, x4)
+
+inst_555:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, -0xb504, 0x3, x2, 120, x4)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x4868, 0x66666666, 0xb505, x2, 124, x4)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, 0x66666666, -0xb503, x2, 128, x4)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28f, 0x66666666, 0x66666667, x2, 132, x4)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333334, x2, 136, x4)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x2, 0x66666666, 0x6, x2, 140, x4)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xddddddde, 0x66666666, -0x55555555, x2, 144, x4)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222222, 0x66666666, 0x55555556, x2, 148, x4)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x66666666, 0x4, x2, 152, x4)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0x66666666, 0xb503, x2, 156, x4)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x66666666, 0x0, x2, 160, x4)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28e, 0x66666666, 0x66666665, x2, 164, x4)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333332, x2, 168, x4)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x66666666, 0x55555554, x2, 172, x4)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x66666666, 0x2, x2, 176, x4)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0x4867, 0x66666666, 0xb504, x2, 180, x4)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffb798, 0x66666666, -0xb504, x2, 184, x4)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(mulh, x12, x10, x11, 0x28f5c28f, 0x66666666, 0x66666666, x2, 188, x4)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333333, x2, 192, x4)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x66666666, 0x5, x2, 196, x4)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0xdddddddd, 0x66666666, -0x55555556, x2, 200, x4)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0x22222221, 0x66666666, 0x55555555, x2, 204, x4)
+
+inst_577:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x66666666, 0x3, x2, 208, x4)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(mulh, x12, x10, x11, 0x2434, 0x33333333, 0xb505, x2, 212, x4)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffdbcc, 0x33333333, -0xb503, x2, 216, x4)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(mulh, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666667, x2, 220, x4)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(mulh, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333334, x2, 224, x4)
+
+inst_582:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(mulh, x12, x10, x11, 0x1, 0x33333333, 0x6, x2, 228, x4)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(mulh, x12, x10, x11, 0xeeeeeeef, 0x33333333, -0x55555555, x2, 232, x4)
+
+inst_584:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(mulh, x12, x10, x11, 0x11111111, 0x33333333, 0x55555556, x2, 236, x4)
+
+inst_585:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(mulh, x12, x10, x11, 0x0, 0x33333333, 0x4, x2, 240, x4)
+
+inst_586:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(mulh, x12, x10, x11, 0x2433, 0x33333333, 0xb503, x2, 244, x4)
+
+inst_587:
+// rs2_val == -536870913, rs1_val < 0 and rs2_val < 0, rs1_val == -4194305
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:-0x20000001
+TEST_RR_OP(mulh, x12, x10, x11, 0x80000, -0x400001, -0x20000001, x2, 248, x4)
+
+inst_588:
+// rs2_val == -33554433, rs1_val == -4097
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:-0x2000001
+TEST_RR_OP(mulh, x12, x10, x11, 0x20, -0x1001, -0x2000001, x2, 252, x4)
+
+inst_589:
+// rs2_val == -8388609, rs1_val == 256
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:-0x800001
+TEST_RR_OP(mulh, x12, x10, x11, 0xffffffff, 0x100, -0x800001, x2, 256, x4)
+
+inst_590:
+// rs2_val == -65537,
+// opcode: mulh ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x10001
+TEST_RR_OP(mulh, x12, x10, x11, 0xffff9999, 0x66666667, -0x10001, x2, 260, x4)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_0:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_2:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_3:
+ .fill 66*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulhsu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulhsu-01.S
new file mode 100644
index 000000000..e4b07c6e2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulhsu-01.S
@@ -0,0 +1,3355 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 07:22:49 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32em.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the mulhsu instruction of the RISC-V M extension for the mulhsu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EM")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*M.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",mulhsu)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs2 == rd != rs1, rs1==x11, rs2==x15, rd==x15, rs1_val != rs2_val and rs1_val > 0 and rs2_val > 0, rs1_val > 0 and rs2_val > 0, rs2_val == 131072
+// opcode: mulhsu ; op1:x11; op2:x15; dest:x15; op1val:0x55555556; op2val:0x20000
+TEST_RR_OP(mulhsu, x15, x11, x15, 0xaaaa, 0x55555556, 0x20000, x4, 0, x7)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x6, rs2==x9, rd==x6, rs2_val == 2147483647, rs1_val == -1431655766
+// opcode: mulhsu ; op1:x6; op2:x9; dest:x6; op1val:-0x55555556; op2val:0x7fffffff
+TEST_RR_OP(mulhsu, x6, x6, x9, 0xd5555555, -0x55555556, 0x7fffffff, x4, 4, x7)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x8, rs2==x8, rd==x8, rs2_val == 3221225471, rs1_val == 1048576
+// opcode: mulhsu ; op1:x8; op2:x8; dest:x8; op1val:0x100000; op2val:0x100000
+TEST_RR_OP(mulhsu, x8, x8, x8, 0x100, 0x100000, 0x100000, x4, 8, x7)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x0, rs2==x0, rd==x11, rs2_val == 3758096383,
+// opcode: mulhsu ; op1:x0; op2:x0; dest:x11; op1val:0x0; op2val:0x0
+TEST_RR_OP(mulhsu, x11, x0, x0, 0x0, 0x0, 0x0, x4, 12, x7)
+
+inst_4:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x9, rs2==x12, rd==x13, rs2_val == 4026531839, rs1_val == -17
+// opcode: mulhsu ; op1:x9; op2:x12; dest:x13; op1val:-0x11; op2val:0xefffffff
+TEST_RR_OP(mulhsu, x13, x9, x12, 0xfffffff0, -0x11, 0xefffffff, x4, 16, x7)
+
+inst_5:
+// rs1==x2, rs2==x14, rd==x0, rs2_val == 4160749567,
+// opcode: mulhsu ; op1:x2; op2:x14; dest:x0; op1val:0x5; op2val:0xf7ffffff
+TEST_RR_OP(mulhsu, x0, x2, x14, 0, 0x5, 0xf7ffffff, x4, 20, x7)
+
+inst_6:
+// rs1==x3, rs2==x11, rd==x12, rs2_val == 4227858431, rs1_val == -1025
+// opcode: mulhsu ; op1:x3; op2:x11; dest:x12; op1val:-0x401; op2val:0xfbffffff
+TEST_RR_OP(mulhsu, x12, x3, x11, 0xfffffc0f, -0x401, 0xfbffffff, x4, 24, x7)
+
+inst_7:
+// rs1==x5, rs2==x13, rd==x1, rs2_val == 4261412863, rs1_val == 2
+// opcode: mulhsu ; op1:x5; op2:x13; dest:x1; op1val:0x2; op2val:0xfdffffff
+TEST_RR_OP(mulhsu, x1, x5, x13, 0x1, 0x2, 0xfdffffff, x4, 28, x7)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_8:
+// rs1==x15, rs2==x7, rd==x4, rs2_val == 4278190079, rs1_val == -2
+// opcode: mulhsu ; op1:x15; op2:x7; dest:x4; op1val:-0x2; op2val:0xfeffffff
+TEST_RR_OP(mulhsu, x4, x15, x7, 0xfffffffe, -0x2, 0xfeffffff, x3, 0, x8)
+
+inst_9:
+// rs1==x7, rs2==x10, rd==x9, rs2_val == 4286578687, rs1_val == 524288
+// opcode: mulhsu ; op1:x7; op2:x10; dest:x9; op1val:0x80000; op2val:0xff7fffff
+TEST_RR_OP(mulhsu, x9, x7, x10, 0x7fbff, 0x80000, 0xff7fffff, x3, 4, x8)
+
+inst_10:
+// rs1==x14, rs2==x2, rd==x5, rs2_val == 4290772991, rs1_val == 512
+// opcode: mulhsu ; op1:x14; op2:x2; dest:x5; op1val:0x200; op2val:0xffbfffff
+TEST_RR_OP(mulhsu, x5, x14, x2, 0x1ff, 0x200, 0xffbfffff, x3, 8, x8)
+
+inst_11:
+// rs1==x1, rs2==x4, rd==x10, rs2_val == 4292870143, rs1_val == 1431655765
+// opcode: mulhsu ; op1:x1; op2:x4; dest:x10; op1val:0x55555555; op2val:0xffdfffff
+TEST_RR_OP(mulhsu, x10, x1, x4, 0x554aaaaa, 0x55555555, 0xffdfffff, x3, 12, x8)
+
+inst_12:
+// rs1==x12, rs2==x6, rd==x2, rs2_val == 4293918719,
+// opcode: mulhsu ; op1:x12; op2:x6; dest:x2; op1val:0x55555556; op2val:0xffefffff
+TEST_RR_OP(mulhsu, x2, x12, x6, 0x55500000, 0x55555556, 0xffefffff, x3, 16, x8)
+
+inst_13:
+// rs1==x13, rs2==x1, rd==x14, rs2_val == 4294443007,
+// opcode: mulhsu ; op1:x13; op2:x1; dest:x14; op1val:-0x401; op2val:0xfff7ffff
+TEST_RR_OP(mulhsu, x14, x13, x1, 0xfffffbff, -0x401, 0xfff7ffff, x3, 20, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_14:
+// rs1==x4, rs2==x5, rd==x3, rs2_val == 4294705151, rs1_val == -1073741825
+// opcode: mulhsu ; op1:x4; op2:x5; dest:x3; op1val:-0x40000001; op2val:0xfffbffff
+TEST_RR_OP(mulhsu, x3, x4, x5, 0xc000ffff, -0x40000001, 0xfffbffff, x1, 0, x2)
+
+inst_15:
+// rs1==x10, rs2==x3, rd==x7, rs2_val == 4294836223, rs1_val == 0
+// opcode: mulhsu ; op1:x10; op2:x3; dest:x7; op1val:0x0; op2val:0xfffdffff
+TEST_RR_OP(mulhsu, x7, x10, x3, 0x0, 0x0, 0xfffdffff, x1, 4, x2)
+
+inst_16:
+// rs2_val == 4294901759, rs1_val == -5
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0xfffeffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffb, -0x5, 0xfffeffff, x1, 8, x2)
+
+inst_17:
+// rs2_val == 4294934527,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xffff7fff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xb503, 0xb504, 0xffff7fff, x1, 12, x2)
+
+inst_18:
+// rs2_val == 4294950911,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xffffbfff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x3, 0xffffbfff, x1, 16, x2)
+
+inst_19:
+// rs2_val == 4294959103,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x7; op2val:0xffffdfff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffff9, -0x7, 0xffffdfff, x1, 20, x2)
+
+inst_20:
+// rs2_val == 4294963199,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xffffefff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xb504, 0xb505, 0xffffefff, x1, 24, x2)
+
+inst_21:
+// rs2_val == 4294965247,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xfffff7ff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xaaaaad55, -0x55555556, 0xfffff7ff, x1, 28, x2)
+
+inst_22:
+// rs2_val == 4294966271,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0xfffffbff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x2, 0xfffffbff, x1, 32, x2)
+
+inst_23:
+// rs2_val == 4294966783, rs1_val == -65537
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:0xfffffdff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffeffff, -0x10001, 0xfffffdff, x1, 36, x2)
+
+inst_24:
+// rs2_val == 4294967039, rs1_val == 67108864
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0xfffffeff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3fffffb, 0x4000000, 0xfffffeff, x1, 40, x2)
+
+inst_25:
+// rs2_val == 4294967167,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xffffff7f
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x66666632, 0x66666666, 0xffffff7f, x1, 44, x2)
+
+inst_26:
+// rs2_val == 4294967231,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xffffffbf
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x3, 0xffffffbf, x1, 48, x2)
+
+inst_27:
+// rs2_val == 4294967263,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xffffffdf
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x66666658, 0x66666666, 0xffffffdf, x1, 52, x2)
+
+inst_28:
+// rs2_val == 4294967279,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xffffffef
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5, 0x6, 0xffffffef, x1, 56, x2)
+
+inst_29:
+// rs2_val == 4294967287, rs1_val == -268435457
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:0xfffffff7
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xefffffff, -0x10000001, 0xfffffff7, x1, 60, x2)
+
+inst_30:
+// rs2_val == 4294967291,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xfffffffb
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffff4afd, -0xb503, 0xfffffffb, x1, 64, x2)
+
+inst_31:
+// rs2_val == 4294967293, rs1_val == 4
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xfffffffd
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3, 0x4, 0xfffffffd, x1, 68, x2)
+
+inst_32:
+// rs2_val == 4294967294, rs1_val == -134217729
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:0xfffffffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xf7ffffff, -0x8000001, 0xfffffffe, x1, 72, x2)
+
+inst_33:
+// rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0xffefffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x7ff7fffe, 0x7fffffff, 0xffefffff, x1, 76, x2)
+
+inst_34:
+// rs1_val == -536870913,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:0xa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x20000001, 0xa, x1, 80, x2)
+
+inst_35:
+// rs1_val == -67108865, rs2_val == 8
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x8
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x4000001, 0x8, x1, 84, x2)
+
+inst_36:
+// rs1_val == -33554433,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:0x7
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x2000001, 0x7, x1, 88, x2)
+
+inst_37:
+// rs1_val == -16777217,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0xfffffdff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xff000001, -0x1000001, 0xfffffdff, x1, 92, x2)
+
+inst_38:
+// rs1_val == -8388609,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:0xfffff7ff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xff800003, -0x800001, 0xfffff7ff, x1, 96, x2)
+
+inst_39:
+// rs1_val == -4194305,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffc0, -0x400001, 0xfffe, x1, 100, x2)
+
+inst_40:
+// rs1_val == -2097153,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0xefffffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffe1ffff, -0x200001, 0xefffffff, x1, 104, x2)
+
+inst_41:
+// rs1_val == -1048577, rs2_val == 4096
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x1000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x100001, 0x1000, x1, 108, x2)
+
+inst_42:
+// rs1_val == -524289, rs2_val == 2097152
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:0x200000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffeff, -0x80001, 0x200000, x1, 112, x2)
+
+inst_43:
+// rs1_val == -262145, rs2_val == 33554432
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x2000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffff7ff, -0x40001, 0x2000000, x1, 116, x2)
+
+inst_44:
+// rs1_val == -131073, rs2_val == 8192
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x2000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x20001, 0x2000, x1, 120, x2)
+
+inst_45:
+// rs1_val == -32769,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x1000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x8001, 0x1000, x1, 124, x2)
+
+inst_46:
+// rs1_val == -16385, rs2_val == 256
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0x100
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x4001, 0x100, x1, 128, x2)
+
+inst_47:
+// rs1_val == -8193,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:0xffffdfff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffdfff, -0x2001, 0xffffdfff, x1, 132, x2)
+
+inst_48:
+// rs1_val == -4097,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x1001, 0xb504, x1, 136, x2)
+
+inst_49:
+// rs1_val == -2049,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0xfffffffb
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffff7ff, -0x801, 0xfffffffb, x1, 140, x2)
+
+inst_50:
+// rs1_val == -513,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0xfffffbff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffdff, -0x201, 0xfffffbff, x1, 144, x2)
+
+inst_51:
+// rs1_val == -257,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0xffffff7f
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffeff, -0x101, 0xffffff7f, x1, 148, x2)
+
+inst_52:
+// rs1_val == -129,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0xf
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x81, 0xf, x1, 152, x2)
+
+inst_53:
+// rs1_val == -65,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:0xffffffdf
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffbf, -0x41, 0xffffffdf, x1, 156, x2)
+
+inst_54:
+// rs1_val == -33,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0xfbffffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffdf, -0x21, 0xfbffffff, x1, 160, x2)
+
+inst_55:
+// rs1_val == -9,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffd, -0x9, 0x55555554, x1, 164, x2)
+
+inst_56:
+// rs1_val == -3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:0xfff7ffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffd, -0x3, 0xfff7ffff, x1, 168, x2)
+
+inst_57:
+// rs2_val == 2147483648, rs1_val == 128
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x80000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x40, 0x80, 0x80000000, x1, 172, x2)
+
+inst_58:
+// rs2_val == 1073741824, rs1_val == 4096
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x40000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x400, 0x1000, 0x40000000, x1, 176, x2)
+
+inst_59:
+// rs2_val == 536870912, rs1_val == 1073741824
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x20000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x8000000, 0x40000000, 0x20000000, x1, 180, x2)
+
+inst_60:
+// rs2_val == 268435456,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:0x10000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffff7fff, -0x80001, 0x10000000, x1, 184, x2)
+
+inst_61:
+// rs2_val == 134217728,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x8000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffbf, -0x801, 0x8000000, x1, 188, x2)
+
+inst_62:
+// rs2_val == 67108864,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1555555, 0x55555556, 0x4000000, x1, 192, x2)
+
+inst_63:
+// rs2_val == 16777216,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x1000000, x1, 196, x2)
+
+inst_64:
+// rs2_val == 8388608,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x800000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x201, 0x800000, x1, 200, x2)
+
+inst_65:
+// rs2_val == 4194304,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x400000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xccccc, 0x33333334, 0x400000, x1, 204, x2)
+
+inst_66:
+// rs2_val == 1048576,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0x100000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x200, 0x100000, x1, 208, x2)
+
+inst_67:
+// rs2_val == 524288,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x80000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2aaaa, 0x55555555, 0x80000, x1, 212, x2)
+
+inst_68:
+// rs2_val == 262144,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x40000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x15555, 0x55555554, 0x40000, x1, 216, x2)
+
+inst_69:
+// rs2_val == 65536, rs1_val == 134217728
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x800, 0x8000000, 0x10000, x1, 220, x2)
+
+inst_70:
+// rs2_val == 32768,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x8000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffdff, -0x4000001, 0x8000, x1, 224, x2)
+
+inst_71:
+// rs2_val == 16384, rs1_val == 1024
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x4000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x400, 0x4000, x1, 228, x2)
+
+inst_72:
+// rs2_val == 2048,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x800
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x800, x1, 232, x2)
+
+inst_73:
+// rs2_val == 1024,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x400
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x400, x1, 236, x2)
+
+inst_74:
+// rs2_val == 512,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x200
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x11, 0x200, x1, 240, x2)
+
+inst_75:
+// rs2_val == 128,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x80
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x801, 0x80, x1, 244, x2)
+
+inst_76:
+// rs2_val == 64,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x40
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x19, 0x66666665, 0x40, x1, 248, x2)
+
+inst_77:
+// rs2_val == 32, rs1_val == 64
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0x20
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x40, 0x20, x1, 252, x2)
+
+inst_78:
+// rs2_val == 16,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:0x10
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffd, -0x20000001, 0x10, x1, 256, x2)
+
+inst_79:
+// rs2_val == 4, rs1_val==858993458 and rs2_val==4
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333332, 0x4, x1, 260, x2)
+
+inst_80:
+// rs2_val == 2, rs1_val==0 and rs2_val==2
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x2, x1, 264, x2)
+
+inst_81:
+// rs2_val == 1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x7fffffff, 0x1, x1, 268, x2)
+
+inst_82:
+// rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x100
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffff80, -0x80000000, 0x100, x1, 272, x2)
+
+inst_83:
+// rs1_val == 536870912,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x20000000, 0x9, x1, 276, x2)
+
+inst_84:
+// rs1_val == 268435456,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x400000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x40000, 0x10000000, 0x400000, x1, 280, x2)
+
+inst_85:
+// rs1_val == 33554432,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2000000, 0x6, x1, 284, x2)
+
+inst_86:
+// rs1_val == 16777216,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x100
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x1000000, 0x100, x1, 288, x2)
+
+inst_87:
+// rs1_val == 8388608,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2aaaaa, 0x800000, 0x55555556, x1, 292, x2)
+
+inst_88:
+// rs1_val == 4194304,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0xfff7ffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3ffdff, 0x400000, 0xfff7ffff, x1, 296, x2)
+
+inst_89:
+// rs1_val == 2097152,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0xffff7fff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1fffef, 0x200000, 0xffff7fff, x1, 300, x2)
+
+inst_90:
+// rs1_val == 262144,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x100000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x40, 0x40000, 0x100000, x1, 304, x2)
+
+inst_91:
+// rs1_val == 131072,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0xffffffef
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1ffff, 0x20000, 0xffffffef, x1, 308, x2)
+
+inst_92:
+// rs1_val == 65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x10000, 0x6, x1, 312, x2)
+
+inst_93:
+// rs1_val == 32768, rs2_val == 1431655765
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2aaa, 0x8000, 0x55555555, x1, 316, x2)
+
+inst_94:
+// rs1_val == 16384,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0xb
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4000, 0xb, x1, 320, x2)
+
+inst_95:
+// rs1_val == 8192,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x200
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2000, 0x200, x1, 324, x2)
+
+inst_96:
+// rs1_val == 2048,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x800, 0x10000, x1, 328, x2)
+
+inst_97:
+// rs1_val == 256,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x100, 0x4, x1, 332, x2)
+
+inst_98:
+// rs1_val == 32,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x4000000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x20, 0x4000000, x1, 336, x2)
+
+inst_99:
+// rs1_val == 16,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x10, 0x10000, x1, 340, x2)
+
+inst_100:
+// rs1_val == 8,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0xfffffff7
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x7, 0x8, 0xfffffff7, x1, 344, x2)
+
+inst_101:
+// rs1_val == 1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xffefffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x1, 0xffefffff, x1, 348, x2)
+
+inst_102:
+// rs1_val==46341 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0x10000, x1, 352, x2)
+
+inst_103:
+// rs1_val==46341 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0x1, x1, 356, x2)
+
+inst_104:
+// rs1_val==46341 and rs2_val==46341, rs1_val == rs2_val and rs1_val > 0 and rs2_val > 0
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0xb505, x1, 360, x2)
+
+inst_105:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4868, 0xb505, 0x66666667, x1, 364, x2)
+
+inst_106:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2434, 0xb505, 0x33333334, x1, 368, x2)
+
+inst_107:
+// rs1_val==46341 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0x6, x1, 372, x2)
+
+inst_108:
+// rs1_val==46341 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ae, 0xb505, 0xaaaaaaab, x1, 376, x2)
+
+inst_109:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c57, 0xb505, 0x55555556, x1, 380, x2)
+
+inst_110:
+// rs1_val==46341 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0x4, x1, 384, x2)
+
+inst_111:
+// rs1_val==46341 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0xfffe, x1, 388, x2)
+
+inst_112:
+// rs1_val==46341 and rs2_val==0, rs2_val == 0
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0x0, x1, 392, x2)
+
+inst_113:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0xb503, x1, 396, x2)
+
+inst_114:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4868, 0xb505, 0x66666665, x1, 400, x2)
+
+inst_115:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2434, 0xb505, 0x33333332, x1, 404, x2)
+
+inst_116:
+// rs1_val==46341 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ad, 0xb505, 0xaaaaaaa9, x1, 408, x2)
+
+inst_117:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0xb505, 0x55555554, x1, 412, x2)
+
+inst_118:
+// rs1_val==46341 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0x2, x1, 416, x2)
+
+inst_119:
+// rs1_val==46341 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0xffff, x1, 420, x2)
+
+inst_120:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0xb504, x1, 424, x2)
+
+inst_121:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4868, 0xb505, 0x66666666, x1, 428, x2)
+
+inst_122:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2434, 0xb505, 0x33333333, x1, 432, x2)
+
+inst_123:
+// rs1_val==46341 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0x5, x1, 436, x2)
+
+inst_124:
+// rs1_val==46341 and rs2_val==2863311530, rs2_val == 2863311530
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ad, 0xb505, 0xaaaaaaaa, x1, 440, x2)
+
+inst_125:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0xb505, 0x55555555, x1, 444, x2)
+
+inst_126:
+// rs1_val==46341 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb505, 0x3, x1, 448, x2)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0x10000, x1, 452, x2)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0x1, x1, 456, x2)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0xb505, x1, 460, x2)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffb798, -0xb503, 0x66666667, x1, 464, x2)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffdbcc, -0xb503, 0x33333334, x1, 468, x2)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0x6, x1, 472, x2)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffff8753, -0xb503, 0xaaaaaaab, x1, 476, x2)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0xb503, 0x55555556, x1, 480, x2)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0x4, x1, 484, x2)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0xfffe, x1, 488, x2)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, -0xb503, 0x0, x1, 492, x2)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0xb503, x1, 496, x2)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffb798, -0xb503, 0x66666665, x1, 500, x2)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffdbcc, -0xb503, 0x33333332, x1, 504, x2)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffff8753, -0xb503, 0xaaaaaaa9, x1, 508, x2)
+
+inst_142:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0xb503, 0x55555554, x1, 512, x2)
+
+inst_143:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0x2, x1, 516, x2)
+
+inst_144:
+// rs1_val==-46339 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0xffff, x1, 520, x2)
+
+inst_145:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0xb504, x1, 524, x2)
+
+inst_146:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffb798, -0xb503, 0x66666666, x1, 528, x2)
+
+inst_147:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffdbcc, -0xb503, 0x33333333, x1, 532, x2)
+
+inst_148:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0x5, x1, 536, x2)
+
+inst_149:
+// rs1_val==-46339 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffff8753, -0xb503, 0xaaaaaaaa, x1, 540, x2)
+
+inst_150:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0xb503, 0x55555555, x1, 544, x2)
+
+inst_151:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb503, 0x3, x1, 548, x2)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6666, 0x66666667, 0x10000, x1, 552, x2)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666667, 0x1, x1, 556, x2)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4868, 0x66666667, 0xb505, x1, 560, x2)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666667, x1, 564, x2)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae148, 0x66666667, 0x33333334, x1, 568, x2)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x66666667, 0x6, x1, 572, x2)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444444, 0x66666667, 0xaaaaaaab, x1, 576, x2)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x66666667, 0x55555556, x1, 580, x2)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x66666667, 0x4, x1, 584, x2)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6665, 0x66666667, 0xfffe, x1, 588, x2)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666667, 0x0, x1, 592, x2)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0x66666667, 0xb503, x1, 596, x2)
+
+inst_164:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666665, x1, 600, x2)
+
+inst_165:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x66666667, 0x33333332, x1, 604, x2)
+
+inst_166:
+// rs1_val==1717986919 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444443, 0x66666667, 0xaaaaaaa9, x1, 608, x2)
+
+inst_167:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x66666667, 0x55555554, x1, 612, x2)
+
+inst_168:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666667, 0x2, x1, 616, x2)
+
+inst_169:
+// rs1_val==1717986919 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6666, 0x66666667, 0xffff, x1, 620, x2)
+
+inst_170:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4868, 0x66666667, 0xb504, x1, 624, x2)
+
+inst_171:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666666, x1, 628, x2)
+
+inst_172:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x66666667, 0x33333333, x1, 632, x2)
+
+inst_173:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x66666667, 0x5, x1, 636, x2)
+
+inst_174:
+// rs1_val==1717986919 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444444, 0x66666667, 0xaaaaaaaa, x1, 640, x2)
+
+inst_175:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x66666667, 0x55555555, x1, 644, x2)
+
+inst_176:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x66666667, 0x3, x1, 648, x2)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3333, 0x33333334, 0x10000, x1, 652, x2)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333334, 0x1, x1, 656, x2)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2434, 0x33333334, 0xb505, x1, 660, x2)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae148, 0x33333334, 0x66666667, x1, 664, x2)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a4, 0x33333334, 0x33333334, x1, 668, x2)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x33333334, 0x6, x1, 672, x2)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x33333334, 0xaaaaaaab, x1, 676, x2)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111111, 0x33333334, 0x55555556, x1, 680, x2)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333334, 0x4, x1, 684, x2)
+
+inst_186:
+// rs1_val==858993460 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3332, 0x33333334, 0xfffe, x1, 688, x2)
+
+inst_187:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333334, 0x0, x1, 692, x2)
+
+inst_188:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0x33333334, 0xb503, x1, 696, x2)
+
+inst_189:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x33333334, 0x66666665, x1, 700, x2)
+
+inst_190:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a3, 0x33333334, 0x33333332, x1, 704, x2)
+
+inst_191:
+// rs1_val==858993460 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x33333334, 0xaaaaaaa9, x1, 708, x2)
+
+inst_192:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111111, 0x33333334, 0x55555554, x1, 712, x2)
+
+inst_193:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333334, 0x2, x1, 716, x2)
+
+inst_194:
+// rs1_val==858993460 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3333, 0x33333334, 0xffff, x1, 720, x2)
+
+inst_195:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2434, 0x33333334, 0xb504, x1, 724, x2)
+
+inst_196:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x33333334, 0x66666666, x1, 728, x2)
+
+inst_197:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a3, 0x33333334, 0x33333333, x1, 732, x2)
+
+inst_198:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x33333334, 0x5, x1, 736, x2)
+
+inst_199:
+// rs1_val==858993460 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x33333334, 0xaaaaaaaa, x1, 740, x2)
+
+inst_200:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111111, 0x33333334, 0x55555555, x1, 744, x2)
+
+inst_201:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333334, 0x3, x1, 748, x2)
+
+inst_202:
+// rs1_val==6 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0x10000, x1, 752, x2)
+
+inst_203:
+// rs1_val==6 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0x1, x1, 756, x2)
+
+inst_204:
+// rs1_val==6 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0xb505, x1, 760, x2)
+
+inst_205:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x6, 0x66666667, x1, 764, x2)
+
+inst_206:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x6, 0x33333334, x1, 768, x2)
+
+inst_207:
+// rs1_val==6 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0x6, x1, 772, x2)
+
+inst_208:
+// rs1_val==6 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4, 0x6, 0xaaaaaaab, x1, 776, x2)
+
+inst_209:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x6, 0x55555556, x1, 780, x2)
+
+inst_210:
+// rs1_val==6 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0x4, x1, 784, x2)
+
+inst_211:
+// rs1_val==6 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0xfffe, x1, 788, x2)
+
+inst_212:
+// rs1_val==6 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0x0, x1, 792, x2)
+
+inst_213:
+// rs1_val==6 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0xb503, x1, 796, x2)
+
+inst_214:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x6, 0x66666665, x1, 800, x2)
+
+inst_215:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x6, 0x33333332, x1, 804, x2)
+
+inst_216:
+// rs1_val==6 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3, 0x6, 0xaaaaaaa9, x1, 808, x2)
+
+inst_217:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x6, 0x55555554, x1, 812, x2)
+
+inst_218:
+// rs1_val==6 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0x2, x1, 816, x2)
+
+inst_219:
+// rs1_val==6 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0xffff, x1, 820, x2)
+
+inst_220:
+// rs1_val==6 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0xb504, x1, 824, x2)
+
+inst_221:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x6, 0x66666666, x1, 828, x2)
+
+inst_222:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x6, 0x33333333, x1, 832, x2)
+
+inst_223:
+// rs1_val==6 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0x5, x1, 836, x2)
+
+inst_224:
+// rs1_val==6 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3, 0x6, 0xaaaaaaaa, x1, 840, x2)
+
+inst_225:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x6, 0x55555555, x1, 844, x2)
+
+inst_226:
+// rs1_val==6 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x6, 0x3, x1, 848, x2)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffaaaa, -0x55555555, 0x10000, x1, 852, x2)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x55555555, 0x1, x1, 856, x2)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0x55555555, 0xb505, x1, 860, x2)
+
+inst_230:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xdddddddd, -0x55555555, 0x66666667, x1, 864, x2)
+
+inst_231:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xeeeeeeee, -0x55555555, 0x33333334, x1, 868, x2)
+
+inst_232:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x55555555, 0x6, x1, 872, x2)
+
+inst_233:
+// rs1_val==-1431655765 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xc71c71c7, -0x55555555, 0xaaaaaaab, x1, 876, x2)
+
+inst_234:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xe38e38e3, -0x55555555, 0x55555556, x1, 880, x2)
+
+inst_235:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x55555555, 0x4, x1, 884, x2)
+
+inst_236:
+// rs1_val==-1431655765 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffaaab, -0x55555555, 0xfffe, x1, 888, x2)
+
+inst_237:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, -0x55555555, 0x0, x1, 892, x2)
+
+inst_238:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0x55555555, 0xb503, x1, 896, x2)
+
+inst_239:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xddddddde, -0x55555555, 0x66666665, x1, 900, x2)
+
+inst_240:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xeeeeeeef, -0x55555555, 0x33333332, x1, 904, x2)
+
+inst_241:
+// rs1_val==-1431655765 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xc71c71c7, -0x55555555, 0xaaaaaaa9, x1, 908, x2)
+
+inst_242:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xe38e38e4, -0x55555555, 0x55555554, x1, 912, x2)
+
+inst_243:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x55555555, 0x2, x1, 916, x2)
+
+inst_244:
+// rs1_val==-1431655765 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffaaab, -0x55555555, 0xffff, x1, 920, x2)
+
+inst_245:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0x55555555, 0xb504, x1, 924, x2)
+
+inst_246:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xddddddde, -0x55555555, 0x66666666, x1, 928, x2)
+
+inst_247:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xeeeeeeef, -0x55555555, 0x33333333, x1, 932, x2)
+
+inst_248:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x55555555, 0x5, x1, 936, x2)
+
+inst_249:
+// rs1_val==-1431655765 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xc71c71c7, -0x55555555, 0xaaaaaaaa, x1, 940, x2)
+
+inst_250:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xe38e38e3, -0x55555555, 0x55555555, x1, 944, x2)
+
+inst_251:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x55555555, 0x3, x1, 948, x2)
+
+inst_252:
+// rs1_val==1431655766 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5555, 0x55555556, 0x10000, x1, 952, x2)
+
+inst_253:
+// rs1_val==1431655766 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555556, 0x1, x1, 956, x2)
+
+inst_254:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c57, 0x55555556, 0xb505, x1, 960, x2)
+
+inst_255:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x55555556, 0x66666667, x1, 964, x2)
+
+inst_256:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111111, 0x55555556, 0x33333334, x1, 968, x2)
+
+inst_257:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x55555556, 0x6, x1, 972, x2)
+
+inst_258:
+// rs1_val==1431655766 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e39, 0x55555556, 0xaaaaaaab, x1, 976, x2)
+
+inst_259:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555556, x1, 980, x2)
+
+inst_260:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555556, 0x4, x1, 984, x2)
+
+inst_261:
+// rs1_val==1431655766 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5554, 0x55555556, 0xfffe, x1, 988, x2)
+
+inst_262:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555556, 0x0, x1, 992, x2)
+
+inst_263:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0x55555556, 0xb503, x1, 996, x2)
+
+inst_264:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x55555556, 0x66666665, x1, 1000, x2)
+
+inst_265:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x55555556, 0x33333332, x1, 1004, x2)
+
+inst_266:
+// rs1_val==1431655766 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e38, 0x55555556, 0xaaaaaaa9, x1, 1008, x2)
+
+inst_267:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555554, x1, 1012, x2)
+
+inst_268:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555556, 0x2, x1, 1016, x2)
+
+inst_269:
+// rs1_val==1431655766 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5555, 0x55555556, 0xffff, x1, 1020, x2)
+
+inst_270:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0x55555556, 0xb504, x1, 1024, x2)
+
+inst_271:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x55555556, 0x66666666, x1, 1028, x2)
+
+inst_272:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111111, 0x55555556, 0x33333333, x1, 1032, x2)
+
+inst_273:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555556, 0x5, x1, 1036, x2)
+
+inst_274:
+// rs1_val==1431655766 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e39, 0x55555556, 0xaaaaaaaa, x1, 1040, x2)
+
+inst_275:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555555, x1, 1044, x2)
+
+inst_276:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555556, 0x3, x1, 1048, x2)
+
+inst_277:
+// rs1_val==4 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x10000, x1, 1052, x2)
+
+inst_278:
+// rs1_val==4 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x1, x1, 1056, x2)
+
+inst_279:
+// rs1_val==4 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0xb505, x1, 1060, x2)
+
+inst_280:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x4, 0x66666667, x1, 1064, x2)
+
+inst_281:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x33333334, x1, 1068, x2)
+
+inst_282:
+// rs1_val==4 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x6, x1, 1072, x2)
+
+inst_283:
+// rs1_val==4 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x4, 0xaaaaaaab, x1, 1076, x2)
+
+inst_284:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x4, 0x55555556, x1, 1080, x2)
+
+inst_285:
+// rs1_val==4 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x4, x1, 1084, x2)
+
+inst_286:
+// rs1_val==4 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0xfffe, x1, 1088, x2)
+
+inst_287:
+// rs1_val==4 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x0, x1, 1092, x2)
+
+inst_288:
+// rs1_val==4 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0xb503, x1, 1096, x2)
+
+inst_289:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x4, 0x66666665, x1, 1100, x2)
+
+inst_290:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x33333332, x1, 1104, x2)
+
+inst_291:
+// rs1_val==4 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x4, 0xaaaaaaa9, x1, 1108, x2)
+
+inst_292:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x4, 0x55555554, x1, 1112, x2)
+
+inst_293:
+// rs1_val==4 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x2, x1, 1116, x2)
+
+inst_294:
+// rs1_val==4 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0xffff, x1, 1120, x2)
+
+inst_295:
+// rs1_val==4 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0xb504, x1, 1124, x2)
+
+inst_296:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x4, 0x66666666, x1, 1128, x2)
+
+inst_297:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x33333333, x1, 1132, x2)
+
+inst_298:
+// rs1_val==4 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x5, x1, 1136, x2)
+
+inst_299:
+// rs1_val==4 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x4, 0xaaaaaaaa, x1, 1140, x2)
+
+inst_300:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x4, 0x55555555, x1, 1144, x2)
+
+inst_301:
+// rs1_val==4 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x4, 0x3, x1, 1148, x2)
+
+inst_302:
+// rs1_val==46339 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0x10000, x1, 1152, x2)
+
+inst_303:
+// rs1_val==46339 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0x1, x1, 1156, x2)
+
+inst_304:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0xb505, x1, 1160, x2)
+
+inst_305:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0xb503, 0x66666667, x1, 1164, x2)
+
+inst_306:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0xb503, 0x33333334, x1, 1168, x2)
+
+inst_307:
+// rs1_val==46339 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0x6, x1, 1172, x2)
+
+inst_308:
+// rs1_val==46339 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ac, 0xb503, 0xaaaaaaab, x1, 1176, x2)
+
+inst_309:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0xb503, 0x55555556, x1, 1180, x2)
+
+inst_310:
+// rs1_val==46339 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0x4, x1, 1184, x2)
+
+inst_311:
+// rs1_val==46339 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0xfffe, x1, 1188, x2)
+
+inst_312:
+// rs1_val==46339 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0x0, x1, 1192, x2)
+
+inst_313:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0xb503, x1, 1196, x2)
+
+inst_314:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0xb503, 0x66666665, x1, 1200, x2)
+
+inst_315:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0xb503, 0x33333332, x1, 1204, x2)
+
+inst_316:
+// rs1_val==46339 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ac, 0xb503, 0xaaaaaaa9, x1, 1208, x2)
+
+inst_317:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0xb503, 0x55555554, x1, 1212, x2)
+
+inst_318:
+// rs1_val==46339 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0x2, x1, 1216, x2)
+
+inst_319:
+// rs1_val==46339 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0xffff, x1, 1220, x2)
+
+inst_320:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0xb504, x1, 1224, x2)
+
+inst_321:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0xb503, 0x66666666, x1, 1228, x2)
+
+inst_322:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0xb503, 0x33333333, x1, 1232, x2)
+
+inst_323:
+// rs1_val==46339 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0x5, x1, 1236, x2)
+
+inst_324:
+// rs1_val==46339 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ac, 0xb503, 0xaaaaaaaa, x1, 1240, x2)
+
+inst_325:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0xb503, 0x55555555, x1, 1244, x2)
+
+inst_326:
+// rs1_val==46339 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb503, 0x3, x1, 1248, x2)
+
+inst_327:
+// rs1_val==0 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x10000, x1, 1252, x2)
+
+inst_328:
+// rs1_val==0 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x1, x1, 1256, x2)
+
+inst_329:
+// rs1_val==0 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0xb505, x1, 1260, x2)
+
+inst_330:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x66666667, x1, 1264, x2)
+
+inst_331:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x33333334, x1, 1268, x2)
+
+inst_332:
+// rs1_val==0 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x6, x1, 1272, x2)
+
+inst_333:
+// rs1_val==0 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaab, x1, 1276, x2)
+
+inst_334:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x55555556, x1, 1280, x2)
+
+inst_335:
+// rs1_val==0 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x4, x1, 1284, x2)
+
+inst_336:
+// rs1_val==0 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0xfffe, x1, 1288, x2)
+
+inst_337:
+// rs1_val==0 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1292, x2)
+
+inst_338:
+// rs1_val==0 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0xb503, x1, 1296, x2)
+
+inst_339:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x66666665, x1, 1300, x2)
+
+inst_340:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x33333332, x1, 1304, x2)
+
+inst_341:
+// rs1_val==0 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaa9, x1, 1308, x2)
+
+inst_342:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x55555554, x1, 1312, x2)
+
+inst_343:
+// rs1_val==0 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0xffff, x1, 1316, x2)
+
+inst_344:
+// rs1_val==0 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0xb504, x1, 1320, x2)
+
+inst_345:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x66666666, x1, 1324, x2)
+
+inst_346:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x33333333, x1, 1328, x2)
+
+inst_347:
+// rs1_val==0 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x5, x1, 1332, x2)
+
+inst_348:
+// rs1_val==0 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaaa, x1, 1336, x2)
+
+inst_349:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x55555555, x1, 1340, x2)
+
+inst_350:
+// rs1_val==0 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x0, 0x3, x1, 1344, x2)
+
+inst_351:
+// rs1_val==1717986917 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6666, 0x66666665, 0x10000, x1, 1348, x2)
+
+inst_352:
+// rs1_val==1717986917 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666665, 0x1, x1, 1352, x2)
+
+inst_353:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4868, 0x66666665, 0xb505, x1, 1356, x2)
+
+inst_354:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28f, 0x66666665, 0x66666667, x1, 1360, x2)
+
+inst_355:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x66666665, 0x33333334, x1, 1364, x2)
+
+inst_356:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x66666665, 0x6, x1, 1368, x2)
+
+inst_357:
+// rs1_val==1717986917 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444443, 0x66666665, 0xaaaaaaab, x1, 1372, x2)
+
+inst_358:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x66666665, 0x55555556, x1, 1376, x2)
+
+inst_359:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x66666665, 0x4, x1, 1380, x2)
+
+inst_360:
+// rs1_val==1717986917 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6665, 0x66666665, 0xfffe, x1, 1384, x2)
+
+inst_361:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666665, 0x0, x1, 1388, x2)
+
+inst_362:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0x66666665, 0xb503, x1, 1392, x2)
+
+inst_363:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28e, 0x66666665, 0x66666665, x1, 1396, x2)
+
+inst_364:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae146, 0x66666665, 0x33333332, x1, 1400, x2)
+
+inst_365:
+// rs1_val==1717986917 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444442, 0x66666665, 0xaaaaaaa9, x1, 1404, x2)
+
+inst_366:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x66666665, 0x55555554, x1, 1408, x2)
+
+inst_367:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666665, 0x2, x1, 1412, x2)
+
+inst_368:
+// rs1_val==1717986917 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6665, 0x66666665, 0xffff, x1, 1416, x2)
+
+inst_369:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0x66666665, 0xb504, x1, 1420, x2)
+
+inst_370:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28e, 0x66666665, 0x66666666, x1, 1424, x2)
+
+inst_371:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x66666665, 0x33333333, x1, 1428, x2)
+
+inst_372:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x66666665, 0x5, x1, 1432, x2)
+
+inst_373:
+// rs1_val==1717986917 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444443, 0x66666665, 0xaaaaaaaa, x1, 1436, x2)
+
+inst_374:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x66666665, 0x55555555, x1, 1440, x2)
+
+inst_375:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x66666665, 0x3, x1, 1444, x2)
+
+inst_376:
+// rs1_val==858993458 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3333, 0x33333332, 0x10000, x1, 1448, x2)
+
+inst_377:
+// rs1_val==858993458 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333332, 0x1, x1, 1452, x2)
+
+inst_378:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2434, 0x33333332, 0xb505, x1, 1456, x2)
+
+inst_379:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x33333332, 0x66666667, x1, 1460, x2)
+
+inst_380:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333334, x1, 1464, x2)
+
+inst_381:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x33333332, 0x6, x1, 1468, x2)
+
+inst_382:
+// rs1_val==858993458 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x33333332, 0xaaaaaaab, x1, 1472, x2)
+
+inst_383:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x33333332, 0x55555556, x1, 1476, x2)
+
+inst_384:
+// rs1_val==858993458 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3332, 0x33333332, 0xfffe, x1, 1480, x2)
+
+inst_385:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333332, 0x0, x1, 1484, x2)
+
+inst_386:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0x33333332, 0xb503, x1, 1488, x2)
+
+inst_387:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae146, 0x33333332, 0x66666665, x1, 1492, x2)
+
+inst_388:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333332, x1, 1496, x2)
+
+inst_389:
+// rs1_val==858993458 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x33333332, 0xaaaaaaa9, x1, 1500, x2)
+
+inst_390:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x33333332, 0x55555554, x1, 1504, x2)
+
+inst_391:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333332, 0x2, x1, 1508, x2)
+
+inst_392:
+// rs1_val==858993458 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3332, 0x33333332, 0xffff, x1, 1512, x2)
+
+inst_393:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0x33333332, 0xb504, x1, 1516, x2)
+
+inst_394:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x33333332, 0x66666666, x1, 1520, x2)
+
+inst_395:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333333, x1, 1524, x2)
+
+inst_396:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0x4, x1, 1528, x2)
+
+inst_397:
+// rs1_val==-46340 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0xfffe, x1, 1532, x2)
+
+inst_398:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, -0xb504, 0x0, x1, 1536, x2)
+
+inst_399:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0xb503, x1, 1540, x2)
+
+inst_400:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffb798, -0xb504, 0x66666665, x1, 1544, x2)
+
+inst_401:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffdbcc, -0xb504, 0x33333332, x1, 1548, x2)
+
+inst_402:
+// rs1_val==-46340 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffff8752, -0xb504, 0xaaaaaaa9, x1, 1552, x2)
+
+inst_403:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0xb504, 0x55555554, x1, 1556, x2)
+
+inst_404:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0x2, x1, 1560, x2)
+
+inst_405:
+// rs1_val==-46340 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0xffff, x1, 1564, x2)
+
+inst_406:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0xb504, x1, 1568, x2)
+
+inst_407:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffb798, -0xb504, 0x66666666, x1, 1572, x2)
+
+inst_408:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffdbcc, -0xb504, 0x33333333, x1, 1576, x2)
+
+inst_409:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0x5, x1, 1580, x2)
+
+inst_410:
+// rs1_val==-46340 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffff8752, -0xb504, 0xaaaaaaaa, x1, 1584, x2)
+
+inst_411:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0xb504, 0x55555555, x1, 1588, x2)
+
+inst_412:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0x3, x1, 1592, x2)
+
+inst_413:
+// rs1_val==1717986918 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6666, 0x66666666, 0x10000, x1, 1596, x2)
+
+inst_414:
+// rs1_val==1717986918 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666666, 0x1, x1, 1600, x2)
+
+inst_415:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4868, 0x66666666, 0xb505, x1, 1604, x2)
+
+inst_416:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28f, 0x66666666, 0x66666667, x1, 1608, x2)
+
+inst_417:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333334, x1, 1612, x2)
+
+inst_418:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x66666666, 0x6, x1, 1616, x2)
+
+inst_419:
+// rs1_val==1717986918 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444444, 0x66666666, 0xaaaaaaab, x1, 1620, x2)
+
+inst_420:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x66666666, 0x55555556, x1, 1624, x2)
+
+inst_421:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x66666666, 0x4, x1, 1628, x2)
+
+inst_422:
+// rs1_val==1717986918 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6665, 0x66666666, 0xfffe, x1, 1632, x2)
+
+inst_423:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666666, 0x0, x1, 1636, x2)
+
+inst_424:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0x66666666, 0xb503, x1, 1640, x2)
+
+inst_425:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28e, 0x66666666, 0x66666665, x1, 1644, x2)
+
+inst_426:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333332, x1, 1648, x2)
+
+inst_427:
+// rs1_val==1717986918 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444443, 0x66666666, 0xaaaaaaa9, x1, 1652, x2)
+
+inst_428:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x66666666, 0x55555554, x1, 1656, x2)
+
+inst_429:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x66666666, 0x2, x1, 1660, x2)
+
+inst_430:
+// rs1_val==1717986918 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x6665, 0x66666666, 0xffff, x1, 1664, x2)
+
+inst_431:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0x66666666, 0xb504, x1, 1668, x2)
+
+inst_432:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x28f5c28f, 0x66666666, 0x66666666, x1, 1672, x2)
+
+inst_433:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333333, x1, 1676, x2)
+
+inst_434:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x66666666, 0x5, x1, 1680, x2)
+
+inst_435:
+// rs1_val==1717986918 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x44444443, 0x66666666, 0xaaaaaaaa, x1, 1684, x2)
+
+inst_436:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x66666666, 0x55555555, x1, 1688, x2)
+
+inst_437:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x66666666, 0x3, x1, 1692, x2)
+
+inst_438:
+// rs1_val==858993459 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3333, 0x33333333, 0x10000, x1, 1696, x2)
+
+inst_439:
+// rs1_val==858993459 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333333, 0x1, x1, 1700, x2)
+
+inst_440:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2434, 0x33333333, 0xb505, x1, 1704, x2)
+
+inst_441:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666667, x1, 1708, x2)
+
+inst_442:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333334, x1, 1712, x2)
+
+inst_443:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x33333333, 0x6, x1, 1716, x2)
+
+inst_444:
+// rs1_val==858993459 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x33333333, 0xaaaaaaab, x1, 1720, x2)
+
+inst_445:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111111, 0x33333333, 0x55555556, x1, 1724, x2)
+
+inst_446:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333333, 0x4, x1, 1728, x2)
+
+inst_447:
+// rs1_val==858993459 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3332, 0x33333333, 0xfffe, x1, 1732, x2)
+
+inst_448:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333333, 0x0, x1, 1736, x2)
+
+inst_449:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0x33333333, 0xb503, x1, 1740, x2)
+
+inst_450:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666665, x1, 1744, x2)
+
+inst_451:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333332, x1, 1748, x2)
+
+inst_452:
+// rs1_val==858993459 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x33333333, 0xaaaaaaa9, x1, 1752, x2)
+
+inst_453:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x33333333, 0x55555554, x1, 1756, x2)
+
+inst_454:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333333, 0x2, x1, 1760, x2)
+
+inst_455:
+// rs1_val==858993459 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3332, 0x33333333, 0xffff, x1, 1764, x2)
+
+inst_456:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0x33333333, 0xb504, x1, 1768, x2)
+
+inst_457:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666666, x1, 1772, x2)
+
+inst_458:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333333, x1, 1776, x2)
+
+inst_459:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333333, 0x5, x1, 1780, x2)
+
+inst_460:
+// rs1_val==858993459 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x33333333, 0xaaaaaaaa, x1, 1784, x2)
+
+inst_461:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x33333333, 0x55555555, x1, 1788, x2)
+
+inst_462:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333333, 0x3, x1, 1792, x2)
+
+inst_463:
+// rs1_val==5 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x10000, x1, 1796, x2)
+
+inst_464:
+// rs1_val==5 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x1, x1, 1800, x2)
+
+inst_465:
+// rs1_val==5 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0xb505, x1, 1804, x2)
+
+inst_466:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x5, 0x66666667, x1, 1808, x2)
+
+inst_467:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x5, 0x33333334, x1, 1812, x2)
+
+inst_468:
+// rs1_val==5 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x6, x1, 1816, x2)
+
+inst_469:
+// rs1_val==5 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3, 0x5, 0xaaaaaaab, x1, 1820, x2)
+
+inst_470:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x5, 0x55555556, x1, 1824, x2)
+
+inst_471:
+// rs1_val==5 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x4, x1, 1828, x2)
+
+inst_472:
+// rs1_val==5 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0xfffe, x1, 1832, x2)
+
+inst_473:
+// rs1_val==5 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x0, x1, 1836, x2)
+
+inst_474:
+// rs1_val==5 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0xb503, x1, 1840, x2)
+
+inst_475:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x5, 0x66666665, x1, 1844, x2)
+
+inst_476:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x33333332, x1, 1848, x2)
+
+inst_477:
+// rs1_val==5 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3, 0x5, 0xaaaaaaa9, x1, 1852, x2)
+
+inst_478:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x5, 0x55555554, x1, 1856, x2)
+
+inst_479:
+// rs1_val==5 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x2, x1, 1860, x2)
+
+inst_480:
+// rs1_val==5 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0xffff, x1, 1864, x2)
+
+inst_481:
+// rs1_val==5 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0xb504, x1, 1868, x2)
+
+inst_482:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x5, 0x66666666, x1, 1872, x2)
+
+inst_483:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x33333333, x1, 1876, x2)
+
+inst_484:
+// rs1_val==5 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x5, x1, 1880, x2)
+
+inst_485:
+// rs1_val==5 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3, 0x5, 0xaaaaaaaa, x1, 1884, x2)
+
+inst_486:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x5, 0x55555555, x1, 1888, x2)
+
+inst_487:
+// rs1_val==5 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x5, 0x3, x1, 1892, x2)
+
+inst_488:
+// rs1_val==-1431655766 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffaaaa, -0x55555556, 0x10000, x1, 1896, x2)
+
+inst_489:
+// rs1_val==-1431655766 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x55555556, 0x1, x1, 1900, x2)
+
+inst_490:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a8, -0x55555556, 0xb505, x1, 1904, x2)
+
+inst_491:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xdddddddd, -0x55555556, 0x66666667, x1, 1908, x2)
+
+inst_492:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xeeeeeeee, -0x55555556, 0x33333334, x1, 1912, x2)
+
+inst_493:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffd, -0x55555556, 0x6, x1, 1916, x2)
+
+inst_494:
+// rs1_val==-1431655766 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xc71c71c6, -0x55555556, 0xaaaaaaab, x1, 1920, x2)
+
+inst_495:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xe38e38e3, -0x55555556, 0x55555556, x1, 1924, x2)
+
+inst_496:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x55555556, 0x4, x1, 1928, x2)
+
+inst_497:
+// rs1_val==-1431655766 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffaaab, -0x55555556, 0xfffe, x1, 1932, x2)
+
+inst_498:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, -0x55555556, 0x0, x1, 1936, x2)
+
+inst_499:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0x55555556, 0xb503, x1, 1940, x2)
+
+inst_500:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xddddddde, -0x55555556, 0x66666665, x1, 1944, x2)
+
+inst_501:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xeeeeeeef, -0x55555556, 0x33333332, x1, 1948, x2)
+
+inst_502:
+// rs1_val==-1431655766 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xc71c71c7, -0x55555556, 0xaaaaaaa9, x1, 1952, x2)
+
+inst_503:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xe38e38e3, -0x55555556, 0x55555554, x1, 1956, x2)
+
+inst_504:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0x55555556, 0x2, x1, 1960, x2)
+
+inst_505:
+// rs1_val==-1431655766 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffaaaa, -0x55555556, 0xffff, x1, 1964, x2)
+
+inst_506:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0x55555556, 0xb504, x1, 1968, x2)
+
+inst_507:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xdddddddd, -0x55555556, 0x66666666, x1, 1972, x2)
+
+inst_508:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xeeeeeeee, -0x55555556, 0x33333333, x1, 1976, x2)
+
+inst_509:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x55555556, 0x5, x1, 1980, x2)
+
+inst_510:
+// rs1_val==-1431655766 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xc71c71c6, -0x55555556, 0xaaaaaaaa, x1, 1984, x2)
+
+inst_511:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xe38e38e3, -0x55555556, 0x55555555, x1, 1988, x2)
+
+inst_512:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x55555556, 0x3, x1, 1992, x2)
+
+inst_513:
+// rs1_val==1431655765 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5555, 0x55555555, 0x10000, x1, 1996, x2)
+
+inst_514:
+// rs1_val==1431655765 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555555, 0x1, x1, 2000, x2)
+
+inst_515:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0x55555555, 0xb505, x1, 2004, x2)
+
+inst_516:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222222, 0x55555555, 0x66666667, x1, 2008, x2)
+
+inst_517:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111111, 0x55555555, 0x33333334, x1, 2012, x2)
+
+inst_518:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555555, 0x6, x1, 2016, x2)
+
+inst_519:
+// rs1_val==1431655765 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e38, 0x55555555, 0xaaaaaaab, x1, 2020, x2)
+
+inst_520:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71c, 0x55555555, 0x55555556, x1, 2024, x2)
+
+inst_521:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555555, 0x4, x1, 2028, x2)
+
+inst_522:
+// rs1_val==1431655765 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5554, 0x55555555, 0xfffe, x1, 2032, x2)
+
+inst_523:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555555, 0x0, x1, 2036, x2)
+
+inst_524:
+// rs1_val==46340 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0x3, x1, 2040, x2)
+
+inst_525:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0x55555555, 0xb503, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_526:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x55555555, 0x66666665, x1, 0, x2)
+
+inst_527:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x55555555, 0x33333332, x1, 4, x2)
+
+inst_528:
+// rs1_val==1431655765 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e38, 0x55555555, 0xaaaaaaa9, x1, 8, x2)
+
+inst_529:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71b, 0x55555555, 0x55555554, x1, 12, x2)
+
+inst_530:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555555, 0x2, x1, 16, x2)
+
+inst_531:
+// rs1_val==1431655765 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5554, 0x55555555, 0xffff, x1, 20, x2)
+
+inst_532:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0x55555555, 0xb504, x1, 24, x2)
+
+inst_533:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x55555555, 0x66666666, x1, 28, x2)
+
+inst_534:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x55555555, 0x33333333, x1, 32, x2)
+
+inst_535:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555555, 0x5, x1, 36, x2)
+
+inst_536:
+// rs1_val==1431655765 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e38, 0x55555555, 0xaaaaaaaa, x1, 40, x2)
+
+inst_537:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71c, 0x55555555, 0x55555555, x1, 44, x2)
+
+inst_538:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555555, 0x3, x1, 48, x2)
+
+inst_539:
+// rs1_val==3 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x10000, x1, 52, x2)
+
+inst_540:
+// rs1_val==3 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x1, x1, 56, x2)
+
+inst_541:
+// rs1_val==3 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0xb505, x1, 60, x2)
+
+inst_542:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x3, 0x66666667, x1, 64, x2)
+
+inst_543:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x33333334, x1, 68, x2)
+
+inst_544:
+// rs1_val==3 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x6, x1, 72, x2)
+
+inst_545:
+// rs1_val==3 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2, 0x3, 0xaaaaaaab, x1, 76, x2)
+
+inst_546:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x3, 0x55555556, x1, 80, x2)
+
+inst_547:
+// rs1_val==3 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x4, x1, 84, x2)
+
+inst_548:
+// rs1_val==3 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0xfffe, x1, 88, x2)
+
+inst_549:
+// rs1_val==3 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x0, x1, 92, x2)
+
+inst_550:
+// rs1_val==3 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0xb503, x1, 96, x2)
+
+inst_551:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x3, 0x66666665, x1, 100, x2)
+
+inst_552:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x33333332, x1, 104, x2)
+
+inst_553:
+// rs1_val==3 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x3, 0xaaaaaaa9, x1, 108, x2)
+
+inst_554:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x55555554, x1, 112, x2)
+
+inst_555:
+// rs1_val==3 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x2, x1, 116, x2)
+
+inst_556:
+// rs1_val==3 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0xffff, x1, 120, x2)
+
+inst_557:
+// rs1_val==3 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0xb504, x1, 124, x2)
+
+inst_558:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x3, 0x66666666, x1, 128, x2)
+
+inst_559:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x33333333, x1, 132, x2)
+
+inst_560:
+// rs1_val==3 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x5, x1, 136, x2)
+
+inst_561:
+// rs1_val==3 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x3, 0xaaaaaaaa, x1, 140, x2)
+
+inst_562:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x55555555, x1, 144, x2)
+
+inst_563:
+// rs1_val==3 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x3, 0x3, x1, 148, x2)
+
+inst_564:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333332, 0x5, x1, 152, x2)
+
+inst_565:
+// rs1_val==858993458 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x33333332, 0xaaaaaaaa, x1, 156, x2)
+
+inst_566:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x33333332, 0x55555555, x1, 160, x2)
+
+inst_567:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x33333332, 0x3, x1, 164, x2)
+
+inst_568:
+// rs1_val==1431655764 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5555, 0x55555554, 0x10000, x1, 168, x2)
+
+inst_569:
+// rs1_val==1431655764 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555554, 0x1, x1, 172, x2)
+
+inst_570:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0x55555554, 0xb505, x1, 176, x2)
+
+inst_571:
+// rs2_val == (2**(xlen)-1),
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0xffffffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xfffffffe, -0x2, 0xffffffff, x1, 180, x2)
+
+inst_572:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x55555554, 0x66666667, x1, 184, x2)
+
+inst_573:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111111, 0x55555554, 0x33333334, x1, 188, x2)
+
+inst_574:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555554, 0x6, x1, 192, x2)
+
+inst_575:
+// rs1_val==1431655764 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e38, 0x55555554, 0xaaaaaaab, x1, 196, x2)
+
+inst_576:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71c, 0x55555554, 0x55555556, x1, 200, x2)
+
+inst_577:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555554, 0x4, x1, 204, x2)
+
+inst_578:
+// rs1_val==1431655764 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5554, 0x55555554, 0xfffe, x1, 208, x2)
+
+inst_579:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555554, 0x0, x1, 212, x2)
+
+inst_580:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0x55555554, 0xb503, x1, 216, x2)
+
+inst_581:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x55555554, 0x66666665, x1, 220, x2)
+
+inst_582:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x55555554, 0x33333332, x1, 224, x2)
+
+inst_583:
+// rs1_val==1431655764 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e37, 0x55555554, 0xaaaaaaa9, x1, 228, x2)
+
+inst_584:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71b, 0x55555554, 0x55555554, x1, 232, x2)
+
+inst_585:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555554, 0x2, x1, 236, x2)
+
+inst_586:
+// rs1_val==1431655764 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x5554, 0x55555554, 0xffff, x1, 240, x2)
+
+inst_587:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0x55555554, 0xb504, x1, 244, x2)
+
+inst_588:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x22222221, 0x55555554, 0x66666666, x1, 248, x2)
+
+inst_589:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x11111110, 0x55555554, 0x33333333, x1, 252, x2)
+
+inst_590:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x55555554, 0x5, x1, 256, x2)
+
+inst_591:
+// rs1_val==1431655764 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x38e38e37, 0x55555554, 0xaaaaaaaa, x1, 260, x2)
+
+inst_592:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1c71c71b, 0x55555554, 0x55555555, x1, 264, x2)
+
+inst_593:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x55555554, 0x3, x1, 268, x2)
+
+inst_594:
+// rs1_val==2 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x10000, x1, 272, x2)
+
+inst_595:
+// rs1_val==2 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x1, x1, 276, x2)
+
+inst_596:
+// rs1_val==2 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0xb505, x1, 280, x2)
+
+inst_597:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x66666667, x1, 284, x2)
+
+inst_598:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x33333334, x1, 288, x2)
+
+inst_599:
+// rs1_val==2 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x6, x1, 292, x2)
+
+inst_600:
+// rs1_val==2 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaab, x1, 296, x2)
+
+inst_601:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x55555556, x1, 300, x2)
+
+inst_602:
+// rs1_val==2 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x4, x1, 304, x2)
+
+inst_603:
+// rs1_val==2 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0xfffe, x1, 308, x2)
+
+inst_604:
+// rs1_val==2 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x0, x1, 312, x2)
+
+inst_605:
+// rs1_val==2 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0xb503, x1, 316, x2)
+
+inst_606:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x66666665, x1, 320, x2)
+
+inst_607:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x33333332, x1, 324, x2)
+
+inst_608:
+// rs1_val==2 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaa9, x1, 328, x2)
+
+inst_609:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x55555554, x1, 332, x2)
+
+inst_610:
+// rs1_val==2 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x2, x1, 336, x2)
+
+inst_611:
+// rs1_val==2 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0xffff, x1, 340, x2)
+
+inst_612:
+// rs1_val==2 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0xb504, x1, 344, x2)
+
+inst_613:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x66666666, x1, 348, x2)
+
+inst_614:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x33333333, x1, 352, x2)
+
+inst_615:
+// rs1_val==2 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x5, x1, 356, x2)
+
+inst_616:
+// rs1_val==2 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaaa, x1, 360, x2)
+
+inst_617:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x55555555, x1, 364, x2)
+
+inst_618:
+// rs1_val==2 and rs2_val==3,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0x2, 0x3, x1, 368, x2)
+
+inst_619:
+// rs1_val==46340 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0x10000, x1, 372, x2)
+
+inst_620:
+// rs1_val==46340 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0x1, x1, 376, x2)
+
+inst_621:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0xb505, x1, 380, x2)
+
+inst_622:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4868, 0xb504, 0x66666667, x1, 384, x2)
+
+inst_623:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2434, 0xb504, 0x33333334, x1, 388, x2)
+
+inst_624:
+// rs1_val==46340 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0x6, x1, 392, x2)
+
+inst_625:
+// rs1_val==46340 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ad, 0xb504, 0xaaaaaaab, x1, 396, x2)
+
+inst_626:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0xb504, 0x55555556, x1, 400, x2)
+
+inst_627:
+// rs1_val==46340 and rs2_val==4,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0x4, x1, 404, x2)
+
+inst_628:
+// rs1_val==46340 and rs2_val==65534,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xfffe
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0xfffe, x1, 408, x2)
+
+inst_629:
+// rs1_val==46340 and rs2_val==0,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0x0, x1, 412, x2)
+
+inst_630:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0xb503, x1, 416, x2)
+
+inst_631:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0xb504, 0x66666665, x1, 420, x2)
+
+inst_632:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0xb504, 0x33333332, x1, 424, x2)
+
+inst_633:
+// rs1_val==46340 and rs2_val==2863311529,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ad, 0xb504, 0xaaaaaaa9, x1, 428, x2)
+
+inst_634:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0xb504, 0x55555554, x1, 432, x2)
+
+inst_635:
+// rs1_val==46340 and rs2_val==2,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0x2, x1, 436, x2)
+
+inst_636:
+// rs1_val==46340 and rs2_val==65535,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0xffff, x1, 440, x2)
+
+inst_637:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0xb504, x1, 444, x2)
+
+inst_638:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4867, 0xb504, 0x66666666, x1, 448, x2)
+
+inst_639:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x2433, 0xb504, 0x33333333, x1, 452, x2)
+
+inst_640:
+// rs1_val==46340 and rs2_val==5,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x0, 0xb504, 0x5, x1, 456, x2)
+
+inst_641:
+// rs1_val==46340 and rs2_val==2863311530,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x78ad, 0xb504, 0xaaaaaaaa, x1, 460, x2)
+
+inst_642:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x3c56, 0xb504, 0x55555555, x1, 464, x2)
+
+inst_643:
+// rs1_val==-46340 and rs2_val==65536,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x10000
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0x10000, x1, 468, x2)
+
+inst_644:
+// rs1_val==-46340 and rs2_val==1,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x1
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0x1, x1, 472, x2)
+
+inst_645:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0xb505, x1, 476, x2)
+
+inst_646:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffb797, -0xb504, 0x66666667, x1, 480, x2)
+
+inst_647:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffdbcb, -0xb504, 0x33333334, x1, 484, x2)
+
+inst_648:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffffff, -0xb504, 0x6, x1, 488, x2)
+
+inst_649:
+// rs1_val==-46340 and rs2_val==2863311531,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xaaaaaaab
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffff8752, -0xb504, 0xaaaaaaab, x1, 492, x2)
+
+inst_650:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xffffc3a9, -0xb504, 0x55555556, x1, 496, x2)
+
+inst_651:
+// rs2_val == 3221225471, rs1_val == 1048576
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0xbfffffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0xbffff, 0x100000, 0xbfffffff, x1, 500, x2)
+
+inst_652:
+// rs2_val == 3758096383,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xdfffffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x59999997, 0x66666665, 0xdfffffff, x1, 504, x2)
+
+inst_653:
+// rs2_val == 4160749567,
+// opcode: mulhsu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xf7ffffff
+TEST_RR_OP(mulhsu, x12, x10, x11, 0x4, 0x5, 0xf7ffffff, x1, 508, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 128*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulhu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulhu-01.S
new file mode 100644
index 000000000..8b6564009
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/mulhu-01.S
@@ -0,0 +1,3700 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 07:22:49 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32em.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the mulhu instruction of the RISC-V M extension for the mulhu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EM")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*M.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",mulhu)
+
+RVTEST_SIGBASE( x8,signature_x8_1)
+
+inst_0:
+// rs2 == rd != rs1, rs1==x10, rs2==x14, rd==x14, rs1_val != rs2_val and rs1_val > 0 and rs2_val > 0, rs1_val == 65536, rs1_val > 0 and rs2_val > 0, rs2_val == 64
+// opcode: mulhu ; op1:x10; op2:x14; dest:x14; op1val:0x10000; op2val:0x40
+TEST_RR_OP(mulhu, x14, x10, x14, 0x0, 0x10000, 0x40, x8, 0, x4)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x6, rs2==x13, rd==x6, rs2_val == 2147483647, rs1_val == 32768
+// opcode: mulhu ; op1:x6; op2:x13; dest:x6; op1val:0x8000; op2val:0x7fffffff
+TEST_RR_OP(mulhu, x6, x6, x13, 0x3fff, 0x8000, 0x7fffffff, x8, 4, x4)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x5, rs2==x5, rd==x5, rs2_val == 3221225471, rs1_val == 4294443007
+// opcode: mulhu ; op1:x5; op2:x5; dest:x5; op1val:0xfff7ffff; op2val:0xfff7ffff
+TEST_RR_OP(mulhu, x5, x5, x5, 0xfff0003e, 0xfff7ffff, 0xfff7ffff, x8, 8, x4)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x0, rs2==x0, rd==x2, rs2_val == 3758096383, rs1_val == 524288
+// opcode: mulhu ; op1:x0; op2:x0; dest:x2; op1val:0x0; op2val:0x0
+TEST_RR_OP(mulhu, x2, x0, x0, 0x0, 0x0, 0x0, x8, 12, x4)
+
+inst_4:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x1, rs2==x6, rd==x13, rs2_val == 4026531839, rs1_val == 134217728
+// opcode: mulhu ; op1:x1; op2:x6; dest:x13; op1val:0x8000000; op2val:0xefffffff
+TEST_RR_OP(mulhu, x13, x1, x6, 0x77fffff, 0x8000000, 0xefffffff, x8, 16, x4)
+
+inst_5:
+// rs1==x7, rs2==x3, rd==x15, rs2_val == 4160749567, rs1_val == 32
+// opcode: mulhu ; op1:x7; op2:x3; dest:x15; op1val:0x20; op2val:0xf7ffffff
+TEST_RR_OP(mulhu, x15, x7, x3, 0x1e, 0x20, 0xf7ffffff, x8, 20, x4)
+
+inst_6:
+// rs1==x13, rs2==x11, rd==x7, rs2_val == 4227858431, rs1_val == 4294967231
+// opcode: mulhu ; op1:x13; op2:x11; dest:x7; op1val:0xffffffbf; op2val:0xfbffffff
+TEST_RR_OP(mulhu, x7, x13, x11, 0xfbffffbf, 0xffffffbf, 0xfbffffff, x8, 24, x4)
+
+inst_7:
+// rs1==x11, rs2==x1, rd==x0, rs2_val == 4261412863,
+// opcode: mulhu ; op1:x11; op2:x1; dest:x0; op1val:0x55555554; op2val:0xfdffffff
+TEST_RR_OP(mulhu, x0, x11, x1, 0, 0x55555554, 0xfdffffff, x8, 28, x5)
+
+inst_8:
+// rs1==x14, rs2==x4, rd==x1, rs2_val == 4278190079,
+// opcode: mulhu ; op1:x14; op2:x4; dest:x1; op1val:0xfffe; op2val:0xfeffffff
+TEST_RR_OP(mulhu, x1, x14, x4, 0xfefe, 0xfffe, 0xfeffffff, x8, 32, x5)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_9:
+// rs1==x15, rs2==x12, rd==x8, rs2_val == 4286578687, rs1_val == 4294967263
+// opcode: mulhu ; op1:x15; op2:x12; dest:x8; op1val:0xffffffdf; op2val:0xff7fffff
+TEST_RR_OP(mulhu, x8, x15, x12, 0xff7fffde, 0xffffffdf, 0xff7fffff, x1, 0, x5)
+
+inst_10:
+// rs1==x8, rs2==x10, rd==x9, rs2_val == 4290772991,
+// opcode: mulhu ; op1:x8; op2:x10; dest:x9; op1val:0x33333332; op2val:0xffbfffff
+TEST_RR_OP(mulhu, x9, x8, x10, 0x33266665, 0x33333332, 0xffbfffff, x1, 4, x5)
+
+inst_11:
+// rs1==x3, rs2==x7, rd==x12, rs2_val == 4292870143, rs1_val == 64
+// opcode: mulhu ; op1:x3; op2:x7; dest:x12; op1val:0x40; op2val:0xffdfffff
+TEST_RR_OP(mulhu, x12, x3, x7, 0x3f, 0x40, 0xffdfffff, x1, 8, x5)
+
+inst_12:
+// rs1==x9, rs2==x8, rd==x11, rs2_val == 4293918719, rs1_val == 4227858431
+// opcode: mulhu ; op1:x9; op2:x8; dest:x11; op1val:0xfbffffff; op2val:0xffefffff
+TEST_RR_OP(mulhu, x11, x9, x8, 0xfbf03ffe, 0xfbffffff, 0xffefffff, x1, 12, x5)
+
+inst_13:
+// rs1==x12, rs2==x2, rd==x4, rs2_val == 4294443007,
+// opcode: mulhu ; op1:x12; op2:x2; dest:x4; op1val:0xb503; op2val:0xfff7ffff
+TEST_RR_OP(mulhu, x4, x12, x2, 0xb4fd, 0xb503, 0xfff7ffff, x1, 16, x5)
+
+inst_14:
+// rs1==x4, rs2==x15, rd==x3, rs2_val == 4294705151,
+// opcode: mulhu ; op1:x4; op2:x15; dest:x3; op1val:0x8000; op2val:0xfffbffff
+TEST_RR_OP(mulhu, x3, x4, x15, 0x7ffd, 0x8000, 0xfffbffff, x1, 20, x5)
+
+inst_15:
+// rs1==x2, rs2==x9, rd==x10, rs2_val == 4294836223,
+// opcode: mulhu ; op1:x2; op2:x9; dest:x10; op1val:0x33333333; op2val:0xfffdffff
+TEST_RR_OP(mulhu, x10, x2, x9, 0x3332cccc, 0x33333333, 0xfffdffff, x1, 24, x5)
+
+inst_16:
+// rs2_val == 4294901759,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x11; op2val:0xfffeffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x10, 0x11, 0xfffeffff, x1, 28, x5)
+
+inst_17:
+// rs2_val == 4294934527,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xffff7fff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xfffd, 0xfffe, 0xffff7fff, x1, 32, x5)
+
+inst_18:
+// rs2_val == 4294950911, rs1_val == 4194304
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0xffffbfff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3fffef, 0x400000, 0xffffbfff, x1, 36, x5)
+
+inst_19:
+// rs2_val == 4294959103,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x13; op2val:0xffffdfff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x12, 0x13, 0xffffdfff, x1, 40, x5)
+
+inst_20:
+// rs2_val == 4294963199, rs1_val == 4286578687
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xff7fffff; op2val:0xffffefff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xff7ff006, 0xff7fffff, 0xffffefff, x1, 44, x5)
+
+inst_21:
+// rs2_val == 4294965247,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xfffff7ff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4, 0x5, 0xfffff7ff, x1, 48, x5)
+
+inst_22:
+// rs2_val == 4294966271, rs1_val == 4294959103
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfff; op2val:0xfffffbff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xffffdbfe, 0xffffdfff, 0xfffffbff, x1, 52, x5)
+
+inst_23:
+// rs2_val == 4294966783, rs1_val == 4294934527
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff7fff; op2val:0xfffffdff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xffff7dfe, 0xffff7fff, 0xfffffdff, x1, 56, x5)
+
+inst_24:
+// rs2_val == 4294967039, rs1_val == 128
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0xfffffeff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x7f, 0x80, 0xfffffeff, x1, 60, x5)
+
+inst_25:
+// rs2_val == 4294967167, rs1_val == 4294965247
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffff7ff; op2val:0xffffff7f
+TEST_RR_OP(mulhu, x12, x10, x11, 0xfffff77e, 0xfffff7ff, 0xffffff7f, x1, 64, x5)
+
+inst_26:
+// rs2_val == 4294967231, rs1_val == 4294966783
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffdff; op2val:0xffffffbf
+TEST_RR_OP(mulhu, x12, x10, x11, 0xfffffdbe, 0xfffffdff, 0xffffffbf, x1, 68, x5)
+
+inst_27:
+// rs2_val == 4294967263, rs1_val == 4294967039
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffeff; op2val:0xffffffdf
+TEST_RR_OP(mulhu, x12, x10, x11, 0xfffffede, 0xfffffeff, 0xffffffdf, x1, 72, x5)
+
+inst_28:
+// rs2_val == 4294967279,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x13; op2val:0xffffffef
+TEST_RR_OP(mulhu, x12, x10, x11, 0x12, 0x13, 0xffffffef, x1, 76, x5)
+
+inst_29:
+// rs2_val == 4294967287, rs1_val == 262144
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0xfffffff7
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3ffff, 0x40000, 0xfffffff7, x1, 80, x5)
+
+inst_30:
+// rs2_val == 4294967291,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xfffffffb
+TEST_RR_OP(mulhu, x12, x10, x11, 0xb504, 0xb505, 0xfffffffb, x1, 84, x5)
+
+inst_31:
+// rs2_val == 4294967293,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffdf; op2val:0xfffffffd
+TEST_RR_OP(mulhu, x12, x10, x11, 0xffffffdc, 0xffffffdf, 0xfffffffd, x1, 88, x5)
+
+inst_32:
+// rs2_val == 4294967294,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0xfffffffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1f, 0x20, 0xfffffffe, x1, 92, x5)
+
+inst_33:
+// rs1_val == 2147483647,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0xfffbffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x7ffdfffe, 0x7fffffff, 0xfffbffff, x1, 96, x5)
+
+inst_34:
+// rs1_val == 3221225471,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffff; op2val:0xefffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xb3fffffe, 0xbfffffff, 0xefffffff, x1, 100, x5)
+
+inst_35:
+// rs1_val == 3758096383,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffff; op2val:0xffffefff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xdffff1fe, 0xdfffffff, 0xffffefff, x1, 104, x5)
+
+inst_36:
+// rs1_val == 4026531839,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0x7fffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x77fffffe, 0xefffffff, 0x7fffffff, x1, 108, x5)
+
+inst_37:
+// rs1_val == 4160749567, rs2_val == 0
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xf7ffffff; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xf7ffffff, 0x0, x1, 112, x5)
+
+inst_38:
+// rs1_val == 4261412863,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfdffffff; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0xfdfe, 0xfdffffff, 0xfffe, x1, 116, x5)
+
+inst_39:
+// rs1_val == 4278190079,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfeffffff; op2val:0xfffeffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xfeff00fe, 0xfeffffff, 0xfffeffff, x1, 120, x5)
+
+inst_40:
+// rs1_val == 4290772991,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffbfffff; op2val:0xfffffffb
+TEST_RR_OP(mulhu, x12, x10, x11, 0xffbffffa, 0xffbfffff, 0xfffffffb, x1, 124, x5)
+
+inst_41:
+// rs1_val == 4292870143,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffdfffff; op2val:0xffff7fff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xffdf800e, 0xffdfffff, 0xffff7fff, x1, 128, x5)
+
+inst_42:
+// rs1_val == 4293918719, rs2_val == 16777216
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffefffff; op2val:0x1000000
+TEST_RR_OP(mulhu, x12, x10, x11, 0xffefff, 0xffefffff, 0x1000000, x1, 132, x5)
+
+inst_43:
+// rs1_val == 4294705151, rs2_val == 8
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffbffff; op2val:0x8
+TEST_RR_OP(mulhu, x12, x10, x11, 0x7, 0xfffbffff, 0x8, x1, 136, x5)
+
+inst_44:
+// rs1_val == 4294836223, rs2_val == 1048576
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffdffff; op2val:0x100000
+TEST_RR_OP(mulhu, x12, x10, x11, 0xfffdf, 0xfffdffff, 0x100000, x1, 140, x5)
+
+inst_45:
+// rs1_val == 4294901759, rs2_val == 536870912
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffeffff; op2val:0x20000000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1fffdfff, 0xfffeffff, 0x20000000, x1, 144, x5)
+
+inst_46:
+// rs1_val == 4294950911,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffbfff; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffffbfff, 0x0, x1, 148, x5)
+
+inst_47:
+// rs1_val == 4294963199,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffefff; op2val:0xfffffdff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xffffedfe, 0xffffefff, 0xfffffdff, x1, 152, x5)
+
+inst_48:
+// rs1_val == 4294966271,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffbff; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x666664cc, 0xfffffbff, 0x66666667, x1, 156, x5)
+
+inst_49:
+// rs1_val == 4294967167,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffff7f; op2val:0xff7fffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xff7fff7e, 0xffffff7f, 0xff7fffff, x1, 160, x5)
+
+inst_50:
+// rs1_val == 4294967279,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffef; op2val:0x7fffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x7ffffff6, 0xffffffef, 0x7fffffff, x1, 164, x5)
+
+inst_51:
+// rs1_val == 4294967287,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff7; op2val:0xffffffbf
+TEST_RR_OP(mulhu, x12, x10, x11, 0xffffffb6, 0xfffffff7, 0xffffffbf, x1, 168, x5)
+
+inst_52:
+// rs1_val == 4294967291,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffb; op2val:0x40
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3f, 0xfffffffb, 0x40, x1, 172, x5)
+
+inst_53:
+// rs1_val == 4294967293, rs2_val == 256
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffd; op2val:0x100
+TEST_RR_OP(mulhu, x12, x10, x11, 0xff, 0xfffffffd, 0x100, x1, 176, x5)
+
+inst_54:
+// rs1_val == 4294967294,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffe; op2val:0xefffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xeffffffd, 0xfffffffe, 0xefffffff, x1, 180, x5)
+
+inst_55:
+// rs2_val == 2147483648, rs1_val == 2097152
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0x80000000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x100000, 0x200000, 0x80000000, x1, 184, x5)
+
+inst_56:
+// rs2_val == 1073741824,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x40000000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x15555555, 0x55555554, 0x40000000, x1, 188, x5)
+
+inst_57:
+// rs2_val == 268435456, rs1_val == 2048
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x10000000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x80, 0x800, 0x10000000, x1, 192, x5)
+
+inst_58:
+// rs2_val == 134217728,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfdffffff; op2val:0x8000000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x7efffff, 0xfdffffff, 0x8000000, x1, 196, x5)
+
+inst_59:
+// rs2_val == 67108864,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0x4000000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3bfffff, 0xefffffff, 0x4000000, x1, 200, x5)
+
+inst_60:
+// rs2_val == 33554432,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffdf; op2val:0x2000000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1ffffff, 0xffffffdf, 0x2000000, x1, 204, x5)
+
+inst_61:
+// rs2_val == 8388608,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x800000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5a, 0xb504, 0x800000, x1, 208, x5)
+
+inst_62:
+// rs2_val == 4194304,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffff7f; op2val:0x400000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3fffff, 0xffffff7f, 0x400000, x1, 212, x5)
+
+inst_63:
+// rs2_val == 2097152, rs1_val == 1431655765
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x200000
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaaa, 0x55555555, 0x200000, x1, 216, x5)
+
+inst_64:
+// rs2_val == 524288,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x80000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x200, 0x400000, 0x80000, x1, 220, x5)
+
+inst_65:
+// rs2_val == 262144, rs1_val == 8388608
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x40000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x200, 0x800000, 0x40000, x1, 224, x5)
+
+inst_66:
+// rs2_val == 131072, rs1_val == 16777216
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x20000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x200, 0x1000000, 0x20000, x1, 228, x5)
+
+inst_67:
+// rs2_val == 65536, rs1_val == 536870912
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2000, 0x20000000, 0x10000, x1, 232, x5)
+
+inst_68:
+// rs2_val == 32768, rs1_val == 2147483648
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x80000000; op2val:0x8000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4000, 0x80000000, 0x8000, x1, 236, x5)
+
+inst_69:
+// rs2_val == 16384,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfdffffff; op2val:0x4000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3f7f, 0xfdffffff, 0x4000, x1, 240, x5)
+
+inst_70:
+// rs2_val == 8192,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x666, 0x33333332, 0x2000, x1, 244, x5)
+
+inst_71:
+// rs2_val == 4096,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x1000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x555, 0x55555554, 0x1000, x1, 248, x5)
+
+inst_72:
+// rs2_val == 2048,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffbfffff; op2val:0x800
+TEST_RR_OP(mulhu, x12, x10, x11, 0x7fd, 0xffbfffff, 0x800, x1, 252, x5)
+
+inst_73:
+// rs2_val == 1024,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x400
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x400, x1, 256, x5)
+
+inst_74:
+// rs2_val == 512,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x200
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaa, 0x55555555, 0x200, x1, 260, x5)
+
+inst_75:
+// rs2_val == 128,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffbfff; op2val:0x80
+TEST_RR_OP(mulhu, x12, x10, x11, 0x7f, 0xffffbfff, 0x80, x1, 264, x5)
+
+inst_76:
+// rs2_val == 32,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x20
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x8000, 0x20, x1, 268, x5)
+
+inst_77:
+// rs2_val == 16,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb; op2val:0x10
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb, 0x10, x1, 272, x5)
+
+inst_78:
+// rs2_val == 4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xd; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xd, 0x4, x1, 276, x5)
+
+inst_79:
+// rs2_val == 2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffbfff; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0xffffbfff, 0x2, x1, 280, x5)
+
+inst_80:
+// rs2_val == 1, rs1_val==858993460 and rs2_val==1
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333334, 0x1, x1, 284, x5)
+
+inst_81:
+// rs1_val == 1073741824,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0xd
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0x40000000, 0xd, x1, 288, x5)
+
+inst_82:
+// rs1_val == 268435456,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x800000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x80000, 0x10000000, 0x800000, x1, 292, x5)
+
+inst_83:
+// rs1_val == 67108864,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0x9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4000000, 0x9, x1, 296, x5)
+
+inst_84:
+// rs1_val == 33554432,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0xff7fffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1feffff, 0x2000000, 0xff7fffff, x1, 300, x5)
+
+inst_85:
+// rs1_val == 1048576,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x100000, 0x6, x1, 304, x5)
+
+inst_86:
+// rs1_val == 131072,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x20000, 0x1, x1, 308, x5)
+
+inst_87:
+// rs1_val == 16384,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0xffdfffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3ff7, 0x4000, 0xffdfffff, x1, 312, x5)
+
+inst_88:
+// rs1_val == 8192,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2000, 0x10000, x1, 316, x5)
+
+inst_89:
+// rs1_val == 4096,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x2000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1000, 0x2000, x1, 320, x5)
+
+inst_90:
+// rs1_val == 1024,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x400, 0x3, x1, 324, x5)
+
+inst_91:
+// rs1_val == 512, rs2_val == (2**(xlen)-1)
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0xffffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1ff, 0x200, 0xffffffff, x1, 328, x5)
+
+inst_92:
+// rs1_val == 256,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x100, 0x3, x1, 332, x5)
+
+inst_93:
+// rs1_val == 16,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0xfbffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xf, 0x10, 0xfbffffff, x1, 336, x5)
+
+inst_94:
+// rs1_val == 8,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x8, 0x10000, x1, 340, x5)
+
+inst_95:
+// rs1_val == 4, rs1_val==4 and rs2_val==65534
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0xfffe, x1, 344, x5)
+
+inst_96:
+// rs1_val == 2, rs1_val==2 and rs2_val==4
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x4, x1, 348, x5)
+
+inst_97:
+// rs1_val == 1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xfffffff7
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xfffffff7, x1, 352, x5)
+
+inst_98:
+// rs1_val==65536 and rs2_val==65536, rs1_val == rs2_val and rs1_val > 0 and rs2_val > 0
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x10000, 0x10000, x1, 356, x5)
+
+inst_99:
+// rs1_val==65536 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0x1, x1, 360, x5)
+
+inst_100:
+// rs1_val==65536 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0xb505, x1, 364, x5)
+
+inst_101:
+// rs1_val==65536 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6666, 0x10000, 0x66666667, x1, 368, x5)
+
+inst_102:
+// rs1_val==65536 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3333, 0x10000, 0x33333334, x1, 372, x5)
+
+inst_103:
+// rs1_val==65536 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0x6, x1, 376, x5)
+
+inst_104:
+// rs1_val==65536 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaa, 0x10000, 0xaaaaaaab, x1, 380, x5)
+
+inst_105:
+// rs1_val==65536 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5555, 0x10000, 0x55555556, x1, 384, x5)
+
+inst_106:
+// rs1_val==65536 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0x4, x1, 388, x5)
+
+inst_107:
+// rs1_val==65536 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0xfffe, x1, 392, x5)
+
+inst_108:
+// rs1_val==65536 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0x0, x1, 396, x5)
+
+inst_109:
+// rs1_val==65536 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0xb503, x1, 400, x5)
+
+inst_110:
+// rs1_val==65536 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6666, 0x10000, 0x66666665, x1, 404, x5)
+
+inst_111:
+// rs1_val==65536 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3333, 0x10000, 0x33333332, x1, 408, x5)
+
+inst_112:
+// rs1_val==65536 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaa, 0x10000, 0xaaaaaaa9, x1, 412, x5)
+
+inst_113:
+// rs1_val==65536 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5555, 0x10000, 0x55555554, x1, 416, x5)
+
+inst_114:
+// rs1_val==65536 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0x2, x1, 420, x5)
+
+inst_115:
+// rs1_val==65536 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0xffff, x1, 424, x5)
+
+inst_116:
+// rs1_val==65536 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0xb504, x1, 428, x5)
+
+inst_117:
+// rs1_val==65536 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6666, 0x10000, 0x66666666, x1, 432, x5)
+
+inst_118:
+// rs1_val==65536 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3333, 0x10000, 0x33333333, x1, 436, x5)
+
+inst_119:
+// rs1_val==65536 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0x5, x1, 440, x5)
+
+inst_120:
+// rs1_val==65536 and rs2_val==2863311530, rs2_val == 2863311530
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaa, 0x10000, 0xaaaaaaaa, x1, 444, x5)
+
+inst_121:
+// rs1_val==65536 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5555, 0x10000, 0x55555555, x1, 448, x5)
+
+inst_122:
+// rs1_val==65536 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x10000, 0x3, x1, 452, x5)
+
+inst_123:
+// rs1_val==1 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x10000, x1, 456, x5)
+
+inst_124:
+// rs1_val==1 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x1, x1, 460, x5)
+
+inst_125:
+// rs1_val==1 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xb505, x1, 464, x5)
+
+inst_126:
+// rs1_val==1 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x66666667, x1, 468, x5)
+
+inst_127:
+// rs1_val==1 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x33333334, x1, 472, x5)
+
+inst_128:
+// rs1_val==1 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x6, x1, 476, x5)
+
+inst_129:
+// rs1_val==1 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xaaaaaaab, x1, 480, x5)
+
+inst_130:
+// rs1_val==1 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x55555556, x1, 484, x5)
+
+inst_131:
+// rs1_val==1 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x4, x1, 488, x5)
+
+inst_132:
+// rs1_val==1 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xfffe, x1, 492, x5)
+
+inst_133:
+// rs1_val==1 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x0, x1, 496, x5)
+
+inst_134:
+// rs1_val==1 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xb503, x1, 500, x5)
+
+inst_135:
+// rs1_val==1 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x66666665, x1, 504, x5)
+
+inst_136:
+// rs1_val==1 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x33333332, x1, 508, x5)
+
+inst_137:
+// rs1_val==1 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xaaaaaaa9, x1, 512, x5)
+
+inst_138:
+// rs1_val==1 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x55555554, x1, 516, x5)
+
+inst_139:
+// rs1_val==1 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x2, x1, 520, x5)
+
+inst_140:
+// rs1_val==1 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xffff, x1, 524, x5)
+
+inst_141:
+// rs1_val==1 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xb504, x1, 528, x5)
+
+inst_142:
+// rs1_val==1 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x66666666, x1, 532, x5)
+
+inst_143:
+// rs1_val==1 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x33333333, x1, 536, x5)
+
+inst_144:
+// rs1_val==1 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x5, x1, 540, x5)
+
+inst_145:
+// rs1_val==1 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0xaaaaaaaa, x1, 544, x5)
+
+inst_146:
+// rs1_val==1 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x55555555, x1, 548, x5)
+
+inst_147:
+// rs1_val==1 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x1, 0x3, x1, 552, x5)
+
+inst_148:
+// rs1_val==46341 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0x10000, x1, 556, x5)
+
+inst_149:
+// rs1_val==46341 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0x1, x1, 560, x5)
+
+inst_150:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0xb505, x1, 564, x5)
+
+inst_151:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4868, 0xb505, 0x66666667, x1, 568, x5)
+
+inst_152:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2434, 0xb505, 0x33333334, x1, 572, x5)
+
+inst_153:
+// rs1_val==46341 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0x6, x1, 576, x5)
+
+inst_154:
+// rs1_val==46341 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ae, 0xb505, 0xaaaaaaab, x1, 580, x5)
+
+inst_155:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c57, 0xb505, 0x55555556, x1, 584, x5)
+
+inst_156:
+// rs1_val==46341 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0x4, x1, 588, x5)
+
+inst_157:
+// rs1_val==46341 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0xfffe, x1, 592, x5)
+
+inst_158:
+// rs1_val==46341 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0x0, x1, 596, x5)
+
+inst_159:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0xb503, x1, 600, x5)
+
+inst_160:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4868, 0xb505, 0x66666665, x1, 604, x5)
+
+inst_161:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2434, 0xb505, 0x33333332, x1, 608, x5)
+
+inst_162:
+// rs1_val==46341 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xb505, 0xaaaaaaa9, x1, 612, x5)
+
+inst_163:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0xb505, 0x55555554, x1, 616, x5)
+
+inst_164:
+// rs1_val==46341 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0x2, x1, 620, x5)
+
+inst_165:
+// rs1_val==46341 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0xffff, x1, 624, x5)
+
+inst_166:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0xb504, x1, 628, x5)
+
+inst_167:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4868, 0xb505, 0x66666666, x1, 632, x5)
+
+inst_168:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2434, 0xb505, 0x33333333, x1, 636, x5)
+
+inst_169:
+// rs1_val==46341 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0x5, x1, 640, x5)
+
+inst_170:
+// rs1_val==46341 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xb505, 0xaaaaaaaa, x1, 644, x5)
+
+inst_171:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0xb505, 0x55555555, x1, 648, x5)
+
+inst_172:
+// rs1_val==46341 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb505, 0x3, x1, 652, x5)
+
+inst_173:
+// rs1_val==1717986919 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6666, 0x66666667, 0x10000, x1, 656, x5)
+
+inst_174:
+// rs1_val==1717986919 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666667, 0x1, x1, 660, x5)
+
+inst_175:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4868, 0x66666667, 0xb505, x1, 664, x5)
+
+inst_176:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666667, x1, 668, x5)
+
+inst_177:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae148, 0x66666667, 0x33333334, x1, 672, x5)
+
+inst_178:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x66666667, 0x6, x1, 676, x5)
+
+inst_179:
+// rs1_val==1717986919 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444444, 0x66666667, 0xaaaaaaab, x1, 680, x5)
+
+inst_180:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x66666667, 0x55555556, x1, 684, x5)
+
+inst_181:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x66666667, 0x4, x1, 688, x5)
+
+inst_182:
+// rs1_val==1717986919 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0x66666667, 0xfffe, x1, 692, x5)
+
+inst_183:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666667, 0x0, x1, 696, x5)
+
+inst_184:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0x66666667, 0xb503, x1, 700, x5)
+
+inst_185:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666665, x1, 704, x5)
+
+inst_186:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x66666667, 0x33333332, x1, 708, x5)
+
+inst_187:
+// rs1_val==1717986919 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0x66666667, 0xaaaaaaa9, x1, 712, x5)
+
+inst_188:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x66666667, 0x55555554, x1, 716, x5)
+
+inst_189:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666667, 0x2, x1, 720, x5)
+
+inst_190:
+// rs1_val==1717986919 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6666, 0x66666667, 0xffff, x1, 724, x5)
+
+inst_191:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4868, 0x66666667, 0xb504, x1, 728, x5)
+
+inst_192:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28f, 0x66666667, 0x66666666, x1, 732, x5)
+
+inst_193:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x66666667, 0x33333333, x1, 736, x5)
+
+inst_194:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x66666667, 0x5, x1, 740, x5)
+
+inst_195:
+// rs1_val==1717986919 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444444, 0x66666667, 0xaaaaaaaa, x1, 744, x5)
+
+inst_196:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x66666667, 0x55555555, x1, 748, x5)
+
+inst_197:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x66666667, 0x3, x1, 752, x5)
+
+inst_198:
+// rs1_val==858993460 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3333, 0x33333334, 0x10000, x1, 756, x5)
+
+inst_199:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2434, 0x33333334, 0xb505, x1, 760, x5)
+
+inst_200:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae148, 0x33333334, 0x66666667, x1, 764, x5)
+
+inst_201:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a4, 0x33333334, 0x33333334, x1, 768, x5)
+
+inst_202:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x33333334, 0x6, x1, 772, x5)
+
+inst_203:
+// rs1_val==858993460 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x33333334, 0xaaaaaaab, x1, 776, x5)
+
+inst_204:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111111, 0x33333334, 0x55555556, x1, 780, x5)
+
+inst_205:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333334, 0x4, x1, 784, x5)
+
+inst_206:
+// rs1_val==858993460 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0x33333334, 0xfffe, x1, 788, x5)
+
+inst_207:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333334, 0x0, x1, 792, x5)
+
+inst_208:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0x33333334, 0xb503, x1, 796, x5)
+
+inst_209:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x33333334, 0x66666665, x1, 800, x5)
+
+inst_210:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a3, 0x33333334, 0x33333332, x1, 804, x5)
+
+inst_211:
+// rs1_val==858993460 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x33333334, 0xaaaaaaa9, x1, 808, x5)
+
+inst_212:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111111, 0x33333334, 0x55555554, x1, 812, x5)
+
+inst_213:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333334, 0x2, x1, 816, x5)
+
+inst_214:
+// rs1_val==858993460 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3333, 0x33333334, 0xffff, x1, 820, x5)
+
+inst_215:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2434, 0x33333334, 0xb504, x1, 824, x5)
+
+inst_216:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x33333334, 0x66666666, x1, 828, x5)
+
+inst_217:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a3, 0x33333334, 0x33333333, x1, 832, x5)
+
+inst_218:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x33333334, 0x5, x1, 836, x5)
+
+inst_219:
+// rs1_val==858993460 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x33333334, 0xaaaaaaaa, x1, 840, x5)
+
+inst_220:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111111, 0x33333334, 0x55555555, x1, 844, x5)
+
+inst_221:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333334, 0x3, x1, 848, x5)
+
+inst_222:
+// rs1_val==6 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0x10000, x1, 852, x5)
+
+inst_223:
+// rs1_val==6 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0x1, x1, 856, x5)
+
+inst_224:
+// rs1_val==6 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0xb505, x1, 860, x5)
+
+inst_225:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x6, 0x66666667, x1, 864, x5)
+
+inst_226:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x6, 0x33333334, x1, 868, x5)
+
+inst_227:
+// rs1_val==6 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0x6, x1, 872, x5)
+
+inst_228:
+// rs1_val==6 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4, 0x6, 0xaaaaaaab, x1, 876, x5)
+
+inst_229:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x6, 0x55555556, x1, 880, x5)
+
+inst_230:
+// rs1_val==6 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0x4, x1, 884, x5)
+
+inst_231:
+// rs1_val==6 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0xfffe, x1, 888, x5)
+
+inst_232:
+// rs1_val==6 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0x0, x1, 892, x5)
+
+inst_233:
+// rs1_val==6 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0xb503, x1, 896, x5)
+
+inst_234:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x6, 0x66666665, x1, 900, x5)
+
+inst_235:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x6, 0x33333332, x1, 904, x5)
+
+inst_236:
+// rs1_val==6 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0x6, 0xaaaaaaa9, x1, 908, x5)
+
+inst_237:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x6, 0x55555554, x1, 912, x5)
+
+inst_238:
+// rs1_val==6 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0x2, x1, 916, x5)
+
+inst_239:
+// rs1_val==6 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0xffff, x1, 920, x5)
+
+inst_240:
+// rs1_val==6 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0xb504, x1, 924, x5)
+
+inst_241:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x6, 0x66666666, x1, 928, x5)
+
+inst_242:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x6, 0x33333333, x1, 932, x5)
+
+inst_243:
+// rs1_val==6 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0x5, x1, 936, x5)
+
+inst_244:
+// rs1_val==6 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0x6, 0xaaaaaaaa, x1, 940, x5)
+
+inst_245:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x6, 0x55555555, x1, 944, x5)
+
+inst_246:
+// rs1_val==6 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x6, 0x3, x1, 948, x5)
+
+inst_247:
+// rs1_val==2863311531 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaa, 0xaaaaaaab, 0x10000, x1, 952, x5)
+
+inst_248:
+// rs1_val==2863311531 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x1, x1, 956, x5)
+
+inst_249:
+// rs1_val==2863311531 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ae, 0xaaaaaaab, 0xb505, x1, 960, x5)
+
+inst_250:
+// rs1_val==2863311531 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444444, 0xaaaaaaab, 0x66666667, x1, 964, x5)
+
+inst_251:
+// rs1_val==2863311531 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0xaaaaaaab, 0x33333334, x1, 968, x5)
+
+inst_252:
+// rs1_val==2863311531 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4, 0xaaaaaaab, 0x6, x1, 972, x5)
+
+inst_253:
+// rs1_val==2863311531 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c72, 0xaaaaaaab, 0xaaaaaaab, x1, 976, x5)
+
+inst_254:
+// rs1_val==2863311531 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e39, 0xaaaaaaab, 0x55555556, x1, 980, x5)
+
+inst_255:
+// rs1_val==2863311531 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0xaaaaaaab, 0x4, x1, 984, x5)
+
+inst_256:
+// rs1_val==2863311531 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xaaaaaaab, 0xfffe, x1, 988, x5)
+
+inst_257:
+// rs1_val==2863311531 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x0, x1, 992, x5)
+
+inst_258:
+// rs1_val==2863311531 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ac, 0xaaaaaaab, 0xb503, x1, 996, x5)
+
+inst_259:
+// rs1_val==2863311531 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0xaaaaaaab, 0x66666665, x1, 1000, x5)
+
+inst_260:
+// rs1_val==2863311531 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0xaaaaaaab, 0x33333332, x1, 1004, x5)
+
+inst_261:
+// rs1_val==2863311531 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c70, 0xaaaaaaab, 0xaaaaaaa9, x1, 1008, x5)
+
+inst_262:
+// rs1_val==2863311531 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0xaaaaaaab, 0x55555554, x1, 1012, x5)
+
+inst_263:
+// rs1_val==2863311531 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0xaaaaaaab, 0x2, x1, 1016, x5)
+
+inst_264:
+// rs1_val==2863311531 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaa, 0xaaaaaaab, 0xffff, x1, 1020, x5)
+
+inst_265:
+// rs1_val==2863311531 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xaaaaaaab, 0xb504, x1, 1024, x5)
+
+inst_266:
+// rs1_val==2863311531 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444444, 0xaaaaaaab, 0x66666666, x1, 1028, x5)
+
+inst_267:
+// rs1_val==2863311531 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0xaaaaaaab, 0x33333333, x1, 1032, x5)
+
+inst_268:
+// rs1_val==2863311531 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0xaaaaaaab, 0x5, x1, 1036, x5)
+
+inst_269:
+// rs1_val==2863311531 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c71, 0xaaaaaaab, 0xaaaaaaaa, x1, 1040, x5)
+
+inst_270:
+// rs1_val==2863311531 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0xaaaaaaab, 0x55555555, x1, 1044, x5)
+
+inst_271:
+// rs1_val==2863311531 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0xaaaaaaab, 0x3, x1, 1048, x5)
+
+inst_272:
+// rs1_val==1431655766 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5555, 0x55555556, 0x10000, x1, 1052, x5)
+
+inst_273:
+// rs1_val==1431655766 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555556, 0x1, x1, 1056, x5)
+
+inst_274:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c57, 0x55555556, 0xb505, x1, 1060, x5)
+
+inst_275:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x55555556, 0x66666667, x1, 1064, x5)
+
+inst_276:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111111, 0x55555556, 0x33333334, x1, 1068, x5)
+
+inst_277:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x55555556, 0x6, x1, 1072, x5)
+
+inst_278:
+// rs1_val==1431655766 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e39, 0x55555556, 0xaaaaaaab, x1, 1076, x5)
+
+inst_279:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555556, x1, 1080, x5)
+
+inst_280:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555556, 0x4, x1, 1084, x5)
+
+inst_281:
+// rs1_val==1431655766 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0x55555556, 0xfffe, x1, 1088, x5)
+
+inst_282:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555556, 0x0, x1, 1092, x5)
+
+inst_283:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0x55555556, 0xb503, x1, 1096, x5)
+
+inst_284:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x55555556, 0x66666665, x1, 1100, x5)
+
+inst_285:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x55555556, 0x33333332, x1, 1104, x5)
+
+inst_286:
+// rs1_val==1431655766 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0x55555556, 0xaaaaaaa9, x1, 1108, x5)
+
+inst_287:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555554, x1, 1112, x5)
+
+inst_288:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555556, 0x2, x1, 1116, x5)
+
+inst_289:
+// rs1_val==1431655766 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5555, 0x55555556, 0xffff, x1, 1120, x5)
+
+inst_290:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0x55555556, 0xb504, x1, 1124, x5)
+
+inst_291:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x55555556, 0x66666666, x1, 1128, x5)
+
+inst_292:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111111, 0x55555556, 0x33333333, x1, 1132, x5)
+
+inst_293:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555556, 0x5, x1, 1136, x5)
+
+inst_294:
+// rs1_val==1431655766 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e39, 0x55555556, 0xaaaaaaaa, x1, 1140, x5)
+
+inst_295:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71c, 0x55555556, 0x55555555, x1, 1144, x5)
+
+inst_296:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555556, 0x3, x1, 1148, x5)
+
+inst_297:
+// rs1_val==4 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x10000, x1, 1152, x5)
+
+inst_298:
+// rs1_val==4 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x1, x1, 1156, x5)
+
+inst_299:
+// rs1_val==4 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0xb505, x1, 1160, x5)
+
+inst_300:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x4, 0x66666667, x1, 1164, x5)
+
+inst_301:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x33333334, x1, 1168, x5)
+
+inst_302:
+// rs1_val==4 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x6, x1, 1172, x5)
+
+inst_303:
+// rs1_val==4 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x4, 0xaaaaaaab, x1, 1176, x5)
+
+inst_304:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x4, 0x55555556, x1, 1180, x5)
+
+inst_305:
+// rs1_val==4 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x4, x1, 1184, x5)
+
+inst_306:
+// rs1_val==4 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x0, x1, 1188, x5)
+
+inst_307:
+// rs1_val==4 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0xb503, x1, 1192, x5)
+
+inst_308:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x4, 0x66666665, x1, 1196, x5)
+
+inst_309:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x33333332, x1, 1200, x5)
+
+inst_310:
+// rs1_val==4 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x4, 0xaaaaaaa9, x1, 1204, x5)
+
+inst_311:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x4, 0x55555554, x1, 1208, x5)
+
+inst_312:
+// rs1_val==4 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x2, x1, 1212, x5)
+
+inst_313:
+// rs1_val==4 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0xffff, x1, 1216, x5)
+
+inst_314:
+// rs1_val==4 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0xb504, x1, 1220, x5)
+
+inst_315:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x4, 0x66666666, x1, 1224, x5)
+
+inst_316:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x33333333, x1, 1228, x5)
+
+inst_317:
+// rs1_val==4 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x5, x1, 1232, x5)
+
+inst_318:
+// rs1_val==4 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x4, 0xaaaaaaaa, x1, 1236, x5)
+
+inst_319:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x4, 0x55555555, x1, 1240, x5)
+
+inst_320:
+// rs1_val==4 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x4, 0x3, x1, 1244, x5)
+
+inst_321:
+// rs1_val==65534 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0x10000, x1, 1248, x5)
+
+inst_322:
+// rs1_val==65534 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0x1, x1, 1252, x5)
+
+inst_323:
+// rs1_val==65534 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0xb505, x1, 1256, x5)
+
+inst_324:
+// rs1_val==65534 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0xfffe, 0x66666667, x1, 1260, x5)
+
+inst_325:
+// rs1_val==65534 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0xfffe, 0x33333334, x1, 1264, x5)
+
+inst_326:
+// rs1_val==65534 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0x6, x1, 1268, x5)
+
+inst_327:
+// rs1_val==65534 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xfffe, 0xaaaaaaab, x1, 1272, x5)
+
+inst_328:
+// rs1_val==65534 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0xfffe, 0x55555556, x1, 1276, x5)
+
+inst_329:
+// rs1_val==65534 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0x4, x1, 1280, x5)
+
+inst_330:
+// rs1_val==65534 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0xfffe, x1, 1284, x5)
+
+inst_331:
+// rs1_val==65534 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0x0, x1, 1288, x5)
+
+inst_332:
+// rs1_val==65534 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0xb503, x1, 1292, x5)
+
+inst_333:
+// rs1_val==65534 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0xfffe, 0x66666665, x1, 1296, x5)
+
+inst_334:
+// rs1_val==65534 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0xfffe, 0x33333332, x1, 1300, x5)
+
+inst_335:
+// rs1_val==65534 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xfffe, 0xaaaaaaa9, x1, 1304, x5)
+
+inst_336:
+// rs1_val==65534 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0xfffe, 0x55555554, x1, 1308, x5)
+
+inst_337:
+// rs1_val==65534 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0x2, x1, 1312, x5)
+
+inst_338:
+// rs1_val==65534 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0xffff, x1, 1316, x5)
+
+inst_339:
+// rs1_val==65534 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0xb504, x1, 1320, x5)
+
+inst_340:
+// rs1_val==65534 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0xfffe, 0x66666666, x1, 1324, x5)
+
+inst_341:
+// rs1_val==65534 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0xfffe, 0x33333333, x1, 1328, x5)
+
+inst_342:
+// rs1_val==65534 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0x5, x1, 1332, x5)
+
+inst_343:
+// rs1_val==65534 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xfffe, 0xaaaaaaaa, x1, 1336, x5)
+
+inst_344:
+// rs1_val==65534 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0xfffe, 0x55555555, x1, 1340, x5)
+
+inst_345:
+// rs1_val==65534 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xfffe, 0x3, x1, 1344, x5)
+
+inst_346:
+// rs1_val==0 and rs2_val==65536, rs1_val == 0
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x10000, x1, 1348, x5)
+
+inst_347:
+// rs1_val==0 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x1, x1, 1352, x5)
+
+inst_348:
+// rs1_val==0 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0xb505, x1, 1356, x5)
+
+inst_349:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x66666667, x1, 1360, x5)
+
+inst_350:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x33333334, x1, 1364, x5)
+
+inst_351:
+// rs1_val==0 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x6, x1, 1368, x5)
+
+inst_352:
+// rs1_val==0 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaab, x1, 1372, x5)
+
+inst_353:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x55555556, x1, 1376, x5)
+
+inst_354:
+// rs1_val==0 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x4, x1, 1380, x5)
+
+inst_355:
+// rs1_val==0 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0xfffe, x1, 1384, x5)
+
+inst_356:
+// rs1_val==0 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1388, x5)
+
+inst_357:
+// rs1_val==0 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0xb503, x1, 1392, x5)
+
+inst_358:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x66666665, x1, 1396, x5)
+
+inst_359:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x33333332, x1, 1400, x5)
+
+inst_360:
+// rs1_val==0 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaa9, x1, 1404, x5)
+
+inst_361:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x55555554, x1, 1408, x5)
+
+inst_362:
+// rs1_val==0 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x2, x1, 1412, x5)
+
+inst_363:
+// rs1_val==0 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0xffff, x1, 1416, x5)
+
+inst_364:
+// rs1_val==0 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0xb504, x1, 1420, x5)
+
+inst_365:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x66666666, x1, 1424, x5)
+
+inst_366:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x33333333, x1, 1428, x5)
+
+inst_367:
+// rs1_val==0 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x5, x1, 1432, x5)
+
+inst_368:
+// rs1_val==0 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaaa, x1, 1436, x5)
+
+inst_369:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x55555555, x1, 1440, x5)
+
+inst_370:
+// rs1_val==0 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x0, 0x3, x1, 1444, x5)
+
+inst_371:
+// rs1_val==46339 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x10000, x1, 1448, x5)
+
+inst_372:
+// rs1_val==46339 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x1, x1, 1452, x5)
+
+inst_373:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0xb505, x1, 1456, x5)
+
+inst_374:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0xb503, 0x66666667, x1, 1460, x5)
+
+inst_375:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0xb503, 0x33333334, x1, 1464, x5)
+
+inst_376:
+// rs1_val==46339 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x6, x1, 1468, x5)
+
+inst_377:
+// rs1_val==46339 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ac, 0xb503, 0xaaaaaaab, x1, 1472, x5)
+
+inst_378:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0xb503, 0x55555556, x1, 1476, x5)
+
+inst_379:
+// rs1_val==46339 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x4, x1, 1480, x5)
+
+inst_380:
+// rs1_val==46339 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0xfffe, x1, 1484, x5)
+
+inst_381:
+// rs1_val==46339 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x0, x1, 1488, x5)
+
+inst_382:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0xb503, x1, 1492, x5)
+
+inst_383:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0xb503, 0x66666665, x1, 1496, x5)
+
+inst_384:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0xb503, 0x33333332, x1, 1500, x5)
+
+inst_385:
+// rs1_val==46339 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ac, 0xb503, 0xaaaaaaa9, x1, 1504, x5)
+
+inst_386:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0xb503, 0x55555554, x1, 1508, x5)
+
+inst_387:
+// rs1_val==46339 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x2, x1, 1512, x5)
+
+inst_388:
+// rs1_val==46339 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0xffff, x1, 1516, x5)
+
+inst_389:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0xb504, x1, 1520, x5)
+
+inst_390:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0xb503, 0x66666666, x1, 1524, x5)
+
+inst_391:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0xb503, 0x33333333, x1, 1528, x5)
+
+inst_392:
+// rs1_val==46339 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x5, x1, 1532, x5)
+
+inst_393:
+// rs1_val==46339 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ac, 0xb503, 0xaaaaaaaa, x1, 1536, x5)
+
+inst_394:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0xb503, 0x55555555, x1, 1540, x5)
+
+inst_395:
+// rs1_val==46339 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb503, 0x3, x1, 1544, x5)
+
+inst_396:
+// rs1_val==1717986917 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6666, 0x66666665, 0x10000, x1, 1548, x5)
+
+inst_397:
+// rs1_val==1717986917 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666665, 0x1, x1, 1552, x5)
+
+inst_398:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4868, 0x66666665, 0xb505, x1, 1556, x5)
+
+inst_399:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28f, 0x66666665, 0x66666667, x1, 1560, x5)
+
+inst_400:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x66666665, 0x33333334, x1, 1564, x5)
+
+inst_401:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x66666665, 0x6, x1, 1568, x5)
+
+inst_402:
+// rs1_val==1717986917 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0x66666665, 0xaaaaaaab, x1, 1572, x5)
+
+inst_403:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x66666665, 0x55555556, x1, 1576, x5)
+
+inst_404:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x66666665, 0x4, x1, 1580, x5)
+
+inst_405:
+// rs1_val==1717986917 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0x66666665, 0xfffe, x1, 1584, x5)
+
+inst_406:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666665, 0x0, x1, 1588, x5)
+
+inst_407:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0x66666665, 0xb503, x1, 1592, x5)
+
+inst_408:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28e, 0x66666665, 0x66666665, x1, 1596, x5)
+
+inst_409:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae146, 0x66666665, 0x33333332, x1, 1600, x5)
+
+inst_410:
+// rs1_val==1717986917 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444442, 0x66666665, 0xaaaaaaa9, x1, 1604, x5)
+
+inst_411:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x66666665, 0x55555554, x1, 1608, x5)
+
+inst_412:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666665, 0x2, x1, 1612, x5)
+
+inst_413:
+// rs1_val==1717986917 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0x66666665, 0xffff, x1, 1616, x5)
+
+inst_414:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0x66666665, 0xb504, x1, 1620, x5)
+
+inst_415:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28e, 0x66666665, 0x66666666, x1, 1624, x5)
+
+inst_416:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x66666665, 0x33333333, x1, 1628, x5)
+
+inst_417:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x66666665, 0x5, x1, 1632, x5)
+
+inst_418:
+// rs1_val==1717986917 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0x66666665, 0xaaaaaaaa, x1, 1636, x5)
+
+inst_419:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x66666665, 0x55555555, x1, 1640, x5)
+
+inst_420:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x66666665, 0x3, x1, 1644, x5)
+
+inst_421:
+// rs1_val==858993458 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3333, 0x33333332, 0x10000, x1, 1648, x5)
+
+inst_422:
+// rs1_val==858993458 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333332, 0x1, x1, 1652, x5)
+
+inst_423:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2434, 0x33333332, 0xb505, x1, 1656, x5)
+
+inst_424:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x33333332, 0x66666667, x1, 1660, x5)
+
+inst_425:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333334, x1, 1664, x5)
+
+inst_426:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x33333332, 0x6, x1, 1668, x5)
+
+inst_427:
+// rs1_val==858993458 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x33333332, 0xaaaaaaab, x1, 1672, x5)
+
+inst_428:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x33333332, 0x55555556, x1, 1676, x5)
+
+inst_429:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333332, 0x4, x1, 1680, x5)
+
+inst_430:
+// rs1_val==858993458 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0x33333332, 0xfffe, x1, 1684, x5)
+
+inst_431:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333332, 0x0, x1, 1688, x5)
+
+inst_432:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0x33333332, 0xb503, x1, 1692, x5)
+
+inst_433:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae146, 0x33333332, 0x66666665, x1, 1696, x5)
+
+inst_434:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333332, x1, 1700, x5)
+
+inst_435:
+// rs1_val==858993458 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x33333332, 0xaaaaaaa9, x1, 1704, x5)
+
+inst_436:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x33333332, 0x55555554, x1, 1708, x5)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333332, 0x2, x1, 1712, x5)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0x33333332, 0xffff, x1, 1716, x5)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0x33333332, 0xb504, x1, 1720, x5)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x33333332, 0x66666666, x1, 1724, x5)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a3, 0x33333332, 0x33333333, x1, 1728, x5)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333332, 0x5, x1, 1732, x5)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x33333332, 0xaaaaaaaa, x1, 1736, x5)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x33333332, 0x55555555, x1, 1740, x5)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333332, 0x3, x1, 1744, x5)
+
+inst_446:
+// rs1_val==2863311529 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaa, 0xaaaaaaa9, 0x10000, x1, 1748, x5)
+
+inst_447:
+// rs1_val==2863311529 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x1, x1, 1752, x5)
+
+inst_448:
+// rs1_val==2863311529 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xaaaaaaa9, 0xb505, x1, 1756, x5)
+
+inst_449:
+// rs1_val==2863311529 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0xaaaaaaa9, 0x66666667, x1, 1760, x5)
+
+inst_450:
+// rs1_val==2863311529 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0xaaaaaaa9, 0x33333334, x1, 1764, x5)
+
+inst_451:
+// rs1_val==2863311529 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0xaaaaaaa9, 0x6, x1, 1768, x5)
+
+inst_452:
+// rs1_val==2863311529 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c70, 0xaaaaaaa9, 0xaaaaaaab, x1, 1772, x5)
+
+inst_453:
+// rs1_val==2863311529 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0xaaaaaaa9, 0x55555556, x1, 1776, x5)
+
+inst_454:
+// rs1_val==2863311529 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0xaaaaaaa9, 0x4, x1, 1780, x5)
+
+inst_455:
+// rs1_val==2863311529 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xaaaaaaa9, 0xfffe, x1, 1784, x5)
+
+inst_456:
+// rs1_val==2863311529 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x0, x1, 1788, x5)
+
+inst_457:
+// rs1_val==2863311529 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ac, 0xaaaaaaa9, 0xb503, x1, 1792, x5)
+
+inst_458:
+// rs1_val==2863311529 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444442, 0xaaaaaaa9, 0x66666665, x1, 1796, x5)
+
+inst_459:
+// rs1_val==2863311529 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0xaaaaaaa9, 0x33333332, x1, 1800, x5)
+
+inst_460:
+// rs1_val==2863311529 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c6f, 0xaaaaaaa9, 0xaaaaaaa9, x1, 1804, x5)
+
+inst_461:
+// rs1_val==2863311529 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e37, 0xaaaaaaa9, 0x55555554, x1, 1808, x5)
+
+inst_462:
+// rs1_val==2863311529 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x2, x1, 1812, x5)
+
+inst_463:
+// rs1_val==2863311529 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xaaaaaaa9, 0xffff, x1, 1816, x5)
+
+inst_464:
+// rs1_val==2863311529 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xaaaaaaa9, 0xb504, x1, 1820, x5)
+
+inst_465:
+// rs1_val==2863311529 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0xaaaaaaa9, 0x66666666, x1, 1824, x5)
+
+inst_466:
+// rs1_val==2863311529 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0xaaaaaaa9, 0x33333333, x1, 1828, x5)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555554, 0x4, x1, 1832, x5)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0x55555554, 0xfffe, x1, 1836, x5)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555554, 0x0, x1, 1840, x5)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0x55555554, 0xb503, x1, 1844, x5)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x55555554, 0x66666665, x1, 1848, x5)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x55555554, 0x33333332, x1, 1852, x5)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e37, 0x55555554, 0xaaaaaaa9, x1, 1856, x5)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71b, 0x55555554, 0x55555554, x1, 1860, x5)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555554, 0x2, x1, 1864, x5)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0x55555554, 0xffff, x1, 1868, x5)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0x55555554, 0xb504, x1, 1872, x5)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x55555554, 0x66666666, x1, 1876, x5)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x55555554, 0x33333333, x1, 1880, x5)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555554, 0x5, x1, 1884, x5)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e37, 0x55555554, 0xaaaaaaaa, x1, 1888, x5)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71b, 0x55555554, 0x55555555, x1, 1892, x5)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555554, 0x3, x1, 1896, x5)
+
+inst_484:
+// rs1_val==2 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x10000, x1, 1900, x5)
+
+inst_485:
+// rs1_val==2 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x1, x1, 1904, x5)
+
+inst_486:
+// rs1_val==2 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0xb505, x1, 1908, x5)
+
+inst_487:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x66666667, x1, 1912, x5)
+
+inst_488:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x33333334, x1, 1916, x5)
+
+inst_489:
+// rs1_val==2 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x6, x1, 1920, x5)
+
+inst_490:
+// rs1_val==2 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaab, x1, 1924, x5)
+
+inst_491:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x55555556, x1, 1928, x5)
+
+inst_492:
+// rs1_val==2 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0xfffe, x1, 1932, x5)
+
+inst_493:
+// rs1_val==2 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x0, x1, 1936, x5)
+
+inst_494:
+// rs1_val==2 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0xb503, x1, 1940, x5)
+
+inst_495:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x66666665, x1, 1944, x5)
+
+inst_496:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x33333332, x1, 1948, x5)
+
+inst_497:
+// rs1_val==2 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaa9, x1, 1952, x5)
+
+inst_498:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x55555554, x1, 1956, x5)
+
+inst_499:
+// rs1_val==2 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x2, x1, 1960, x5)
+
+inst_500:
+// rs1_val==2 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0xffff, x1, 1964, x5)
+
+inst_501:
+// rs1_val==2 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0xb504, x1, 1968, x5)
+
+inst_502:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x66666666, x1, 1972, x5)
+
+inst_503:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x33333333, x1, 1976, x5)
+
+inst_504:
+// rs1_val==2 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x5, x1, 1980, x5)
+
+inst_505:
+// rs1_val==2 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x2, 0xaaaaaaaa, x1, 1984, x5)
+
+inst_506:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x55555555, x1, 1988, x5)
+
+inst_507:
+// rs1_val==2 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x2, 0x3, x1, 1992, x5)
+
+inst_508:
+// rs1_val==65535 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0x10000, x1, 1996, x5)
+
+inst_509:
+// rs1_val==65535 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0x1, x1, 2000, x5)
+
+inst_510:
+// rs1_val==65535 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0xb505, x1, 2004, x5)
+
+inst_511:
+// rs1_val==65535 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6666, 0xffff, 0x66666667, x1, 2008, x5)
+
+inst_512:
+// rs1_val==65535 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3333, 0xffff, 0x33333334, x1, 2012, x5)
+
+inst_513:
+// rs1_val==65535 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0x6, x1, 2016, x5)
+
+inst_514:
+// rs1_val==65535 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaa, 0xffff, 0xaaaaaaab, x1, 2020, x5)
+
+inst_515:
+// rs1_val==65535 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5555, 0xffff, 0x55555556, x1, 2024, x5)
+
+inst_516:
+// rs1_val==65535 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0x4, x1, 2028, x5)
+
+inst_517:
+// rs1_val==65535 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0xfffe, x1, 2032, x5)
+
+inst_518:
+// rs1_val==65535 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0x0, x1, 2036, x5)
+
+inst_519:
+// rs1_val==65535 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0xb503, x1, 2040, x5)
+
+inst_520:
+// rs1_val==65535 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0xffff, 0x66666665, x1, 2044, x5)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_521:
+// rs1_val==65535 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0xffff, 0x33333332, x1, 0, x5)
+
+inst_522:
+// rs1_val==65535 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xffff, 0xaaaaaaa9, x1, 4, x5)
+
+inst_523:
+// rs1_val==65535 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0xffff, 0x55555554, x1, 8, x5)
+
+inst_524:
+// rs1_val==65535 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0x2, x1, 12, x5)
+
+inst_525:
+// rs1_val==65535 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0xffff, x1, 16, x5)
+
+inst_526:
+// rs1_val==65535 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0xb504, x1, 20, x5)
+
+inst_527:
+// rs1_val==65535 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0xffff, 0x66666666, x1, 24, x5)
+
+inst_528:
+// rs1_val==65535 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0xffff, 0x33333333, x1, 28, x5)
+
+inst_529:
+// rs1_val==65535 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0x5, x1, 32, x5)
+
+inst_530:
+// rs1_val==65535 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xffff, 0xaaaaaaaa, x1, 36, x5)
+
+inst_531:
+// rs1_val==65535 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0xffff, 0x55555555, x1, 40, x5)
+
+inst_532:
+// rs1_val==65535 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xffff, 0x3, x1, 44, x5)
+
+inst_533:
+// rs1_val==46340 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0x10000, x1, 48, x5)
+
+inst_534:
+// rs1_val==46340 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0x1, x1, 52, x5)
+
+inst_535:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0xb505, x1, 56, x5)
+
+inst_536:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4868, 0xb504, 0x66666667, x1, 60, x5)
+
+inst_537:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2434, 0xb504, 0x33333334, x1, 64, x5)
+
+inst_538:
+// rs1_val==46340 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0x6, x1, 68, x5)
+
+inst_539:
+// rs1_val==46340 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xb504, 0xaaaaaaab, x1, 72, x5)
+
+inst_540:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0xb504, 0x55555556, x1, 76, x5)
+
+inst_541:
+// rs1_val==46340 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0x4, x1, 80, x5)
+
+inst_542:
+// rs1_val==46340 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0xfffe, x1, 84, x5)
+
+inst_543:
+// rs1_val==46340 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0x0, x1, 88, x5)
+
+inst_544:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0xb503, x1, 92, x5)
+
+inst_545:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0xb504, 0x66666665, x1, 96, x5)
+
+inst_546:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0xb504, 0x33333332, x1, 100, x5)
+
+inst_547:
+// rs1_val==46340 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xb504, 0xaaaaaaa9, x1, 104, x5)
+
+inst_548:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0xb504, 0x55555554, x1, 108, x5)
+
+inst_549:
+// rs1_val==46340 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0x2, x1, 112, x5)
+
+inst_550:
+// rs1_val==46340 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0xffff, x1, 116, x5)
+
+inst_551:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0xb504, x1, 120, x5)
+
+inst_552:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0xb504, 0x66666666, x1, 124, x5)
+
+inst_553:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0xb504, 0x33333333, x1, 128, x5)
+
+inst_554:
+// rs1_val==46340 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0x5, x1, 132, x5)
+
+inst_555:
+// rs1_val==46340 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xb504, 0xaaaaaaaa, x1, 136, x5)
+
+inst_556:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0xb504, 0x55555555, x1, 140, x5)
+
+inst_557:
+// rs1_val==46340 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xb504, 0x3, x1, 144, x5)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6666, 0x66666666, 0x10000, x1, 148, x5)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666666, 0x1, x1, 152, x5)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4868, 0x66666666, 0xb505, x1, 156, x5)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28f, 0x66666666, 0x66666667, x1, 160, x5)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333334, x1, 164, x5)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x66666666, 0x6, x1, 168, x5)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444444, 0x66666666, 0xaaaaaaab, x1, 172, x5)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x66666666, 0x55555556, x1, 176, x5)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x66666666, 0x4, x1, 180, x5)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0x66666666, 0xfffe, x1, 184, x5)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666666, 0x0, x1, 188, x5)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0x66666666, 0xb503, x1, 192, x5)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28e, 0x66666666, 0x66666665, x1, 196, x5)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333332, x1, 200, x5)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0x66666666, 0xaaaaaaa9, x1, 204, x5)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x66666666, 0x55555554, x1, 208, x5)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x66666666, 0x2, x1, 212, x5)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6665, 0x66666666, 0xffff, x1, 216, x5)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x4867, 0x66666666, 0xb504, x1, 220, x5)
+
+inst_577:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x28f5c28f, 0x66666666, 0x66666666, x1, 224, x5)
+
+inst_578:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x66666666, 0x33333333, x1, 228, x5)
+
+inst_579:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x66666666, 0x5, x1, 232, x5)
+
+inst_580:
+// rs1_val==1717986918 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0x66666666, 0xaaaaaaaa, x1, 236, x5)
+
+inst_581:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x66666666, 0x55555555, x1, 240, x5)
+
+inst_582:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x66666666, 0x3, x1, 244, x5)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3333, 0x33333333, 0x10000, x1, 248, x5)
+
+inst_584:
+// rs1_val==858993459 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333333, 0x1, x1, 252, x5)
+
+inst_585:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2434, 0x33333333, 0xb505, x1, 256, x5)
+
+inst_586:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666667, x1, 260, x5)
+
+inst_587:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333334, x1, 264, x5)
+
+inst_588:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x33333333, 0x6, x1, 268, x5)
+
+inst_589:
+// rs1_val==858993459 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x33333333, 0xaaaaaaab, x1, 272, x5)
+
+inst_590:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111111, 0x33333333, 0x55555556, x1, 276, x5)
+
+inst_591:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333333, 0x4, x1, 280, x5)
+
+inst_592:
+// rs1_val==858993459 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0x33333333, 0xfffe, x1, 284, x5)
+
+inst_593:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333333, 0x0, x1, 288, x5)
+
+inst_594:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0x33333333, 0xb503, x1, 292, x5)
+
+inst_595:
+// rs1_val==1431655764 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5555, 0x55555554, 0x10000, x1, 296, x5)
+
+inst_596:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666665, x1, 300, x5)
+
+inst_597:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333332, x1, 304, x5)
+
+inst_598:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x55555554, 0x66666667, x1, 308, x5)
+
+inst_599:
+// rs1_val==858993459 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x33333333, 0xaaaaaaa9, x1, 312, x5)
+
+inst_600:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x33333333, 0x55555554, x1, 316, x5)
+
+inst_601:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333333, 0x2, x1, 320, x5)
+
+inst_602:
+// rs1_val==858993459 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3332, 0x33333333, 0xffff, x1, 324, x5)
+
+inst_603:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2433, 0x33333333, 0xb504, x1, 328, x5)
+
+inst_604:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x147ae147, 0x33333333, 0x66666666, x1, 332, x5)
+
+inst_605:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0xa3d70a3, 0x33333333, 0x33333333, x1, 336, x5)
+
+inst_606:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333333, 0x5, x1, 340, x5)
+
+inst_607:
+// rs1_val==858993459 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x33333333, 0xaaaaaaaa, x1, 344, x5)
+
+inst_608:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x33333333, 0x55555555, x1, 348, x5)
+
+inst_609:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x33333333, 0x3, x1, 352, x5)
+
+inst_610:
+// rs1_val==5 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x10000, x1, 356, x5)
+
+inst_611:
+// rs1_val==5 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x1, x1, 360, x5)
+
+inst_612:
+// rs1_val==5 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0xb505, x1, 364, x5)
+
+inst_613:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x5, 0x66666667, x1, 368, x5)
+
+inst_614:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x5, 0x33333334, x1, 372, x5)
+
+inst_615:
+// rs1_val==5 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x6, x1, 376, x5)
+
+inst_616:
+// rs1_val==5 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0x5, 0xaaaaaaab, x1, 380, x5)
+
+inst_617:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x5, 0x55555556, x1, 384, x5)
+
+inst_618:
+// rs1_val==5 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x4, x1, 388, x5)
+
+inst_619:
+// rs1_val==5 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0xfffe, x1, 392, x5)
+
+inst_620:
+// rs1_val==5 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x0, x1, 396, x5)
+
+inst_621:
+// rs1_val==5 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0xb503, x1, 400, x5)
+
+inst_622:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x5, 0x66666665, x1, 404, x5)
+
+inst_623:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x33333332, x1, 408, x5)
+
+inst_624:
+// rs1_val==5 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0x5, 0xaaaaaaa9, x1, 412, x5)
+
+inst_625:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x5, 0x55555554, x1, 416, x5)
+
+inst_626:
+// rs1_val==5 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x2, x1, 420, x5)
+
+inst_627:
+// rs1_val==5 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0xffff, x1, 424, x5)
+
+inst_628:
+// rs1_val==5 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0xb504, x1, 428, x5)
+
+inst_629:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x5, 0x66666666, x1, 432, x5)
+
+inst_630:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x33333333, x1, 436, x5)
+
+inst_631:
+// rs1_val==5 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x5, x1, 440, x5)
+
+inst_632:
+// rs1_val==5 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0x5, 0xaaaaaaaa, x1, 444, x5)
+
+inst_633:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x5, 0x55555555, x1, 448, x5)
+
+inst_634:
+// rs1_val==5 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x5, 0x3, x1, 452, x5)
+
+inst_635:
+// rs1_val==2863311530 and rs2_val==65536, rs1_val == 2863311530
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaaa, 0xaaaaaaaa, 0x10000, x1, 456, x5)
+
+inst_636:
+// rs1_val==2863311530 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x1, x1, 460, x5)
+
+inst_637:
+// rs1_val==2863311530 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xaaaaaaaa, 0xb505, x1, 464, x5)
+
+inst_638:
+// rs1_val==2863311530 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444444, 0xaaaaaaaa, 0x66666667, x1, 468, x5)
+
+inst_639:
+// rs1_val==2863311530 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0xaaaaaaaa, 0x33333334, x1, 472, x5)
+
+inst_640:
+// rs1_val==2863311530 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0xaaaaaaaa, 0x6, x1, 476, x5)
+
+inst_641:
+// rs1_val==2863311530 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c71, 0xaaaaaaaa, 0xaaaaaaab, x1, 480, x5)
+
+inst_642:
+// rs1_val==2863311530 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e39, 0xaaaaaaaa, 0x55555556, x1, 484, x5)
+
+inst_643:
+// rs1_val==2863311530 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0xaaaaaaaa, 0x4, x1, 488, x5)
+
+inst_644:
+// rs1_val==2863311530 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xaaaaaaaa, 0xfffe, x1, 492, x5)
+
+inst_645:
+// rs1_val==2863311530 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x0, x1, 496, x5)
+
+inst_646:
+// rs1_val==2863311530 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ac, 0xaaaaaaaa, 0xb503, x1, 500, x5)
+
+inst_647:
+// rs1_val==2863311530 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0xaaaaaaaa, 0x66666665, x1, 504, x5)
+
+inst_648:
+// rs1_val==2863311530 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0xaaaaaaaa, 0x33333332, x1, 508, x5)
+
+inst_649:
+// rs1_val==2863311530 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c70, 0xaaaaaaaa, 0xaaaaaaa9, x1, 512, x5)
+
+inst_650:
+// rs1_val==2863311530 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e37, 0xaaaaaaaa, 0x55555554, x1, 516, x5)
+
+inst_651:
+// rs1_val==2863311530 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0x2, x1, 520, x5)
+
+inst_652:
+// rs1_val==2863311530 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xaaa9, 0xaaaaaaaa, 0xffff, x1, 524, x5)
+
+inst_653:
+// rs1_val==2863311530 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x78ad, 0xaaaaaaaa, 0xb504, x1, 528, x5)
+
+inst_654:
+// rs1_val==2863311530 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x44444443, 0xaaaaaaaa, 0x66666666, x1, 532, x5)
+
+inst_655:
+// rs1_val==2863311530 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0xaaaaaaaa, 0x33333333, x1, 536, x5)
+
+inst_656:
+// rs1_val==2863311530 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0xaaaaaaaa, 0x5, x1, 540, x5)
+
+inst_657:
+// rs1_val==2863311530 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c70, 0xaaaaaaaa, 0xaaaaaaaa, x1, 544, x5)
+
+inst_658:
+// rs1_val==2863311530 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0xaaaaaaaa, 0x55555555, x1, 548, x5)
+
+inst_659:
+// rs1_val==2863311530 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0x3, x1, 552, x5)
+
+inst_660:
+// rs1_val==1431655765 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5555, 0x55555555, 0x10000, x1, 556, x5)
+
+inst_661:
+// rs1_val==1431655765 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555555, 0x1, x1, 560, x5)
+
+inst_662:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0x55555555, 0xb505, x1, 564, x5)
+
+inst_663:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222222, 0x55555555, 0x66666667, x1, 568, x5)
+
+inst_664:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111111, 0x55555555, 0x33333334, x1, 572, x5)
+
+inst_665:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555555, 0x6, x1, 576, x5)
+
+inst_666:
+// rs1_val==1431655765 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0x55555555, 0xaaaaaaab, x1, 580, x5)
+
+inst_667:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71c, 0x55555555, 0x55555556, x1, 584, x5)
+
+inst_668:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555555, 0x4, x1, 588, x5)
+
+inst_669:
+// rs1_val==1431655765 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0x55555555, 0xfffe, x1, 592, x5)
+
+inst_670:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555555, 0x0, x1, 596, x5)
+
+inst_671:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0x55555555, 0xb503, x1, 600, x5)
+
+inst_672:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x55555555, 0x66666665, x1, 604, x5)
+
+inst_673:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x55555555, 0x33333332, x1, 608, x5)
+
+inst_674:
+// rs1_val==1431655765 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0x55555555, 0xaaaaaaa9, x1, 612, x5)
+
+inst_675:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71b, 0x55555555, 0x55555554, x1, 616, x5)
+
+inst_676:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555555, 0x2, x1, 620, x5)
+
+inst_677:
+// rs1_val==1431655765 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x5554, 0x55555555, 0xffff, x1, 624, x5)
+
+inst_678:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0x55555555, 0xb504, x1, 628, x5)
+
+inst_679:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x22222221, 0x55555555, 0x66666666, x1, 632, x5)
+
+inst_680:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111110, 0x55555555, 0x33333333, x1, 636, x5)
+
+inst_681:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555555, 0x5, x1, 640, x5)
+
+inst_682:
+// rs1_val==1431655765 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0x55555555, 0xaaaaaaaa, x1, 644, x5)
+
+inst_683:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71c, 0x55555555, 0x55555555, x1, 648, x5)
+
+inst_684:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555555, 0x3, x1, 652, x5)
+
+inst_685:
+// rs1_val==3 and rs2_val==65536,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x10000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x10000, x1, 656, x5)
+
+inst_686:
+// rs1_val==3 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x1, x1, 660, x5)
+
+inst_687:
+// rs1_val==3 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0xb505, x1, 664, x5)
+
+inst_688:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x3, 0x66666667, x1, 668, x5)
+
+inst_689:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x33333334, x1, 672, x5)
+
+inst_690:
+// rs1_val==3 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x6, x1, 676, x5)
+
+inst_691:
+// rs1_val==3 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x2, 0x3, 0xaaaaaaab, x1, 680, x5)
+
+inst_692:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x3, 0x55555556, x1, 684, x5)
+
+inst_693:
+// rs1_val==3 and rs2_val==4,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x4, x1, 688, x5)
+
+inst_694:
+// rs1_val==3 and rs2_val==65534,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xfffe
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0xfffe, x1, 692, x5)
+
+inst_695:
+// rs1_val==3 and rs2_val==0,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x0, x1, 696, x5)
+
+inst_696:
+// rs1_val==3 and rs2_val==46339,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0xb503, x1, 700, x5)
+
+inst_697:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x3, 0x66666665, x1, 704, x5)
+
+inst_698:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x33333332, x1, 708, x5)
+
+inst_699:
+// rs1_val==3 and rs2_val==2863311529,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaa9
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x3, 0xaaaaaaa9, x1, 712, x5)
+
+inst_700:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x55555554, x1, 716, x5)
+
+inst_701:
+// rs1_val==3 and rs2_val==2,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x2, x1, 720, x5)
+
+inst_702:
+// rs1_val==3 and rs2_val==65535,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0xffff, x1, 724, x5)
+
+inst_703:
+// rs1_val==3 and rs2_val==46340,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0xb504, x1, 728, x5)
+
+inst_704:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x3, 0x66666666, x1, 732, x5)
+
+inst_705:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x33333333, x1, 736, x5)
+
+inst_706:
+// rs1_val==3 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x5, x1, 740, x5)
+
+inst_707:
+// rs1_val==3 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x3, 0xaaaaaaaa, x1, 744, x5)
+
+inst_708:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x55555555, x1, 748, x5)
+
+inst_709:
+// rs1_val==3 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x3, 0x3, x1, 752, x5)
+
+inst_710:
+// rs1_val==2863311529 and rs2_val==5,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x5
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3, 0xaaaaaaa9, 0x5, x1, 756, x5)
+
+inst_711:
+// rs1_val==2863311529 and rs2_val==2863311530,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaaa
+TEST_RR_OP(mulhu, x12, x10, x11, 0x71c71c70, 0xaaaaaaa9, 0xaaaaaaaa, x1, 760, x5)
+
+inst_712:
+// rs1_val == (2**(xlen)-1),
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff; op2val:0x2000
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1fff, 0xffffffff, 0x2000, x1, 764, x5)
+
+inst_713:
+// rs1_val==2863311529 and rs2_val==1431655765,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555555
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0xaaaaaaa9, 0x55555555, x1, 768, x5)
+
+inst_714:
+// rs1_val==2863311529 and rs2_val==3,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x3
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x3, x1, 772, x5)
+
+inst_715:
+// rs1_val==1431655764 and rs2_val==1,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x1
+TEST_RR_OP(mulhu, x12, x10, x11, 0x0, 0x55555554, 0x1, x1, 776, x5)
+
+inst_716:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(mulhu, x12, x10, x11, 0x3c56, 0x55555554, 0xb505, x1, 780, x5)
+
+inst_717:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(mulhu, x12, x10, x11, 0x11111111, 0x55555554, 0x33333334, x1, 784, x5)
+
+inst_718:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1, 0x55555554, 0x6, x1, 788, x5)
+
+inst_719:
+// rs1_val==1431655764 and rs2_val==2863311531,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaab
+TEST_RR_OP(mulhu, x12, x10, x11, 0x38e38e38, 0x55555554, 0xaaaaaaab, x1, 792, x5)
+
+inst_720:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(mulhu, x12, x10, x11, 0x1c71c71c, 0x55555554, 0x55555556, x1, 796, x5)
+
+inst_721:
+// rs2_val == 3221225471, rs1_val == 4294443007
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0xfff7ffff; op2val:0xbfffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0xbff9fffe, 0xfff7ffff, 0xbfffffff, x1, 800, x5)
+
+inst_722:
+// rs2_val == 3758096383, rs1_val == 524288
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0xdfffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x6ffff, 0x80000, 0xdfffffff, x1, 804, x5)
+
+inst_723:
+// rs2_val == 4261412863,
+// opcode: mulhu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xfdffffff
+TEST_RR_OP(mulhu, x12, x10, x11, 0x54aaaaa9, 0x55555554, 0xfdffffff, x1, 808, x5)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x8_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_1:
+ .fill 9*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 203*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/rem-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/rem-01.S
new file mode 100644
index 000000000..e677078d3
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/rem-01.S
@@ -0,0 +1,3015 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 07:22:49 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32em.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the rem instruction of the RISC-V M extension for the rem covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EM")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*M.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",rem)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs2 == rd != rs1, rs1==x11, rs2==x12, rd==x12, rs1_val != rs2_val, rs2_val == -4194305, rs1_val > 0 and rs2_val < 0
+// opcode: rem ; op1:x11; op2:x12; dest:x12; op1val:0xb503; op2val:-0x400001
+TEST_RR_OP(rem, x12, x11, x12, 0xb503, 0xb503, -0x400001, x1, 0, x3)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x8, rs2==x7, rd==x8, rs2_val == 2147483647, rs1_val > 0 and rs2_val > 0, rs2_val == (2**(xlen-1)-1), rs1_val == 2048
+// opcode: rem ; op1:x8; op2:x7; dest:x8; op1val:0x800; op2val:0x7fffffff
+TEST_RR_OP(rem, x8, x8, x7, 0x800, 0x800, 0x7fffffff, x1, 4, x3)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x15, rs2==x15, rd==x15, rs2_val == -1073741825, rs1_val < 0 and rs2_val < 0, rs1_val == -67108865
+// opcode: rem ; op1:x15; op2:x15; dest:x15; op1val:-0x4000001; op2val:-0x4000001
+TEST_RR_OP(rem, x15, x15, x15, 0x0, -0x4000001, -0x4000001, x1, 8, x3)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x13, rs2==x13, rd==x9, rs2_val == -536870913, rs1_val == -131073
+// opcode: rem ; op1:x13; op2:x13; dest:x9; op1val:-0x20001; op2val:-0x20001
+TEST_RR_OP(rem, x9, x13, x13, 0x0, -0x20001, -0x20001, x1, 12, x3)
+
+inst_4:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x6, rs2==x14, rd==x2, rs2_val == -268435457, rs1_val == -257
+// opcode: rem ; op1:x6; op2:x14; dest:x2; op1val:-0x101; op2val:-0x10000001
+TEST_RR_OP(rem, x2, x6, x14, -0x101, -0x101, -0x10000001, x1, 16, x3)
+
+inst_5:
+// rs1==x10, rs2==x2, rd==x5, rs2_val == -134217729, rs1_val == -8388609
+// opcode: rem ; op1:x10; op2:x2; dest:x5; op1val:-0x800001; op2val:-0x8000001
+TEST_RR_OP(rem, x5, x10, x2, -0x800001, -0x800001, -0x8000001, x1, 20, x3)
+RVTEST_SIGBASE( x8,signature_x8_0)
+
+inst_6:
+// rs1==x1, rs2==x11, rd==x3, rs2_val == -67108865,
+// opcode: rem ; op1:x1; op2:x11; dest:x3; op1val:0x33333332; op2val:-0x4000001
+TEST_RR_OP(rem, x3, x1, x11, 0x3333326, 0x33333332, -0x4000001, x8, 0, x12)
+
+inst_7:
+// rs1==x14, rs2==x0, rd==x4, rs2_val == -33554433, rs1_val == 67108864
+// opcode: rem ; op1:x14; op2:x0; dest:x4; op1val:0x4000000; op2val:0x0
+TEST_RR_OP(rem, x4, x14, x0, 0x4000000, 0x4000000, 0x0, x8, 4, x12)
+
+inst_8:
+// rs1==x9, rs2==x6, rd==x14, rs2_val == -16777217, rs1_val == 1024
+// opcode: rem ; op1:x9; op2:x6; dest:x14; op1val:0x400; op2val:-0x1000001
+TEST_RR_OP(rem, x14, x9, x6, 0x400, 0x400, -0x1000001, x8, 8, x12)
+
+inst_9:
+// rs1==x2, rs2==x5, rd==x11, rs2_val == -8388609, rs1_val == -17
+// opcode: rem ; op1:x2; op2:x5; dest:x11; op1val:-0x11; op2val:-0x800001
+TEST_RR_OP(rem, x11, x2, x5, -0x11, -0x11, -0x800001, x8, 12, x12)
+
+inst_10:
+// rs1==x5, rs2==x9, rd==x13, rs2_val == -2097153, rs1_val == 2
+// opcode: rem ; op1:x5; op2:x9; dest:x13; op1val:0x2; op2val:-0x200001
+TEST_RR_OP(rem, x13, x5, x9, 0x2, 0x2, -0x200001, x8, 16, x12)
+
+inst_11:
+// rs1==x7, rs2==x10, rd==x1, rs2_val == -1048577,
+// opcode: rem ; op1:x7; op2:x10; dest:x1; op1val:-0x40000000; op2val:-0x100001
+TEST_RR_OP(rem, x1, x7, x10, -0xffc01, -0x40000000, -0x100001, x8, 20, x12)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_12:
+// rs1==x0, rs2==x1, rd==x6, rs2_val == -524289,
+// opcode: rem ; op1:x0; op2:x1; dest:x6; op1val:0x0; op2val:-0x80001
+TEST_RR_OP(rem, x6, x0, x1, 0x0, 0x0, -0x80001, x2, 0, x5)
+
+inst_13:
+// rs1==x4, rs2==x3, rd==x10, rs2_val == -262145,
+// opcode: rem ; op1:x4; op2:x3; dest:x10; op1val:0x33333334; op2val:-0x40001
+TEST_RR_OP(rem, x10, x4, x3, 0x32668, 0x33333334, -0x40001, x2, 4, x5)
+
+inst_14:
+// rs1==x3, rs2==x8, rd==x7, rs2_val == -131073, rs1_val == 4
+// opcode: rem ; op1:x3; op2:x8; dest:x7; op1val:0x4; op2val:-0x20001
+TEST_RR_OP(rem, x7, x3, x8, 0x4, 0x4, -0x20001, x2, 8, x5)
+
+inst_15:
+// rs1==x12, rs2==x4, rd==x0, rs2_val == -65537,
+// opcode: rem ; op1:x12; op2:x4; dest:x0; op1val:-0x55555555; op2val:-0x10001
+TEST_RR_OP(rem, x0, x12, x4, 0, -0x55555555, -0x10001, x2, 12, x5)
+
+inst_16:
+// rs2_val == -32769, rs1_val == -536870913
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:-0x8001
+TEST_RR_OP(rem, x12, x10, x11, -0x4002, -0x20000001, -0x8001, x2, 16, x5)
+
+inst_17:
+// rs2_val == -16385, rs1_val == 1431655765
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x4001
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x55555555, -0x4001, x2, 20, x5)
+
+inst_18:
+// rs2_val == -8193, rs1_val == 0
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x2001
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, -0x2001, x2, 24, x5)
+
+inst_19:
+// rs2_val == -4097,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x1001
+TEST_RR_OP(rem, x12, x10, x11, -0x4f9, -0xb504, -0x1001, x2, 28, x5)
+
+inst_20:
+// rs2_val == -2049,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x801
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, -0x801, x2, 32, x5)
+
+inst_21:
+// rs2_val == -1025, rs1_val == 2147483647, rs1_val == (2**(xlen-1)-1)
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:-0x401
+TEST_RR_OP(rem, x12, x10, x11, 0x3fe, 0x7fffffff, -0x401, x2, 36, x5)
+
+inst_22:
+// rs2_val == -513,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x201
+TEST_RR_OP(rem, x12, x10, x11, 0x60, 0x33333333, -0x201, x2, 40, x5)
+
+inst_23:
+// rs2_val == -257,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:-0x101
+TEST_RR_OP(rem, x12, x10, x11, -0x3, -0x20001, -0x101, x2, 44, x5)
+
+inst_24:
+// rs2_val == -129, rs1_val == -65537
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x81
+TEST_RR_OP(rem, x12, x10, x11, -0x5, -0x10001, -0x81, x2, 48, x5)
+
+inst_25:
+// rs2_val == -65, rs1_val == 131072
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x20000; op2val:-0x41
+TEST_RR_OP(rem, x12, x10, x11, 0x20, 0x20000, -0x41, x2, 52, x5)
+
+inst_26:
+// rs2_val == -33, rs1_val == -524289
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:-0x21
+TEST_RR_OP(rem, x12, x10, x11, -0x12, -0x80001, -0x21, x2, 56, x5)
+
+inst_27:
+// rs2_val == -17, rs1_val == 8
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:-0x11
+TEST_RR_OP(rem, x12, x10, x11, 0x8, 0x8, -0x11, x2, 60, x5)
+
+inst_28:
+// rs2_val == -9,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:-0x9
+TEST_RR_OP(rem, x12, x10, x11, 0x8, 0x8, -0x9, x2, 64, x5)
+
+inst_29:
+// rs2_val == -5, rs1_val == -129
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:-0x5
+TEST_RR_OP(rem, x12, x10, x11, -0x4, -0x81, -0x5, x2, 68, x5)
+
+inst_30:
+// rs2_val == -3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x3
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555555, -0x3, x2, 72, x5)
+
+inst_31:
+// rs2_val == -2, rs1_val == 32768
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:-0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x8000, -0x2, x2, 76, x5)
+
+inst_32:
+// rs1_val == -1073741825,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:-0x10001
+TEST_RR_OP(rem, x12, x10, x11, -0xc002, -0x40000001, -0x10001, x2, 80, x5)
+
+inst_33:
+// rs1_val == -268435457, rs1_val < 0 and rs2_val > 0, rs2_val == 2
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x10000001, 0x2, x2, 84, x5)
+
+inst_34:
+// rs1_val == -134217729,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x801
+TEST_RR_OP(rem, x12, x10, x11, -0x21, -0x8000001, -0x801, x2, 88, x5)
+
+inst_35:
+// rs1_val == -33554433,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, -0x2000001, -0x2000001, 0x33333333, x2, 92, x5)
+
+inst_36:
+// rs1_val == -16777217,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, -0x1000001, -0x1000001, 0x33333334, x2, 96, x5)
+
+inst_37:
+// rs1_val == -4194305, rs2_val == 268435456
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:0x10000000
+TEST_RR_OP(rem, x12, x10, x11, -0x400001, -0x400001, 0x10000000, x2, 100, x5)
+
+inst_38:
+// rs1_val == -2097153, rs2_val == 1431655765
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, -0x200001, -0x200001, 0x55555555, x2, 104, x5)
+
+inst_39:
+// rs1_val == -1048577,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:-0x40000000
+TEST_RR_OP(rem, x12, x10, x11, -0x100001, -0x100001, -0x40000000, x2, 108, x5)
+
+inst_40:
+// rs1_val == -262145,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, -0x76ed, -0x40001, -0xb504, x2, 112, x5)
+
+inst_41:
+// rs1_val == -32769,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x8001; op2val:0x10000000
+TEST_RR_OP(rem, x12, x10, x11, -0x8001, -0x8001, 0x10000000, x2, 116, x5)
+
+inst_42:
+// rs1_val == -16385,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:0x7
+TEST_RR_OP(rem, x12, x10, x11, -0x5, -0x4001, 0x7, x2, 120, x5)
+
+inst_43:
+// rs1_val == -8193,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:-0x4
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x2001, -0x4, x2, 124, x5)
+
+inst_44:
+// rs1_val == -4097, rs2_val == 4096
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:0x1000
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x1001, 0x1000, x2, 128, x5)
+
+inst_45:
+// rs1_val == -2049, rs2_val == 536870912
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x20000000
+TEST_RR_OP(rem, x12, x10, x11, -0x801, -0x801, 0x20000000, x2, 132, x5)
+
+inst_46:
+// rs1_val == -1025,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, -0x401, -0x401, 0x33333334, x2, 136, x5)
+
+inst_47:
+// rs1_val == -513, rs2_val == 0
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, -0x201, -0x201, 0x0, x2, 140, x5)
+
+inst_48:
+// rs1_val == -65,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, -0x41, -0x41, 0xb504, x2, 144, x5)
+
+inst_49:
+// rs1_val == -33,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, -0x21, -0x21, -0x55555555, x2, 148, x5)
+
+inst_50:
+// rs1_val == -9,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, -0x9, -0x9, 0x55555554, x2, 152, x5)
+
+inst_51:
+// rs1_val == -5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0x9
+TEST_RR_OP(rem, x12, x10, x11, -0x5, -0x5, 0x9, x2, 156, x5)
+
+inst_52:
+// rs1_val == -3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x6
+TEST_RR_OP(rem, x12, x10, x11, -0x3, -0x3, -0x6, x2, 160, x5)
+
+inst_53:
+// rs1_val == -2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, -0x2, -0x2, 0x66666665, x2, 164, x5)
+
+inst_54:
+// rs2_val == -2147483648, rs1_val == 256, rs2_val == (-2**(xlen-1))
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:-0x80000000
+TEST_RR_OP(rem, x12, x10, x11, 0x100, 0x100, -0x80000000, x2, 168, x5)
+
+inst_55:
+// rs2_val == 1073741824, rs1_val == -1431655766
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x40000000
+TEST_RR_OP(rem, x12, x10, x11, -0x15555556, -0x55555556, 0x40000000, x2, 172, x5)
+
+inst_56:
+// rs2_val == 134217728,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x8000000
+TEST_RR_OP(rem, x12, x10, x11, -0x21, -0x21, 0x8000000, x2, 176, x5)
+
+inst_57:
+// rs2_val == 67108864,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4000000
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x4000000, x2, 180, x5)
+
+inst_58:
+// rs2_val == 33554432, rs1_val == 16
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x2000000
+TEST_RR_OP(rem, x12, x10, x11, 0x10, 0x10, 0x2000000, x2, 184, x5)
+
+inst_59:
+// rs2_val == 16777216,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x1000000
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x1000000, x2, 188, x5)
+
+inst_60:
+// rs2_val == 8388608,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x800000
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x800000, x2, 192, x5)
+
+inst_61:
+// rs2_val == 4194304,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x400000
+TEST_RR_OP(rem, x12, x10, x11, 0x266667, 0x66666667, 0x400000, x2, 196, x5)
+
+inst_62:
+// rs2_val == 2097152,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x200000
+TEST_RR_OP(rem, x12, x10, x11, -0x155556, -0x55555556, 0x200000, x2, 200, x5)
+
+inst_63:
+// rs2_val == 1048576, rs1_val == 32
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x100000
+TEST_RR_OP(rem, x12, x10, x11, 0x20, 0x20, 0x100000, x2, 204, x5)
+
+inst_64:
+// rs2_val == 524288,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0x80000
+TEST_RR_OP(rem, x12, x10, x11, 0x7, 0x7, 0x80000, x2, 208, x5)
+
+inst_65:
+// rs2_val == 262144,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x40000
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x40000, x2, 212, x5)
+
+inst_66:
+// rs2_val == 131072,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x20000
+TEST_RR_OP(rem, x12, x10, x11, 0x6667, 0x66666667, 0x20000, x2, 216, x5)
+
+inst_67:
+// rs2_val == 65536,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x10000
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x10000, x2, 220, x5)
+
+inst_68:
+// rs2_val == 32768, rs1_val == 65536
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x8000
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x10000, 0x8000, x2, 224, x5)
+
+inst_69:
+// rs2_val == 16384, rs1_val == 1048576
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x4000
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x100000, 0x4000, x2, 228, x5)
+
+inst_70:
+// rs2_val == 8192, rs1_val == 33554432
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x2000
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x2000000, 0x2000, x2, 232, x5)
+
+inst_71:
+// rs2_val == 2048,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x800
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x2000000, 0x800, x2, 236, x5)
+
+inst_72:
+// rs2_val == 1024,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x400
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x1000001, 0x400, x2, 240, x5)
+
+inst_73:
+// rs2_val == 512,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:0x200
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x10001, 0x200, x2, 244, x5)
+
+inst_74:
+// rs2_val == 256,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x7; op2val:0x100
+TEST_RR_OP(rem, x12, x10, x11, -0x7, -0x7, 0x100, x2, 248, x5)
+
+inst_75:
+// rs2_val == 128,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x80
+TEST_RR_OP(rem, x12, x10, x11, 0x8, 0x8, 0x80, x2, 252, x5)
+
+inst_76:
+// rs2_val == 64, rs1_val == 8192
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x40
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x2000, 0x40, x2, 256, x5)
+
+inst_77:
+// rs2_val == 32,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x20
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x66666665, 0x20, x2, 260, x5)
+
+inst_78:
+// rs2_val == 16,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x10
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x100000, 0x10, x2, 264, x5)
+
+inst_79:
+// rs2_val == 8,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x8
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x20, 0x8, x2, 268, x5)
+
+inst_80:
+// rs2_val == 4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x4; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0x4, 0x4, x2, 272, x5)
+
+inst_81:
+// rs2_val == 1, rs1_val == -2147483648, rs1_val == (-2**(xlen-1))
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000; op2val:0x1
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0x80000000, 0x1, x2, 276, x5)
+
+inst_82:
+// rs1_val == 1073741824,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:-0x101
+TEST_RR_OP(rem, x12, x10, x11, 0xc1, 0x40000000, -0x101, x2, 280, x5)
+
+inst_83:
+// rs1_val == 536870912,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x3fffffff
+TEST_RR_OP(rem, x12, x10, x11, 0x20000000, 0x20000000, 0x3fffffff, x2, 284, x5)
+
+inst_84:
+// rs1_val == 268435456,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x10000000, 0x4, x2, 288, x5)
+
+inst_85:
+// rs1_val == 134217728,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x2000000
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x8000000, 0x2000000, x2, 292, x5)
+
+inst_86:
+// rs1_val == 16777216,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0x3fffffff
+TEST_RR_OP(rem, x12, x10, x11, 0x1000000, 0x1000000, 0x3fffffff, x2, 296, x5)
+
+inst_87:
+// rs1_val == 8388608,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x800000, 0x800000, 0x66666667, x2, 300, x5)
+
+inst_88:
+// rs1_val == 4194304,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x200
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x400000, 0x200, x2, 304, x5)
+
+inst_89:
+// rs1_val == 2097152,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:-0x400001
+TEST_RR_OP(rem, x12, x10, x11, 0x200000, 0x200000, -0x400001, x2, 308, x5)
+
+inst_90:
+// rs1_val == 524288,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x80000, 0x80000, 0x33333333, x2, 312, x5)
+
+inst_91:
+// rs1_val == 262144,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x8
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x40000, 0x8, x2, 316, x5)
+
+inst_92:
+// rs1_val == 16384,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x4000, 0x3, x2, 320, x5)
+
+inst_93:
+// rs1_val == 4096,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:-0x11
+TEST_RR_OP(rem, x12, x10, x11, 0x10, 0x1000, -0x11, x2, 324, x5)
+
+inst_94:
+// rs1_val == 512,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:-0x2000001
+TEST_RR_OP(rem, x12, x10, x11, 0x200, 0x200, -0x2000001, x2, 328, x5)
+
+inst_95:
+// rs1_val == 128,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:-0x1
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x80, -0x1, x2, 332, x5)
+
+inst_96:
+// rs1_val == 64,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:-0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x40, -0x3, x2, 336, x5)
+
+inst_97:
+// rs1_val == 1,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:-0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x1, -0x3, x2, 340, x5)
+
+inst_98:
+// rs1_val==46341 and rs2_val==46341, rs1_val == rs2_val
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb505, 0xb505, x2, 344, x5)
+
+inst_99:
+// rs1_val==46341 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0xb505, -0xb503, x2, 348, x5)
+
+inst_100:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x66666667, x2, 352, x5)
+
+inst_101:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x33333334, x2, 356, x5)
+
+inst_102:
+// rs1_val==46341 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0xb505, 0x6, x2, 360, x5)
+
+inst_103:
+// rs1_val==46341 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, -0x55555555, x2, 364, x5)
+
+inst_104:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x55555556, x2, 368, x5)
+
+inst_105:
+// rs1_val==46341 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb505, 0x4, x2, 372, x5)
+
+inst_106:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0xb505, 0xb503, x2, 376, x5)
+
+inst_107:
+// rs1_val==46341 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x0, x2, 380, x5)
+
+inst_108:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x66666665, x2, 384, x5)
+
+inst_109:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x33333332, x2, 388, x5)
+
+inst_110:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x55555554, x2, 392, x5)
+
+inst_111:
+// rs1_val==46341 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb505, 0x2, x2, 396, x5)
+
+inst_112:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb505, 0xb504, x2, 400, x5)
+
+inst_113:
+// rs1_val==46341 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb505, -0xb504, x2, 404, x5)
+
+inst_114:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x66666666, x2, 408, x5)
+
+inst_115:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x33333333, x2, 412, x5)
+
+inst_116:
+// rs1_val==46341 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb505, 0x5, x2, 416, x5)
+
+inst_117:
+// rs1_val==46341 and rs2_val==-1431655766, rs2_val == -1431655766
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, -0x55555556, x2, 420, x5)
+
+inst_118:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0xb505, 0xb505, 0x55555555, x2, 424, x5)
+
+inst_119:
+// rs1_val==46341 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb505, 0x3, x2, 428, x5)
+
+inst_120:
+// rs1_val==-46339 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0xb505, x2, 432, x5)
+
+inst_121:
+// rs1_val==-46339 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0xb503, -0xb503, x2, 436, x5)
+
+inst_122:
+// rs1_val==-46339 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x66666667, x2, 440, x5)
+
+inst_123:
+// rs1_val==-46339 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x33333334, x2, 444, x5)
+
+inst_124:
+// rs1_val==-46339 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0xb503, 0x6, x2, 448, x5)
+
+inst_125:
+// rs1_val==-46339 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, -0x55555555, x2, 452, x5)
+
+inst_126:
+// rs1_val==-46339 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x55555556, x2, 456, x5)
+
+inst_127:
+// rs1_val==-46339 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, -0x3, -0xb503, 0x4, x2, 460, x5)
+
+inst_128:
+// rs1_val==-46339 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0xb503, 0xb503, x2, 464, x5)
+
+inst_129:
+// rs1_val==-46339 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x0, x2, 468, x5)
+
+inst_130:
+// rs1_val==-46339 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x66666665, x2, 472, x5)
+
+inst_131:
+// rs1_val==-46339 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x33333332, x2, 476, x5)
+
+inst_132:
+// rs1_val==-46339 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x55555554, x2, 480, x5)
+
+inst_133:
+// rs1_val==-46339 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0xb503, 0x2, x2, 484, x5)
+
+inst_134:
+// rs1_val==-46339 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0xb504, x2, 488, x5)
+
+inst_135:
+// rs1_val==-46339 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, -0xb504, x2, 492, x5)
+
+inst_136:
+// rs1_val==-46339 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x66666666, x2, 496, x5)
+
+inst_137:
+// rs1_val==-46339 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x33333333, x2, 500, x5)
+
+inst_138:
+// rs1_val==-46339 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, -0x4, -0xb503, 0x5, x2, 504, x5)
+
+inst_139:
+// rs1_val==-46339 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, -0x55555556, x2, 508, x5)
+
+inst_140:
+// rs1_val==-46339 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, -0xb503, -0xb503, 0x55555555, x2, 512, x5)
+
+inst_141:
+// rs1_val==-46339 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb503; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0xb503, 0x3, x2, 516, x5)
+
+inst_142:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x8257, 0x66666667, 0xb505, x2, 520, x5)
+
+inst_143:
+// rs1_val==1717986919 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x39f1, 0x66666667, -0xb503, x2, 524, x5)
+
+inst_144:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x66666667, 0x66666667, x2, 528, x5)
+
+inst_145:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x66666667, 0x33333334, x2, 532, x5)
+
+inst_146:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666667, 0x6, x2, 536, x5)
+
+inst_147:
+// rs1_val==1717986919 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x11111112, 0x66666667, -0x55555555, x2, 540, x5)
+
+inst_148:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x11111111, 0x66666667, 0x55555556, x2, 544, x5)
+
+inst_149:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x66666667, 0x4, x2, 548, x5)
+
+inst_150:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x39f1, 0x66666667, 0xb503, x2, 552, x5)
+
+inst_151:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x66666667, 0x66666667, 0x0, x2, 556, x5)
+
+inst_152:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x66666667, 0x66666665, x2, 560, x5)
+
+inst_153:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x66666667, 0x33333332, x2, 564, x5)
+
+inst_154:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x11111113, 0x66666667, 0x55555554, x2, 568, x5)
+
+inst_155:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666667, 0x2, x2, 572, x5)
+
+inst_156:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x5e23, 0x66666667, 0xb504, x2, 576, x5)
+
+inst_157:
+// rs1_val==1717986919 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x5e23, 0x66666667, -0xb504, x2, 580, x5)
+
+inst_158:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666667, 0x66666666, x2, 584, x5)
+
+inst_159:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666667, 0x33333333, x2, 588, x5)
+
+inst_160:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x66666667, 0x5, x2, 592, x5)
+
+inst_161:
+// rs1_val==1717986919 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x11111111, 0x66666667, -0x55555556, x2, 596, x5)
+
+inst_162:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x11111112, 0x66666667, 0x55555555, x2, 600, x5)
+
+inst_163:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666667, 0x3, x2, 604, x5)
+
+inst_164:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x412c, 0x33333334, 0xb505, x2, 608, x5)
+
+inst_165:
+// rs1_val==858993460 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x1cf9, 0x33333334, -0xb503, x2, 612, x5)
+
+inst_166:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, 0x66666667, x2, 616, x5)
+
+inst_167:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x33333334, 0x33333334, x2, 620, x5)
+
+inst_168:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x33333334, 0x6, x2, 624, x5)
+
+inst_169:
+// rs1_val==858993460 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, -0x55555555, x2, 628, x5)
+
+inst_170:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, 0x55555556, x2, 632, x5)
+
+inst_171:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x33333334, 0x4, x2, 636, x5)
+
+inst_172:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x1cf9, 0x33333334, 0xb503, x2, 640, x5)
+
+inst_173:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, 0x0, x2, 644, x5)
+
+inst_174:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, 0x66666665, x2, 648, x5)
+
+inst_175:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x33333334, 0x33333332, x2, 652, x5)
+
+inst_176:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, 0x55555554, x2, 656, x5)
+
+inst_177:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x33333334, 0x2, x2, 660, x5)
+
+inst_178:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x8994, 0x33333334, 0xb504, x2, 664, x5)
+
+inst_179:
+// rs1_val==858993460 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x8994, 0x33333334, -0xb504, x2, 668, x5)
+
+inst_180:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, 0x66666666, x2, 672, x5)
+
+inst_181:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x33333334, 0x33333333, x2, 676, x5)
+
+inst_182:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x33333334, 0x5, x2, 680, x5)
+
+inst_183:
+// rs1_val==858993460 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, -0x55555556, x2, 684, x5)
+
+inst_184:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x33333334, 0x33333334, 0x55555555, x2, 688, x5)
+
+inst_185:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x33333334, 0x3, x2, 692, x5)
+
+inst_186:
+// rs1_val==6 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0xb505, x2, 696, x5)
+
+inst_187:
+// rs1_val==6 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, -0xb503, x2, 700, x5)
+
+inst_188:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x66666667, x2, 704, x5)
+
+inst_189:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x33333334, x2, 708, x5)
+
+inst_190:
+// rs1_val==6 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x6, 0x6, x2, 712, x5)
+
+inst_191:
+// rs1_val==6 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, -0x55555555, x2, 716, x5)
+
+inst_192:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x55555556, x2, 720, x5)
+
+inst_193:
+// rs1_val==6 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x6, 0x4, x2, 724, x5)
+
+inst_194:
+// rs1_val==6 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0xb503, x2, 728, x5)
+
+inst_195:
+// rs1_val==6 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x0, x2, 732, x5)
+
+inst_196:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x66666665, x2, 736, x5)
+
+inst_197:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x33333332, x2, 740, x5)
+
+inst_198:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x55555554, x2, 744, x5)
+
+inst_199:
+// rs1_val==6 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x6, 0x2, x2, 748, x5)
+
+inst_200:
+// rs1_val==6 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0xb504, x2, 752, x5)
+
+inst_201:
+// rs1_val==6 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, -0xb504, x2, 756, x5)
+
+inst_202:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x66666666, x2, 760, x5)
+
+inst_203:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x33333333, x2, 764, x5)
+
+inst_204:
+// rs1_val==6 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x6, 0x5, x2, 768, x5)
+
+inst_205:
+// rs1_val==6 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, -0x55555556, x2, 772, x5)
+
+inst_206:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x6, 0x6, 0x55555555, x2, 776, x5)
+
+inst_207:
+// rs1_val==6 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x6, 0x3, x2, 780, x5)
+
+inst_208:
+// rs1_val==-1431655765 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, -0xa8f4, -0x55555555, 0xb505, x2, 784, x5)
+
+inst_209:
+// rs1_val==-1431655765 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, -0x3048, -0x55555555, -0xb503, x2, 788, x5)
+
+inst_210:
+// rs1_val==-1431655765 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, -0x55555555, -0x55555555, 0x66666667, x2, 792, x5)
+
+inst_211:
+// rs1_val==-1431655765 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, -0x22222221, -0x55555555, 0x33333334, x2, 796, x5)
+
+inst_212:
+// rs1_val==-1431655765 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555555, 0x6, x2, 800, x5)
+
+inst_213:
+// rs1_val==-1431655765 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0x55555555, -0x55555555, x2, 804, x5)
+
+inst_214:
+// rs1_val==-1431655765 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, -0x55555555, -0x55555555, 0x55555556, x2, 808, x5)
+
+inst_215:
+// rs1_val==-1431655765 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555555, 0x4, x2, 812, x5)
+
+inst_216:
+// rs1_val==-1431655765 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, -0x3048, -0x55555555, 0xb503, x2, 816, x5)
+
+inst_217:
+// rs1_val==-1431655765 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, -0x55555555, -0x55555555, 0x0, x2, 820, x5)
+
+inst_218:
+// rs1_val==-1431655765 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, -0x55555555, -0x55555555, 0x66666665, x2, 824, x5)
+
+inst_219:
+// rs1_val==-1431655765 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, -0x22222223, -0x55555555, 0x33333332, x2, 828, x5)
+
+inst_220:
+// rs1_val==-1431655765 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555555, 0x55555554, x2, 832, x5)
+
+inst_221:
+// rs1_val==-1431655765 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555555, 0x2, x2, 836, x5)
+
+inst_222:
+// rs1_val==-1431655765 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, -0x6c9d, -0x55555555, 0xb504, x2, 840, x5)
+
+inst_223:
+// rs1_val==-1431655765 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, -0x6c9d, -0x55555555, -0xb504, x2, 844, x5)
+
+inst_224:
+// rs1_val==-1431655765 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, -0x55555555, -0x55555555, 0x66666666, x2, 848, x5)
+
+inst_225:
+// rs1_val==-1431655765 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, -0x22222222, -0x55555555, 0x33333333, x2, 852, x5)
+
+inst_226:
+// rs1_val==-1431655765 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0x55555555, 0x5, x2, 856, x5)
+
+inst_227:
+// rs1_val==-1431655765 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, -0x55555555, -0x55555555, -0x55555556, x2, 860, x5)
+
+inst_228:
+// rs1_val==-1431655765 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0x55555555, 0x55555555, x2, 864, x5)
+
+inst_229:
+// rs1_val==-1431655765 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555555; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555555, 0x3, x2, 868, x5)
+
+inst_230:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0xa8f5, 0x55555556, 0xb505, x2, 872, x5)
+
+inst_231:
+// rs1_val==1431655766 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x3049, 0x55555556, -0xb503, x2, 876, x5)
+
+inst_232:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x55555556, 0x55555556, 0x66666667, x2, 880, x5)
+
+inst_233:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x22222222, 0x55555556, 0x33333334, x2, 884, x5)
+
+inst_234:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x55555556, 0x6, x2, 888, x5)
+
+inst_235:
+// rs1_val==1431655766 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x55555556, -0x55555555, x2, 892, x5)
+
+inst_236:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555556, 0x55555556, x2, 896, x5)
+
+inst_237:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x55555556, 0x4, x2, 900, x5)
+
+inst_238:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x3049, 0x55555556, 0xb503, x2, 904, x5)
+
+inst_239:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x55555556, 0x55555556, 0x0, x2, 908, x5)
+
+inst_240:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x55555556, 0x55555556, 0x66666665, x2, 912, x5)
+
+inst_241:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x22222224, 0x55555556, 0x33333332, x2, 916, x5)
+
+inst_242:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x55555556, 0x55555554, x2, 920, x5)
+
+inst_243:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555556, 0x2, x2, 924, x5)
+
+inst_244:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x6c9e, 0x55555556, 0xb504, x2, 928, x5)
+
+inst_245:
+// rs1_val==1431655766 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x6c9e, 0x55555556, -0xb504, x2, 932, x5)
+
+inst_246:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x55555556, 0x55555556, 0x66666666, x2, 936, x5)
+
+inst_247:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x22222223, 0x55555556, 0x33333333, x2, 940, x5)
+
+inst_248:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x55555556, 0x5, x2, 944, x5)
+
+inst_249:
+// rs1_val==1431655766 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555556, -0x55555556, x2, 948, x5)
+
+inst_250:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x55555556, 0x55555555, x2, 952, x5)
+
+inst_251:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x55555556, 0x3, x2, 956, x5)
+
+inst_252:
+// rs1_val==4 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0xb505, x2, 960, x5)
+
+inst_253:
+// rs1_val==4 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, -0xb503, x2, 964, x5)
+
+inst_254:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x66666667, x2, 968, x5)
+
+inst_255:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x33333334, x2, 972, x5)
+
+inst_256:
+// rs1_val==4 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x6, x2, 976, x5)
+
+inst_257:
+// rs1_val==4 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, -0x55555555, x2, 980, x5)
+
+inst_258:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x55555556, x2, 984, x5)
+
+inst_259:
+// rs1_val==4 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x4, 0x4, x2, 988, x5)
+
+inst_260:
+// rs1_val==4 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0xb503, x2, 992, x5)
+
+inst_261:
+// rs1_val==4 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x0, x2, 996, x5)
+
+inst_262:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x66666665, x2, 1000, x5)
+
+inst_263:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x33333332, x2, 1004, x5)
+
+inst_264:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x55555554, x2, 1008, x5)
+
+inst_265:
+// rs1_val==4 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x4, 0x2, x2, 1012, x5)
+
+inst_266:
+// rs1_val==4 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0xb504, x2, 1016, x5)
+
+inst_267:
+// rs1_val==4 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, -0xb504, x2, 1020, x5)
+
+inst_268:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x66666666, x2, 1024, x5)
+
+inst_269:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x33333333, x2, 1028, x5)
+
+inst_270:
+// rs1_val==4 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x5, x2, 1032, x5)
+
+inst_271:
+// rs1_val==4 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, -0x55555556, x2, 1036, x5)
+
+inst_272:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x4, 0x55555555, x2, 1040, x5)
+
+inst_273:
+// rs1_val==4 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x4, 0x3, x2, 1044, x5)
+
+inst_274:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0xb505, x2, 1048, x5)
+
+inst_275:
+// rs1_val==46339 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb503, -0xb503, x2, 1052, x5)
+
+inst_276:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x66666667, x2, 1056, x5)
+
+inst_277:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x33333334, x2, 1060, x5)
+
+inst_278:
+// rs1_val==46339 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb503, 0x6, x2, 1064, x5)
+
+inst_279:
+// rs1_val==46339 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, -0x55555555, x2, 1068, x5)
+
+inst_280:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x55555556, x2, 1072, x5)
+
+inst_281:
+// rs1_val==46339 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0xb503, 0x4, x2, 1076, x5)
+
+inst_282:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb503, 0xb503, x2, 1080, x5)
+
+inst_283:
+// rs1_val==46339 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x0, x2, 1084, x5)
+
+inst_284:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x66666665, x2, 1088, x5)
+
+inst_285:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x33333332, x2, 1092, x5)
+
+inst_286:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x55555554, x2, 1096, x5)
+
+inst_287:
+// rs1_val==46339 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb503, 0x2, x2, 1100, x5)
+
+inst_288:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0xb504, x2, 1104, x5)
+
+inst_289:
+// rs1_val==46339 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, -0xb504, x2, 1108, x5)
+
+inst_290:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x66666666, x2, 1112, x5)
+
+inst_291:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x33333333, x2, 1116, x5)
+
+inst_292:
+// rs1_val==46339 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0xb503, 0x5, x2, 1120, x5)
+
+inst_293:
+// rs1_val==46339 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, -0x55555556, x2, 1124, x5)
+
+inst_294:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0xb503, 0xb503, 0x55555555, x2, 1128, x5)
+
+inst_295:
+// rs1_val==46339 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb503, 0x3, x2, 1132, x5)
+
+inst_296:
+// rs1_val==0 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0xb505, x2, 1136, x5)
+
+inst_297:
+// rs1_val==0 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, -0xb503, x2, 1140, x5)
+
+inst_298:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x66666667, x2, 1144, x5)
+
+inst_299:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x33333334, x2, 1148, x5)
+
+inst_300:
+// rs1_val==0 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x6, x2, 1152, x5)
+
+inst_301:
+// rs1_val==0 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, -0x55555555, x2, 1156, x5)
+
+inst_302:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x55555556, x2, 1160, x5)
+
+inst_303:
+// rs1_val==0 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x4, x2, 1164, x5)
+
+inst_304:
+// rs1_val==0 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0xb503, x2, 1168, x5)
+
+inst_305:
+// rs1_val==0 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x0, x2, 1172, x5)
+
+inst_306:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x66666665, x2, 1176, x5)
+
+inst_307:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x33333332, x2, 1180, x5)
+
+inst_308:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x55555554, x2, 1184, x5)
+
+inst_309:
+// rs1_val==0 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x2, x2, 1188, x5)
+
+inst_310:
+// rs1_val==0 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0xb504, x2, 1192, x5)
+
+inst_311:
+// rs1_val==0 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, -0xb504, x2, 1196, x5)
+
+inst_312:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x66666666, x2, 1200, x5)
+
+inst_313:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x33333333, x2, 1204, x5)
+
+inst_314:
+// rs1_val==0 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x5, x2, 1208, x5)
+
+inst_315:
+// rs1_val==0 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, -0x55555556, x2, 1212, x5)
+
+inst_316:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x55555555, x2, 1216, x5)
+
+inst_317:
+// rs1_val==0 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x0, 0x3, x2, 1220, x5)
+
+inst_318:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x8255, 0x66666665, 0xb505, x2, 1224, x5)
+
+inst_319:
+// rs1_val==1717986917 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x39ef, 0x66666665, -0xb503, x2, 1228, x5)
+
+inst_320:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x66666665, 0x66666665, 0x66666667, x2, 1232, x5)
+
+inst_321:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x33333331, 0x66666665, 0x33333334, x2, 1236, x5)
+
+inst_322:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x66666665, 0x6, x2, 1240, x5)
+
+inst_323:
+// rs1_val==1717986917 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x11111110, 0x66666665, -0x55555555, x2, 1244, x5)
+
+inst_324:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x1111110f, 0x66666665, 0x55555556, x2, 1248, x5)
+
+inst_325:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666665, 0x4, x2, 1252, x5)
+
+inst_326:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x39ef, 0x66666665, 0xb503, x2, 1256, x5)
+
+inst_327:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, 0x0, x2, 1260, x5)
+
+inst_328:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, 0x66666665, x2, 1264, x5)
+
+inst_329:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x33333333, 0x33333332, x2, 1268, x5)
+
+inst_330:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, 0x55555554, x2, 1272, x5)
+
+inst_331:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x33333333, 0x2, x2, 1276, x5)
+
+inst_332:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x8993, 0x33333333, 0xb504, x2, 1280, x5)
+
+inst_333:
+// rs1_val==858993459 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x8993, 0x33333333, -0xb504, x2, 1284, x5)
+
+inst_334:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, 0x66666666, x2, 1288, x5)
+
+inst_335:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x33333333, 0x33333333, x2, 1292, x5)
+
+inst_336:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x33333333, 0x5, x2, 1296, x5)
+
+inst_337:
+// rs1_val==858993459 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, -0x55555556, x2, 1300, x5)
+
+inst_338:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, 0x55555555, x2, 1304, x5)
+
+inst_339:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x33333333, 0x3, x2, 1308, x5)
+
+inst_340:
+// rs1_val==5 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0xb505, x2, 1312, x5)
+
+inst_341:
+// rs1_val==5 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, -0xb503, x2, 1316, x5)
+
+inst_342:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x66666667, x2, 1320, x5)
+
+inst_343:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x33333334, x2, 1324, x5)
+
+inst_344:
+// rs1_val==5 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x6, x2, 1328, x5)
+
+inst_345:
+// rs1_val==5 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, -0x55555555, x2, 1332, x5)
+
+inst_346:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x55555556, x2, 1336, x5)
+
+inst_347:
+// rs1_val==5 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x5, 0x4, x2, 1340, x5)
+
+inst_348:
+// rs1_val==5 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0xb503, x2, 1344, x5)
+
+inst_349:
+// rs1_val==5 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x0, x2, 1348, x5)
+
+inst_350:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x66666665, x2, 1352, x5)
+
+inst_351:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x33333332, x2, 1356, x5)
+
+inst_352:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x55555554, x2, 1360, x5)
+
+inst_353:
+// rs1_val==5 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x5, 0x2, x2, 1364, x5)
+
+inst_354:
+// rs1_val==5 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0xb504, x2, 1368, x5)
+
+inst_355:
+// rs1_val==5 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, -0xb504, x2, 1372, x5)
+
+inst_356:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x66666666, x2, 1376, x5)
+
+inst_357:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x33333333, x2, 1380, x5)
+
+inst_358:
+// rs1_val==5 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x5, 0x5, x2, 1384, x5)
+
+inst_359:
+// rs1_val==5 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, -0x55555556, x2, 1388, x5)
+
+inst_360:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x5, 0x5, 0x55555555, x2, 1392, x5)
+
+inst_361:
+// rs1_val==5 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x5, 0x3, x2, 1396, x5)
+
+inst_362:
+// rs1_val==-1431655766 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, -0xa8f5, -0x55555556, 0xb505, x2, 1400, x5)
+
+inst_363:
+// rs1_val==-1431655766 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, -0x3049, -0x55555556, -0xb503, x2, 1404, x5)
+
+inst_364:
+// rs1_val==-1431655766 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, -0x55555556, -0x55555556, 0x66666667, x2, 1408, x5)
+
+inst_365:
+// rs1_val==-1431655766 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, -0x22222222, -0x55555556, 0x33333334, x2, 1412, x5)
+
+inst_366:
+// rs1_val==-1431655766 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, -0x2, -0x55555556, 0x6, x2, 1416, x5)
+
+inst_367:
+// rs1_val==-1431655766 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555556, -0x55555555, x2, 1420, x5)
+
+inst_368:
+// rs1_val==-1431655766 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0x55555556, 0x55555556, x2, 1424, x5)
+
+inst_369:
+// rs1_val==-1431655766 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, -0x2, -0x55555556, 0x4, x2, 1428, x5)
+
+inst_370:
+// rs1_val==-1431655766 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, -0x3049, -0x55555556, 0xb503, x2, 1432, x5)
+
+inst_371:
+// rs1_val==-1431655766 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, -0x55555556, -0x55555556, 0x0, x2, 1436, x5)
+
+inst_372:
+// rs1_val==-1431655766 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, -0x55555556, -0x55555556, 0x66666665, x2, 1440, x5)
+
+inst_373:
+// rs1_val==-1431655766 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, -0x22222224, -0x55555556, 0x33333332, x2, 1444, x5)
+
+inst_374:
+// rs1_val==-1431655766 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, -0x2, -0x55555556, 0x55555554, x2, 1448, x5)
+
+inst_375:
+// rs1_val==-1431655766 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0x55555556, 0x2, x2, 1452, x5)
+
+inst_376:
+// rs1_val==-1431655766 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, -0x6c9e, -0x55555556, 0xb504, x2, 1456, x5)
+
+inst_377:
+// rs1_val==-1431655766 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, -0x6c9e, -0x55555556, -0xb504, x2, 1460, x5)
+
+inst_378:
+// rs1_val==-1431655766 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, -0x55555556, -0x55555556, 0x66666666, x2, 1464, x5)
+
+inst_379:
+// rs1_val==-1431655766 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, -0x22222223, -0x55555556, 0x33333333, x2, 1468, x5)
+
+inst_380:
+// rs1_val==-1431655766 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555556, 0x5, x2, 1472, x5)
+
+inst_381:
+// rs1_val==-1431655766 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0x55555556, -0x55555556, x2, 1476, x5)
+
+inst_382:
+// rs1_val==-1431655766 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0x55555556, 0x55555555, x2, 1480, x5)
+
+inst_383:
+// rs1_val==-1431655766 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x55555556; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, -0x2, -0x55555556, 0x3, x2, 1484, x5)
+
+inst_384:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0xa8f4, 0x55555555, 0xb505, x2, 1488, x5)
+
+inst_385:
+// rs1_val==1431655765 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x3048, 0x55555555, -0xb503, x2, 1492, x5)
+
+inst_386:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x55555555, 0x55555555, 0x66666667, x2, 1496, x5)
+
+inst_387:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x22222221, 0x55555555, 0x33333334, x2, 1500, x5)
+
+inst_388:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x55555555, 0x6, x2, 1504, x5)
+
+inst_389:
+// rs1_val==1431655765 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555555, -0x55555555, x2, 1508, x5)
+
+inst_390:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x55555555, 0x55555555, 0x55555556, x2, 1512, x5)
+
+inst_391:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x55555555, 0x4, x2, 1516, x5)
+
+inst_392:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x3048, 0x55555555, 0xb503, x2, 1520, x5)
+
+inst_393:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x55555555, 0x55555555, 0x0, x2, 1524, x5)
+
+inst_394:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x55555555, 0x55555555, 0x66666665, x2, 1528, x5)
+
+inst_395:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x22222223, 0x55555555, 0x33333332, x2, 1532, x5)
+
+inst_396:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x55555555, 0x55555554, x2, 1536, x5)
+
+inst_397:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x55555555, 0x2, x2, 1540, x5)
+
+inst_398:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x6c9d, 0x55555555, 0xb504, x2, 1544, x5)
+
+inst_399:
+// rs1_val==1431655765 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x6c9d, 0x55555555, -0xb504, x2, 1548, x5)
+
+inst_400:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x55555555, 0x55555555, 0x66666666, x2, 1552, x5)
+
+inst_401:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x22222222, 0x55555555, 0x33333333, x2, 1556, x5)
+
+inst_402:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555555, 0x5, x2, 1560, x5)
+
+inst_403:
+// rs1_val==1431655765 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x55555555, 0x55555555, -0x55555556, x2, 1564, x5)
+
+inst_404:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555555, 0x55555555, x2, 1568, x5)
+
+inst_405:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x55555555, 0x3, x2, 1572, x5)
+
+inst_406:
+// rs1_val==3 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0xb505, x2, 1576, x5)
+
+inst_407:
+// rs1_val==3 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, -0xb503, x2, 1580, x5)
+
+inst_408:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x66666667, x2, 1584, x5)
+
+inst_409:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x33333334, x2, 1588, x5)
+
+inst_410:
+// rs1_val==3 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x6, x2, 1592, x5)
+
+inst_411:
+// rs1_val==3 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, -0x55555555, x2, 1596, x5)
+
+inst_412:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x55555556, x2, 1600, x5)
+
+inst_413:
+// rs1_val==3 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x4, x2, 1604, x5)
+
+inst_414:
+// rs1_val==3 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0xb503, x2, 1608, x5)
+
+inst_415:
+// rs1_val==3 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x0, x2, 1612, x5)
+
+inst_416:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x66666665, x2, 1616, x5)
+
+inst_417:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x33333332, x2, 1620, x5)
+
+inst_418:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x55555554, x2, 1624, x5)
+
+inst_419:
+// rs1_val==3 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x3, 0x2, x2, 1628, x5)
+
+inst_420:
+// rs1_val==3 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0xb504, x2, 1632, x5)
+
+inst_421:
+// rs1_val==3 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, -0xb504, x2, 1636, x5)
+
+inst_422:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x66666666, x2, 1640, x5)
+
+inst_423:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x33333333, x2, 1644, x5)
+
+inst_424:
+// rs1_val==3 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x5, x2, 1648, x5)
+
+inst_425:
+// rs1_val==3 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, -0x55555556, x2, 1652, x5)
+
+inst_426:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x3, 0x55555555, x2, 1656, x5)
+
+inst_427:
+// rs1_val==3 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x3, 0x3, x2, 1660, x5)
+
+inst_428:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x66666665, 0x66666665, 0x0, x2, 1664, x5)
+
+inst_429:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x66666665, 0x66666665, x2, 1668, x5)
+
+inst_430:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666665, 0x33333332, x2, 1672, x5)
+
+inst_431:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x11111111, 0x66666665, 0x55555554, x2, 1676, x5)
+
+inst_432:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666665, 0x2, x2, 1680, x5)
+
+inst_433:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x5e21, 0x66666665, 0xb504, x2, 1684, x5)
+
+inst_434:
+// rs1_val==1717986917 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x5e21, 0x66666665, -0xb504, x2, 1688, x5)
+
+inst_435:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x66666665, 0x66666665, 0x66666666, x2, 1692, x5)
+
+inst_436:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x66666665, 0x33333333, x2, 1696, x5)
+
+inst_437:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x66666665, 0x5, x2, 1700, x5)
+
+inst_438:
+// rs1_val==1717986917 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x1111110f, 0x66666665, -0x55555556, x2, 1704, x5)
+
+inst_439:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x11111110, 0x66666665, 0x55555555, x2, 1708, x5)
+
+inst_440:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x66666665, 0x3, x2, 1712, x5)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x412a, 0x33333332, 0xb505, x2, 1716, x5)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x1cf7, 0x33333332, -0xb503, x2, 1720, x5)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x66666667, x2, 1724, x5)
+
+inst_444:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x33333334, x2, 1728, x5)
+
+inst_445:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x33333332, 0x6, x2, 1732, x5)
+
+inst_446:
+// rs1_val==858993458 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, -0x55555555, x2, 1736, x5)
+
+inst_447:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x55555556, x2, 1740, x5)
+
+inst_448:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x33333332, 0x4, x2, 1744, x5)
+
+inst_449:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x1cf7, 0x33333332, 0xb503, x2, 1748, x5)
+
+inst_450:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x0, x2, 1752, x5)
+
+inst_451:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x66666665, x2, 1756, x5)
+
+inst_452:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x33333332, 0x33333332, x2, 1760, x5)
+
+inst_453:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x55555554, x2, 1764, x5)
+
+inst_454:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x33333332, 0x2, x2, 1768, x5)
+
+inst_455:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x8992, 0x33333332, 0xb504, x2, 1772, x5)
+
+inst_456:
+// rs1_val==858993458 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x8992, 0x33333332, -0xb504, x2, 1776, x5)
+
+inst_457:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x66666666, x2, 1780, x5)
+
+inst_458:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x33333333, x2, 1784, x5)
+
+inst_459:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x33333332, 0x5, x2, 1788, x5)
+
+inst_460:
+// rs1_val==858993458 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, -0x55555556, x2, 1792, x5)
+
+inst_461:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x33333332, 0x55555555, x2, 1796, x5)
+
+inst_462:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x33333332, 0x3, x2, 1800, x5)
+
+inst_463:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0xa8f3, 0x55555554, 0xb505, x2, 1804, x5)
+
+inst_464:
+// rs1_val==1431655764 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x3047, 0x55555554, -0xb503, x2, 1808, x5)
+
+inst_465:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x55555554, 0x55555554, 0x66666667, x2, 1812, x5)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x22222220, 0x55555554, 0x33333334, x2, 1816, x5)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555554, 0x6, x2, 1820, x5)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x55555554, 0x55555554, -0x55555555, x2, 1824, x5)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x55555554, 0x55555554, 0x55555556, x2, 1828, x5)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555554, 0x4, x2, 1832, x5)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x3047, 0x55555554, 0xb503, x2, 1836, x5)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x55555554, 0x55555554, 0x0, x2, 1840, x5)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x55555554, 0x55555554, 0x66666665, x2, 1844, x5)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x22222222, 0x55555554, 0x33333332, x2, 1848, x5)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555554, 0x55555554, x2, 1852, x5)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555554, 0x2, x2, 1856, x5)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x6c9c, 0x55555554, 0xb504, x2, 1860, x5)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x6c9c, 0x55555554, -0xb504, x2, 1864, x5)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x55555554, 0x55555554, 0x66666666, x2, 1868, x5)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x22222221, 0x55555554, 0x33333333, x2, 1872, x5)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x4, 0x55555554, 0x5, x2, 1876, x5)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x55555554, 0x55555554, -0x55555556, x2, 1880, x5)
+
+inst_483:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x55555554, 0x55555554, 0x55555555, x2, 1884, x5)
+
+inst_484:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x55555554, 0x3, x2, 1888, x5)
+
+inst_485:
+// rs1_val==2 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0xb505, x2, 1892, x5)
+
+inst_486:
+// rs1_val==2 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, -0xb503, x2, 1896, x5)
+
+inst_487:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x66666667, x2, 1900, x5)
+
+inst_488:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x33333334, x2, 1904, x5)
+
+inst_489:
+// rs1_val==2 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x6, x2, 1908, x5)
+
+inst_490:
+// rs1_val==2 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, -0x55555555, x2, 1912, x5)
+
+inst_491:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x55555556, x2, 1916, x5)
+
+inst_492:
+// rs1_val==2 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x4, x2, 1920, x5)
+
+inst_493:
+// rs1_val==2 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0xb503, x2, 1924, x5)
+
+inst_494:
+// rs1_val==2 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x0, x2, 1928, x5)
+
+inst_495:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x66666665, x2, 1932, x5)
+
+inst_496:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x33333332, x2, 1936, x5)
+
+inst_497:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x55555554, x2, 1940, x5)
+
+inst_498:
+// rs1_val==2 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x2, 0x2, x2, 1944, x5)
+
+inst_499:
+// rs1_val==2 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0xb504, x2, 1948, x5)
+
+inst_500:
+// rs1_val==2 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, -0xb504, x2, 1952, x5)
+
+inst_501:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x66666666, x2, 1956, x5)
+
+inst_502:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x33333333, x2, 1960, x5)
+
+inst_503:
+// rs1_val==2 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x5, x2, 1964, x5)
+
+inst_504:
+// rs1_val==2 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, -0x55555556, x2, 1968, x5)
+
+inst_505:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x55555555, x2, 1972, x5)
+
+inst_506:
+// rs1_val==2 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x2, 0x3, x2, 1976, x5)
+
+inst_507:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0xb505, x2, 1980, x5)
+
+inst_508:
+// rs1_val==46340 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb504, -0xb503, x2, 1984, x5)
+
+inst_509:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x66666667, x2, 1988, x5)
+
+inst_510:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x33333334, x2, 1992, x5)
+
+inst_511:
+// rs1_val==46340 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0xb504, 0x6, x2, 1996, x5)
+
+inst_512:
+// rs1_val==46340 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, -0x55555555, x2, 2000, x5)
+
+inst_513:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x55555556, x2, 2004, x5)
+
+inst_514:
+// rs1_val==46340 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb504, 0x4, x2, 2008, x5)
+
+inst_515:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0xb504, 0xb503, x2, 2012, x5)
+
+inst_516:
+// rs1_val==46340 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x0, x2, 2016, x5)
+
+inst_517:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x66666665, x2, 2020, x5)
+
+inst_518:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x33333332, x2, 2024, x5)
+
+inst_519:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x55555554, x2, 2028, x5)
+
+inst_520:
+// rs1_val==46340 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb504, 0x2, x2, 2032, x5)
+
+inst_521:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb504, 0xb504, x2, 2036, x5)
+
+inst_522:
+// rs1_val==46340 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb504, -0xb504, x2, 2040, x5)
+
+inst_523:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x66666666, x2, 2044, x5)
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_524:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x33333333, x2, 0, x5)
+
+inst_525:
+// rs1_val==46340 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0xb504, 0x5, x2, 4, x5)
+
+inst_526:
+// rs1_val==46340 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, -0x55555556, x2, 8, x5)
+
+inst_527:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0xb504, 0xb504, 0x55555555, x2, 12, x5)
+
+inst_528:
+// rs1_val==46340 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0xb504, 0x3, x2, 16, x5)
+
+inst_529:
+// rs1_val==-46340 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0xb505, x2, 20, x5)
+
+inst_530:
+// rs1_val==-46340 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0xb504, -0xb503, x2, 24, x5)
+
+inst_531:
+// rs1_val==-46340 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x66666667, x2, 28, x5)
+
+inst_532:
+// rs1_val==-46340 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x33333334, x2, 32, x5)
+
+inst_533:
+// rs1_val==-46340 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, -0x2, -0xb504, 0x6, x2, 36, x5)
+
+inst_534:
+// rs1_val==-46340 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, -0x55555555, x2, 40, x5)
+
+inst_535:
+// rs1_val==-46340 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x55555556, x2, 44, x5)
+
+inst_536:
+// rs1_val==-46340 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0xb504, 0x4, x2, 48, x5)
+
+inst_537:
+// rs1_val==-46340 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, -0x1, -0xb504, 0xb503, x2, 52, x5)
+
+inst_538:
+// rs1_val==-46340 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x0, x2, 56, x5)
+
+inst_539:
+// rs1_val==-46340 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x66666665, x2, 60, x5)
+
+inst_540:
+// rs1_val==-46340 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x33333332, x2, 64, x5)
+
+inst_541:
+// rs1_val==-46340 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x55555554, x2, 68, x5)
+
+inst_542:
+// rs1_val==-46340 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0xb504, 0x2, x2, 72, x5)
+
+inst_543:
+// rs1_val==-46340 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0xb504, 0xb504, x2, 76, x5)
+
+inst_544:
+// rs1_val==-46340 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0xb504, -0xb504, x2, 80, x5)
+
+inst_545:
+// rs1_val==-46340 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x66666666, x2, 84, x5)
+
+inst_546:
+// rs1_val==-46340 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x33333333, x2, 88, x5)
+
+inst_547:
+// rs1_val==-46340 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x0, -0xb504, 0x5, x2, 92, x5)
+
+inst_548:
+// rs1_val==-46340 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, -0x55555556, x2, 96, x5)
+
+inst_549:
+// rs1_val==-46340 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, -0xb504, -0xb504, 0x55555555, x2, 100, x5)
+
+inst_550:
+// rs1_val==-46340 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0xb504; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, -0x2, -0xb504, 0x3, x2, 104, x5)
+
+inst_551:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x8256, 0x66666666, 0xb505, x2, 108, x5)
+
+inst_552:
+// rs1_val==1717986918 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x39f0, 0x66666666, -0xb503, x2, 112, x5)
+
+inst_553:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x66666666, 0x66666666, 0x66666667, x2, 116, x5)
+
+inst_554:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x33333332, 0x66666666, 0x33333334, x2, 120, x5)
+
+inst_555:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x66666666, 0x6, x2, 124, x5)
+
+inst_556:
+// rs1_val==1717986918 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x11111111, 0x66666666, -0x55555555, x2, 128, x5)
+
+inst_557:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x11111110, 0x66666666, 0x55555556, x2, 132, x5)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x66666666, 0x4, x2, 136, x5)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x39f0, 0x66666666, 0xb503, x2, 140, x5)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(rem, x12, x10, x11, 0x66666666, 0x66666666, 0x0, x2, 144, x5)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(rem, x12, x10, x11, 0x1, 0x66666666, 0x66666665, x2, 148, x5)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(rem, x12, x10, x11, 0x2, 0x66666666, 0x33333332, x2, 152, x5)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(rem, x12, x10, x11, 0x11111112, 0x66666666, 0x55555554, x2, 156, x5)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x66666666, 0x2, x2, 160, x5)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x5e22, 0x66666666, 0xb504, x2, 164, x5)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==-46340,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0xb504
+TEST_RR_OP(rem, x12, x10, x11, 0x5e22, 0x66666666, -0xb504, x2, 168, x5)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x66666666, 0x66666666, x2, 172, x5)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x66666666, 0x33333333, x2, 176, x5)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x66666666, 0x5, x2, 180, x5)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==-1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:-0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x11111110, 0x66666666, -0x55555556, x2, 184, x5)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x11111111, 0x66666666, 0x55555555, x2, 188, x5)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(rem, x12, x10, x11, 0x0, 0x66666666, 0x3, x2, 192, x5)
+
+inst_573:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(rem, x12, x10, x11, 0x412b, 0x33333333, 0xb505, x2, 196, x5)
+
+inst_574:
+// rs1_val==858993459 and rs2_val==-46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x1cf8, 0x33333333, -0xb503, x2, 200, x5)
+
+inst_575:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, 0x66666667, x2, 204, x5)
+
+inst_576:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, 0x33333334, x2, 208, x5)
+
+inst_577:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x33333333, 0x6, x2, 212, x5)
+
+inst_578:
+// rs1_val==858993459 and rs2_val==-1431655765,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:-0x55555555
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, -0x55555555, x2, 216, x5)
+
+inst_579:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(rem, x12, x10, x11, 0x33333333, 0x33333333, 0x55555556, x2, 220, x5)
+
+inst_580:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(rem, x12, x10, x11, 0x3, 0x33333333, 0x4, x2, 224, x5)
+
+inst_581:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(rem, x12, x10, x11, 0x1cf8, 0x33333333, 0xb503, x2, 228, x5)
+
+inst_582:
+// rs2_val == -1073741825, rs1_val < 0 and rs2_val < 0, rs1_val == -67108865
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:-0x40000001
+TEST_RR_OP(rem, x12, x10, x11, -0x4000001, -0x4000001, -0x40000001, x2, 232, x5)
+
+inst_583:
+// rs2_val == -536870913, rs1_val == -131073
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:-0x20000001
+TEST_RR_OP(rem, x12, x10, x11, -0x20001, -0x20001, -0x20000001, x2, 236, x5)
+
+inst_584:
+// rs2_val == -33554433, rs1_val == 67108864
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:-0x2000001
+TEST_RR_OP(rem, x12, x10, x11, 0x1ffffff, 0x4000000, -0x2000001, x2, 240, x5)
+
+inst_585:
+// rs2_val == -524289,
+// opcode: rem ; op1:x10; op2:x11; dest:x12; op1val:-0x7; op2val:-0x80001
+TEST_RR_OP(rem, x12, x10, x11, -0x7, -0x7, -0x80001, x2, 244, x5)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_0:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 62*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/remu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/remu-01.S
new file mode 100644
index 000000000..f14717295
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32e_unratified/M/src/remu-01.S
@@ -0,0 +1,3715 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Wed Aug 4 07:22:49 2021 GMT
+// usage : riscv_ctg \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /home/bilalsakhawat/dev2/riscv-ctg/sample_cgfs/rv32em.cgf \
+// --base-isa rv32e \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the remu instruction of the RISC-V M extension for the remu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV32EM")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*E.*M.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",remu)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs2 == rd != rs1, rs1==x3, rs2==x10, rd==x10, rs1_val != rs2_val and rs1_val > 0 and rs2_val > 0, rs1_val > 0 and rs2_val > 0, rs1_val == 32, rs2_val == 4294966783
+// opcode: remu ; op1:x3; op2:x10; dest:x10; op1val:0x20; op2val:0xfffffdff
+TEST_RR_OP(remu, x10, x3, x10, 0x20, 0x20, 0xfffffdff, x2, 0, x6)
+
+inst_1:
+// rs1 == rd != rs2, rs1==x1, rs2==x13, rd==x1, rs2_val == 2147483647,
+// opcode: remu ; op1:x1; op2:x13; dest:x1; op1val:0x33333332; op2val:0x7fffffff
+TEST_RR_OP(remu, x1, x1, x13, 0x33333332, 0x33333332, 0x7fffffff, x2, 4, x6)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x4, rs2==x4, rd==x4, rs2_val == 3221225471, rs1_val == 32768
+// opcode: remu ; op1:x4; op2:x4; dest:x4; op1val:0x8000; op2val:0x8000
+TEST_RR_OP(remu, x4, x4, x4, 0x0, 0x8000, 0x8000, x2, 8, x6)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x12, rs2==x12, rd==x11, rs2_val == 3758096383,
+// opcode: remu ; op1:x12; op2:x12; dest:x11; op1val:0xc; op2val:0xc
+TEST_RR_OP(remu, x11, x12, x12, 0x0, 0xc, 0xc, x2, 12, x6)
+
+inst_4:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x7, rs2==x1, rd==x8, rs2_val == 4026531839, rs1_val == 4294705151
+// opcode: remu ; op1:x7; op2:x1; dest:x8; op1val:0xfffbffff; op2val:0xefffffff
+TEST_RR_OP(remu, x8, x7, x1, 0xffc0000, 0xfffbffff, 0xefffffff, x2, 16, x6)
+
+inst_5:
+// rs1==x15, rs2==x7, rd==x5, rs2_val == 4160749567, rs1_val == 131072
+// opcode: remu ; op1:x15; op2:x7; dest:x5; op1val:0x20000; op2val:0xf7ffffff
+TEST_RR_OP(remu, x5, x15, x7, 0x20000, 0x20000, 0xf7ffffff, x2, 20, x6)
+
+inst_6:
+// rs1==x9, rs2==x5, rd==x0, rs2_val == 4227858431, rs1_val == 1431655765
+// opcode: remu ; op1:x9; op2:x5; dest:x0; op1val:0x55555555; op2val:0xfbffffff
+TEST_RR_OP(remu, x0, x9, x5, 0, 0x55555555, 0xfbffffff, x2, 24, x4)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_7:
+// rs1==x0, rs2==x3, rd==x7, rs2_val == 4261412863, rs1_val == 3758096383
+// opcode: remu ; op1:x0; op2:x3; dest:x7; op1val:0x0; op2val:0xfdffffff
+TEST_RR_OP(remu, x7, x0, x3, 0x0, 0x0, 0xfdffffff, x1, 0, x4)
+
+inst_8:
+// rs1==x2, rs2==x15, rd==x3, rs2_val == 4278190079,
+// opcode: remu ; op1:x2; op2:x15; dest:x3; op1val:0x3; op2val:0xfeffffff
+TEST_RR_OP(remu, x3, x2, x15, 0x3, 0x3, 0xfeffffff, x1, 4, x4)
+
+inst_9:
+// rs1==x5, rs2==x9, rd==x2, rs2_val == 4286578687, rs1_val == 4294967263
+// opcode: remu ; op1:x5; op2:x9; dest:x2; op1val:0xffffffdf; op2val:0xff7fffff
+TEST_RR_OP(remu, x2, x5, x9, 0x7fffe0, 0xffffffdf, 0xff7fffff, x1, 8, x4)
+
+inst_10:
+// rs1==x13, rs2==x6, rd==x9, rs2_val == 4290772991, rs1_val == 16
+// opcode: remu ; op1:x13; op2:x6; dest:x9; op1val:0x10; op2val:0xffbfffff
+TEST_RR_OP(remu, x9, x13, x6, 0x10, 0x10, 0xffbfffff, x1, 12, x4)
+
+inst_11:
+// rs1==x6, rs2==x0, rd==x12, rs2_val == 4292870143, rs1_val == 4294967291
+// opcode: remu ; op1:x6; op2:x0; dest:x12; op1val:0xfffffffb; op2val:0x0
+TEST_RR_OP(remu, x12, x6, x0, 0xfffffffb, 0xfffffffb, 0x0, x1, 16, x4)
+
+inst_12:
+// rs1==x10, rs2==x8, rd==x14, rs2_val == 4293918719, rs1_val == 4286578687
+// opcode: remu ; op1:x10; op2:x8; dest:x14; op1val:0xff7fffff; op2val:0xffefffff
+TEST_RR_OP(remu, x14, x10, x8, 0xff7fffff, 0xff7fffff, 0xffefffff, x1, 20, x4)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_13:
+// rs1==x14, rs2==x2, rd==x15, rs2_val == 4294443007,
+// opcode: remu ; op1:x14; op2:x2; dest:x15; op1val:0xb503; op2val:0xfff7ffff
+TEST_RR_OP(remu, x15, x14, x2, 0xb503, 0xb503, 0xfff7ffff, x3, 0, x5)
+
+inst_14:
+// rs1==x8, rs2==x14, rd==x13, rs2_val == 4294705151, rs1_val == 4227858431
+// opcode: remu ; op1:x8; op2:x14; dest:x13; op1val:0xfbffffff; op2val:0xfffbffff
+TEST_RR_OP(remu, x13, x8, x14, 0xfbffffff, 0xfbffffff, 0xfffbffff, x3, 4, x5)
+
+inst_15:
+// rs1==x11, rs2_val == 4294836223, rs1_val == 4292870143
+// opcode: remu ; op1:x11; op2:x4; dest:x2; op1val:0xffdfffff; op2val:0xfffdffff
+TEST_RR_OP(remu, x2, x11, x4, 0xffdfffff, 0xffdfffff, 0xfffdffff, x3, 8, x5)
+
+inst_16:
+// rs2==x11, rs2_val == 4294901759, rs1_val == 4294901759, rs1_val == rs2_val and rs1_val > 0 and rs2_val > 0
+// opcode: remu ; op1:x1; op2:x11; dest:x9; op1val:0xfffeffff; op2val:0xfffeffff
+TEST_RR_OP(remu, x9, x1, x11, 0x0, 0xfffeffff, 0xfffeffff, x3, 12, x5)
+
+inst_17:
+// rd==x6, rs2_val == 4294934527, rs1_val == 4294950911
+// opcode: remu ; op1:x7; op2:x2; dest:x6; op1val:0xffffbfff; op2val:0xffff7fff
+TEST_RR_OP(remu, x6, x7, x2, 0x4000, 0xffffbfff, 0xffff7fff, x3, 16, x5)
+
+inst_18:
+// rs2_val == 4294950911,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xc; op2val:0xffffbfff
+TEST_RR_OP(remu, x12, x10, x11, 0xc, 0xc, 0xffffbfff, x3, 20, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_19:
+// rs2_val == 4294959103, rs1_val == 0
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xffffdfff
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xffffdfff, x1, 0, x2)
+
+inst_20:
+// rs2_val == 4294963199, rs1_val == 4294967287
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff7; op2val:0xffffefff
+TEST_RR_OP(remu, x12, x10, x11, 0xff8, 0xfffffff7, 0xffffefff, x1, 4, x2)
+
+inst_21:
+// rs2_val == 4294965247, rs1_val == 536870912
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0xfffff7ff
+TEST_RR_OP(remu, x12, x10, x11, 0x20000000, 0x20000000, 0xfffff7ff, x1, 8, x2)
+
+inst_22:
+// rs2_val == 4294966271, rs1_val == 65536
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xfffffbff
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0xfffffbff, x1, 12, x2)
+
+inst_23:
+// rs2_val == 4294967039, rs1_val == 4294967231
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffbf; op2val:0xfffffeff
+TEST_RR_OP(remu, x12, x10, x11, 0xc0, 0xffffffbf, 0xfffffeff, x1, 16, x2)
+
+inst_24:
+// rs2_val == 4294967167, rs1_val == 1024
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0xffffff7f
+TEST_RR_OP(remu, x12, x10, x11, 0x400, 0x400, 0xffffff7f, x1, 20, x2)
+
+inst_25:
+// rs2_val == 4294967231, rs1_val == 1
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xffffffbf
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xffffffbf, x1, 24, x2)
+
+inst_26:
+// rs2_val == 4294967263,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xffffffdf
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0xffffffdf, x1, 28, x2)
+
+inst_27:
+// rs2_val == 4294967279,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffbf; op2val:0xffffffef
+TEST_RR_OP(remu, x12, x10, x11, 0xffffffbf, 0xffffffbf, 0xffffffef, x1, 32, x2)
+
+inst_28:
+// rs2_val == 4294967287,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xfffffff7
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xfffffff7, x1, 36, x2)
+
+inst_29:
+// rs2_val == 4294967291, rs1_val == 4294934527
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff7fff; op2val:0xfffffffb
+TEST_RR_OP(remu, x12, x10, x11, 0xffff7fff, 0xffff7fff, 0xfffffffb, x1, 40, x2)
+
+inst_30:
+// rs2_val == 4294967293, rs1_val == 4294967294
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffe; op2val:0xfffffffd
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xfffffffe, 0xfffffffd, x1, 44, x2)
+
+inst_31:
+// rs2_val == 4294967294,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0xfffffffe
+TEST_RR_OP(remu, x12, x10, x11, 0x400, 0x400, 0xfffffffe, x1, 48, x2)
+
+inst_32:
+// rs1_val == 2147483647, rs2_val == 2097152
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffff; op2val:0x200000
+TEST_RR_OP(remu, x12, x10, x11, 0x1fffff, 0x7fffffff, 0x200000, x1, 52, x2)
+
+inst_33:
+// rs1_val == 3221225471, rs2_val == 512
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffff; op2val:0x200
+TEST_RR_OP(remu, x12, x10, x11, 0x1ff, 0xbfffffff, 0x200, x1, 56, x2)
+
+inst_34:
+// rs1_val == 4026531839,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0xa9bb, 0xefffffff, 0xb503, x1, 60, x2)
+
+inst_35:
+// rs1_val == 4160749567,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xf7ffffff; op2val:0xfffffffe
+TEST_RR_OP(remu, x12, x10, x11, 0xf7ffffff, 0xf7ffffff, 0xfffffffe, x1, 64, x2)
+
+inst_36:
+// rs1_val == 4261412863,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfdffffff; op2val:0xffffefff
+TEST_RR_OP(remu, x12, x10, x11, 0xfdffffff, 0xfdffffff, 0xffffefff, x1, 68, x2)
+
+inst_37:
+// rs1_val == 4278190079,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfeffffff; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x32333335, 0xfeffffff, 0x66666665, x1, 72, x2)
+
+inst_38:
+// rs1_val == 4290772991,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffbfffff; op2val:0x12
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0xffbfffff, 0x12, x1, 76, x2)
+
+inst_39:
+// rs1_val == 4293918719,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffefffff; op2val:0xe
+TEST_RR_OP(remu, x12, x10, x11, 0xd, 0xffefffff, 0xe, x1, 80, x2)
+
+inst_40:
+// rs1_val == 4294443007,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfff7ffff; op2val:0xffffffbf
+TEST_RR_OP(remu, x12, x10, x11, 0xfff7ffff, 0xfff7ffff, 0xffffffbf, x1, 84, x2)
+
+inst_41:
+// rs1_val == 4294836223,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffdffff; op2val:0xfffffffd
+TEST_RR_OP(remu, x12, x10, x11, 0xfffdffff, 0xfffdffff, 0xfffffffd, x1, 88, x2)
+
+inst_42:
+// rs1_val == 4294959103,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfff; op2val:0xffdfffff
+TEST_RR_OP(remu, x12, x10, x11, 0x1fe000, 0xffffdfff, 0xffdfffff, x1, 92, x2)
+
+inst_43:
+// rs1_val == 4294963199,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffefff; op2val:0xa
+TEST_RR_OP(remu, x12, x10, x11, 0x9, 0xffffefff, 0xa, x1, 96, x2)
+
+inst_44:
+// rs1_val == 4294965247,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffff7ff; op2val:0xfdffffff
+TEST_RR_OP(remu, x12, x10, x11, 0x1fff800, 0xfffff7ff, 0xfdffffff, x1, 100, x2)
+
+inst_45:
+// rs1_val == 4294966271, rs2_val == 4
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffbff; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xfffffbff, 0x4, x1, 104, x2)
+
+inst_46:
+// rs1_val == 4294966783,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffdff; op2val:0xfffffff7
+TEST_RR_OP(remu, x12, x10, x11, 0xfffffdff, 0xfffffdff, 0xfffffff7, x1, 108, x2)
+
+inst_47:
+// rs1_val == 4294967039, rs2_val == 16
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffeff; op2val:0x10
+TEST_RR_OP(remu, x12, x10, x11, 0xf, 0xfffffeff, 0x10, x1, 112, x2)
+
+inst_48:
+// rs1_val == 4294967167, rs2_val == 4096
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffff7f; op2val:0x1000
+TEST_RR_OP(remu, x12, x10, x11, 0xf7f, 0xffffff7f, 0x1000, x1, 116, x2)
+
+inst_49:
+// rs1_val == 4294967279, rs2_val == 0
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffef; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xffffffef, 0xffffffef, 0x0, x1, 120, x2)
+
+inst_50:
+// rs1_val == 4294967293,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffd; op2val:0xffffdfff
+TEST_RR_OP(remu, x12, x10, x11, 0x1ffe, 0xfffffffd, 0xffffdfff, x1, 124, x2)
+
+inst_51:
+// rs2_val == 2147483648,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x80000000
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0x80000000, x1, 128, x2)
+
+inst_52:
+// rs2_val == 1073741824,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x40000000
+TEST_RR_OP(remu, x12, x10, x11, 0x20, 0x20, 0x40000000, x1, 132, x2)
+
+inst_53:
+// rs2_val == 536870912,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff7fff; op2val:0x20000000
+TEST_RR_OP(remu, x12, x10, x11, 0x1fff7fff, 0xffff7fff, 0x20000000, x1, 136, x2)
+
+inst_54:
+// rs2_val == 268435456,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb; op2val:0x10000000
+TEST_RR_OP(remu, x12, x10, x11, 0xb, 0xb, 0x10000000, x1, 140, x2)
+
+inst_55:
+// rs2_val == 134217728, rs1_val == 2
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x8000000
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x8000000, x1, 144, x2)
+
+inst_56:
+// rs2_val == 67108864, rs1_val == 4194304
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x4000000
+TEST_RR_OP(remu, x12, x10, x11, 0x400000, 0x400000, 0x4000000, x1, 148, x2)
+
+inst_57:
+// rs2_val == 33554432,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2000000
+TEST_RR_OP(remu, x12, x10, x11, 0x1333332, 0x33333332, 0x2000000, x1, 152, x2)
+
+inst_58:
+// rs2_val == 16777216,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x1000000
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x1000000, x1, 156, x2)
+
+inst_59:
+// rs2_val == 8388608,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x800000
+TEST_RR_OP(remu, x12, x10, x11, 0x10, 0x10, 0x800000, x1, 160, x2)
+
+inst_60:
+// rs2_val == 4194304,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffff7ff; op2val:0x400000
+TEST_RR_OP(remu, x12, x10, x11, 0x3ff7ff, 0xfffff7ff, 0x400000, x1, 164, x2)
+
+inst_61:
+// rs2_val == 1048576, rs1_val == 134217728
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x100000
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x8000000, 0x100000, x1, 168, x2)
+
+inst_62:
+// rs2_val == 524288, rs1_val == 128
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x80000
+TEST_RR_OP(remu, x12, x10, x11, 0x80, 0x80, 0x80000, x1, 172, x2)
+
+inst_63:
+// rs2_val == 262144, rs1_val == 256
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x40000
+TEST_RR_OP(remu, x12, x10, x11, 0x100, 0x100, 0x40000, x1, 176, x2)
+
+inst_64:
+// rs2_val == 131072,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffdffff; op2val:0x20000
+TEST_RR_OP(remu, x12, x10, x11, 0x1ffff, 0xfffdffff, 0x20000, x1, 180, x2)
+
+inst_65:
+// rs2_val == 65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffff7f; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xff7f, 0xffffff7f, 0x10000, x1, 184, x2)
+
+inst_66:
+// rs2_val == 32768,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff7; op2val:0x8000
+TEST_RR_OP(remu, x12, x10, x11, 0x7ff7, 0xfffffff7, 0x8000, x1, 188, x2)
+
+inst_67:
+// rs2_val == 16384, rs1_val == 1048576
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x4000
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x100000, 0x4000, x1, 192, x2)
+
+inst_68:
+// rs2_val == 8192,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffdf; op2val:0x2000
+TEST_RR_OP(remu, x12, x10, x11, 0x1fdf, 0xffffffdf, 0x2000, x1, 196, x2)
+
+inst_69:
+// rs2_val == 2048, rs1_val == 4
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x800
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x800, x1, 200, x2)
+
+inst_70:
+// rs2_val == 1024,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0x400
+TEST_RR_OP(remu, x12, x10, x11, 0x3ff, 0xefffffff, 0x400, x1, 204, x2)
+
+inst_71:
+// rs2_val == 256,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x100
+TEST_RR_OP(remu, x12, x10, x11, 0x67, 0x66666667, 0x100, x1, 208, x2)
+
+inst_72:
+// rs2_val == 128,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:0x80
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x400, 0x80, x1, 212, x2)
+
+inst_73:
+// rs2_val == 64, rs1_val == 8
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x40
+TEST_RR_OP(remu, x12, x10, x11, 0x8, 0x8, 0x40, x1, 216, x2)
+
+inst_74:
+// rs2_val == 32,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x20
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x20, x1, 220, x2)
+
+inst_75:
+// rs2_val == 8,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x8
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x33333333, 0x8, x1, 224, x2)
+
+inst_76:
+// rs2_val == 2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x8000, 0x2, x1, 228, x2)
+
+inst_77:
+// rs2_val == 1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xefffffff; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xefffffff, 0x1, x1, 232, x2)
+
+inst_78:
+// rs1_val == 2147483648,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x80000000; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x80000000, 0x80000000, 0xaaaaaaab, x1, 236, x2)
+
+inst_79:
+// rs1_val == 1073741824, rs2_val == (2**(xlen)-1)
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0xffffffff
+TEST_RR_OP(remu, x12, x10, x11, 0x40000000, 0x40000000, 0xffffffff, x1, 240, x2)
+
+inst_80:
+// rs1_val == 268435456,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x10000000, 0x10000000, 0x33333334, x1, 244, x2)
+
+inst_81:
+// rs1_val == 67108864,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x2160, 0x4000000, 0xb504, x1, 248, x2)
+
+inst_82:
+// rs1_val == 33554432,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0x20
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x2000000, 0x20, x1, 252, x2)
+
+inst_83:
+// rs1_val == 16777216,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:0xfff7ffff
+TEST_RR_OP(remu, x12, x10, x11, 0x1000000, 0x1000000, 0xfff7ffff, x1, 256, x2)
+
+inst_84:
+// rs1_val == 8388608,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x800000, 0x2, x1, 260, x2)
+
+inst_85:
+// rs1_val == 2097152,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0xffdfffff
+TEST_RR_OP(remu, x12, x10, x11, 0x200000, 0x200000, 0xffdfffff, x1, 264, x2)
+
+inst_86:
+// rs1_val == 524288,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0xfdffffff
+TEST_RR_OP(remu, x12, x10, x11, 0x80000, 0x80000, 0xfdffffff, x1, 268, x2)
+
+inst_87:
+// rs1_val == 262144,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x40000, 0x40000, 0x66666666, x1, 272, x2)
+
+inst_88:
+// rs1_val == 16384,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0xfffffeff
+TEST_RR_OP(remu, x12, x10, x11, 0x4000, 0x4000, 0xfffffeff, x1, 276, x2)
+
+inst_89:
+// rs1_val == 8192,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0xfffffffb
+TEST_RR_OP(remu, x12, x10, x11, 0x2000, 0x2000, 0xfffffffb, x1, 280, x2)
+
+inst_90:
+// rs1_val == 4096,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0xfffbffff
+TEST_RR_OP(remu, x12, x10, x11, 0x1000, 0x1000, 0xfffbffff, x1, 284, x2)
+
+inst_91:
+// rs1_val == 2048,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0xfffbffff
+TEST_RR_OP(remu, x12, x10, x11, 0x800, 0x800, 0xfffbffff, x1, 288, x2)
+
+inst_92:
+// rs1_val == 512,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:0xf
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x200, 0xf, x1, 292, x2)
+
+inst_93:
+// rs1_val == 64,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0xff7fffff
+TEST_RR_OP(remu, x12, x10, x11, 0x40, 0x40, 0xff7fffff, x1, 296, x2)
+
+inst_94:
+// rs1_val==65536 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x10000, 0x10000, x1, 300, x2)
+
+inst_95:
+// rs1_val==65536 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x10000, 0x1, x1, 304, x2)
+
+inst_96:
+// rs1_val==65536 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x4afb, 0x10000, 0xb505, x1, 308, x2)
+
+inst_97:
+// rs1_val==65536 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x66666667, x1, 312, x2)
+
+inst_98:
+// rs1_val==65536 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x33333334, x1, 316, x2)
+
+inst_99:
+// rs1_val==65536 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x10000, 0x6, x1, 320, x2)
+
+inst_100:
+// rs1_val==65536 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0xaaaaaaab, x1, 324, x2)
+
+inst_101:
+// rs1_val==65536 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x55555556, x1, 328, x2)
+
+inst_102:
+// rs1_val==65536 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x10000, 0x4, x1, 332, x2)
+
+inst_103:
+// rs1_val==65536 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x10000, 0xfffe, x1, 336, x2)
+
+inst_104:
+// rs1_val==65536 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x0, x1, 340, x2)
+
+inst_105:
+// rs1_val==65536 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x4afd, 0x10000, 0xb503, x1, 344, x2)
+
+inst_106:
+// rs1_val==65536 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x66666665, x1, 348, x2)
+
+inst_107:
+// rs1_val==65536 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x33333332, x1, 352, x2)
+
+inst_108:
+// rs1_val==65536 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0xaaaaaaa9, x1, 356, x2)
+
+inst_109:
+// rs1_val==65536 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x55555554, x1, 360, x2)
+
+inst_110:
+// rs1_val==65536 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x10000, 0x2, x1, 364, x2)
+
+inst_111:
+// rs1_val==65536 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x10000, 0xffff, x1, 368, x2)
+
+inst_112:
+// rs1_val==65536 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x4afc, 0x10000, 0xb504, x1, 372, x2)
+
+inst_113:
+// rs1_val==65536 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x66666666, x1, 376, x2)
+
+inst_114:
+// rs1_val==65536 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x33333333, x1, 380, x2)
+
+inst_115:
+// rs1_val==65536 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x10000, 0x5, x1, 384, x2)
+
+inst_116:
+// rs1_val==65536 and rs2_val==2863311530, rs2_val == 2863311530
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0xaaaaaaaa, x1, 388, x2)
+
+inst_117:
+// rs1_val==65536 and rs2_val==1431655765, rs2_val == 1431655765
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x10000, 0x10000, 0x55555555, x1, 392, x2)
+
+inst_118:
+// rs1_val==65536 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x10000, 0x3, x1, 396, x2)
+
+inst_119:
+// rs1_val==1 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x10000, x1, 400, x2)
+
+inst_120:
+// rs1_val==1 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x1, 0x1, x1, 404, x2)
+
+inst_121:
+// rs1_val==1 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xb505, x1, 408, x2)
+
+inst_122:
+// rs1_val==1 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x66666667, x1, 412, x2)
+
+inst_123:
+// rs1_val==1 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x33333334, x1, 416, x2)
+
+inst_124:
+// rs1_val==1 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x6, x1, 420, x2)
+
+inst_125:
+// rs1_val==1 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xaaaaaaab, x1, 424, x2)
+
+inst_126:
+// rs1_val==1 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x55555556, x1, 428, x2)
+
+inst_127:
+// rs1_val==1 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x4, x1, 432, x2)
+
+inst_128:
+// rs1_val==1 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xfffe, x1, 436, x2)
+
+inst_129:
+// rs1_val==1 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x0, x1, 440, x2)
+
+inst_130:
+// rs1_val==1 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xb503, x1, 444, x2)
+
+inst_131:
+// rs1_val==1 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x66666665, x1, 448, x2)
+
+inst_132:
+// rs1_val==1 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x33333332, x1, 452, x2)
+
+inst_133:
+// rs1_val==1 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xaaaaaaa9, x1, 456, x2)
+
+inst_134:
+// rs1_val==1 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x55555554, x1, 460, x2)
+
+inst_135:
+// rs1_val==1 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x2, x1, 464, x2)
+
+inst_136:
+// rs1_val==1 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xffff, x1, 468, x2)
+
+inst_137:
+// rs1_val==1 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xb504, x1, 472, x2)
+
+inst_138:
+// rs1_val==1 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x66666666, x1, 476, x2)
+
+inst_139:
+// rs1_val==1 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x33333333, x1, 480, x2)
+
+inst_140:
+// rs1_val==1 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x5, x1, 484, x2)
+
+inst_141:
+// rs1_val==1 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0xaaaaaaaa, x1, 488, x2)
+
+inst_142:
+// rs1_val==1 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x55555555, x1, 492, x2)
+
+inst_143:
+// rs1_val==1 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x1, 0x3, x1, 496, x2)
+
+inst_144:
+// rs1_val==46341 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x10000, x1, 500, x2)
+
+inst_145:
+// rs1_val==46341 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb505, 0x1, x1, 504, x2)
+
+inst_146:
+// rs1_val==46341 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb505, 0xb505, x1, 508, x2)
+
+inst_147:
+// rs1_val==46341 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x66666667, x1, 512, x2)
+
+inst_148:
+// rs1_val==46341 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x33333334, x1, 516, x2)
+
+inst_149:
+// rs1_val==46341 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xb505, 0x6, x1, 520, x2)
+
+inst_150:
+// rs1_val==46341 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0xaaaaaaab, x1, 524, x2)
+
+inst_151:
+// rs1_val==46341 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x55555556, x1, 528, x2)
+
+inst_152:
+// rs1_val==46341 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xb505, 0x4, x1, 532, x2)
+
+inst_153:
+// rs1_val==46341 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0xfffe, x1, 536, x2)
+
+inst_154:
+// rs1_val==46341 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x0, x1, 540, x2)
+
+inst_155:
+// rs1_val==46341 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xb505, 0xb503, x1, 544, x2)
+
+inst_156:
+// rs1_val==46341 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x66666665, x1, 548, x2)
+
+inst_157:
+// rs1_val==46341 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x33333332, x1, 552, x2)
+
+inst_158:
+// rs1_val==46341 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0xaaaaaaa9, x1, 556, x2)
+
+inst_159:
+// rs1_val==46341 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x55555554, x1, 560, x2)
+
+inst_160:
+// rs1_val==46341 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xb505, 0x2, x1, 564, x2)
+
+inst_161:
+// rs1_val==46341 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0xffff, x1, 568, x2)
+
+inst_162:
+// rs1_val==46341 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xb505, 0xb504, x1, 572, x2)
+
+inst_163:
+// rs1_val==46341 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x66666666, x1, 576, x2)
+
+inst_164:
+// rs1_val==46341 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x33333333, x1, 580, x2)
+
+inst_165:
+// rs1_val==46341 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xb505, 0x5, x1, 584, x2)
+
+inst_166:
+// rs1_val==46341 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0xaaaaaaaa, x1, 588, x2)
+
+inst_167:
+// rs1_val==46341 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0xb505, 0xb505, 0x55555555, x1, 592, x2)
+
+inst_168:
+// rs1_val==46341 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb505; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb505, 0x3, x1, 596, x2)
+
+inst_169:
+// rs1_val==1717986919 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x6667, 0x66666667, 0x10000, x1, 600, x2)
+
+inst_170:
+// rs1_val==1717986919 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666667, 0x1, x1, 604, x2)
+
+inst_171:
+// rs1_val==1717986919 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x8257, 0x66666667, 0xb505, x1, 608, x2)
+
+inst_172:
+// rs1_val==1717986919 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666667, 0x66666667, x1, 612, x2)
+
+inst_173:
+// rs1_val==1717986919 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x66666667, 0x33333334, x1, 616, x2)
+
+inst_174:
+// rs1_val==1717986919 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666667, 0x6, x1, 620, x2)
+
+inst_175:
+// rs1_val==1717986919 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x66666667, 0x66666667, 0xaaaaaaab, x1, 624, x2)
+
+inst_176:
+// rs1_val==1717986919 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x11111111, 0x66666667, 0x55555556, x1, 628, x2)
+
+inst_177:
+// rs1_val==1717986919 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x66666667, 0x4, x1, 632, x2)
+
+inst_178:
+// rs1_val==1717986919 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x3335, 0x66666667, 0xfffe, x1, 636, x2)
+
+inst_179:
+// rs1_val==1717986919 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x66666667, 0x66666667, 0x0, x1, 640, x2)
+
+inst_180:
+// rs1_val==1717986919 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x39f1, 0x66666667, 0xb503, x1, 644, x2)
+
+inst_181:
+// rs1_val==1717986919 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x66666667, 0x66666665, x1, 648, x2)
+
+inst_182:
+// rs1_val==1717986919 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x66666667, 0x33333332, x1, 652, x2)
+
+inst_183:
+// rs1_val==1717986919 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x66666667, 0x66666667, 0xaaaaaaa9, x1, 656, x2)
+
+inst_184:
+// rs1_val==1717986919 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x11111113, 0x66666667, 0x55555554, x1, 660, x2)
+
+inst_185:
+// rs1_val==1717986919 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666667, 0x2, x1, 664, x2)
+
+inst_186:
+// rs1_val==1717986919 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xcccd, 0x66666667, 0xffff, x1, 668, x2)
+
+inst_187:
+// rs1_val==1717986919 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x5e23, 0x66666667, 0xb504, x1, 672, x2)
+
+inst_188:
+// rs1_val==1717986919 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666667, 0x66666666, x1, 676, x2)
+
+inst_189:
+// rs1_val==1717986919 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666667, 0x33333333, x1, 680, x2)
+
+inst_190:
+// rs1_val==1717986919 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x66666667, 0x5, x1, 684, x2)
+
+inst_191:
+// rs1_val==1717986919 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x66666667, 0x66666667, 0xaaaaaaaa, x1, 688, x2)
+
+inst_192:
+// rs1_val==1717986919 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x11111112, 0x66666667, 0x55555555, x1, 692, x2)
+
+inst_193:
+// rs1_val==1717986919 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666667; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666667, 0x3, x1, 696, x2)
+
+inst_194:
+// rs1_val==858993460 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x3334, 0x33333334, 0x10000, x1, 700, x2)
+
+inst_195:
+// rs1_val==858993460 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333334, 0x1, x1, 704, x2)
+
+inst_196:
+// rs1_val==858993460 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x412c, 0x33333334, 0xb505, x1, 708, x2)
+
+inst_197:
+// rs1_val==858993460 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0x66666667, x1, 712, x2)
+
+inst_198:
+// rs1_val==858993460 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333334, 0x33333334, x1, 716, x2)
+
+inst_199:
+// rs1_val==858993460 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x33333334, 0x6, x1, 720, x2)
+
+inst_200:
+// rs1_val==858993460 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0xaaaaaaab, x1, 724, x2)
+
+inst_201:
+// rs1_val==858993460 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0x55555556, x1, 728, x2)
+
+inst_202:
+// rs1_val==858993460 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333334, 0x4, x1, 732, x2)
+
+inst_203:
+// rs1_val==858993460 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x999a, 0x33333334, 0xfffe, x1, 736, x2)
+
+inst_204:
+// rs1_val==858993460 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0x0, x1, 740, x2)
+
+inst_205:
+// rs1_val==858993460 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x1cf9, 0x33333334, 0xb503, x1, 744, x2)
+
+inst_206:
+// rs1_val==858993460 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0x66666665, x1, 748, x2)
+
+inst_207:
+// rs1_val==858993460 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x33333334, 0x33333332, x1, 752, x2)
+
+inst_208:
+// rs1_val==858993460 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0xaaaaaaa9, x1, 756, x2)
+
+inst_209:
+// rs1_val==858993460 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0x55555554, x1, 760, x2)
+
+inst_210:
+// rs1_val==858993460 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333334, 0x2, x1, 764, x2)
+
+inst_211:
+// rs1_val==858993460 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x6667, 0x33333334, 0xffff, x1, 768, x2)
+
+inst_212:
+// rs1_val==858993460 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x8994, 0x33333334, 0xb504, x1, 772, x2)
+
+inst_213:
+// rs1_val==858993460 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0x66666666, x1, 776, x2)
+
+inst_214:
+// rs1_val==858993460 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x33333334, 0x33333333, x1, 780, x2)
+
+inst_215:
+// rs1_val==858993460 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333334, 0x5, x1, 784, x2)
+
+inst_216:
+// rs1_val==858993460 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0xaaaaaaaa, x1, 788, x2)
+
+inst_217:
+// rs1_val==858993460 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x33333334, 0x33333334, 0x55555555, x1, 792, x2)
+
+inst_218:
+// rs1_val==858993460 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333334; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x33333334, 0x3, x1, 796, x2)
+
+inst_219:
+// rs1_val==6 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x10000, x1, 800, x2)
+
+inst_220:
+// rs1_val==6 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x6, 0x1, x1, 804, x2)
+
+inst_221:
+// rs1_val==6 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0xb505, x1, 808, x2)
+
+inst_222:
+// rs1_val==6 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x66666667, x1, 812, x2)
+
+inst_223:
+// rs1_val==6 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x33333334, x1, 816, x2)
+
+inst_224:
+// rs1_val==6 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x6, 0x6, x1, 820, x2)
+
+inst_225:
+// rs1_val==6 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0xaaaaaaab, x1, 824, x2)
+
+inst_226:
+// rs1_val==6 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x55555556, x1, 828, x2)
+
+inst_227:
+// rs1_val==6 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x6, 0x4, x1, 832, x2)
+
+inst_228:
+// rs1_val==6 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0xfffe, x1, 836, x2)
+
+inst_229:
+// rs1_val==6 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x0, x1, 840, x2)
+
+inst_230:
+// rs1_val==6 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0xb503, x1, 844, x2)
+
+inst_231:
+// rs1_val==6 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x66666665, x1, 848, x2)
+
+inst_232:
+// rs1_val==6 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x33333332, x1, 852, x2)
+
+inst_233:
+// rs1_val==6 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0xaaaaaaa9, x1, 856, x2)
+
+inst_234:
+// rs1_val==6 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x55555554, x1, 860, x2)
+
+inst_235:
+// rs1_val==6 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x6, 0x2, x1, 864, x2)
+
+inst_236:
+// rs1_val==6 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0xffff, x1, 868, x2)
+
+inst_237:
+// rs1_val==6 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0xb504, x1, 872, x2)
+
+inst_238:
+// rs1_val==6 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x66666666, x1, 876, x2)
+
+inst_239:
+// rs1_val==6 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x33333333, x1, 880, x2)
+
+inst_240:
+// rs1_val==6 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x6, 0x5, x1, 884, x2)
+
+inst_241:
+// rs1_val==6 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0xaaaaaaaa, x1, 888, x2)
+
+inst_242:
+// rs1_val==6 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x6, 0x6, 0x55555555, x1, 892, x2)
+
+inst_243:
+// rs1_val==6 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x6, 0x3, x1, 896, x2)
+
+inst_244:
+// rs1_val==2863311531 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xaaab, 0xaaaaaaab, 0x10000, x1, 900, x2)
+
+inst_245:
+// rs1_val==2863311531 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x1, x1, 904, x2)
+
+inst_246:
+// rs1_val==2863311531 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x9ce4, 0xaaaaaaab, 0xb505, x1, 908, x2)
+
+inst_247:
+// rs1_val==2863311531 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x44444444, 0xaaaaaaab, 0x66666667, x1, 912, x2)
+
+inst_248:
+// rs1_val==2863311531 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x1111110f, 0xaaaaaaab, 0x33333334, x1, 916, x2)
+
+inst_249:
+// rs1_val==2863311531 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xaaaaaaab, 0x6, x1, 920, x2)
+
+inst_250:
+// rs1_val==2863311531 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaab, 0xaaaaaaab, x1, 924, x2)
+
+inst_251:
+// rs1_val==2863311531 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0xaaaaaaab, 0x55555556, x1, 928, x2)
+
+inst_252:
+// rs1_val==2863311531 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xaaaaaaab, 0x4, x1, 932, x2)
+
+inst_253:
+// rs1_val==2863311531 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xaaaaaaab, 0xfffe, x1, 936, x2)
+
+inst_254:
+// rs1_val==2863311531 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xaaaaaaab, 0xaaaaaaab, 0x0, x1, 940, x2)
+
+inst_255:
+// rs1_val==2863311531 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x6091, 0xaaaaaaab, 0xb503, x1, 944, x2)
+
+inst_256:
+// rs1_val==2863311531 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x44444446, 0xaaaaaaab, 0x66666665, x1, 948, x2)
+
+inst_257:
+// rs1_val==2863311531 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x11111115, 0xaaaaaaab, 0x33333332, x1, 952, x2)
+
+inst_258:
+// rs1_val==2863311531 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xaaaaaaab, 0xaaaaaaa9, x1, 956, x2)
+
+inst_259:
+// rs1_val==2863311531 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xaaaaaaab, 0x55555554, x1, 960, x2)
+
+inst_260:
+// rs1_val==2863311531 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaab, 0x2, x1, 964, x2)
+
+inst_261:
+// rs1_val==2863311531 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x5556, 0xaaaaaaab, 0xffff, x1, 968, x2)
+
+inst_262:
+// rs1_val==2863311531 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x2437, 0xaaaaaaab, 0xb504, x1, 972, x2)
+
+inst_263:
+// rs1_val==2863311531 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x44444445, 0xaaaaaaab, 0x66666666, x1, 976, x2)
+
+inst_264:
+// rs1_val==2863311531 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x11111112, 0xaaaaaaab, 0x33333333, x1, 980, x2)
+
+inst_265:
+// rs1_val==2863311531 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaab, 0x5, x1, 984, x2)
+
+inst_266:
+// rs1_val==2863311531 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaab, 0xaaaaaaaa, x1, 988, x2)
+
+inst_267:
+// rs1_val==2863311531 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaab, 0x55555555, x1, 992, x2)
+
+inst_268:
+// rs1_val==2863311531 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaab; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaab, 0x3, x1, 996, x2)
+
+inst_269:
+// rs1_val==1431655766 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x5556, 0x55555556, 0x10000, x1, 1000, x2)
+
+inst_270:
+// rs1_val==1431655766 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555556, 0x1, x1, 1004, x2)
+
+inst_271:
+// rs1_val==1431655766 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0xa8f5, 0x55555556, 0xb505, x1, 1008, x2)
+
+inst_272:
+// rs1_val==1431655766 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x55555556, 0x55555556, 0x66666667, x1, 1012, x2)
+
+inst_273:
+// rs1_val==1431655766 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x22222222, 0x55555556, 0x33333334, x1, 1016, x2)
+
+inst_274:
+// rs1_val==1431655766 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x55555556, 0x6, x1, 1020, x2)
+
+inst_275:
+// rs1_val==1431655766 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x55555556, 0x55555556, 0xaaaaaaab, x1, 1024, x2)
+
+inst_276:
+// rs1_val==1431655766 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555556, 0x55555556, x1, 1028, x2)
+
+inst_277:
+// rs1_val==1431655766 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x55555556, 0x4, x1, 1032, x2)
+
+inst_278:
+// rs1_val==1431655766 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x55555556, 0xfffe, x1, 1036, x2)
+
+inst_279:
+// rs1_val==1431655766 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x55555556, 0x55555556, 0x0, x1, 1040, x2)
+
+inst_280:
+// rs1_val==1431655766 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x3049, 0x55555556, 0xb503, x1, 1044, x2)
+
+inst_281:
+// rs1_val==1431655766 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x55555556, 0x55555556, 0x66666665, x1, 1048, x2)
+
+inst_282:
+// rs1_val==1431655766 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x22222224, 0x55555556, 0x33333332, x1, 1052, x2)
+
+inst_283:
+// rs1_val==1431655766 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x55555556, 0x55555556, 0xaaaaaaa9, x1, 1056, x2)
+
+inst_284:
+// rs1_val==1431655766 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x55555556, 0x55555554, x1, 1060, x2)
+
+inst_285:
+// rs1_val==1431655766 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555556, 0x2, x1, 1064, x2)
+
+inst_286:
+// rs1_val==1431655766 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xaaab, 0x55555556, 0xffff, x1, 1068, x2)
+
+inst_287:
+// rs1_val==1431655766 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x6c9e, 0x55555556, 0xb504, x1, 1072, x2)
+
+inst_288:
+// rs1_val==1431655766 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x55555556, 0x55555556, 0x66666666, x1, 1076, x2)
+
+inst_289:
+// rs1_val==1431655766 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x22222223, 0x55555556, 0x33333333, x1, 1080, x2)
+
+inst_290:
+// rs1_val==1431655766 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x55555556, 0x5, x1, 1084, x2)
+
+inst_291:
+// rs1_val==1431655766 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x55555556, 0x55555556, 0xaaaaaaaa, x1, 1088, x2)
+
+inst_292:
+// rs1_val==1431655766 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x55555556, 0x55555555, x1, 1092, x2)
+
+inst_293:
+// rs1_val==1431655766 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555556; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x55555556, 0x3, x1, 1096, x2)
+
+inst_294:
+// rs1_val==4 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x10000, x1, 1100, x2)
+
+inst_295:
+// rs1_val==4 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x4, 0x1, x1, 1104, x2)
+
+inst_296:
+// rs1_val==4 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0xb505, x1, 1108, x2)
+
+inst_297:
+// rs1_val==4 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x66666667, x1, 1112, x2)
+
+inst_298:
+// rs1_val==4 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x33333334, x1, 1116, x2)
+
+inst_299:
+// rs1_val==4 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x6, x1, 1120, x2)
+
+inst_300:
+// rs1_val==4 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0xaaaaaaab, x1, 1124, x2)
+
+inst_301:
+// rs1_val==4 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x55555556, x1, 1128, x2)
+
+inst_302:
+// rs1_val==4 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x4, 0x4, x1, 1132, x2)
+
+inst_303:
+// rs1_val==4 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0xfffe, x1, 1136, x2)
+
+inst_304:
+// rs1_val==4 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x0, x1, 1140, x2)
+
+inst_305:
+// rs1_val==4 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0xb503, x1, 1144, x2)
+
+inst_306:
+// rs1_val==4 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x66666665, x1, 1148, x2)
+
+inst_307:
+// rs1_val==4 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x33333332, x1, 1152, x2)
+
+inst_308:
+// rs1_val==4 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0xaaaaaaa9, x1, 1156, x2)
+
+inst_309:
+// rs1_val==4 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x55555554, x1, 1160, x2)
+
+inst_310:
+// rs1_val==4 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x4, 0x2, x1, 1164, x2)
+
+inst_311:
+// rs1_val==4 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0xffff, x1, 1168, x2)
+
+inst_312:
+// rs1_val==4 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0xb504, x1, 1172, x2)
+
+inst_313:
+// rs1_val==4 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x66666666, x1, 1176, x2)
+
+inst_314:
+// rs1_val==4 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x33333333, x1, 1180, x2)
+
+inst_315:
+// rs1_val==4 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x5, x1, 1184, x2)
+
+inst_316:
+// rs1_val==4 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0xaaaaaaaa, x1, 1188, x2)
+
+inst_317:
+// rs1_val==4 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x4, 0x55555555, x1, 1192, x2)
+
+inst_318:
+// rs1_val==4 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x4, 0x3, x1, 1196, x2)
+
+inst_319:
+// rs1_val==65534 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x10000, x1, 1200, x2)
+
+inst_320:
+// rs1_val==65534 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xfffe, 0x1, x1, 1204, x2)
+
+inst_321:
+// rs1_val==65534 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x4af9, 0xfffe, 0xb505, x1, 1208, x2)
+
+inst_322:
+// rs1_val==65534 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x66666667, x1, 1212, x2)
+
+inst_323:
+// rs1_val==65534 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x33333334, x1, 1216, x2)
+
+inst_324:
+// rs1_val==65534 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xfffe, 0x6, x1, 1220, x2)
+
+inst_325:
+// rs1_val==65534 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0xaaaaaaab, x1, 1224, x2)
+
+inst_326:
+// rs1_val==65534 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x55555556, x1, 1228, x2)
+
+inst_327:
+// rs1_val==65534 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xfffe, 0x4, x1, 1232, x2)
+
+inst_328:
+// rs1_val==65534 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xfffe, 0xfffe, x1, 1236, x2)
+
+inst_329:
+// rs1_val==65534 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x0, x1, 1240, x2)
+
+inst_330:
+// rs1_val==65534 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x4afb, 0xfffe, 0xb503, x1, 1244, x2)
+
+inst_331:
+// rs1_val==65534 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x66666665, x1, 1248, x2)
+
+inst_332:
+// rs1_val==65534 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x33333332, x1, 1252, x2)
+
+inst_333:
+// rs1_val==65534 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0xaaaaaaa9, x1, 1256, x2)
+
+inst_334:
+// rs1_val==65534 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x55555554, x1, 1260, x2)
+
+inst_335:
+// rs1_val==65534 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xfffe, 0x2, x1, 1264, x2)
+
+inst_336:
+// rs1_val==65534 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0xffff, x1, 1268, x2)
+
+inst_337:
+// rs1_val==65534 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x4afa, 0xfffe, 0xb504, x1, 1272, x2)
+
+inst_338:
+// rs1_val==65534 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x66666666, x1, 1276, x2)
+
+inst_339:
+// rs1_val==65534 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x33333333, x1, 1280, x2)
+
+inst_340:
+// rs1_val==65534 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0xfffe, 0x5, x1, 1284, x2)
+
+inst_341:
+// rs1_val==65534 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0xaaaaaaaa, x1, 1288, x2)
+
+inst_342:
+// rs1_val==65534 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0xfffe, 0xfffe, 0x55555555, x1, 1292, x2)
+
+inst_343:
+// rs1_val==65534 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffe; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xfffe, 0x3, x1, 1296, x2)
+
+inst_344:
+// rs1_val==0 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x10000, x1, 1300, x2)
+
+inst_345:
+// rs1_val==0 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x1, x1, 1304, x2)
+
+inst_346:
+// rs1_val==0 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xb505, x1, 1308, x2)
+
+inst_347:
+// rs1_val==0 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x66666667, x1, 1312, x2)
+
+inst_348:
+// rs1_val==0 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x33333334, x1, 1316, x2)
+
+inst_349:
+// rs1_val==0 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x6, x1, 1320, x2)
+
+inst_350:
+// rs1_val==0 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaab, x1, 1324, x2)
+
+inst_351:
+// rs1_val==0 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x55555556, x1, 1328, x2)
+
+inst_352:
+// rs1_val==0 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x4, x1, 1332, x2)
+
+inst_353:
+// rs1_val==0 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xfffe, x1, 1336, x2)
+
+inst_354:
+// rs1_val==0 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1340, x2)
+
+inst_355:
+// rs1_val==0 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xb503, x1, 1344, x2)
+
+inst_356:
+// rs1_val==0 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x66666665, x1, 1348, x2)
+
+inst_357:
+// rs1_val==0 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x33333332, x1, 1352, x2)
+
+inst_358:
+// rs1_val==0 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaa9, x1, 1356, x2)
+
+inst_359:
+// rs1_val==0 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x55555554, x1, 1360, x2)
+
+inst_360:
+// rs1_val==0 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x2, x1, 1364, x2)
+
+inst_361:
+// rs1_val==0 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xffff, x1, 1368, x2)
+
+inst_362:
+// rs1_val==0 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xb504, x1, 1372, x2)
+
+inst_363:
+// rs1_val==0 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x66666666, x1, 1376, x2)
+
+inst_364:
+// rs1_val==0 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x33333333, x1, 1380, x2)
+
+inst_365:
+// rs1_val==0 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x5, x1, 1384, x2)
+
+inst_366:
+// rs1_val==0 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0xaaaaaaaa, x1, 1388, x2)
+
+inst_367:
+// rs1_val==0 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x55555555, x1, 1392, x2)
+
+inst_368:
+// rs1_val==0 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x0, 0x3, x1, 1396, x2)
+
+inst_369:
+// rs1_val==46339 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x10000, x1, 1400, x2)
+
+inst_370:
+// rs1_val==46339 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb503, 0x1, x1, 1404, x2)
+
+inst_371:
+// rs1_val==46339 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0xb505, x1, 1408, x2)
+
+inst_372:
+// rs1_val==46339 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x66666667, x1, 1412, x2)
+
+inst_373:
+// rs1_val==46339 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x33333334, x1, 1416, x2)
+
+inst_374:
+// rs1_val==46339 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xb503, 0x6, x1, 1420, x2)
+
+inst_375:
+// rs1_val==46339 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0xaaaaaaab, x1, 1424, x2)
+
+inst_376:
+// rs1_val==46339 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x55555556, x1, 1428, x2)
+
+inst_377:
+// rs1_val==46339 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xb503, 0x4, x1, 1432, x2)
+
+inst_378:
+// rs1_val==46339 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0xfffe, x1, 1436, x2)
+
+inst_379:
+// rs1_val==46339 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x0, x1, 1440, x2)
+
+inst_380:
+// rs1_val==46339 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb503, 0xb503, x1, 1444, x2)
+
+inst_381:
+// rs1_val==46339 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x66666665, x1, 1448, x2)
+
+inst_382:
+// rs1_val==46339 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x33333332, x1, 1452, x2)
+
+inst_383:
+// rs1_val==46339 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0xaaaaaaa9, x1, 1456, x2)
+
+inst_384:
+// rs1_val==46339 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x55555554, x1, 1460, x2)
+
+inst_385:
+// rs1_val==46339 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xb503, 0x2, x1, 1464, x2)
+
+inst_386:
+// rs1_val==46339 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0xffff, x1, 1468, x2)
+
+inst_387:
+// rs1_val==46339 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0xb504, x1, 1472, x2)
+
+inst_388:
+// rs1_val==46339 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x66666666, x1, 1476, x2)
+
+inst_389:
+// rs1_val==46339 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x33333333, x1, 1480, x2)
+
+inst_390:
+// rs1_val==46339 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0xb503, 0x5, x1, 1484, x2)
+
+inst_391:
+// rs1_val==46339 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0xaaaaaaaa, x1, 1488, x2)
+
+inst_392:
+// rs1_val==46339 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0xb503, 0xb503, 0x55555555, x1, 1492, x2)
+
+inst_393:
+// rs1_val==46339 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb503; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xb503, 0x3, x1, 1496, x2)
+
+inst_394:
+// rs1_val==1717986917 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x6665, 0x66666665, 0x10000, x1, 1500, x2)
+
+inst_395:
+// rs1_val==1717986917 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666665, 0x1, x1, 1504, x2)
+
+inst_396:
+// rs1_val==1717986917 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x8255, 0x66666665, 0xb505, x1, 1508, x2)
+
+inst_397:
+// rs1_val==1717986917 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x66666665, 0x66666665, 0x66666667, x1, 1512, x2)
+
+inst_398:
+// rs1_val==1717986917 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x33333331, 0x66666665, 0x33333334, x1, 1516, x2)
+
+inst_399:
+// rs1_val==1717986917 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x66666665, 0x6, x1, 1520, x2)
+
+inst_400:
+// rs1_val==1717986917 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x66666665, 0x66666665, 0xaaaaaaab, x1, 1524, x2)
+
+inst_401:
+// rs1_val==1717986917 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x1111110f, 0x66666665, 0x55555556, x1, 1528, x2)
+
+inst_402:
+// rs1_val==1717986917 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666665, 0x4, x1, 1532, x2)
+
+inst_403:
+// rs1_val==1717986917 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x3333, 0x66666665, 0xfffe, x1, 1536, x2)
+
+inst_404:
+// rs1_val==1717986917 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x66666665, 0x66666665, 0x0, x1, 1540, x2)
+
+inst_405:
+// rs1_val==1717986917 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x39ef, 0x66666665, 0xb503, x1, 1544, x2)
+
+inst_406:
+// rs1_val==1717986917 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666665, 0x66666665, x1, 1548, x2)
+
+inst_407:
+// rs1_val==1717986917 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666665, 0x33333332, x1, 1552, x2)
+
+inst_408:
+// rs1_val==1717986917 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x66666665, 0x66666665, 0xaaaaaaa9, x1, 1556, x2)
+
+inst_409:
+// rs1_val==1717986917 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x11111111, 0x66666665, 0x55555554, x1, 1560, x2)
+
+inst_410:
+// rs1_val==1717986917 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666665, 0x2, x1, 1564, x2)
+
+inst_411:
+// rs1_val==1717986917 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xcccb, 0x66666665, 0xffff, x1, 1568, x2)
+
+inst_412:
+// rs1_val==1717986917 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x5e21, 0x66666665, 0xb504, x1, 1572, x2)
+
+inst_413:
+// rs1_val==1717986917 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x66666665, 0x66666665, 0x66666666, x1, 1576, x2)
+
+inst_414:
+// rs1_val==1717986917 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x66666665, 0x33333333, x1, 1580, x2)
+
+inst_415:
+// rs1_val==1717986917 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x66666665, 0x5, x1, 1584, x2)
+
+inst_416:
+// rs1_val==1717986917 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x66666665, 0x66666665, 0xaaaaaaaa, x1, 1588, x2)
+
+inst_417:
+// rs1_val==1717986917 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x11111110, 0x66666665, 0x55555555, x1, 1592, x2)
+
+inst_418:
+// rs1_val==1717986917 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666665; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x66666665, 0x3, x1, 1596, x2)
+
+inst_419:
+// rs1_val==858993458 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x3332, 0x33333332, 0x10000, x1, 1600, x2)
+
+inst_420:
+// rs1_val==858993458 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333332, 0x1, x1, 1604, x2)
+
+inst_421:
+// rs1_val==858993458 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x412a, 0x33333332, 0xb505, x1, 1608, x2)
+
+inst_422:
+// rs1_val==858993458 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x66666667, x1, 1612, x2)
+
+inst_423:
+// rs1_val==858993458 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x33333334, x1, 1616, x2)
+
+inst_424:
+// rs1_val==858993458 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x33333332, 0x6, x1, 1620, x2)
+
+inst_425:
+// rs1_val==858993458 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0xaaaaaaab, x1, 1624, x2)
+
+inst_426:
+// rs1_val==858993458 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x55555556, x1, 1628, x2)
+
+inst_427:
+// rs1_val==858993458 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x33333332, 0x4, x1, 1632, x2)
+
+inst_428:
+// rs1_val==858993458 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x9998, 0x33333332, 0xfffe, x1, 1636, x2)
+
+inst_429:
+// rs1_val==858993458 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x0, x1, 1640, x2)
+
+inst_430:
+// rs1_val==858993458 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x1cf7, 0x33333332, 0xb503, x1, 1644, x2)
+
+inst_431:
+// rs1_val==858993458 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x66666665, x1, 1648, x2)
+
+inst_432:
+// rs1_val==858993458 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333332, 0x33333332, x1, 1652, x2)
+
+inst_433:
+// rs1_val==858993458 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0xaaaaaaa9, x1, 1656, x2)
+
+inst_434:
+// rs1_val==858993458 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x55555554, x1, 1660, x2)
+
+inst_435:
+// rs1_val==858993458 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333332, 0x2, x1, 1664, x2)
+
+inst_436:
+// rs1_val==858993458 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x6665, 0x33333332, 0xffff, x1, 1668, x2)
+
+inst_437:
+// rs1_val==858993458 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x8992, 0x33333332, 0xb504, x1, 1672, x2)
+
+inst_438:
+// rs1_val==858993458 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x66666666, x1, 1676, x2)
+
+inst_439:
+// rs1_val==858993458 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x33333333, x1, 1680, x2)
+
+inst_440:
+// rs1_val==858993458 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x33333332, 0x5, x1, 1684, x2)
+
+inst_441:
+// rs1_val==858993458 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0xaaaaaaaa, x1, 1688, x2)
+
+inst_442:
+// rs1_val==858993458 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x33333332, 0x55555555, x1, 1692, x2)
+
+inst_443:
+// rs1_val==858993458 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333332; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x33333332, 0x3, x1, 1696, x2)
+
+inst_444:
+// rs1_val==2863311529 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xaaa9, 0xaaaaaaa9, 0x10000, x1, 1700, x2)
+
+inst_445:
+// rs1_val==2863311529 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0x1, x1, 1704, x2)
+
+inst_446:
+// rs1_val==2863311529 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x9ce2, 0xaaaaaaa9, 0xb505, x1, 1708, x2)
+
+inst_447:
+// rs1_val==2863311529 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x44444442, 0xaaaaaaa9, 0x66666667, x1, 1712, x2)
+
+inst_448:
+// rs1_val==2863311529 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x1111110d, 0xaaaaaaa9, 0x33333334, x1, 1716, x2)
+
+inst_449:
+// rs1_val==2863311529 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x6, x1, 1720, x2)
+
+inst_450:
+// rs1_val==2863311529 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0xaaaaaaa9, 0xaaaaaaa9, 0xaaaaaaab, x1, 1724, x2)
+
+inst_451:
+// rs1_val==2863311529 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x55555553, 0xaaaaaaa9, 0x55555556, x1, 1728, x2)
+
+inst_452:
+// rs1_val==2863311529 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x4, x1, 1732, x2)
+
+inst_453:
+// rs1_val==2863311529 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0xfffe, x1, 1736, x2)
+
+inst_454:
+// rs1_val==2863311529 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xaaaaaaa9, 0xaaaaaaa9, 0x0, x1, 1740, x2)
+
+inst_455:
+// rs1_val==2863311529 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x608f, 0xaaaaaaa9, 0xb503, x1, 1744, x2)
+
+inst_456:
+// rs1_val==2863311529 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x44444444, 0xaaaaaaa9, 0x66666665, x1, 1748, x2)
+
+inst_457:
+// rs1_val==2863311529 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x11111113, 0xaaaaaaa9, 0x33333332, x1, 1752, x2)
+
+inst_458:
+// rs1_val==2863311529 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaa9, 0xaaaaaaa9, x1, 1756, x2)
+
+inst_459:
+// rs1_val==2863311529 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x55555554, x1, 1760, x2)
+
+inst_460:
+// rs1_val==2863311529 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x2, x1, 1764, x2)
+
+inst_461:
+// rs1_val==2863311529 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x5554, 0xaaaaaaa9, 0xffff, x1, 1768, x2)
+
+inst_462:
+// rs1_val==2863311529 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x2435, 0xaaaaaaa9, 0xb504, x1, 1772, x2)
+
+inst_463:
+// rs1_val==2863311529 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x44444443, 0xaaaaaaa9, 0x66666666, x1, 1776, x2)
+
+inst_464:
+// rs1_val==2863311529 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x11111110, 0xaaaaaaa9, 0x33333333, x1, 1780, x2)
+
+inst_465:
+// rs1_val==2863311529 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0xaaaaaaa9, 0x5, x1, 1784, x2)
+
+inst_466:
+// rs1_val==1431655764 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555554, 0x4, x1, 1788, x2)
+
+inst_467:
+// rs1_val==1431655764 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555554, 0xfffe, x1, 1792, x2)
+
+inst_468:
+// rs1_val==1431655764 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0x0, x1, 1796, x2)
+
+inst_469:
+// rs1_val==1431655764 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x3047, 0x55555554, 0xb503, x1, 1800, x2)
+
+inst_470:
+// rs1_val==1431655764 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0x66666665, x1, 1804, x2)
+
+inst_471:
+// rs1_val==1431655764 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x22222222, 0x55555554, 0x33333332, x1, 1808, x2)
+
+inst_472:
+// rs1_val==1431655764 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0xaaaaaaa9, x1, 1812, x2)
+
+inst_473:
+// rs1_val==1431655764 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555554, 0x55555554, x1, 1816, x2)
+
+inst_474:
+// rs1_val==1431655764 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555554, 0x2, x1, 1820, x2)
+
+inst_475:
+// rs1_val==1431655764 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xaaa9, 0x55555554, 0xffff, x1, 1824, x2)
+
+inst_476:
+// rs1_val==1431655764 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x6c9c, 0x55555554, 0xb504, x1, 1828, x2)
+
+inst_477:
+// rs1_val==1431655764 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0x66666666, x1, 1832, x2)
+
+inst_478:
+// rs1_val==1431655764 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x22222221, 0x55555554, 0x33333333, x1, 1836, x2)
+
+inst_479:
+// rs1_val==1431655764 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x55555554, 0x5, x1, 1840, x2)
+
+inst_480:
+// rs1_val==1431655764 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0xaaaaaaaa, x1, 1844, x2)
+
+inst_481:
+// rs1_val==1431655764 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0x55555555, x1, 1848, x2)
+
+inst_482:
+// rs1_val==1431655764 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555554, 0x3, x1, 1852, x2)
+
+inst_483:
+// rs1_val==2 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x10000, x1, 1856, x2)
+
+inst_484:
+// rs1_val==2 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x2, 0x1, x1, 1860, x2)
+
+inst_485:
+// rs1_val==2 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0xb505, x1, 1864, x2)
+
+inst_486:
+// rs1_val==2 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x66666667, x1, 1868, x2)
+
+inst_487:
+// rs1_val==2 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x33333334, x1, 1872, x2)
+
+inst_488:
+// rs1_val==2 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x6, x1, 1876, x2)
+
+inst_489:
+// rs1_val==2 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0xaaaaaaab, x1, 1880, x2)
+
+inst_490:
+// rs1_val==2 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x55555556, x1, 1884, x2)
+
+inst_491:
+// rs1_val==2 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x4, x1, 1888, x2)
+
+inst_492:
+// rs1_val==2 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0xfffe, x1, 1892, x2)
+
+inst_493:
+// rs1_val==2 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x0, x1, 1896, x2)
+
+inst_494:
+// rs1_val==2 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0xb503, x1, 1900, x2)
+
+inst_495:
+// rs1_val==2 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x66666665, x1, 1904, x2)
+
+inst_496:
+// rs1_val==2 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x33333332, x1, 1908, x2)
+
+inst_497:
+// rs1_val==2 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0xaaaaaaa9, x1, 1912, x2)
+
+inst_498:
+// rs1_val==2 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x55555554, x1, 1916, x2)
+
+inst_499:
+// rs1_val==2 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x2, 0x2, x1, 1920, x2)
+
+inst_500:
+// rs1_val==2 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0xffff, x1, 1924, x2)
+
+inst_501:
+// rs1_val==2 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0xb504, x1, 1928, x2)
+
+inst_502:
+// rs1_val==2 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x66666666, x1, 1932, x2)
+
+inst_503:
+// rs1_val==2 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x33333333, x1, 1936, x2)
+
+inst_504:
+// rs1_val==2 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x5, x1, 1940, x2)
+
+inst_505:
+// rs1_val==2 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0xaaaaaaaa, x1, 1944, x2)
+
+inst_506:
+// rs1_val==2 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x55555555, x1, 1948, x2)
+
+inst_507:
+// rs1_val==2 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x2, 0x3, x1, 1952, x2)
+
+inst_508:
+// rs1_val==65535 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x10000, x1, 1956, x2)
+
+inst_509:
+// rs1_val==65535 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xffff, 0x1, x1, 1960, x2)
+
+inst_510:
+// rs1_val==65535 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x4afa, 0xffff, 0xb505, x1, 1964, x2)
+
+inst_511:
+// rs1_val==65535 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x66666667, x1, 1968, x2)
+
+inst_512:
+// rs1_val==65535 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x33333334, x1, 1972, x2)
+
+inst_513:
+// rs1_val==65535 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xffff, 0x6, x1, 1976, x2)
+
+inst_514:
+// rs1_val==65535 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0xaaaaaaab, x1, 1980, x2)
+
+inst_515:
+// rs1_val==65535 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x55555556, x1, 1984, x2)
+
+inst_516:
+// rs1_val==65535 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0xffff, 0x4, x1, 1988, x2)
+
+inst_517:
+// rs1_val==65535 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xffff, 0xfffe, x1, 1992, x2)
+
+inst_518:
+// rs1_val==65535 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x0, x1, 1996, x2)
+
+inst_519:
+// rs1_val==65535 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x4afc, 0xffff, 0xb503, x1, 2000, x2)
+
+inst_520:
+// rs1_val==65535 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x66666665, x1, 2004, x2)
+
+inst_521:
+// rs1_val==65535 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x33333332, x1, 2008, x2)
+
+inst_522:
+// rs1_val==65535 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0xaaaaaaa9, x1, 2012, x2)
+
+inst_523:
+// rs1_val==65535 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x55555554, x1, 2016, x2)
+
+inst_524:
+// rs1_val==65535 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xffff, 0x2, x1, 2020, x2)
+
+inst_525:
+// rs1_val==65535 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xffff, 0xffff, x1, 2024, x2)
+
+inst_526:
+// rs1_val==65535 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x4afb, 0xffff, 0xb504, x1, 2028, x2)
+
+inst_527:
+// rs1_val==65535 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x66666666, x1, 2032, x2)
+
+inst_528:
+// rs1_val==65535 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x33333333, x1, 2036, x2)
+
+inst_529:
+// rs1_val==65535 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xffff, 0x5, x1, 2040, x2)
+
+inst_530:
+// rs1_val==65535 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0xaaaaaaaa, x1, 2044, x2)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_531:
+// rs1_val==65535 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0xffff, 0xffff, 0x55555555, x1, 0, x2)
+
+inst_532:
+// rs1_val==65535 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffff; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xffff, 0x3, x1, 4, x2)
+
+inst_533:
+// rs1_val==46340 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x10000, x1, 8, x2)
+
+inst_534:
+// rs1_val==46340 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb504, 0x1, x1, 12, x2)
+
+inst_535:
+// rs1_val==46340 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0xb505, x1, 16, x2)
+
+inst_536:
+// rs1_val==46340 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x66666667, x1, 20, x2)
+
+inst_537:
+// rs1_val==46340 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x33333334, x1, 24, x2)
+
+inst_538:
+// rs1_val==46340 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xb504, 0x6, x1, 28, x2)
+
+inst_539:
+// rs1_val==46340 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0xaaaaaaab, x1, 32, x2)
+
+inst_540:
+// rs1_val==46340 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x55555556, x1, 36, x2)
+
+inst_541:
+// rs1_val==46340 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb504, 0x4, x1, 40, x2)
+
+inst_542:
+// rs1_val==46340 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0xfffe, x1, 44, x2)
+
+inst_543:
+// rs1_val==46340 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x0, x1, 48, x2)
+
+inst_544:
+// rs1_val==46340 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xb504, 0xb503, x1, 52, x2)
+
+inst_545:
+// rs1_val==46340 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x66666665, x1, 56, x2)
+
+inst_546:
+// rs1_val==46340 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x33333332, x1, 60, x2)
+
+inst_547:
+// rs1_val==46340 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0xaaaaaaa9, x1, 64, x2)
+
+inst_548:
+// rs1_val==46340 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x55555554, x1, 68, x2)
+
+inst_549:
+// rs1_val==46340 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb504, 0x2, x1, 72, x2)
+
+inst_550:
+// rs1_val==46340 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0xffff, x1, 76, x2)
+
+inst_551:
+// rs1_val==46340 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb504, 0xb504, x1, 80, x2)
+
+inst_552:
+// rs1_val==46340 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x66666666, x1, 84, x2)
+
+inst_553:
+// rs1_val==46340 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x33333333, x1, 88, x2)
+
+inst_554:
+// rs1_val==46340 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xb504, 0x5, x1, 92, x2)
+
+inst_555:
+// rs1_val==46340 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0xaaaaaaaa, x1, 96, x2)
+
+inst_556:
+// rs1_val==46340 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0xb504, 0xb504, 0x55555555, x1, 100, x2)
+
+inst_557:
+// rs1_val==46340 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xb504; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xb504, 0x3, x1, 104, x2)
+
+inst_558:
+// rs1_val==1717986918 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x6666, 0x66666666, 0x10000, x1, 108, x2)
+
+inst_559:
+// rs1_val==1717986918 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666666, 0x1, x1, 112, x2)
+
+inst_560:
+// rs1_val==1717986918 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x8256, 0x66666666, 0xb505, x1, 116, x2)
+
+inst_561:
+// rs1_val==1717986918 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x66666666, 0x66666666, 0x66666667, x1, 120, x2)
+
+inst_562:
+// rs1_val==1717986918 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x33333332, 0x66666666, 0x33333334, x1, 124, x2)
+
+inst_563:
+// rs1_val==1717986918 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666666, 0x6, x1, 128, x2)
+
+inst_564:
+// rs1_val==1717986918 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x66666666, 0x66666666, 0xaaaaaaab, x1, 132, x2)
+
+inst_565:
+// rs1_val==1717986918 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x11111110, 0x66666666, 0x55555556, x1, 136, x2)
+
+inst_566:
+// rs1_val==1717986918 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x66666666, 0x4, x1, 140, x2)
+
+inst_567:
+// rs1_val==1717986918 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x3334, 0x66666666, 0xfffe, x1, 144, x2)
+
+inst_568:
+// rs1_val==1717986918 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x66666666, 0x66666666, 0x0, x1, 148, x2)
+
+inst_569:
+// rs1_val==1717986918 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x39f0, 0x66666666, 0xb503, x1, 152, x2)
+
+inst_570:
+// rs1_val==1717986918 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x66666666, 0x66666665, x1, 156, x2)
+
+inst_571:
+// rs1_val==1717986918 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x66666666, 0x33333332, x1, 160, x2)
+
+inst_572:
+// rs1_val==1717986918 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x66666666, 0x66666666, 0xaaaaaaa9, x1, 164, x2)
+
+inst_573:
+// rs1_val==1717986918 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x11111112, 0x66666666, 0x55555554, x1, 168, x2)
+
+inst_574:
+// rs1_val==1717986918 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666666, 0x2, x1, 172, x2)
+
+inst_575:
+// rs1_val==1717986918 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xcccc, 0x66666666, 0xffff, x1, 176, x2)
+
+inst_576:
+// rs1_val==1717986918 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x5e22, 0x66666666, 0xb504, x1, 180, x2)
+
+inst_577:
+// rs1_val==1717986918 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666666, 0x66666666, x1, 184, x2)
+
+inst_578:
+// rs1_val==1717986918 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666666, 0x33333333, x1, 188, x2)
+
+inst_579:
+// rs1_val==1717986918 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x66666666, 0x5, x1, 192, x2)
+
+inst_580:
+// rs1_val==1717986918 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x66666666, 0x66666666, 0xaaaaaaaa, x1, 196, x2)
+
+inst_581:
+// rs1_val==1717986918 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x11111111, 0x66666666, 0x55555555, x1, 200, x2)
+
+inst_582:
+// rs1_val==1717986918 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x66666666; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x66666666, 0x3, x1, 204, x2)
+
+inst_583:
+// rs1_val==858993459 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x3333, 0x33333333, 0x10000, x1, 208, x2)
+
+inst_584:
+// rs1_val==858993459 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333333, 0x1, x1, 212, x2)
+
+inst_585:
+// rs1_val==858993459 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x412b, 0x33333333, 0xb505, x1, 216, x2)
+
+inst_586:
+// rs1_val==858993459 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0x66666667, x1, 220, x2)
+
+inst_587:
+// rs1_val==858993459 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0x33333334, x1, 224, x2)
+
+inst_588:
+// rs1_val==858993459 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x33333333, 0x6, x1, 228, x2)
+
+inst_589:
+// rs1_val==858993459 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0xaaaaaaab, x1, 232, x2)
+
+inst_590:
+// rs1_val==858993459 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0x55555556, x1, 236, x2)
+
+inst_591:
+// rs1_val==858993459 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x33333333, 0x4, x1, 240, x2)
+
+inst_592:
+// rs1_val==858993459 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x9999, 0x33333333, 0xfffe, x1, 244, x2)
+
+inst_593:
+// rs1_val==858993459 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0x0, x1, 248, x2)
+
+inst_594:
+// rs1_val==2863311529 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaa9, 0x3, x1, 252, x2)
+
+inst_595:
+// rs1_val==858993459 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x1cf8, 0x33333333, 0xb503, x1, 256, x2)
+
+inst_596:
+// rs1_val==858993459 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0x66666665, x1, 260, x2)
+
+inst_597:
+// rs1_val==858993459 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x33333333, 0x33333332, x1, 264, x2)
+
+inst_598:
+// rs1_val==858993459 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0xaaaaaaa9, x1, 268, x2)
+
+inst_599:
+// rs1_val==858993459 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0x55555554, x1, 272, x2)
+
+inst_600:
+// rs1_val==858993459 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x33333333, 0x2, x1, 276, x2)
+
+inst_601:
+// rs1_val==858993459 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x6666, 0x33333333, 0xffff, x1, 280, x2)
+
+inst_602:
+// rs1_val==858993459 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x8993, 0x33333333, 0xb504, x1, 284, x2)
+
+inst_603:
+// rs1_val==858993459 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0x66666666, x1, 288, x2)
+
+inst_604:
+// rs1_val==858993459 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333333, 0x33333333, x1, 292, x2)
+
+inst_605:
+// rs1_val==858993459 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x4, 0x33333333, 0x5, x1, 296, x2)
+
+inst_606:
+// rs1_val==858993459 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0xaaaaaaaa, x1, 300, x2)
+
+inst_607:
+// rs1_val==858993459 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x33333333, 0x33333333, 0x55555555, x1, 304, x2)
+
+inst_608:
+// rs1_val==858993459 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x33333333; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x33333333, 0x3, x1, 308, x2)
+
+inst_609:
+// rs1_val==5 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x10000, x1, 312, x2)
+
+inst_610:
+// rs1_val==5 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x5, 0x1, x1, 316, x2)
+
+inst_611:
+// rs1_val==5 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0xb505, x1, 320, x2)
+
+inst_612:
+// rs1_val==5 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x66666667, x1, 324, x2)
+
+inst_613:
+// rs1_val==5 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x33333334, x1, 328, x2)
+
+inst_614:
+// rs1_val==5 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x6, x1, 332, x2)
+
+inst_615:
+// rs1_val==5 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0xaaaaaaab, x1, 336, x2)
+
+inst_616:
+// rs1_val==5 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x55555556, x1, 340, x2)
+
+inst_617:
+// rs1_val==5 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x5, 0x4, x1, 344, x2)
+
+inst_618:
+// rs1_val==5 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0xfffe, x1, 348, x2)
+
+inst_619:
+// rs1_val==5 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x0, x1, 352, x2)
+
+inst_620:
+// rs1_val==5 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0xb503, x1, 356, x2)
+
+inst_621:
+// rs1_val==5 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x66666665, x1, 360, x2)
+
+inst_622:
+// rs1_val==5 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x33333332, x1, 364, x2)
+
+inst_623:
+// rs1_val==5 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0xaaaaaaa9, x1, 368, x2)
+
+inst_624:
+// rs1_val==5 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x55555554, x1, 372, x2)
+
+inst_625:
+// rs1_val==5 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x5, 0x2, x1, 376, x2)
+
+inst_626:
+// rs1_val==5 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0xffff, x1, 380, x2)
+
+inst_627:
+// rs1_val==5 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0xb504, x1, 384, x2)
+
+inst_628:
+// rs1_val==5 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x66666666, x1, 388, x2)
+
+inst_629:
+// rs1_val==5 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x33333333, x1, 392, x2)
+
+inst_630:
+// rs1_val==5 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x5, 0x5, x1, 396, x2)
+
+inst_631:
+// rs1_val==5 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0xaaaaaaaa, x1, 400, x2)
+
+inst_632:
+// rs1_val==5 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x5, 0x5, 0x55555555, x1, 404, x2)
+
+inst_633:
+// rs1_val==5 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0x5, 0x3, x1, 408, x2)
+
+inst_634:
+// rs1_val==2863311530 and rs2_val==65536, rs1_val == 2863311530
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0xaaaa, 0xaaaaaaaa, 0x10000, x1, 412, x2)
+
+inst_635:
+// rs1_val==2863311530 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x1, x1, 416, x2)
+
+inst_636:
+// rs1_val==2863311530 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x9ce3, 0xaaaaaaaa, 0xb505, x1, 420, x2)
+
+inst_637:
+// rs1_val==2863311530 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x44444443, 0xaaaaaaaa, 0x66666667, x1, 424, x2)
+
+inst_638:
+// rs1_val==2863311530 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x1111110e, 0xaaaaaaaa, 0x33333334, x1, 428, x2)
+
+inst_639:
+// rs1_val==2863311530 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xaaaaaaaa, 0x6, x1, 432, x2)
+
+inst_640:
+// rs1_val==2863311530 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaab, x1, 436, x2)
+
+inst_641:
+// rs1_val==2863311530 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0xaaaaaaaa, 0x55555556, x1, 440, x2)
+
+inst_642:
+// rs1_val==2863311530 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xaaaaaaaa, 0x4, x1, 444, x2)
+
+inst_643:
+// rs1_val==2863311530 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xaaaaaaaa, 0xfffe, x1, 448, x2)
+
+inst_644:
+// rs1_val==2863311530 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0xaaaaaaaa, 0xaaaaaaaa, 0x0, x1, 452, x2)
+
+inst_645:
+// rs1_val==2863311530 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x6090, 0xaaaaaaaa, 0xb503, x1, 456, x2)
+
+inst_646:
+// rs1_val==2863311530 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x44444445, 0xaaaaaaaa, 0x66666665, x1, 460, x2)
+
+inst_647:
+// rs1_val==2863311530 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x11111114, 0xaaaaaaaa, 0x33333332, x1, 464, x2)
+
+inst_648:
+// rs1_val==2863311530 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0xaaaaaaaa, 0xaaaaaaa9, x1, 468, x2)
+
+inst_649:
+// rs1_val==2863311530 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xaaaaaaaa, 0x55555554, x1, 472, x2)
+
+inst_650:
+// rs1_val==2863311530 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x2, x1, 476, x2)
+
+inst_651:
+// rs1_val==2863311530 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x5555, 0xaaaaaaaa, 0xffff, x1, 480, x2)
+
+inst_652:
+// rs1_val==2863311530 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x2436, 0xaaaaaaaa, 0xb504, x1, 484, x2)
+
+inst_653:
+// rs1_val==2863311530 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x44444444, 0xaaaaaaaa, 0x66666666, x1, 488, x2)
+
+inst_654:
+// rs1_val==2863311530 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x11111111, 0xaaaaaaaa, 0x33333333, x1, 492, x2)
+
+inst_655:
+// rs1_val==2863311530 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x5, x1, 496, x2)
+
+inst_656:
+// rs1_val==2863311530 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0xaaaaaaaa, x1, 500, x2)
+
+inst_657:
+// rs1_val==2863311530 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0xaaaaaaaa, 0x55555555, x1, 504, x2)
+
+inst_658:
+// rs1_val==2863311530 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaaa; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x2, 0xaaaaaaaa, 0x3, x1, 508, x2)
+
+inst_659:
+// rs1_val==1431655765 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x5555, 0x55555555, 0x10000, x1, 512, x2)
+
+inst_660:
+// rs1_val==1431655765 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555555, 0x1, x1, 516, x2)
+
+inst_661:
+// rs1_val==1431655765 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0xa8f4, 0x55555555, 0xb505, x1, 520, x2)
+
+inst_662:
+// rs1_val==1431655765 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0x66666667, x1, 524, x2)
+
+inst_663:
+// rs1_val==1431655765 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x22222221, 0x55555555, 0x33333334, x1, 528, x2)
+
+inst_664:
+// rs1_val==1431655765 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x55555555, 0x6, x1, 532, x2)
+
+inst_665:
+// rs1_val==1431655765 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0xaaaaaaab, x1, 536, x2)
+
+inst_666:
+// rs1_val==1431655765 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0x55555556, x1, 540, x2)
+
+inst_667:
+// rs1_val==1431655765 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x55555555, 0x4, x1, 544, x2)
+
+inst_668:
+// rs1_val==1431655765 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x55555555, 0xfffe, x1, 548, x2)
+
+inst_669:
+// rs1_val==1431655765 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0x0, x1, 552, x2)
+
+inst_670:
+// rs1_val==1431655765 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x3048, 0x55555555, 0xb503, x1, 556, x2)
+
+inst_671:
+// rs1_val==1431655765 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0x66666665, x1, 560, x2)
+
+inst_672:
+// rs1_val==1431655765 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x22222223, 0x55555555, 0x33333332, x1, 564, x2)
+
+inst_673:
+// rs1_val==1431655765 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0xaaaaaaa9, x1, 568, x2)
+
+inst_674:
+// rs1_val==1431655765 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x55555555, 0x55555554, x1, 572, x2)
+
+inst_675:
+// rs1_val==1431655765 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x55555555, 0x2, x1, 576, x2)
+
+inst_676:
+// rs1_val==1431655765 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0xaaaa, 0x55555555, 0xffff, x1, 580, x2)
+
+inst_677:
+// rs1_val==1431655765 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x6c9d, 0x55555555, 0xb504, x1, 584, x2)
+
+inst_678:
+// rs1_val==1431655765 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0x66666666, x1, 588, x2)
+
+inst_679:
+// rs1_val==1431655765 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x22222222, 0x55555555, 0x33333333, x1, 592, x2)
+
+inst_680:
+// rs1_val==1431655765 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555555, 0x5, x1, 596, x2)
+
+inst_681:
+// rs1_val==1431655765 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0xaaaaaaaa, x1, 600, x2)
+
+inst_682:
+// rs1_val==1431655765 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555555, 0x55555555, x1, 604, x2)
+
+inst_683:
+// rs1_val==1431655765 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x55555555, 0x3, x1, 608, x2)
+
+inst_684:
+// rs1_val==3 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x10000, x1, 612, x2)
+
+inst_685:
+// rs1_val==3 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x3, 0x1, x1, 616, x2)
+
+inst_686:
+// rs1_val==3 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0xb505, x1, 620, x2)
+
+inst_687:
+// rs1_val==3 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x66666667, x1, 624, x2)
+
+inst_688:
+// rs1_val==3 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x33333334, x1, 628, x2)
+
+inst_689:
+// rs1_val==3 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x6, x1, 632, x2)
+
+inst_690:
+// rs1_val==3 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0xaaaaaaab, x1, 636, x2)
+
+inst_691:
+// rs1_val==3 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x55555556, x1, 640, x2)
+
+inst_692:
+// rs1_val==3 and rs2_val==4,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x4, x1, 644, x2)
+
+inst_693:
+// rs1_val==3 and rs2_val==65534,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xfffe
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0xfffe, x1, 648, x2)
+
+inst_694:
+// rs1_val==3 and rs2_val==0,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x0, x1, 652, x2)
+
+inst_695:
+// rs1_val==3 and rs2_val==46339,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb503
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0xb503, x1, 656, x2)
+
+inst_696:
+// rs1_val==3 and rs2_val==1717986917,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666665
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x66666665, x1, 660, x2)
+
+inst_697:
+// rs1_val==3 and rs2_val==858993458,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333332
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x33333332, x1, 664, x2)
+
+inst_698:
+// rs1_val==3 and rs2_val==2863311529,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaa9
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0xaaaaaaa9, x1, 668, x2)
+
+inst_699:
+// rs1_val==3 and rs2_val==1431655764,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555554
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x55555554, x1, 672, x2)
+
+inst_700:
+// rs1_val==3 and rs2_val==2,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(remu, x12, x10, x11, 0x1, 0x3, 0x2, x1, 676, x2)
+
+inst_701:
+// rs1_val==3 and rs2_val==65535,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xffff
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0xffff, x1, 680, x2)
+
+inst_702:
+// rs1_val==3 and rs2_val==46340,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0xb504, x1, 684, x2)
+
+inst_703:
+// rs1_val==3 and rs2_val==1717986918,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x66666666
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x66666666, x1, 688, x2)
+
+inst_704:
+// rs1_val==3 and rs2_val==858993459,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x33333333
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x33333333, x1, 692, x2)
+
+inst_705:
+// rs1_val==3 and rs2_val==5,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x5, x1, 696, x2)
+
+inst_706:
+// rs1_val==3 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0xaaaaaaaa, x1, 700, x2)
+
+inst_707:
+// rs1_val==3 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x3, 0x3, 0x55555555, x1, 704, x2)
+
+inst_708:
+// rs1_val==3 and rs2_val==3,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x3, 0x3, x1, 708, x2)
+
+inst_709:
+// rs1_val==2863311529 and rs2_val==2863311530,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0xaaaaaaaa
+TEST_RR_OP(remu, x12, x10, x11, 0xaaaaaaa9, 0xaaaaaaa9, 0xaaaaaaaa, x1, 712, x2)
+
+inst_710:
+// rs1_val == (2**(xlen)-1),
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff; op2val:0xffffffef
+TEST_RR_OP(remu, x12, x10, x11, 0x10, 0xffffffff, 0xffffffef, x1, 716, x2)
+
+inst_711:
+// rs1_val==2863311529 and rs2_val==1431655765,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xaaaaaaa9; op2val:0x55555555
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0xaaaaaaa9, 0x55555555, x1, 720, x2)
+
+inst_712:
+// rs1_val==1431655764 and rs2_val==65536,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x10000
+TEST_RR_OP(remu, x12, x10, x11, 0x5554, 0x55555554, 0x10000, x1, 724, x2)
+
+inst_713:
+// rs1_val==1431655764 and rs2_val==1,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x1
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555554, 0x1, x1, 728, x2)
+
+inst_714:
+// rs1_val==1431655764 and rs2_val==46341,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xb505
+TEST_RR_OP(remu, x12, x10, x11, 0xa8f3, 0x55555554, 0xb505, x1, 732, x2)
+
+inst_715:
+// rs1_val==1431655764 and rs2_val==1717986919,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x66666667
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0x66666667, x1, 736, x2)
+
+inst_716:
+// rs1_val==1431655764 and rs2_val==858993460,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x33333334
+TEST_RR_OP(remu, x12, x10, x11, 0x22222220, 0x55555554, 0x33333334, x1, 740, x2)
+
+inst_717:
+// rs1_val==1431655764 and rs2_val==6,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x6
+TEST_RR_OP(remu, x12, x10, x11, 0x0, 0x55555554, 0x6, x1, 744, x2)
+
+inst_718:
+// rs1_val==1431655764 and rs2_val==2863311531,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0xaaaaaaab
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0xaaaaaaab, x1, 748, x2)
+
+inst_719:
+// rs1_val==1431655764 and rs2_val==1431655766,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555554; op2val:0x55555556
+TEST_RR_OP(remu, x12, x10, x11, 0x55555554, 0x55555554, 0x55555556, x1, 752, x2)
+
+inst_720:
+// rs2_val == 3221225471, rs1_val == 32768
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0xbfffffff
+TEST_RR_OP(remu, x12, x10, x11, 0x8000, 0x8000, 0xbfffffff, x1, 756, x2)
+
+inst_721:
+// rs2_val == 3758096383,
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xc; op2val:0xdfffffff
+TEST_RR_OP(remu, x12, x10, x11, 0xc, 0xc, 0xdfffffff, x1, 760, x2)
+
+inst_722:
+// rs2_val == 4227858431, rs1_val == 1431655765
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0x55555555; op2val:0xfbffffff
+TEST_RR_OP(remu, x12, x10, x11, 0x55555555, 0x55555555, 0xfbffffff, x1, 764, x2)
+
+inst_723:
+// rs2_val == 4261412863, rs1_val == 3758096383
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffff; op2val:0xfdffffff
+TEST_RR_OP(remu, x12, x10, x11, 0xdfffffff, 0xdfffffff, 0xfdffffff, x1, 768, x2)
+
+inst_724:
+// rs2_val == 4292870143, rs1_val == 4294967291
+// opcode: remu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffb; op2val:0xffdfffff
+TEST_RR_OP(remu, x12, x10, x11, 0x1ffffc, 0xfffffffb, 0xffdfffff, x1, 772, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 512*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 194*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/.gitgnore b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/.gitgnore
new file mode 100644
index 000000000..618bc413b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/.gitgnore
@@ -0,0 +1,6 @@
+I/src/env
+M/src/env
+C/src/env
+privilege/src/env
+Zicsr/src/env
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/C/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/C/Makefile
new file mode 100644
index 000000000..d8449d851
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/C/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32ic -mabi=ilp32 -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/C/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/C/Makefrag
new file mode 100644
index 000000000..b2474c13d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/C/Makefrag
@@ -0,0 +1,62 @@
+# RISC-V Architecture Test RV32I Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV32I architectural tests
+
+rv32i_sc_tests = \
+ cadd-01 \
+ caddi-01 \
+ caddi16sp-01 \
+ caddi4spn-01 \
+ cand-01 \
+ candi-01 \
+ cbeqz-01 \
+ cbnez-01 \
+ cj-01 \
+ cjal-01 \
+ cjalr-01 \
+ cjr-01 \
+ cli-01 \
+ clui-01 \
+ clw-01 \
+ clwsp-01 \
+ cmv-01 \
+ cnop-01 \
+ cor-01 \
+ cslli-01 \
+ csrai-01 \
+ csrli-01 \
+ csub-01 \
+ csw-01 \
+ cswsp-01 \
+ cxor-01 \
+ cebreak-01
+
+
+rv32i_tests = $(addsuffix .elf, $(rv32i_sc_tests))
+
+target_tests += $(rv32i_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/F/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/F/Makefile
new file mode 100644
index 000000000..4079d3013
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/F/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32if -mabi=ilp32 -DXLEN=$(XLEN) -DFLEN=32))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/F/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/F/Makefrag
new file mode 100644
index 000000000..768a3450f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/F/Makefrag
@@ -0,0 +1,160 @@
+# RISC-V Architecture Test RV32IF Makefrag
+#
+# Copyright (c) 2021. IIT Madras. All rights reserved.
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# Description: Makefrag for RV32IF architectural tests
+
+rv32if_sc_tests = \
+ fadd_b1-01 \
+ fadd_b10-01 \
+ fadd_b11-01 \
+ fadd_b12-01 \
+ fadd_b13-01 \
+ fadd_b2-01 \
+ fadd_b3-01 \
+ fadd_b4-01 \
+ fadd_b5-01 \
+ fadd_b7-01 \
+ fadd_b8-01 \
+ fclass_b1-01 \
+ fcvt.s.w_b25-01 \
+ fcvt.s.w_b26-01 \
+ fcvt.s.wu_b25-01 \
+ fcvt.s.wu_b26-01 \
+ fcvt.w.s_b1-01 \
+ fcvt.w.s_b22-01 \
+ fcvt.w.s_b23-01 \
+ fcvt.w.s_b24-01 \
+ fcvt.w.s_b27-01 \
+ fcvt.w.s_b28-01 \
+ fcvt.w.s_b29-01 \
+ fcvt.wu.s_b1-01 \
+ fcvt.wu.s_b22-01 \
+ fcvt.wu.s_b23-01 \
+ fcvt.wu.s_b24-01 \
+ fcvt.wu.s_b27-01 \
+ fcvt.wu.s_b28-01 \
+ fcvt.wu.s_b29-01 \
+ fdiv_b1-01 \
+ fdiv_b2-01 \
+ fdiv_b20-01 \
+ fdiv_b21-01 \
+ fdiv_b3-01 \
+ fdiv_b4-01 \
+ fdiv_b5-01 \
+ fdiv_b6-01 \
+ fdiv_b7-01 \
+ fdiv_b8-01 \
+ fdiv_b9-01 \
+ feq_b1-01 \
+ feq_b19-01 \
+ fle_b1-01 \
+ fle_b19-01 \
+ flt_b1-01 \
+ flt_b19-01 \
+ flw-align-01 \
+ fmadd_b1-01 \
+ fmadd_b14-01 \
+ fmadd_b15-01 \
+ fmadd_b16-01 \
+ fmadd_b17-01 \
+ fmadd_b18-01 \
+ fmadd_b2-01 \
+ fmadd_b3-01 \
+ fmadd_b4-01 \
+ fmadd_b5-01 \
+ fmadd_b6-01 \
+ fmadd_b7-01 \
+ fmadd_b8-01 \
+ fmax_b1-01 \
+ fmax_b19-01 \
+ fmin_b1-01 \
+ fmin_b19-01 \
+ fmsub_b1-01 \
+ fmsub_b14-01 \
+ fmsub_b15-01 \
+ fmsub_b16-01 \
+ fmsub_b17-01 \
+ fmsub_b18-01 \
+ fmsub_b2-01 \
+ fmsub_b3-01 \
+ fmsub_b4-01 \
+ fmsub_b5-01 \
+ fmsub_b6-01 \
+ fmsub_b7-01 \
+ fmsub_b8-01 \
+ fmul_b1-01 \
+ fmul_b2-01 \
+ fmul_b3-01 \
+ fmul_b4-01 \
+ fmul_b5-01 \
+ fmul_b6-01 \
+ fmul_b7-01 \
+ fmul_b8-01 \
+ fmul_b9-01 \
+ fmv.w.x_b25-01 \
+ fmv.w.x_b26-01 \
+ fmv.x.w_b1-01 \
+ fmv.x.w_b22-01 \
+ fmv.x.w_b23-01 \
+ fmv.x.w_b24-01 \
+ fmv.x.w_b27-01 \
+ fmv.x.w_b28-01 \
+ fmv.x.w_b29-01 \
+ fnmadd_b1-01 \
+ fnmadd_b14-01 \
+ fnmadd_b15-01 \
+ fnmadd_b16-01 \
+ fnmadd_b17-01 \
+ fnmadd_b18-01 \
+ fnmadd_b2-01 \
+ fnmadd_b3-01 \
+ fnmadd_b4-01 \
+ fnmadd_b5-01 \
+ fnmadd_b6-01 \
+ fnmadd_b7-01 \
+ fnmadd_b8-01 \
+ fnmsub_b1-01 \
+ fnmsub_b14-01 \
+ fnmsub_b15-01 \
+ fnmsub_b16-01 \
+ fnmsub_b17-01 \
+ fnmsub_b18-01 \
+ fnmsub_b2-01 \
+ fnmsub_b3-01 \
+ fnmsub_b4-01 \
+ fnmsub_b5-01 \
+ fnmsub_b6-01 \
+ fnmsub_b7-01 \
+ fnmsub_b8-01 \
+ fsgnj_b1-01 \
+ fsgnjn_b1-01 \
+ fsgnjx_b1-01 \
+ fsqrt_b1-01 \
+ fsqrt_b2-01 \
+ fsqrt_b20-01 \
+ fsqrt_b3-01 \
+ fsqrt_b4-01 \
+ fsqrt_b5-01 \
+ fsqrt_b7-01 \
+ fsqrt_b8-01 \
+ fsqrt_b9-01 \
+ fsub_b1-01 \
+ fsub_b10-01 \
+ fsub_b11-01 \
+ fsub_b12-01 \
+ fsub_b13-01 \
+ fsub_b2-01 \
+ fsub_b3-01 \
+ fsub_b4-01 \
+ fsub_b5-01 \
+ fsub_b7-01 \
+ fsub_b8-01 \
+ fsw-align-01 \
+
+
+
+rv32if_tests = $(addsuffix .elf, $(rv32if_sc_tests))
+
+target_tests += $(rv32if_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/.gitignore b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/Makefile
new file mode 100644
index 000000000..74d788175
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32i -mabi=ilp32 -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/Makefrag
new file mode 100644
index 000000000..bb2bfc2cd
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/Makefrag
@@ -0,0 +1,74 @@
+# RISC-V Architecture Test RV32I Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV32I architectural tests
+
+rv32i_sc_tests = \
+ add-01 \
+ addi-01 \
+ and-01 \
+ andi-01 \
+ auipc-01 \
+ beq-01 \
+ bge-01 \
+ bgeu-01 \
+ blt-01 \
+ bltu-01 \
+ bne-01 \
+ jal-01 \
+ jalr-01 \
+ lb-align-01 \
+ lbu-align-01 \
+ lh-align-01 \
+ lhu-align-01 \
+ lui-01 \
+ lw-align-01 \
+ or-01 \
+ ori-01 \
+ sb-align-01 \
+ sh-align-01 \
+ sll-01 \
+ slli-01 \
+ slt-01 \
+ slti-01 \
+ sltiu-01 \
+ sltu-01 \
+ sra-01 \
+ srai-01 \
+ srl-01 \
+ srli-01 \
+ sub-01 \
+ sw-align-01 \
+ xor-01 \
+ xori-01 \
+ fence-01
+
+
+
+rv32i_tests = $(addsuffix .elf, $(rv32i_sc_tests))
+
+target_tests += $(rv32i_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/K_unratified/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/K_unratified/Makefile
new file mode 100644
index 000000000..b810d28c0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/K_unratified/Makefile
@@ -0,0 +1,4 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32ib -mabi=ilp32 -DXLEN=$(XLEN)))
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/K_unratified/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/K_unratified/Makefrag
new file mode 100644
index 000000000..11788461a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/K_unratified/Makefrag
@@ -0,0 +1,96 @@
+# RISC-V Compliance Test RV32K Makefrag
+#
+#
+# Copyright (c) 2021 Imperas Software Ltd., www.imperas.com
+# Copyright (c) 2021 Indian Institute of Technology Madras
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied.
+#
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+#
+# Description: Makefrag for RV32K compliance tests
+
+rv32k_sc_tests = \
+ aes32dsi-01 \
+ aes32dsi-rwp1 \
+ aes32dsmi-01 \
+ aes32dsmi-rwp1 \
+ aes32esi-01 \
+ aes32esi-rwp1 \
+ aes32esmi-01 \
+ aes32esmi-rwp1 \
+ andn-01 \
+ clmul-01 \
+ clmulh-01 \
+ orn-01 \
+ pack-01 \
+ packh-01 \
+ packu-01 \
+ rev.b-01 \
+ rev8-01 \
+ rol-01 \
+ ror-01 \
+ rori-01 \
+ sha256sig0-01 \
+ sha256sig0-rwp1 \
+ sha256sig0-rwp2 \
+ sha256sig1-01 \
+ sha256sig1-rwp1 \
+ sha256sig1-rwp2 \
+ sha256sum0-01 \
+ sha256sum0-rwp1 \
+ sha256sum0-rwp2 \
+ sha256sum1-01 \
+ sha256sum1-rwp1 \
+ sha256sum1-rwp2 \
+ sha512sig0h-01 \
+ sha512sig0h-rwp1 \
+ sha512sig0h-rwp2 \
+ sha512sig0l-01 \
+ sha512sig0l-rwp1 \
+ sha512sig0l-rwp2 \
+ sha512sig1h-01 \
+ sha512sig1h-rwp1 \
+ sha512sig1h-rwp2 \
+ sha512sig1l-01 \
+ sha512sig1l-rwp1 \
+ sha512sig1l-rwp2 \
+ sha512sum0r-01 \
+ sha512sum0r-rwp1 \
+ sha512sum0r-rwp2 \
+ sha512sum1r-01 \
+ sha512sum1r-rwp1 \
+ sha512sum1r-rwp2 \
+ sm3p0-01 \
+ sm3p0-rwp1 \
+ sm3p0-rwp2 \
+ sm3p1-01 \
+ sm3p1-rwp1 \
+ sm3p1-rwp2 \
+ sm4ed-01 \
+ sm4ed-rwp1 \
+ sm4ks-01 \
+ sm4ks-rwp1 \
+ unzip-01 \
+ xnor-01 \
+ xperm.b-01 \
+ xperm.n-01 \
+ zip-01 \
+
+rv32k_tests = $(addsuffix .elf, $(rv32k_sc_tests))
+
+target_tests += $(rv32k_tests)
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/M/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/M/Makefile
new file mode 100644
index 000000000..17df4991f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/M/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32im -mabi=ilp32 -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/M/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/M/Makefrag
new file mode 100644
index 000000000..4e3f72a2a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/M/Makefrag
@@ -0,0 +1,43 @@
+# RISC-V Architecture Test RV32IM Makefrag
+#
+# Copyright (c) 2018, Imperas Software Ltd.
+# Copyright (c) 2020, InCore Semiconductors. Pvt. Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Imperas Software Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Imperas Software Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV32IM architectural tests
+
+rv32im_sc_tests = \
+ div-01 \
+ divu-01 \
+ mul-01 \
+ mulh-01 \
+ mulhsu-01 \
+ mulhu-01 \
+ rem-01 \
+ remu-01
+
+rv32im_tests = $(addsuffix .elf, $(rv32im_sc_tests))
+
+target_tests += $(rv32im_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/Zifencei/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/Zifencei/Makefile
new file mode 100644
index 000000000..74d788175
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/Zifencei/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32i -mabi=ilp32 -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/Zifencei/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/Zifencei/Makefrag
new file mode 100644
index 000000000..70a567d15
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/Zifencei/Makefrag
@@ -0,0 +1,35 @@
+# RISC-V Architecture Test RV32I Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV32I architectural tests
+
+rv32i_sc_tests = \
+ Fencei
+
+rv32i_tests = $(addsuffix .elf, $(rv32i_sc_tests))
+
+target_tests += $(rv32i_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefile
new file mode 100644
index 000000000..fb2c55ad6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv32i -mabi=ilp32 -Drvtest_mtrap_routine=True -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefrag
new file mode 100644
index 000000000..f88f0a8cc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefrag
@@ -0,0 +1,50 @@
+# RISC-V Architecture Test RV32I Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV32I architectural tests
+
+rv32i_sc_tests = \
+ ebreak \
+ ecall \
+ misalign-beq-01 \
+ misalign-bge-01 \
+ misalign-bgeu-01 \
+ misalign-blt-01 \
+ misalign-bltu-01 \
+ misalign-bne-01 \
+ misalign-jal-01 \
+ misalign-lh-01 \
+ misalign-lhu-01 \
+ misalign-lw-01 \
+ misalign-sh-01 \
+ misalign-sw-01 \
+ misalign1-jalr-01 \
+ misalign2-jalr-01
+
+rv32i_tests = $(addsuffix .elf, $(rv32i_sc_tests))
+
+target_tests += $(rv32i_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/.gitgnore b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/.gitgnore
new file mode 100644
index 000000000..618bc413b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/.gitgnore
@@ -0,0 +1,6 @@
+I/src/env
+M/src/env
+C/src/env
+privilege/src/env
+Zicsr/src/env
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/Makefile
new file mode 100644
index 000000000..38d7cba9d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv64ic -mabi=lp64 -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/Makefrag
new file mode 100644
index 000000000..d7032fc71
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/Makefrag
@@ -0,0 +1,35 @@
+# RISC-V Architecture Test RV64I Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV64I architectural tests
+
+rv64i_sc_tests = \
+
+
+rv64i_tests = $(addsuffix .elf, $(rv64i_sc_tests))
+
+target_tests += $(rv64i_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cadd-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cadd-01.reference_output
new file mode 100644
index 000000000..590ec0bc8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cadd-01.reference_output
@@ -0,0 +1,1340 @@
+00080000
+80000000
+7ffffffe
+ffffffff
+66666664
+e6666666
+e0000000
+ffffffff
+00000000
+80000080
+00000000
+00008000
+33333333
+b3333333
+00000000
+00000000
+00000002
+40000000
+00000003
+c0000000
+fffff007
+ffffffff
+00000014
+00000000
+f800001f
+ffffffff
+0000003f
+ffffc000
+00000080
+00080000
+66666766
+66666666
+00000209
+00000000
+66666a65
+66666666
+ffffc7ff
+ffffffff
+00001000
+00800000
+55557554
+55555555
+b5053333
+00000000
+00007ff8
+00000000
+0000ffff
+f8000000
+0001ffff
+fff80000
+00080000
+00000000
+00080000
+00800000
+00140000
+00000000
+001fffff
+ff000000
+00400000
+00001000
+00800000
+20000000
+00fffffe
+00000000
+01ffffff
+00000000
+03fff7ff
+00000000
+08000000
+00000800
+0fffffff
+80000000
+20000007
+00000000
+3ffffffc
+00000000
+d5555555
+55555555
+00080000
+00000001
+00000000
+00000012
+00000000
+c0000004
+b504f334
+00000008
+00000006
+00000020
+ffffffff
+ffffe03f
+ffffffff
+fffff8ff
+fffffffd
+000001ff
+00000000
+00100400
+ffffffef
+000007ff
+00000006
+00001000
+fffffdff
+00001fff
+fffffffb
+00003fff
+00002000
+00010000
+00400000
+00020000
+ffdfffff
+0003ffff
+55555555
+555d5555
+ffffffff
+000ffffd
+ffdfffff
+001fffff
+20000000
+00400000
+00000000
+00840000
+55555555
+56555555
+00400000
+02000000
+00000005
+04000000
+fffffffd
+07ffffff
+fffffffa
+0fffffff
+00000000
+e0000000
+ffffff7f
+3fffffff
+00000ffe
+00000000
+ffeffffc
+ffffffff
+f7fffffa
+ffffffff
+fffffff6
+dfffffff
+ffffffee
+fffffffb
+ffffffe3
+ffffffff
+ffffffbf
+000000ff
+ffffff83
+ffffffff
+fffffefe
+fffdffff
+fffffe1f
+ffffffff
+4afb08cc
+ffffffff
+fffff7ff
+7fffffff
+ffffefff
+00ffffff
+ffffdffe
+fffffdff
+ffffbfde
+ffffffff
+ffff7efe
+ffffffff
+fffefffe
+fffdffff
+fffd7ffe
+ffffffff
+fffc000f
+ffffffff
+fff80003
+ffffffff
+ffebfffe
+ffffffff
+ffdfffff
+00ffffff
+ffb7fffe
+ffffffff
+ff800001
+ffffffff
+ff00ffff
+ffffffff
+fdffffff
+07ffffff
+fc00003f
+ffffffff
+f7fffffa
+ffffffff
+f00fffff
+ffffffff
+dfffffff
+03ffffff
+bfffffff
+003fffff
+77fffffe
+ffffffff
+fffffffe
+fffffdfe
+ffffffff
+00003ffd
+fdfffffe
+fffffffb
+00000003
+fffffff8
+ffffffff
+00000fef
+fffffffe
+ffffffd7
+fffffff6
+ffffffbf
+0000ffff
+ffffff80
+4afb0ccc
+fffffeff
+fffffffe
+7ffffdff
+00000003
+fffffc00
+ffffffbe
+fffff7ff
+fffffffe
+ffdfefff
+fdfffffe
+ffffdfff
+003fffff
+ffffc000
+ffffffff
+ffffffff
+7fffffff
+ffff0000
+ffffffff
+fffeffff
+fffbfffe
+fffbffff
+fffffffe
+ffd7ffff
+fffffffe
+ffafffff
+fffffffe
+ffdffffe
+ffffffff
+ffc0001f
+000001ff
+ff800000
+00000005
+ff000000
+7fffffff
+fe000000
+1fffffff
+fc000000
+55555555
+4d555555
+ffffffff
+f001ffff
+55555555
+35555555
+fbfffffe
+bfffffff
+5555555d
+55555555
+f5a5b778
+aaaaaaa9
+0000007f
+fc000000
+00000100
+10000000
+4afb10ce
+ffffffff
+000007ef
+00000000
+aaaaeaab
+aaaaaaaa
+c0007fff
+ffffffff
+00020002
+00000000
+001fffff
+fff00000
+005fffff
+00000000
+05000000
+00000000
+35333332
+33333333
+04000000
+00080000
+08000000
+00000008
+0fffffbf
+00000000
+40000000
+00000000
+00000080
+00000001
+fffffffe
+00000001
+fdffffff
+00000003
+80000000
+00000008
+ffbfffff
+0000003f
+ffffffff
+ffff807f
+00000080
+00000200
+ffffff7f
+000003ff
+aaaaaaaa
+aaaacaaa
+00000000
+00240000
+02000000
+02000000
+aaaaaaaa
+baaaaaaa
+b504ef33
+00000000
+ffffdffe
+f7ffffff
+fffeffff
+ffffffff
+55535554
+55555555
+ffc03fff
+ffffffff
+ff7fffff
+000fffff
+feffffff
+0000007f
+efffffff
+001fffff
+80000007
+ffffffff
+ffffffff
+ffffffef
+ffffffff
+00003fdf
+fffffffe
+ffffff7f
+00000005
+ffffff80
+ffffffff
+bffffeff
+55555554
+55555155
+00000004
+fffff000
+00000005
+ffff8000
+07ffffff
+ffff0000
+bffffffe
+fffbffff
+ffffffff
+ffefffff
+ffffffff
+ff7fffff
+ffffffff
+3dffffff
+007fffff
+fc000000
+fffffbfe
+efffffff
+aaaaaaa9
+aaaaa8aa
+00000006
+00000000
+55555558
+55555555
+aaaaaaad
+aaaaaaaa
+00000008
+00000000
+33333336
+33333333
+66666669
+66666666
+4afb0cd0
+ffffffff
+b504f336
+00000000
+00000005
+00000000
+55555557
+55555555
+00000003
+00000000
+00000007
+00000000
+33333335
+33333333
+66666668
+66666666
+b504f335
+00000000
+55555559
+55555555
+aaaaaaae
+aaaaaaaa
+00000009
+00000000
+33333337
+33333333
+6666666a
+66666666
+4afb0cd1
+ffffffff
+b504f337
+00000000
+55555558
+55555555
+aaaaaaaa
+aaaaaaaa
+ffffffff
+ffffffff
+5555555a
+55555555
+88888888
+88888888
+bbbbbbbb
+bbbbbbbb
+a0506222
+55555554
+0a5a4888
+55555556
+55555557
+55555555
+aaaaaaa9
+aaaaaaaa
+55555555
+55555555
+55555559
+55555555
+88888887
+88888888
+bbbbbbba
+bbbbbbbb
+0a5a4887
+55555556
+aaaaaaab
+aaaaaaaa
+00000000
+00000000
+5555555b
+55555555
+88888889
+88888888
+bbbbbbbc
+bbbbbbbb
+a0506223
+55555554
+0a5a4889
+55555556
+aaaaaaad
+aaaaaaaa
+ffffffff
+ffffffff
+55555554
+55555555
+aaaaaaaf
+aaaaaaaa
+dddddddd
+dddddddd
+11111110
+11111111
+f5a5b777
+aaaaaaa9
+5faf9ddd
+aaaaaaab
+aaaaaaac
+aaaaaaaa
+fffffffe
+ffffffff
+aaaaaaaa
+aaaaaaaa
+aaaaaaae
+aaaaaaaa
+dddddddc
+dddddddd
+1111110f
+11111111
+5faf9ddc
+aaaaaaab
+00000000
+00000000
+55555555
+55555555
+aaaaaab0
+aaaaaaaa
+ddddddde
+dddddddd
+11111111
+11111111
+f5a5b778
+aaaaaaa9
+5faf9dde
+aaaaaaab
+00000008
+00000000
+5555555a
+55555555
+aaaaaaaf
+aaaaaaaa
+0000000a
+00000000
+33333338
+33333333
+6666666b
+66666666
+4afb0cd2
+ffffffff
+b504f338
+00000000
+00000007
+00000000
+55555559
+55555555
+00000005
+00000000
+00000009
+00000000
+33333337
+33333333
+6666666a
+66666666
+b504f337
+00000000
+5555555b
+55555555
+aaaaaab0
+aaaaaaaa
+0000000b
+00000000
+33333339
+33333333
+6666666c
+66666666
+4afb0cd3
+ffffffff
+b504f339
+00000000
+33333336
+33333333
+88888888
+88888888
+dddddddd
+dddddddd
+33333338
+33333333
+66666666
+66666666
+99999999
+99999999
+7e2e4000
+33333332
+e8382666
+33333333
+33333335
+33333333
+88888887
+88888888
+33333333
+33333333
+33333337
+33333333
+66666665
+66666666
+99999998
+99999999
+e8382665
+33333333
+88888889
+88888888
+ddddddde
+dddddddd
+33333339
+33333333
+66666667
+66666666
+9999999a
+99999999
+7e2e4001
+33333332
+e8382667
+33333333
+66666669
+66666666
+bbbbbbbb
+bbbbbbbb
+11111110
+11111111
+6666666b
+66666666
+99999999
+99999999
+cccccccc
+cccccccc
+b1617333
+66666665
+1b6b5999
+66666667
+66666668
+66666666
+bbbbbbba
+bbbbbbbb
+66666666
+66666666
+6666666a
+66666666
+99999998
+99999999
+cccccccb
+cccccccc
+1b6b5998
+66666667
+bbbbbbbc
+bbbbbbbb
+11111111
+11111111
+6666666c
+66666666
+9999999a
+99999999
+cccccccd
+cccccccc
+b1617334
+66666665
+1b6b599a
+66666667
+4afb0cd0
+ffffffff
+a0506222
+55555554
+f5a5b777
+aaaaaaa9
+4afb0cd2
+ffffffff
+7e2e4000
+33333332
+b1617333
+66666665
+95f6199a
+fffffffe
+00000000
+00000000
+4afb0ccf
+ffffffff
+a0506221
+55555554
+4afb0ccd
+ffffffff
+4afb0cd1
+ffffffff
+7e2e3fff
+33333332
+b1617332
+66666665
+ffffffff
+ffffffff
+a0506223
+55555554
+f5a5b778
+aaaaaaa9
+4afb0cd3
+ffffffff
+7e2e4001
+33333332
+b1617334
+66666665
+95f6199b
+fffffffe
+00000001
+00000000
+b504f336
+00000000
+0a5a4888
+55555556
+5faf9ddd
+aaaaaaab
+b504f338
+00000000
+e8382666
+33333333
+1b6b5999
+66666667
+00000000
+00000000
+6a09e666
+00000001
+b504f335
+00000000
+0a5a4887
+55555556
+b504f333
+00000000
+b504f337
+00000000
+e8382665
+33333333
+1b6b5998
+66666667
+6a09e665
+00000001
+0a5a4889
+55555556
+5faf9dde
+aaaaaaab
+b504f339
+00000000
+e8382667
+33333333
+1b6b599a
+66666667
+00000001
+00000000
+6a09e667
+00000001
+00000005
+00000000
+55555557
+55555555
+aaaaaaac
+aaaaaaaa
+00000007
+00000000
+33333335
+33333333
+66666668
+66666666
+4afb0ccf
+ffffffff
+b504f335
+00000000
+00000004
+00000000
+55555556
+55555555
+00000002
+00000000
+00000006
+00000000
+33333334
+33333333
+66666667
+66666666
+b504f334
+00000000
+55555558
+55555555
+aaaaaaad
+aaaaaaaa
+00000008
+00000000
+33333336
+33333333
+66666669
+66666666
+4afb0cd0
+ffffffff
+b504f336
+00000000
+55555557
+55555555
+aaaaaaa9
+aaaaaaaa
+fffffffe
+ffffffff
+55555559
+55555555
+88888887
+88888888
+bbbbbbba
+bbbbbbbb
+a0506221
+55555554
+0a5a4887
+55555556
+55555556
+55555555
+aaaaaaa8
+aaaaaaaa
+55555554
+55555555
+55555558
+55555555
+88888886
+88888888
+bbbbbbb9
+bbbbbbbb
+0a5a4886
+55555556
+aaaaaaaa
+aaaaaaaa
+ffffffff
+ffffffff
+5555555a
+55555555
+88888888
+88888888
+bbbbbbbb
+bbbbbbbb
+a0506222
+55555554
+0a5a4888
+55555556
+00000003
+00000000
+55555555
+55555555
+aaaaaaaa
+aaaaaaaa
+00000005
+00000000
+33333333
+33333333
+66666666
+66666666
+4afb0ccd
+ffffffff
+b504f333
+00000000
+aaaaaaae
+aaaaaaaa
+00000009
+00000000
+33333337
+33333333
+6666666a
+66666666
+4afb0cd1
+ffffffff
+b504f337
+00000000
+00000006
+00000000
+55555558
+55555555
+00000004
+00000000
+00000008
+00000000
+33333336
+33333333
+66666669
+66666666
+b504f336
+00000000
+5555555a
+55555555
+aaaaaaaf
+aaaaaaaa
+0000000a
+00000000
+33333338
+33333333
+6666666b
+66666666
+4afb0cd2
+ffffffff
+b504f338
+00000000
+33333335
+33333333
+88888887
+88888888
+dddddddc
+dddddddd
+33333337
+33333333
+66666665
+66666666
+99999998
+99999999
+7e2e3fff
+33333332
+e8382665
+33333333
+33333334
+33333333
+88888886
+88888888
+33333332
+33333333
+33333336
+33333333
+66666664
+66666666
+99999997
+99999999
+e8382664
+33333333
+88888888
+88888888
+dddddddd
+dddddddd
+33333338
+33333333
+66666666
+66666666
+99999999
+99999999
+7e2e4000
+33333332
+e8382666
+33333333
+66666668
+66666666
+bbbbbbba
+bbbbbbbb
+1111110f
+11111111
+6666666a
+66666666
+99999998
+99999999
+cccccccb
+cccccccc
+b1617332
+66666665
+1b6b5998
+66666667
+66666667
+66666666
+bbbbbbb9
+bbbbbbbb
+66666665
+66666666
+66666669
+66666666
+99999997
+99999999
+ccccccca
+cccccccc
+1b6b5997
+66666667
+bbbbbbbb
+bbbbbbbb
+11111110
+11111111
+6666666b
+66666666
+99999999
+99999999
+cccccccc
+cccccccc
+b1617333
+66666665
+1b6b5999
+66666667
+b504f335
+00000000
+0a5a4887
+55555556
+5faf9ddc
+aaaaaaab
+b504f337
+00000000
+e8382665
+33333333
+1b6b5998
+66666667
+ffffffff
+ffffffff
+6a09e665
+00000001
+b504f334
+00000000
+0a5a4886
+55555556
+b504f332
+00000000
+b504f336
+00000000
+e8382664
+33333333
+1b6b5997
+66666667
+6a09e664
+00000001
+0a5a4888
+55555556
+5faf9ddd
+aaaaaaab
+b504f338
+00000000
+e8382666
+33333333
+1b6b5999
+66666667
+00000000
+00000000
+6a09e666
+00000001
+55555559
+55555555
+aaaaaaab
+aaaaaaaa
+00000000
+00000000
+5555555b
+55555555
+88888889
+88888888
+bbbbbbbc
+bbbbbbbb
+a0506223
+55555554
+0a5a4889
+55555556
+55555558
+55555555
+aaaaaaaa
+aaaaaaaa
+55555556
+55555555
+5555555a
+55555555
+88888888
+88888888
+bbbbbbbb
+bbbbbbbb
+0a5a4888
+55555556
+aaaaaaac
+aaaaaaaa
+00000001
+00000000
+5555555c
+55555555
+8888888a
+88888888
+bbbbbbbd
+bbbbbbbb
+a0506224
+55555554
+0a5a488a
+55555556
+aaaaaaae
+aaaaaaaa
+00000000
+00000000
+55555555
+55555555
+aaaaaab0
+aaaaaaaa
+ddddddde
+dddddddd
+11111111
+11111111
+f5a5b778
+aaaaaaa9
+5faf9dde
+aaaaaaab
+aaaaaaad
+aaaaaaaa
+ffffffff
+ffffffff
+aaaaaaab
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+dddddddd
+dddddddd
+11111110
+11111111
+5faf9ddd
+aaaaaaab
+00000001
+00000000
+55555556
+55555555
+aaaaaab1
+aaaaaaaa
+dddddddf
+dddddddd
+11111112
+11111111
+f5a5b779
+aaaaaaa9
+5faf9ddf
+aaaaaaab
+00000009
+00000000
+5555555b
+55555555
+aaaaaab0
+aaaaaaaa
+0000000b
+00000000
+33333339
+33333333
+6666666c
+66666666
+4afb0cd3
+ffffffff
+b504f339
+00000000
+00000008
+00000000
+5555555a
+55555555
+00000006
+00000000
+0000000a
+00000000
+33333338
+33333333
+6666666b
+66666666
+b504f338
+00000000
+5555555c
+55555555
+aaaaaab1
+aaaaaaaa
+0000000c
+00000000
+3333333a
+33333333
+6666666d
+66666666
+4afb0cd4
+ffffffff
+b504f33a
+00000000
+33333337
+33333333
+88888889
+88888888
+ddddddde
+dddddddd
+33333339
+33333333
+66666667
+66666666
+9999999a
+99999999
+7e2e4001
+33333332
+e8382667
+33333333
+33333336
+33333333
+88888888
+88888888
+33333334
+33333333
+33333338
+33333333
+66666666
+66666666
+99999999
+99999999
+e8382666
+33333333
+8888888a
+88888888
+dddddddf
+dddddddd
+3333333a
+33333333
+66666668
+66666666
+9999999b
+99999999
+7e2e4002
+33333332
+e8382668
+33333333
+6666666a
+66666666
+bbbbbbbc
+bbbbbbbb
+11111111
+11111111
+6666666c
+66666666
+9999999a
+99999999
+cccccccd
+cccccccc
+b1617334
+66666665
+1b6b599a
+66666667
+66666669
+66666666
+bbbbbbbb
+bbbbbbbb
+66666667
+66666666
+6666666b
+66666666
+99999999
+99999999
+cccccccc
+cccccccc
+1b6b5999
+66666667
+bbbbbbbd
+bbbbbbbb
+11111112
+11111111
+6666666d
+66666666
+9999999b
+99999999
+ccccccce
+cccccccc
+b1617335
+66666665
+1b6b599b
+66666667
+4afb0cd1
+ffffffff
+a0506223
+55555554
+4afb0cd3
+ffffffff
+7e2e4001
+33333332
+b1617334
+66666665
+95f6199b
+fffffffe
+00000001
+00000000
+4afb0cd0
+ffffffff
+a0506222
+55555554
+4afb0cce
+ffffffff
+4afb0cd2
+ffffffff
+7e2e4000
+33333332
+b1617333
+66666665
+00000000
+00000000
+a0506224
+55555554
+f5a5b779
+aaaaaaa9
+4afb0cd4
+ffffffff
+7e2e4002
+33333332
+b1617335
+66666665
+95f6199c
+fffffffe
+00000002
+00000000
+b504f337
+00000000
+0a5a4889
+55555556
+5faf9dde
+aaaaaaab
+b504f339
+00000000
+e8382667
+33333333
+1b6b599a
+66666667
+00000001
+00000000
+6a09e667
+00000001
+b504f336
+00000000
+0a5a4888
+55555556
+b504f334
+00000000
+b504f338
+00000000
+e8382666
+33333333
+1b6b5999
+66666667
+6a09e666
+00000001
+0a5a488a
+55555556
+5faf9ddf
+aaaaaaab
+b504f33a
+00000000
+e8382668
+33333333
+1b6b599b
+66666667
+00000002
+00000000
+6a09e668
+00000001
+00000002
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+33333332
+33333333
+66666665
+66666666
+b504f332
+00000000
+55555556
+55555555
+aaaaaaab
+aaaaaaaa
+00000006
+00000000
+33333334
+33333333
+66666667
+66666666
+4afb0cce
+ffffffff
+b504f334
+00000000
+00000007
+00000000
+55555559
+55555555
+bfffffff
+ffffffff
+00000001
+00000010
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi-01.reference_output
new file mode 100644
index 000000000..952bff5f5
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi-01.reference_output
@@ -0,0 +1,880 @@
+fffffffa
+ffffffff
+4afb0cdd
+ffffffff
+5555555b
+55555555
+00000005
+00000000
+fffffbdf
+ffffffff
+aaaaaaaa
+aaaaaaaa
+fffffc1e
+ffffffff
+55555556
+55555555
+00000002
+80000000
+fffffff0
+ffffffff
+fffffffa
+7fffffff
+00000000
+00000000
+40000004
+00000000
+00000007
+fffffffc
+0000000a
+00000000
+00000002
+00000000
+b504f329
+00000000
+ffffffee
+fff7ffff
+01000015
+00000000
+fffdffe9
+ffffffff
+00000007
+00000000
+0000000d
+00000000
+00000017
+00000000
+00000000
+00000000
+0000003e
+00000000
+0000009f
+00000000
+00000104
+00000000
+00000206
+00000000
+00000407
+00000000
+0000081f
+00000000
+00001006
+00000000
+00002004
+00000000
+00004007
+00000000
+00008004
+00000000
+00010004
+00000000
+0001fffd
+00000000
+00040002
+00000000
+0007ffea
+00000000
+000ffff7
+00000000
+001ffff6
+00000000
+00400004
+00000000
+007fffe0
+00000000
+01ffffef
+00000000
+04000004
+00000000
+08000006
+00000000
+10000002
+00000000
+1fffffe0
+00000000
+80000000
+00000000
+0000000a
+00000001
+00000006
+00000002
+0000000a
+00000004
+00000007
+00000008
+fffffffd
+0000000f
+fffffffc
+0000001f
+00000002
+00000040
+00000006
+00000080
+00000008
+00000100
+00000000
+00000200
+00000005
+00000400
+fffffffd
+000007ff
+00000006
+00001000
+fffffffb
+00001fff
+00000009
+00004000
+00000000
+00008000
+00000005
+00010000
+00000005
+00020000
+ffffffe0
+0003ffff
+00000003
+00080000
+00000003
+00100000
+00000006
+00200000
+00000005
+00400000
+00000002
+00800000
+fffffffd
+00ffffff
+00000004
+02000000
+00000001
+04000000
+00000008
+08000000
+00000004
+10000000
+00000003
+20000000
+fffffffe
+3fffffff
+00000006
+00000000
+00000006
+00000000
+fffffff7
+ffffffff
+ffffffea
+ffffffff
+ffffffda
+ffffffff
+ffffffc5
+ffffffff
+ffffff7a
+ffffffff
+fffffefd
+ffffffff
+fffffe03
+ffffffff
+fffff805
+ffffffff
+ffffeffc
+ffffffff
+ffffe005
+ffffffff
+ffffbfee
+ffffffff
+ffff8003
+ffffffff
+ffff0002
+ffffffff
+fffbfffe
+ffffffff
+fff7fffd
+ffffffff
+ffefffff
+ffffffff
+ffe00005
+ffffffff
+ffc0001e
+ffffffff
+ff7ffff9
+ffffffff
+ff000009
+ffffffff
+fdfffffb
+ffffffff
+fc00000e
+ffffffff
+f8000005
+ffffffff
+f0000005
+ffffffff
+dffffffe
+ffffffff
+bfffffff
+ffffffff
+7ffffff8
+ffffffff
+0000000f
+ffffffff
+00000007
+fffffffe
+ffffffff
+fffffff7
+00000003
+fffffff0
+ffffffee
+ffffffdf
+0000000e
+ffffffc0
+00000004
+ffffff80
+ffffffff
+fffffeff
+00000005
+fffffe00
+00000006
+fffffc00
+fffffff6
+fffff7ff
+ffffffe9
+ffffefff
+00000003
+ffffe000
+00000003
+ffffc000
+00000004
+ffff8000
+ffffffe9
+fffeffff
+0000000a
+fffe0000
+00000004
+fffc0000
+fffffff7
+ffefffff
+00000005
+ffe00000
+00000001
+ffc00000
+ffffffff
+ff7fffff
+00000005
+ff000000
+ffffffff
+fdffffff
+ffffffee
+fbffffff
+ffffffee
+f7ffffff
+00000001
+f0000000
+00000014
+e0000000
+00000002
+c0000000
+00000006
+00000000
+00000008
+00000000
+0000000d
+00000000
+00000009
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+00000005
+00000000
+00000007
+00000000
+0000000c
+00000000
+00000003
+00000000
+0000000e
+00000000
+0000000a
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+55555558
+55555555
+5555555a
+55555555
+5555555f
+55555555
+55555553
+55555555
+55555550
+55555555
+55555557
+55555555
+55555559
+55555555
+5555555e
+55555555
+55555555
+55555555
+55555560
+55555555
+5555555c
+55555555
+55555554
+55555555
+55555551
+55555555
+aaaaaaad
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+aaaaaab4
+aaaaaaaa
+aaaaaab0
+aaaaaaaa
+aaaaaaa8
+aaaaaaaa
+aaaaaaa5
+aaaaaaaa
+aaaaaaac
+aaaaaaaa
+aaaaaaae
+aaaaaaaa
+aaaaaab3
+aaaaaaaa
+aaaaaab5
+aaaaaaaa
+aaaaaab1
+aaaaaaaa
+aaaaaaa9
+aaaaaaaa
+aaaaaaa6
+aaaaaaaa
+00000008
+00000000
+0000000a
+00000000
+0000000f
+00000000
+0000000b
+00000000
+00000003
+00000000
+00000000
+00000000
+00000007
+00000000
+00000009
+00000000
+0000000e
+00000000
+00000005
+00000000
+00000010
+00000000
+0000000c
+00000000
+00000004
+00000000
+00000001
+00000000
+33333336
+33333333
+33333338
+33333333
+3333333d
+33333333
+33333339
+33333333
+33333331
+33333333
+3333332e
+33333333
+33333335
+33333333
+33333337
+33333333
+3333333c
+33333333
+33333333
+33333333
+3333333e
+33333333
+3333333a
+33333333
+33333332
+33333333
+3333332f
+33333333
+66666669
+66666666
+6666666b
+66666666
+66666670
+66666666
+6666666c
+66666666
+66666664
+66666666
+66666661
+66666666
+66666668
+66666666
+6666666a
+66666666
+6666666f
+66666666
+66666666
+66666666
+66666671
+66666666
+6666666d
+66666666
+66666665
+66666666
+66666662
+66666666
+4afb0cd0
+ffffffff
+4afb0cd2
+ffffffff
+4afb0cd7
+ffffffff
+4afb0cd3
+ffffffff
+4afb0ccb
+ffffffff
+4afb0cc8
+ffffffff
+4afb0ccf
+ffffffff
+4afb0cd1
+ffffffff
+4afb0cd6
+ffffffff
+4afb0ccd
+ffffffff
+4afb0cd8
+ffffffff
+4afb0cd4
+ffffffff
+4afb0ccc
+ffffffff
+4afb0cc9
+ffffffff
+b504f336
+00000000
+b504f338
+00000000
+b504f33d
+00000000
+b504f339
+00000000
+b504f331
+00000000
+b504f32e
+00000000
+b504f335
+00000000
+b504f337
+00000000
+b504f33c
+00000000
+b504f333
+00000000
+b504f33e
+00000000
+b504f33a
+00000000
+b504f332
+00000000
+b504f32f
+00000000
+00000005
+00000000
+0000000c
+00000000
+00000008
+00000000
+00000000
+00000000
+fffffffd
+ffffffff
+00000004
+00000000
+00000006
+00000000
+0000000b
+00000000
+00000002
+00000000
+0000000d
+00000000
+00000009
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+55555557
+55555555
+55555559
+55555555
+5555555e
+55555555
+5555555a
+55555555
+55555552
+55555555
+5555554f
+55555555
+55555556
+55555555
+55555558
+55555555
+5555555d
+55555555
+55555554
+55555555
+5555555f
+55555555
+5555555b
+55555555
+55555553
+55555555
+55555550
+55555555
+00000003
+00000000
+00000005
+00000000
+0000000a
+00000000
+00000006
+00000000
+fffffffe
+ffffffff
+fffffffb
+ffffffff
+00000002
+00000000
+00000004
+00000000
+00000009
+00000000
+00000000
+00000000
+0000000b
+00000000
+00000007
+00000000
+ffffffff
+ffffffff
+fffffffc
+ffffffff
+00000007
+00000000
+00000009
+00000000
+0000000e
+00000000
+0000000a
+00000000
+ffffffff
+ffffffff
+00000006
+00000000
+00000008
+00000000
+0000000d
+00000000
+00000004
+00000000
+0000000f
+00000000
+0000000b
+00000000
+00000003
+00000000
+00000000
+00000000
+33333335
+33333333
+33333337
+33333333
+3333333c
+33333333
+33333338
+33333333
+33333330
+33333333
+3333332d
+33333333
+33333334
+33333333
+33333336
+33333333
+3333333b
+33333333
+33333332
+33333333
+3333333d
+33333333
+33333339
+33333333
+33333331
+33333333
+3333332e
+33333333
+66666668
+66666666
+6666666a
+66666666
+6666666f
+66666666
+6666666b
+66666666
+66666663
+66666666
+66666660
+66666666
+66666667
+66666666
+66666669
+66666666
+6666666e
+66666666
+66666665
+66666666
+66666670
+66666666
+6666666c
+66666666
+66666664
+66666666
+66666661
+66666666
+b504f335
+00000000
+b504f337
+00000000
+b504f33c
+00000000
+b504f338
+00000000
+b504f330
+00000000
+b504f32d
+00000000
+b504f334
+00000000
+b504f336
+00000000
+b504f33b
+00000000
+b504f332
+00000000
+b504f33d
+00000000
+b504f339
+00000000
+b504f331
+00000000
+b504f32e
+00000000
+55555559
+55555555
+5555555b
+55555555
+55555560
+55555555
+5555555c
+55555555
+55555554
+55555555
+55555551
+55555555
+55555558
+55555555
+5555555a
+55555555
+5555555f
+55555555
+55555556
+55555555
+55555561
+55555555
+5555555d
+55555555
+55555555
+55555555
+55555552
+55555555
+aaaaaaae
+aaaaaaaa
+aaaaaab0
+aaaaaaaa
+aaaaaab5
+aaaaaaaa
+aaaaaab1
+aaaaaaaa
+aaaaaaa9
+aaaaaaaa
+aaaaaaa6
+aaaaaaaa
+aaaaaaad
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+aaaaaab4
+aaaaaaaa
+aaaaaaab
+aaaaaaaa
+aaaaaab6
+aaaaaaaa
+aaaaaab2
+aaaaaaaa
+aaaaaaaa
+aaaaaaaa
+aaaaaaa7
+aaaaaaaa
+00000009
+00000000
+0000000b
+00000000
+00000010
+00000000
+0000000c
+00000000
+00000004
+00000000
+00000001
+00000000
+00000008
+00000000
+0000000a
+00000000
+0000000f
+00000000
+00000006
+00000000
+00000011
+00000000
+0000000d
+00000000
+00000002
+00000000
+33333337
+33333333
+33333339
+33333333
+3333333e
+33333333
+3333333a
+33333333
+33333332
+33333333
+3333332f
+33333333
+33333336
+33333333
+33333338
+33333333
+3333333d
+33333333
+33333334
+33333333
+3333333f
+33333333
+3333333b
+33333333
+33333333
+33333333
+33333330
+33333333
+6666666a
+66666666
+6666666c
+66666666
+66666671
+66666666
+6666666d
+66666666
+66666665
+66666666
+66666662
+66666666
+66666669
+66666666
+6666666b
+66666666
+66666670
+66666666
+66666667
+66666666
+66666672
+66666666
+4afb0ccd
+ffffffff
+4afb0cca
+ffffffff
+b504f337
+00000000
+b504f339
+00000000
+b504f33e
+00000000
+b504f33a
+00000000
+b504f332
+00000000
+b504f32f
+00000000
+b504f336
+00000000
+b504f338
+00000000
+b504f33d
+00000000
+b504f334
+00000000
+b504f33f
+00000000
+b504f33b
+00000000
+b504f333
+00000000
+b504f330
+00000000
+6666666e
+66666666
+66666666
+66666666
+66666663
+66666666
+4afb0cd1
+ffffffff
+4afb0cd3
+ffffffff
+4afb0cd8
+ffffffff
+4afb0cd4
+ffffffff
+4afb0ccc
+ffffffff
+4afb0cc9
+ffffffff
+4afb0cd0
+ffffffff
+4afb0cd2
+ffffffff
+4afb0cd7
+ffffffff
+4afb0cce
+ffffffff
+4afb0cd9
+ffffffff
+4afb0cd5
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi16sp-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi16sp-01.reference_output
new file mode 100644
index 000000000..2db3a6676
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi16sp-01.reference_output
@@ -0,0 +1,264 @@
+00000200
+00000000
+001fff70
+00000000
+0000008f
+ffffffc0
+fffffdfe
+ffffffff
+00000010
+80000000
+00000030
+00000000
+0000008f
+80000000
+000000f1
+00000000
+ffff01ef
+ffffffff
+00000152
+00000000
+ffffffd4
+ffffffff
+00000088
+00000000
+00000160
+00000000
+ffffffd0
+ffffffff
+00000230
+00000000
+00000270
+00000000
+00000250
+00000000
+00000440
+00000000
+000007b0
+00000000
+00000fb0
+00000000
+00002080
+00000000
+000040f0
+00000000
+00008010
+00000000
+00010020
+00000000
+00020100
+00000000
+00040060
+00000000
+00080050
+00000000
+00100040
+00000000
+00400060
+00000000
+007fff70
+00000000
+00ffffa0
+00000000
+01ffffd0
+00000000
+04000070
+00000000
+08000030
+00000000
+0fffff60
+00000000
+1fffffb0
+00000000
+3ffffe00
+00000000
+7fffffc0
+00000000
+00000020
+00000001
+00000060
+00000002
+ffffffc0
+00000003
+00000050
+00000008
+00000080
+00000010
+ffffffb0
+0000001f
+ffffff60
+0000003f
+ffffff90
+0000007f
+ffffffc0
+000000ff
+00000070
+00000200
+00000010
+00000400
+ffffffd0
+000007ff
+000001f0
+00001000
+000000f0
+00002000
+00000030
+00004000
+00000070
+00008000
+00000030
+00010000
+00000030
+00020000
+fffffea0
+0003ffff
+ffffffd0
+0007ffff
+00000080
+00100000
+000001f0
+00200000
+000000f0
+00400000
+ffffffd0
+007fffff
+ffffffe0
+00ffffff
+00000020
+02000000
+ffffffc0
+03ffffff
+00000040
+08000000
+00000020
+10000000
+00000030
+20000000
+00000050
+40000000
+ffffffef
+ffdfffff
+000001ef
+ffc00000
+0000002f
+ff800000
+0000007f
+ff000000
+ffffff7f
+fdffffff
+0000014f
+fc000000
+ffffffbf
+f7ffffff
+ffffff8f
+efffffff
+fffffeff
+dfffffff
+ffffff9f
+bfffffff
+55555655
+55555555
+aaaaaa6a
+aaaaaaaa
+fffffff0
+ffffffff
+0000004d
+00000000
+0000001b
+00000000
+ffffffb7
+ffffffff
+0000013f
+00000000
+fffffecf
+ffffffff
+ffffff1f
+ffffffff
+fffffd7f
+ffffffff
+fffffebf
+ffffffff
+fffffe5f
+ffffffff
+fffffdef
+ffffffff
+fffff83f
+ffffffff
+fffff04f
+ffffffff
+ffffdfef
+ffffffff
+ffffbeff
+ffffffff
+ffff806f
+ffffffff
+fffe008f
+ffffffff
+fffc007f
+ffffffff
+fff8008f
+ffffffff
+ffefffef
+ffffffff
+ffe0002f
+ffffffff
+ffc0007f
+ffffffff
+ff80001f
+ffffffff
+ff00007f
+ffffffff
+fe00002f
+ffffffff
+fbffffaf
+ffffffff
+f800002f
+ffffffff
+efffffcf
+ffffffff
+dfffffbf
+ffffffff
+bffffeef
+ffffffff
+7fffff9f
+ffffffff
+0000006f
+ffffffff
+ffffff6f
+fffffffd
+ffffff5f
+fffffffb
+0000008f
+fffffff8
+ffffff5f
+ffffffef
+000000ff
+ffffffe0
+ffffff5f
+ffffff7f
+ffffffcf
+fffffeff
+ffffff5f
+fffffdff
+fffffeef
+fffffbff
+0000000f
+fffff800
+0000006f
+fffff000
+0000003f
+ffffe000
+000000ff
+ffffc000
+0000003f
+ffff8000
+000001ef
+ffff0000
+ffffff5f
+fffdffff
+ffffffef
+fffbffff
+ffffff8f
+fff7ffff
+ffffffdf
+ffefffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi4spn-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi4spn-01.reference_output
new file mode 100644
index 000000000..e332d28bd
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddi4spn-01.reference_output
@@ -0,0 +1,40 @@
+00000200
+00000000
+000003fc
+00000000
+00000004
+00000000
+00000008
+00000000
+00000010
+00000000
+00000020
+00000000
+00000040
+00000000
+00000080
+00000000
+00000100
+00000000
+000003f8
+00000000
+000003f4
+00000000
+000003ec
+00000000
+000002fc
+00000000
+000001fc
+00000000
+00000154
+00000000
+000002a8
+00000000
+000003dc
+00000000
+000003bc
+00000000
+0000037c
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddiw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddiw-01.reference_output
new file mode 100644
index 000000000..a0517529a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddiw-01.reference_output
@@ -0,0 +1,876 @@
+00000020
+00000000
+00008007
+00000000
+ffffffff
+ffffffff
+fffff002
+ffffffff
+fffffde9
+ffffffff
+ffffffe0
+ffffffff
+fffffff8
+ffffffff
+ff80001e
+ffffffff
+00000000
+00000000
+00000005
+00000000
+00000004
+00000000
+00000005
+00000000
+00000004
+00000000
+fff00001
+ffffffff
+c0000007
+ffffffff
+fffffff4
+ffffffff
+00000000
+00000000
+0ffffffb
+00000000
+ffffffee
+ffffffff
+ffffffee
+ffffffff
+00000019
+00000000
+00000006
+00000000
+00000008
+00000000
+0000000d
+00000000
+00000009
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+00000005
+00000000
+00000007
+00000000
+0000000c
+00000000
+00000003
+00000000
+0000000e
+00000000
+0000000a
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+55555558
+00000000
+5555555a
+00000000
+5555555f
+00000000
+5555555b
+00000000
+55555553
+00000000
+55555550
+00000000
+55555557
+00000000
+55555559
+00000000
+5555555e
+00000000
+55555555
+00000000
+55555560
+00000000
+5555555c
+00000000
+55555554
+00000000
+55555551
+00000000
+aaaaaaad
+ffffffff
+aaaaaaaf
+ffffffff
+aaaaaab4
+ffffffff
+aaaaaab0
+ffffffff
+aaaaaaa8
+ffffffff
+aaaaaaa5
+ffffffff
+aaaaaaac
+ffffffff
+aaaaaaae
+ffffffff
+aaaaaab3
+ffffffff
+aaaaaaaa
+ffffffff
+aaaaaab5
+ffffffff
+aaaaaab1
+ffffffff
+aaaaaaa9
+ffffffff
+aaaaaaa6
+ffffffff
+00000008
+00000000
+0000000a
+00000000
+0000000f
+00000000
+0000000b
+00000000
+00000003
+00000000
+00000000
+00000000
+00000007
+00000000
+00000009
+00000000
+0000000e
+00000000
+00000005
+00000000
+00000010
+00000000
+0000000c
+00000000
+00000004
+00000000
+00000001
+00000000
+33333336
+00000000
+33333338
+00000000
+3333333d
+00000000
+33333339
+00000000
+33333331
+00000000
+3333332e
+00000000
+33333335
+00000000
+33333337
+00000000
+3333333c
+00000000
+33333333
+00000000
+3333333e
+00000000
+3333333a
+00000000
+33333332
+00000000
+3333332f
+00000000
+66666669
+00000000
+6666666b
+00000000
+66666670
+00000000
+6666666c
+00000000
+66666664
+00000000
+66666661
+00000000
+66666668
+00000000
+6666666a
+00000000
+6666666f
+00000000
+66666666
+00000000
+66666671
+00000000
+6666666d
+00000000
+66666665
+00000000
+66666662
+00000000
+4afb0cd0
+00000000
+4afb0cd2
+00000000
+4afb0cd7
+00000000
+4afb0cd3
+00000000
+4afb0ccb
+00000000
+4afb0cc8
+00000000
+4afb0ccf
+00000000
+4afb0cd1
+00000000
+4afb0cd6
+00000000
+4afb0ccd
+00000000
+4afb0cd8
+00000000
+4afb0cd4
+00000000
+4afb0ccc
+00000000
+4afb0cc9
+00000000
+b504f336
+ffffffff
+b504f338
+ffffffff
+b504f33d
+ffffffff
+b504f339
+ffffffff
+b504f331
+ffffffff
+b504f32e
+ffffffff
+b504f335
+ffffffff
+b504f337
+ffffffff
+b504f33c
+ffffffff
+b504f333
+ffffffff
+b504f33e
+ffffffff
+b504f33a
+ffffffff
+b504f332
+ffffffff
+b504f32f
+ffffffff
+00000005
+00000000
+00000007
+00000000
+0000000c
+00000000
+00000008
+00000000
+00000000
+00000000
+fffffffd
+ffffffff
+00000004
+00000000
+00000006
+00000000
+0000000b
+00000000
+00000002
+00000000
+0000000d
+00000000
+00000009
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+55555557
+00000000
+55555559
+00000000
+5555555e
+00000000
+5555555a
+00000000
+55555552
+00000000
+5555554f
+00000000
+55555556
+00000000
+55555558
+00000000
+5555555d
+00000000
+55555554
+00000000
+5555555f
+00000000
+5555555b
+00000000
+55555553
+00000000
+55555550
+00000000
+00000003
+00000000
+00000005
+00000000
+0000000a
+00000000
+00000006
+00000000
+fffffffe
+ffffffff
+fffffffb
+ffffffff
+00000002
+00000000
+00000009
+00000000
+00000000
+00000000
+0000000b
+00000000
+00000007
+00000000
+ffffffff
+ffffffff
+fffffffc
+ffffffff
+00000007
+00000000
+00000009
+00000000
+0000000e
+00000000
+0000000a
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+00000006
+00000000
+00000008
+00000000
+0000000d
+00000000
+00000004
+00000000
+0000000f
+00000000
+0000000b
+00000000
+00000003
+00000000
+00000000
+00000000
+33333335
+00000000
+33333337
+00000000
+3333333c
+00000000
+33333338
+00000000
+33333330
+00000000
+3333332d
+00000000
+33333334
+00000000
+33333336
+00000000
+3333333b
+00000000
+33333332
+00000000
+3333333d
+00000000
+33333339
+00000000
+33333331
+00000000
+3333332e
+00000000
+66666668
+00000000
+6666666a
+00000000
+6666666f
+00000000
+6666666b
+00000000
+66666663
+00000000
+66666660
+00000000
+66666667
+00000000
+66666669
+00000000
+6666666e
+00000000
+66666665
+00000000
+66666670
+00000000
+6666666c
+00000000
+66666664
+00000000
+66666661
+00000000
+b504f335
+ffffffff
+b504f337
+ffffffff
+b504f33c
+ffffffff
+b504f338
+ffffffff
+b504f330
+ffffffff
+b504f32d
+ffffffff
+b504f334
+ffffffff
+b504f336
+ffffffff
+b504f33b
+ffffffff
+b504f332
+ffffffff
+b504f33d
+ffffffff
+b504f339
+ffffffff
+b504f331
+ffffffff
+b504f32e
+ffffffff
+55555559
+00000000
+5555555b
+00000000
+55555560
+00000000
+5555555c
+00000000
+55555554
+00000000
+55555551
+00000000
+55555558
+00000000
+5555555a
+00000000
+5555555f
+00000000
+55555556
+00000000
+55555561
+00000000
+5555555d
+00000000
+55555555
+00000000
+55555552
+00000000
+aaaaaaae
+ffffffff
+aaaaaab0
+ffffffff
+aaaaaab5
+ffffffff
+aaaaaab1
+ffffffff
+aaaaaaa9
+ffffffff
+aaaaaaa6
+ffffffff
+aaaaaaad
+ffffffff
+aaaaaaaf
+ffffffff
+aaaaaab4
+ffffffff
+aaaaaaab
+ffffffff
+aaaaaab6
+ffffffff
+aaaaaab2
+ffffffff
+aaaaaaaa
+ffffffff
+aaaaaaa7
+ffffffff
+00000009
+00000000
+0000000b
+00000000
+00000010
+00000000
+0000000c
+00000000
+00000004
+00000000
+00000001
+00000000
+00000008
+00000000
+0000000a
+00000000
+0000000f
+00000000
+00000006
+00000000
+00000011
+00000000
+0000000d
+00000000
+00000005
+00000000
+00000002
+00000000
+33333337
+00000000
+33333339
+00000000
+3333333e
+00000000
+3333333a
+00000000
+33333332
+00000000
+3333332f
+00000000
+33333336
+00000000
+33333338
+00000000
+3333333d
+00000000
+33333334
+00000000
+3333333f
+00000000
+3333333b
+00000000
+33333333
+00000000
+33333330
+00000000
+6666666a
+00000000
+6666666c
+00000000
+66666671
+00000000
+6666666d
+00000000
+66666665
+00000000
+66666662
+00000000
+66666669
+00000000
+6666666b
+00000000
+66666670
+00000000
+66666667
+00000000
+66666672
+00000000
+6666666e
+00000000
+66666666
+00000000
+66666663
+00000000
+4afb0cd1
+00000000
+4afb0cd3
+00000000
+4afb0cd8
+00000000
+4afb0cd4
+00000000
+4afb0ccc
+00000000
+4afb0cc9
+00000000
+4afb0cd0
+00000000
+4afb0cd2
+00000000
+4afb0cd7
+00000000
+4afb0cce
+00000000
+4afb0cd9
+00000000
+4afb0cd5
+00000000
+4afb0ccd
+00000000
+4afb0cca
+00000000
+b504f337
+ffffffff
+b504f339
+ffffffff
+b504f33e
+ffffffff
+b504f33a
+ffffffff
+b504f332
+ffffffff
+b504f32f
+ffffffff
+b504f336
+ffffffff
+b504f338
+ffffffff
+b504f33d
+ffffffff
+b504f334
+ffffffff
+b504f33f
+ffffffff
+b504f33b
+ffffffff
+b504f333
+ffffffff
+b504f330
+ffffffff
+fffffff2
+ffffffff
+00000026
+00000000
+00000037
+00000000
+00000080
+00000000
+000000fc
+00000000
+000001ff
+00000000
+000003fc
+00000000
+00000806
+00000000
+00001005
+00000000
+00002002
+00000000
+00003ffd
+00000000
+0000fffb
+00000000
+0001fffa
+00000000
+00040002
+00000000
+00080005
+00000000
+00100004
+00000000
+00200008
+00000000
+00400006
+00000000
+007ffff7
+00000000
+00fffffe
+00000000
+02000006
+00000000
+04000006
+00000000
+08000000
+00000000
+1ffffff9
+00000000
+3fffffef
+00000000
+80000000
+ffffffff
+fffffffe
+ffffffff
+fffffffb
+ffffffff
+00000002
+00000000
+00000003
+00000000
+00000004
+00000000
+00000004
+00000000
+0000000f
+00000000
+00000010
+00000000
+00000005
+00000000
+0000000f
+00000000
+00000002
+00000000
+fffffff8
+ffffffff
+00000005
+00000000
+fffffff6
+ffffffff
+00000010
+00000000
+00000005
+00000000
+00000006
+00000000
+fffffff9
+ffffffff
+0000000b
+00000000
+00000004
+00000000
+00000007
+00000000
+0000001f
+00000000
+00000004
+00000000
+00000005
+00000000
+00000002
+00000000
+00000015
+00000000
+ffffffe0
+ffffffff
+fffffff6
+ffffffff
+00000007
+00000000
+fffffffa
+ffffffff
+fffffffd
+ffffffff
+ffffffff
+ffffffff
+fffffff0
+ffffffff
+ffffffdd
+ffffffff
+ffffffc3
+ffffffff
+ffffff81
+ffffffff
+ffffff0e
+ffffffff
+fffffbe9
+ffffffff
+fffff801
+ffffffff
+ffffe01e
+ffffffff
+ffffc003
+ffffffff
+ffff7fff
+ffffffff
+ffff0003
+ffffffff
+fffe0004
+ffffffff
+fffc0009
+ffffffff
+fff8001e
+ffffffff
+ffdffffd
+ffffffff
+ffbfffff
+ffffffff
+ff00000a
+ffffffff
+fdfffff8
+ffffffff
+fc000003
+ffffffff
+f8000000
+ffffffff
+f0000004
+ffffffff
+00000000
+00000000
+00000005
+00000000
+fffffffb
+ffffffff
+00000002
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000008
+00000000
+00000005
+00000000
+ffffffff
+ffffffff
+00000009
+00000000
+00000003
+00000000
+fffffffd
+ffffffff
+fffffff8
+ffffffff
+e0000001
+ffffffff
+80000008
+ffffffff
+0000000f
+00000000
+0000001e
+00000000
+fffffff6
+ffffffff
+fffffff7
+ffffffff
+00000003
+00000000
+00000014
+00000000
+00000003
+00000000
+00000004
+00000000
+fffffff5
+ffffffff
+00000002
+00000000
+00000014
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+ffffffdf
+ffffffff
+fffffffd
+ffffffff
+0000001e
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddw-01.reference_output
new file mode 100644
index 000000000..694ffc03c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/caddw-01.reference_output
@@ -0,0 +1,1356 @@
+ffffffff
+ffffffff
+ffffffec
+ffffffff
+7ffffffe
+00000000
+fffff800
+ffffffff
+fffffffd
+ffffffff
+00000100
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+40000008
+00000000
+66666677
+00000000
+00000020
+00000000
+0000003f
+00000000
+333333b2
+00000000
+fff001ff
+ffffffff
+00000400
+00000000
+02000800
+00000000
+00001004
+00000000
+ffffffff
+ffffffff
+00004005
+00000000
+00008000
+00000000
+0000ffff
+00000000
+4afd0ccd
+00000000
+00040003
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+003fffff
+00000000
+00800000
+00000000
+00fffff9
+00000000
+01fffffa
+00000000
+08000000
+00000000
+07fffffc
+00000000
+11000000
+00000000
+75555555
+00000000
+40000006
+00000000
+7fffffff
+00000000
+01000000
+00000000
+fffeffff
+ffffffff
+00000000
+00000000
+fdffffff
+ffffffff
+00000004
+00000000
+fffffff8
+ffffffff
+00000005
+00000000
+fffffff8
+ffffffff
+ffffefff
+ffffffff
+ffffffff
+ffffffff
+4afb0cce
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+4afb0cce
+00000000
+7fffffff
+00000000
+fffffff6
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffeffff
+ffffffff
+00000000
+00000000
+aaaaaaaa
+ffffffff
+66666665
+00000000
+55555555
+00000000
+20000000
+00000000
+aaaaaaaa
+ffffffff
+00000000
+00000000
+fdffffff
+ffffffff
+00000004
+00000000
+00000000
+00000000
+00000003
+00000000
+4afb0cc9
+00000000
+000007f7
+00000000
+ffffffee
+ffffffff
+ffffffdf
+ffffffff
+ffffffbc
+ffffffff
+ffffff7c
+ffffffff
+0ffffeff
+00000000
+fffffcfe
+ffffffff
+fffffbff
+ffffffff
+ff7ff7fe
+ffffffff
+fffff0ff
+ffffffff
+ffffdfff
+ffffffff
+efffbffe
+ffffffff
+ffff7ffe
+ffffffff
+66656665
+00000000
+fffdbffe
+ffffffff
+fffc0008
+ffffffff
+fff3fffe
+ffffffff
+ffefffff
+ffffffff
+ffdfffff
+ffffffff
+ffc03fff
+ffffffff
+aa2aaaaa
+ffffffff
+ff00001f
+ffffffff
+fdfffff7
+ffffffff
+ffffffff
+ffffffff
+f7ffffff
+ffffffff
+f0000001
+ffffffff
+dfffffff
+ffffffff
+bffffffc
+ffffffff
+800000ff
+ffffffff
+00000fff
+00000000
+fffffbfe
+ffffffff
+fffffffb
+ffffffff
+fffefffe
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+fffffffe
+ffffffff
+ffff7ffe
+ffffffff
+fff7fffe
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+0001ffff
+00000000
+55555555
+00000000
+fff7fffe
+ffffffff
+fffffffe
+ffffffff
+00000004
+00000000
+00003fff
+00000000
+fffffff5
+ffffffff
+fffffffe
+ffffffff
+fffff7fe
+ffffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+fffffffe
+ffffffff
+ffffffde
+ffffffff
+fffffffe
+ffffffff
+33333331
+00000000
+55555154
+00000000
+aaaaabaa
+ffffffff
+00000008
+00000000
+4afb0cde
+00000000
+00000040
+00000000
+0000007d
+00000000
+000000ff
+00000000
+00000400
+00000000
+00001fff
+00000000
+00006fff
+00000000
+0000ffff
+00000000
+0003ffff
+00000000
+0007ffff
+00000000
+00100000
+00000000
+00200000
+00000000
+003fffff
+00000000
+007ffff7
+00000000
+b2aaaaab
+ffffffff
+80000000
+ffffffff
+ffffffff
+ffffffff
+33333332
+00000000
+ffdfffff
+ffffffff
+01000000
+00000000
+ffffbfff
+ffffffff
+efffffff
+ffffffff
+55555556
+00000000
+66666666
+00000000
+00000000
+00000000
+bfffffff
+ffffffff
+4afb0ccd
+00000000
+fffffffb
+ffffffff
+00000009
+00000000
+01000000
+00000000
+ffffdfff
+ffffffff
+aaaaaaaa
+ffffffff
+aaaaaaab
+ffffffff
+fffffffd
+ffffffff
+fffffffd
+ffffffff
+fffffff3
+ffffffff
+ffffbfee
+ffffffff
+55555515
+00000000
+ffffff85
+ffffffff
+fffffdff
+ffffffff
+fffdffff
+ffffffff
+ffdffffe
+ffffffff
+55155554
+00000000
+ff01ffff
+ffffffff
+fbfffffe
+ffffffff
+f7ffffff
+ffffffff
+dfffdffe
+ffffffff
+bffffffe
+ffffffff
+ffffffee
+ffffffff
+66666664
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffff7
+ffffffff
+b504f331
+ffffffff
+fffffffe
+ffffffff
+fffffffe
+ffffffff
+66666666
+00000000
+effffffe
+ffffffff
+fffffff9
+ffffffff
+fffffffe
+ffffffff
+ffeffffe
+ffffffff
+4afb0ccc
+00000000
+00000006
+00000000
+55555558
+00000000
+aaaaaaad
+ffffffff
+00000008
+00000000
+33333336
+00000000
+66666669
+00000000
+4afb0cd0
+00000000
+b504f336
+ffffffff
+00000005
+00000000
+55555557
+00000000
+00000003
+00000000
+00000007
+00000000
+33333335
+00000000
+66666668
+00000000
+b504f335
+ffffffff
+55555559
+00000000
+aaaaaaae
+ffffffff
+00000009
+00000000
+33333337
+00000000
+6666666a
+00000000
+4afb0cd1
+00000000
+b504f337
+ffffffff
+55555558
+00000000
+aaaaaaaa
+ffffffff
+ffffffff
+ffffffff
+5555555a
+00000000
+88888888
+ffffffff
+bbbbbbbb
+ffffffff
+a0506222
+ffffffff
+0a5a4888
+00000000
+55555557
+00000000
+aaaaaaa9
+ffffffff
+55555555
+00000000
+55555559
+00000000
+88888887
+ffffffff
+bbbbbbba
+ffffffff
+0a5a4887
+00000000
+aaaaaaab
+ffffffff
+00000000
+00000000
+5555555b
+00000000
+88888889
+ffffffff
+bbbbbbbc
+ffffffff
+a0506223
+ffffffff
+0a5a4889
+00000000
+aaaaaaad
+ffffffff
+ffffffff
+ffffffff
+55555554
+00000000
+aaaaaaaf
+ffffffff
+dddddddd
+ffffffff
+11111110
+00000000
+f5a5b777
+ffffffff
+5faf9ddd
+00000000
+aaaaaaac
+ffffffff
+fffffffe
+ffffffff
+aaaaaaaa
+ffffffff
+aaaaaaae
+ffffffff
+dddddddc
+ffffffff
+1111110f
+00000000
+5faf9ddc
+00000000
+00000000
+00000000
+55555555
+00000000
+aaaaaab0
+ffffffff
+ddddddde
+ffffffff
+11111111
+00000000
+f5a5b778
+ffffffff
+5faf9dde
+00000000
+00000008
+00000000
+5555555a
+00000000
+aaaaaaaf
+ffffffff
+0000000a
+00000000
+33333338
+00000000
+6666666b
+00000000
+4afb0cd2
+00000000
+b504f338
+ffffffff
+00000007
+00000000
+55555559
+00000000
+00000005
+00000000
+00000009
+00000000
+33333337
+00000000
+6666666a
+00000000
+b504f337
+ffffffff
+5555555b
+00000000
+aaaaaab0
+ffffffff
+0000000b
+00000000
+33333339
+00000000
+6666666c
+00000000
+4afb0cd3
+00000000
+b504f339
+ffffffff
+33333336
+00000000
+88888888
+ffffffff
+dddddddd
+ffffffff
+33333338
+00000000
+66666666
+00000000
+99999999
+ffffffff
+7e2e4000
+00000000
+e8382666
+ffffffff
+33333335
+00000000
+88888887
+ffffffff
+33333333
+00000000
+33333337
+00000000
+66666665
+00000000
+99999998
+ffffffff
+e8382665
+ffffffff
+88888889
+ffffffff
+ddddddde
+ffffffff
+33333339
+00000000
+66666667
+00000000
+9999999a
+ffffffff
+7e2e4001
+00000000
+e8382667
+ffffffff
+66666669
+00000000
+bbbbbbbb
+ffffffff
+11111110
+00000000
+6666666b
+00000000
+99999999
+ffffffff
+cccccccc
+ffffffff
+b1617333
+ffffffff
+1b6b5999
+00000000
+66666668
+00000000
+bbbbbbba
+ffffffff
+66666666
+00000000
+6666666a
+00000000
+99999998
+ffffffff
+cccccccb
+ffffffff
+1b6b5998
+00000000
+bbbbbbbc
+ffffffff
+11111111
+00000000
+6666666c
+00000000
+9999999a
+ffffffff
+cccccccd
+ffffffff
+b1617334
+ffffffff
+1b6b599a
+00000000
+4afb0cd0
+00000000
+a0506222
+ffffffff
+f5a5b777
+ffffffff
+4afb0cd2
+00000000
+7e2e4000
+00000000
+b1617333
+ffffffff
+95f6199a
+ffffffff
+00000000
+00000000
+4afb0ccf
+00000000
+a0506221
+ffffffff
+4afb0ccd
+00000000
+4afb0cd1
+00000000
+7e2e3fff
+00000000
+b1617332
+ffffffff
+ffffffff
+ffffffff
+a0506223
+ffffffff
+f5a5b778
+ffffffff
+4afb0cd3
+00000000
+7e2e4001
+00000000
+b1617334
+ffffffff
+95f6199b
+ffffffff
+00000001
+00000000
+b504f336
+ffffffff
+0a5a4888
+00000000
+5faf9ddd
+00000000
+b504f338
+ffffffff
+e8382666
+ffffffff
+1b6b5999
+00000000
+00000000
+00000000
+6a09e666
+00000000
+b504f335
+ffffffff
+0a5a4887
+00000000
+b504f333
+ffffffff
+b504f337
+ffffffff
+e8382665
+ffffffff
+1b6b5998
+00000000
+6a09e665
+00000000
+0a5a4889
+00000000
+5faf9dde
+00000000
+b504f339
+ffffffff
+e8382667
+ffffffff
+1b6b599a
+00000000
+00000001
+00000000
+6a09e667
+00000000
+00000005
+00000000
+55555557
+00000000
+aaaaaaac
+ffffffff
+00000007
+00000000
+33333335
+00000000
+66666668
+00000000
+4afb0ccf
+00000000
+b504f335
+ffffffff
+00000004
+00000000
+55555556
+00000000
+00000002
+00000000
+00000006
+00000000
+33333334
+00000000
+66666667
+00000000
+b504f334
+ffffffff
+55555558
+00000000
+aaaaaaad
+ffffffff
+00000008
+00000000
+33333336
+00000000
+66666669
+00000000
+4afb0cd0
+00000000
+b504f336
+ffffffff
+55555557
+00000000
+aaaaaaa9
+ffffffff
+fffffffe
+ffffffff
+55555559
+00000000
+88888887
+ffffffff
+bbbbbbba
+ffffffff
+a0506221
+ffffffff
+0a5a4887
+00000000
+55555556
+00000000
+aaaaaaa8
+ffffffff
+55555554
+00000000
+55555558
+00000000
+88888886
+ffffffff
+bbbbbbb9
+ffffffff
+0a5a4886
+00000000
+aaaaaaaa
+ffffffff
+ffffffff
+ffffffff
+5555555a
+00000000
+88888888
+ffffffff
+bbbbbbbb
+ffffffff
+a0506222
+ffffffff
+0a5a4888
+00000000
+00000003
+00000000
+55555555
+00000000
+aaaaaaaa
+ffffffff
+00000005
+00000000
+33333333
+00000000
+66666666
+00000000
+4afb0ccd
+00000000
+b504f333
+ffffffff
+00000002
+00000000
+aaaaaaae
+ffffffff
+00000009
+00000000
+33333337
+00000000
+6666666a
+00000000
+4afb0cd1
+00000000
+b504f337
+ffffffff
+00000006
+00000000
+55555558
+00000000
+00000004
+00000000
+00000008
+00000000
+33333336
+00000000
+66666669
+00000000
+b504f336
+ffffffff
+5555555a
+00000000
+aaaaaaaf
+ffffffff
+0000000a
+00000000
+33333338
+00000000
+6666666b
+00000000
+4afb0cd2
+00000000
+b504f338
+ffffffff
+33333335
+00000000
+88888887
+ffffffff
+dddddddc
+ffffffff
+33333337
+00000000
+66666665
+00000000
+99999998
+ffffffff
+7e2e3fff
+00000000
+e8382665
+ffffffff
+33333334
+00000000
+88888886
+ffffffff
+33333332
+00000000
+33333336
+00000000
+66666664
+00000000
+99999997
+ffffffff
+e8382664
+ffffffff
+88888888
+ffffffff
+dddddddd
+ffffffff
+33333338
+00000000
+66666666
+00000000
+99999999
+ffffffff
+7e2e4000
+00000000
+e8382666
+ffffffff
+66666668
+00000000
+bbbbbbba
+ffffffff
+1111110f
+00000000
+6666666a
+00000000
+99999998
+ffffffff
+cccccccb
+ffffffff
+b1617332
+ffffffff
+1b6b5998
+00000000
+66666667
+00000000
+bbbbbbb9
+ffffffff
+66666665
+00000000
+66666669
+00000000
+99999997
+ffffffff
+ccccccca
+ffffffff
+1b6b5997
+00000000
+bbbbbbbb
+ffffffff
+11111110
+00000000
+6666666b
+00000000
+99999999
+ffffffff
+cccccccc
+ffffffff
+b1617333
+ffffffff
+1b6b5999
+00000000
+b504f335
+ffffffff
+0a5a4887
+00000000
+5faf9ddc
+00000000
+b504f337
+ffffffff
+e8382665
+ffffffff
+1b6b5998
+00000000
+ffffffff
+ffffffff
+6a09e665
+00000000
+b504f334
+ffffffff
+0a5a4886
+00000000
+b504f332
+ffffffff
+b504f336
+ffffffff
+e8382664
+ffffffff
+1b6b5997
+00000000
+6a09e664
+00000000
+0a5a4888
+00000000
+5faf9ddd
+00000000
+b504f338
+ffffffff
+e8382666
+ffffffff
+1b6b5999
+00000000
+00000000
+00000000
+6a09e666
+00000000
+55555559
+00000000
+aaaaaaab
+ffffffff
+00000000
+00000000
+5555555b
+00000000
+88888889
+ffffffff
+bbbbbbbc
+ffffffff
+a0506223
+ffffffff
+0a5a4889
+00000000
+55555558
+00000000
+aaaaaaaa
+ffffffff
+55555556
+00000000
+5555555a
+00000000
+88888888
+ffffffff
+bbbbbbbb
+ffffffff
+0a5a4888
+00000000
+aaaaaaac
+ffffffff
+00000001
+00000000
+5555555c
+00000000
+8888888a
+ffffffff
+bbbbbbbd
+ffffffff
+a0506224
+ffffffff
+0a5a488a
+00000000
+aaaaaaae
+ffffffff
+00000000
+00000000
+55555555
+00000000
+aaaaaab0
+ffffffff
+ddddddde
+ffffffff
+11111111
+00000000
+f5a5b778
+ffffffff
+5faf9dde
+00000000
+aaaaaaad
+ffffffff
+ffffffff
+ffffffff
+aaaaaaab
+ffffffff
+aaaaaaaf
+ffffffff
+dddddddd
+ffffffff
+11111110
+00000000
+5faf9ddd
+00000000
+00000001
+00000000
+55555556
+00000000
+aaaaaab1
+ffffffff
+dddddddf
+ffffffff
+11111112
+00000000
+f5a5b779
+ffffffff
+5faf9ddf
+00000000
+00000009
+00000000
+5555555b
+00000000
+aaaaaab0
+ffffffff
+0000000b
+00000000
+33333339
+00000000
+6666666c
+00000000
+4afb0cd3
+00000000
+b504f339
+ffffffff
+00000008
+00000000
+5555555a
+00000000
+00000006
+00000000
+0000000a
+00000000
+33333338
+00000000
+6666666b
+00000000
+b504f338
+ffffffff
+5555555c
+00000000
+aaaaaab1
+ffffffff
+0000000c
+00000000
+3333333a
+00000000
+6666666d
+00000000
+4afb0cd4
+00000000
+b504f33a
+ffffffff
+33333337
+00000000
+88888889
+ffffffff
+ddddddde
+ffffffff
+33333339
+00000000
+66666667
+00000000
+9999999a
+ffffffff
+7e2e4001
+00000000
+e8382667
+ffffffff
+33333336
+00000000
+88888888
+ffffffff
+33333334
+00000000
+33333338
+00000000
+66666666
+00000000
+99999999
+ffffffff
+e8382666
+ffffffff
+8888888a
+ffffffff
+dddddddf
+ffffffff
+3333333a
+00000000
+66666668
+00000000
+9999999b
+ffffffff
+7e2e4002
+00000000
+e8382668
+ffffffff
+6666666a
+00000000
+bbbbbbbc
+ffffffff
+11111111
+00000000
+6666666c
+00000000
+9999999a
+ffffffff
+cccccccd
+ffffffff
+b1617334
+ffffffff
+1b6b599a
+00000000
+66666669
+00000000
+bbbbbbbb
+ffffffff
+66666667
+00000000
+6666666b
+00000000
+99999999
+ffffffff
+cccccccc
+ffffffff
+1b6b5999
+00000000
+bbbbbbbd
+ffffffff
+11111112
+00000000
+6666666d
+00000000
+9999999b
+ffffffff
+ccccccce
+ffffffff
+b1617335
+ffffffff
+1b6b599b
+00000000
+4afb0cd1
+00000000
+a0506223
+ffffffff
+f5a5b778
+ffffffff
+4afb0cd3
+00000000
+7e2e4001
+00000000
+b1617334
+ffffffff
+95f6199b
+ffffffff
+00000001
+00000000
+4afb0cd0
+00000000
+a0506222
+ffffffff
+4afb0cce
+00000000
+4afb0cd2
+00000000
+7e2e4000
+00000000
+b1617333
+ffffffff
+00000000
+00000000
+a0506224
+ffffffff
+f5a5b779
+ffffffff
+4afb0cd4
+00000000
+7e2e4002
+00000000
+b1617335
+ffffffff
+95f6199c
+ffffffff
+00000002
+00000000
+b504f337
+ffffffff
+0a5a4889
+00000000
+5faf9dde
+00000000
+b504f339
+ffffffff
+e8382667
+ffffffff
+1b6b599a
+00000000
+00000001
+00000000
+6a09e667
+00000000
+b504f336
+ffffffff
+0a5a4888
+00000000
+b504f334
+ffffffff
+b504f338
+ffffffff
+e8382666
+ffffffff
+1b6b5999
+00000000
+6a09e666
+00000000
+0a5a488a
+00000000
+5faf9ddf
+00000000
+b504f33a
+ffffffff
+e8382668
+ffffffff
+1b6b599b
+00000000
+00000002
+00000000
+6a09e668
+00000000
+55555554
+00000000
+00000000
+00000000
+00000004
+00000000
+33333332
+00000000
+66666665
+00000000
+b504f332
+ffffffff
+55555556
+00000000
+aaaaaaab
+ffffffff
+00000006
+00000000
+33333334
+00000000
+66666667
+00000000
+4afb0cce
+00000000
+b504f334
+ffffffff
+00000007
+00000000
+55555559
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cand-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cand-01.reference_output
new file mode 100644
index 000000000..dd19b9232
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cand-01.reference_output
@@ -0,0 +1,1344 @@
+00000000
+00000000
+ffffffff
+fffffdff
+00000800
+00000000
+00000000
+00000000
+00000000
+80000000
+00000000
+00000000
+ffffffbf
+7fffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000008
+00000000
+00000010
+00000000
+00000020
+00000000
+00000000
+00000000
+00000000
+00000000
+00000100
+00000000
+00000200
+00000000
+00000400
+00000000
+00000800
+00000000
+00000000
+00000000
+00002000
+00000000
+00000000
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00000000
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+00800000
+00000000
+01000000
+00000000
+00000000
+00000000
+00000000
+00000000
+08000000
+00000000
+00000000
+00000000
+00000000
+00000000
+40000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000008
+00000000
+00000010
+00000000
+00000000
+00000000
+00000040
+00000000
+00000000
+00000000
+00000100
+00000000
+00000200
+00000000
+00000400
+00000000
+00000800
+00000000
+00000000
+00000000
+00002000
+00000000
+00004000
+00000000
+00000000
+00000000
+00010000
+00000000
+00000000
+00000000
+00040000
+00000000
+00080000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+01000000
+00000000
+00000000
+00000000
+04000000
+00000000
+08000000
+00000000
+10000000
+00000000
+00000000
+00000000
+40000000
+00000006
+00000000
+00000000
+08000000
+00000000
+c0000000
+00000080
+00000000
+ffffffef
+ffefffff
+ffffffdf
+fffff7ff
+00000000
+00400000
+fffffcff
+ffffffff
+00800000
+00000000
+fffff7ff
+fffff7ff
+00000000
+00000000
+ffffdfff
+fbffffff
+00010000
+00000000
+efff7fff
+ffffffff
+fffeffbf
+ffffffff
+00000000
+40000000
+fffaffff
+ffffffff
+fff7ffff
+7fffffff
+ffefefff
+ffffffff
+00004000
+00000000
+66266667
+66666666
+00000000
+00000004
+00000400
+00000000
+fdbfffff
+ffffffff
+00000003
+00000000
+00000000
+00000800
+efffffff
+ffbfffff
+00000004
+00000000
+00000000
+00000000
+00000000
+02000000
+ffffffff
+fffffbfe
+04000000
+00000000
+fffeffff
+fffffffb
+ffffffff
+fffffff5
+efffffff
+ffffffef
+00000200
+00000000
+00008000
+00000000
+55555555
+55555555
+33333332
+33333233
+00000000
+20000000
+00002000
+00000000
+ffefffff
+fffff7ff
+00000006
+00000000
+00000000
+00000200
+ffffffff
+ffffbfbf
+00000040
+00000000
+00000000
+00004000
+fffffdff
+fffdffff
+00000000
+00008000
+33333334
+33333333
+55555556
+55455555
+ffffffff
+ffdffff7
+00000004
+00000000
+ffffffff
+ff7fbfff
+00000000
+00800000
+ffffffff
+fdffffff
+00400000
+00000000
+00000000
+00000400
+00000400
+00000000
+00000000
+00000002
+fffffffc
+bfffffff
+15555555
+55555555
+aaaaaaaa
+aaaaa8aa
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+01000000
+00000000
+02000000
+00000000
+00000000
+00000000
+10000000
+00000000
+20000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000008
+00000000
+00000000
+00000000
+00000100
+00000000
+00001000
+00000000
+00000000
+00000000
+00010000
+00000000
+00000000
+00000000
+00040000
+00000000
+00080000
+00000000
+00000000
+00000000
+00200000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+4afb0cca
+ffffffff
+ffffffd7
+ffffffff
+b504f323
+00000000
+ff7fff7f
+ffffffff
+66666667
+66666666
+00040000
+00000000
+ffff7ffd
+ffffffff
+33313334
+33333333
+fffbf7ff
+ffffffff
+fff7ffff
+fffdffff
+4adb0cce
+ffffffff
+00400000
+00000000
+feffffff
+ffffffbf
+fdffffff
+ffffffdf
+dfffffff
+ffffefff
+00000000
+00000040
+fffeffff
+fffffffb
+ffffffff
+ffdfffdf
+ffefffff
+ffffff7f
+b504f333
+00000000
+ffffffff
+ffffefff
+00004000
+00000000
+ffffffff
+f7ff7fff
+ffffffff
+ffeeffff
+00000000
+00000800
+ffffdfff
+ffdfffff
+ffff7fff
+ff7fffff
+04000000
+00000000
+00000004
+00000000
+00000002
+00000000
+00000003
+00000000
+00000001
+00000000
+00000002
+00000000
+00000001
+00000000
+00000003
+00000000
+00000002
+00000000
+00000001
+00000000
+00000003
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+00000002
+00000000
+00000002
+00000000
+00000003
+00000000
+00000002
+00000000
+00000000
+00000000
+00000003
+00000000
+00000002
+00000000
+00000000
+00000000
+00000001
+00000000
+55555555
+55555555
+00000000
+00000000
+00000005
+00000000
+11111111
+11111111
+44444444
+44444444
+40510445
+55555555
+15045111
+00000000
+00000000
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+11111110
+11111111
+44444445
+44444444
+15045110
+00000000
+55555554
+55555555
+00000001
+00000000
+00000004
+00000000
+11111114
+11111111
+44444445
+44444444
+40510444
+55555555
+15045114
+00000000
+00000000
+00000000
+aaaaaaaa
+aaaaaaaa
+00000000
+00000000
+22222222
+22222222
+22222222
+22222222
+0aaa0888
+aaaaaaaa
+a000a222
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+22222222
+22222222
+22222220
+22222222
+a000a222
+00000000
+00000002
+00000000
+aaaaaaaa
+aaaaaaaa
+00000002
+00000000
+22222220
+22222222
+22222222
+22222222
+0aaa088a
+aaaaaaaa
+a000a220
+00000000
+00000001
+00000000
+00000005
+00000000
+00000000
+00000000
+00000005
+00000000
+00000001
+00000000
+00000004
+00000000
+00000005
+00000000
+00000001
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000005
+00000000
+00000000
+00000000
+00000004
+00000000
+00000001
+00000000
+00000004
+00000000
+00000004
+00000000
+00000005
+00000000
+00000004
+00000000
+00000004
+00000000
+00000003
+00000000
+11111111
+11111111
+22222222
+22222222
+00000001
+00000000
+33333333
+33333333
+22222222
+22222222
+02330001
+33333333
+31003333
+00000000
+00000002
+00000000
+11111110
+11111111
+00000000
+00000000
+00000000
+00000000
+33333332
+33333333
+22222221
+22222222
+31003332
+00000000
+11111112
+11111111
+22222223
+22222222
+00000002
+00000000
+33333330
+33333333
+22222223
+22222222
+02330002
+33333333
+31003330
+00000000
+00000002
+00000000
+44444444
+44444444
+22222222
+22222222
+00000004
+00000000
+22222222
+22222222
+66666666
+66666666
+42620444
+66666666
+24046222
+00000000
+00000002
+00000000
+44444444
+44444444
+00000000
+00000000
+00000004
+00000000
+22222222
+22222222
+66666664
+66666666
+24046222
+00000000
+44444446
+44444444
+22222222
+22222222
+00000006
+00000000
+22222224
+22222222
+66666666
+66666666
+42620446
+66666666
+24046224
+00000000
+00000001
+00000000
+40510445
+55555555
+0aaa0888
+aaaaaaaa
+00000005
+00000000
+02330001
+33333333
+42620444
+66666666
+4afb0ccd
+ffffffff
+00000001
+00000000
+00000000
+00000000
+40510444
+55555555
+00000000
+00000000
+00000004
+00000000
+02330000
+33333333
+42620445
+66666666
+00000000
+00000000
+40510444
+55555555
+0aaa0889
+aaaaaaaa
+00000004
+00000000
+02330004
+33333333
+42620445
+66666666
+4afb0ccc
+ffffffff
+00000004
+00000000
+00000003
+00000000
+15045111
+00000000
+a000a222
+00000000
+00000001
+00000000
+31003333
+00000000
+24046222
+00000000
+00000001
+00000000
+b504f333
+00000000
+00000002
+00000000
+15045110
+00000000
+00000000
+00000000
+00000000
+00000000
+31003332
+00000000
+24046221
+00000000
+b504f332
+00000000
+15045112
+00000000
+a000a223
+00000000
+00000002
+00000000
+31003330
+00000000
+24046223
+00000000
+00000002
+00000000
+b504f330
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+11111110
+11111111
+44444444
+44444444
+40510444
+55555555
+15045110
+00000000
+00000000
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+11111110
+11111111
+44444444
+44444444
+15045110
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+11111114
+11111111
+44444444
+44444444
+40510444
+55555555
+15045114
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000002
+00000000
+11111110
+11111111
+22222222
+22222222
+00000000
+00000000
+33333332
+33333333
+22222222
+22222222
+02330000
+33333333
+31003332
+00000000
+00000002
+00000000
+11111110
+11111111
+00000000
+00000000
+00000000
+00000000
+33333332
+33333333
+22222220
+22222222
+31003332
+00000000
+11111112
+11111111
+22222222
+22222222
+00000002
+00000000
+33333330
+33333333
+22222222
+22222222
+02330002
+33333333
+31003330
+00000000
+00000001
+00000000
+44444445
+44444444
+22222220
+22222222
+00000005
+00000000
+22222221
+22222222
+66666664
+66666666
+42620445
+66666666
+24046221
+00000000
+00000000
+00000000
+44444444
+44444444
+00000000
+00000000
+00000004
+00000000
+22222220
+22222222
+66666665
+66666666
+24046220
+00000000
+44444444
+44444444
+22222221
+22222222
+00000004
+00000000
+22222224
+22222222
+66666665
+66666666
+42620444
+66666666
+24046224
+00000000
+00000002
+00000000
+15045110
+00000000
+a000a222
+00000000
+00000000
+00000000
+31003332
+00000000
+24046222
+00000000
+00000000
+00000000
+b504f332
+00000000
+00000002
+00000000
+15045110
+00000000
+00000000
+00000000
+00000000
+00000000
+31003332
+00000000
+24046220
+00000000
+b504f332
+00000000
+15045112
+00000000
+a000a222
+00000000
+00000002
+00000000
+31003330
+00000000
+24046222
+00000000
+00000002
+00000000
+b504f330
+00000000
+00000002
+00000000
+55555554
+55555555
+00000002
+00000000
+00000004
+00000000
+11111112
+11111111
+44444446
+44444444
+40510444
+55555555
+15045112
+00000000
+00000002
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+11111112
+11111111
+44444444
+44444444
+15045112
+00000000
+55555556
+55555555
+00000002
+00000000
+00000006
+00000000
+11111114
+11111111
+44444446
+44444444
+40510446
+55555555
+15045114
+00000000
+00000003
+00000000
+00000001
+00000000
+aaaaaaaa
+aaaaaaaa
+00000001
+00000000
+22222223
+22222222
+22222222
+22222222
+0aaa0889
+aaaaaaaa
+a000a223
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+22222222
+22222222
+22222221
+22222222
+a000a222
+00000000
+00000002
+00000000
+aaaaaaab
+aaaaaaaa
+00000002
+00000000
+22222220
+22222222
+22222223
+22222222
+0aaa088a
+aaaaaaaa
+a000a220
+00000000
+00000002
+00000000
+00000004
+00000000
+00000002
+00000000
+00000004
+00000000
+00000002
+00000000
+00000006
+00000000
+00000004
+00000000
+00000002
+00000000
+00000002
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000002
+00000000
+00000004
+00000000
+00000002
+00000000
+00000006
+00000000
+00000002
+00000000
+00000006
+00000000
+00000004
+00000000
+00000006
+00000000
+00000006
+00000000
+00000004
+00000000
+00000000
+00000000
+11111114
+11111111
+22222220
+22222222
+00000004
+00000000
+33333330
+33333333
+22222224
+22222222
+02330004
+33333333
+31003330
+00000000
+00000000
+00000000
+11111114
+11111111
+00000000
+00000000
+00000004
+00000000
+33333330
+33333333
+22222224
+22222222
+31003330
+00000000
+11111114
+11111111
+22222220
+22222222
+00000004
+00000000
+33333334
+33333333
+22222224
+22222222
+02330004
+33333333
+31003334
+00000000
+00000003
+00000000
+44444445
+44444444
+22222222
+22222222
+00000005
+00000000
+22222223
+22222222
+66666666
+66666666
+42620445
+66666666
+24046223
+00000000
+00000002
+00000000
+44444444
+44444444
+00000000
+00000000
+00000004
+00000000
+22222222
+22222222
+66666665
+66666666
+24046222
+00000000
+44444446
+44444444
+22222223
+22222222
+00000006
+00000000
+22222224
+22222222
+66666667
+66666666
+42620446
+66666666
+24046224
+00000000
+00000002
+00000000
+40510444
+55555555
+0aaa088a
+aaaaaaaa
+00000004
+00000000
+02330002
+33333333
+42620446
+66666666
+4afb0ccc
+ffffffff
+00000002
+00000000
+00000002
+00000000
+40510444
+55555555
+00000000
+00000000
+00000004
+00000000
+02330002
+33333333
+42620444
+66666666
+00000002
+00000000
+40510446
+55555555
+0aaa088a
+aaaaaaaa
+00000006
+00000000
+02330004
+33333333
+42620446
+66666666
+4afb0cce
+ffffffff
+00000004
+00000000
+00000000
+00000000
+15045114
+00000000
+a000a220
+00000000
+00000004
+00000000
+31003330
+00000000
+24046224
+00000000
+00000004
+00000000
+b504f330
+00000000
+00000000
+00000000
+15045114
+00000000
+00000000
+00000000
+00000004
+00000000
+31003330
+00000000
+24046224
+00000000
+b504f330
+00000000
+15045114
+00000000
+a000a220
+00000000
+00000004
+00000000
+31003334
+00000000
+24046224
+00000000
+00000004
+00000000
+b504f334
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/candi-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/candi-01.reference_output
new file mode 100644
index 000000000..97587e66d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/candi-01.reference_output
@@ -0,0 +1,880 @@
+00000009
+00000000
+fffffff5
+ffffffff
+00000004
+00000000
+00000003
+00000000
+00002000
+00000000
+00000000
+00000000
+0000001f
+00000000
+00000000
+00000000
+00000000
+80000000
+00000005
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000008
+00000000
+00000010
+00000000
+00000003
+00000000
+ffff7ff7
+ffffffff
+00000000
+00400000
+00000000
+00000000
+00000000
+00800000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000020
+00000000
+00000000
+00000000
+00000000
+00000000
+00000100
+00000000
+00000000
+00000000
+00000400
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00040000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+01000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+20000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000008
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00100000
+00000000
+00200000
+00000000
+01000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+20000000
+00000000
+00000000
+fffffff8
+ffffffff
+fffffffd
+ffffffff
+fffffff8
+ffffffff
+00000007
+00000000
+ffffffc0
+ffffffff
+00000006
+00000000
+00000007
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000007
+00000000
+00000004
+00000000
+00000004
+00000000
+00000003
+00000000
+fffdfffd
+ffffffff
+fff7fff6
+ffffffff
+ffeffffc
+ffffffff
+00000003
+00000000
+00000004
+00000000
+ff7fffff
+ffffffff
+fefffffe
+ffffffff
+fdfffffa
+ffffffff
+fbfffffb
+ffffffff
+f7fffffe
+ffffffff
+0000000f
+00000000
+dffffffc
+ffffffff
+bfffffef
+ffffffff
+00000006
+00000000
+fffffffe
+fffffffe
+fffffffb
+fffffffd
+00000002
+00000000
+00000000
+00000000
+fffffffd
+ffffffdf
+00000009
+00000000
+00000006
+00000000
+fffffffe
+fffffeff
+00000005
+00000000
+ffffffe0
+fffffbff
+0000000f
+00000000
+00000006
+00000000
+00000005
+00000000
+00000004
+00000000
+fffffffe
+ffff7fff
+00000005
+00000000
+00000006
+00000000
+0000000f
+00000000
+fffffffb
+fff7ffff
+00000005
+00000000
+00000003
+00000000
+fffffffc
+ffbfffff
+00000009
+00000000
+00000008
+00000000
+ffffffea
+fdffffff
+fffffffe
+fbffffff
+fffffffd
+f7ffffff
+00000002
+00000000
+ffffffff
+dfffffff
+55555555
+55555555
+00000008
+00000000
+00000003
+00000000
+00000001
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000003
+00000000
+00000002
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000000
+00000000
+00000001
+00000000
+00000005
+00000000
+00000000
+00000000
+00000004
+00000000
+55555554
+55555555
+55555551
+55555555
+00000000
+00000000
+00000004
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000005
+00000000
+55555554
+55555555
+00000002
+00000000
+00000000
+00000000
+0000000a
+00000000
+00000002
+00000000
+aaaaaaaa
+aaaaaaaa
+aaaaaaaa
+aaaaaaaa
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+0000000a
+00000000
+00000002
+00000000
+aaaaaaaa
+aaaaaaaa
+aaaaaaa8
+aaaaaaaa
+00000001
+00000000
+00000005
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000001
+00000000
+00000000
+00000000
+00000004
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000004
+00000000
+00000003
+00000000
+00000001
+00000000
+00000002
+00000000
+00000002
+00000000
+33333332
+33333333
+33333333
+33333333
+00000002
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000003
+00000000
+00000003
+00000000
+33333333
+33333333
+33333330
+33333333
+00000002
+00000000
+00000004
+00000000
+00000002
+00000000
+00000006
+00000000
+66666666
+66666666
+66666662
+66666666
+00000002
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000006
+00000000
+66666666
+66666666
+66666664
+66666666
+00000001
+00000000
+00000005
+00000000
+00000008
+00000000
+00000004
+00000000
+4afb0ccc
+ffffffff
+4afb0cc9
+ffffffff
+00000000
+00000000
+00000004
+00000000
+00000009
+00000000
+00000000
+00000000
+00000009
+00000000
+00000005
+00000000
+4afb0ccd
+ffffffff
+4afb0ccc
+ffffffff
+00000003
+00000000
+00000001
+00000000
+00000002
+00000000
+00000002
+00000000
+b504f332
+00000000
+b504f333
+00000000
+00000002
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000003
+00000000
+00000003
+00000000
+b504f333
+00000000
+b504f330
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+55555554
+55555555
+55555550
+55555555
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+55555554
+55555555
+55555554
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+33333332
+33333333
+33333332
+33333333
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+33333332
+33333333
+33333330
+33333333
+00000001
+00000000
+00000005
+00000000
+00000000
+00000000
+00000004
+00000000
+66666664
+66666666
+66666661
+66666666
+00000000
+00000000
+00000004
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000005
+00000000
+66666665
+66666666
+66666664
+66666666
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+b504f332
+00000000
+b504f330
+00000000
+00000002
+00000000
+00000004
+00000000
+00000002
+00000000
+00000006
+00000000
+55555556
+55555555
+55555552
+55555555
+00000002
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000006
+00000000
+55555556
+55555555
+55555554
+55555555
+00000003
+00000000
+00000001
+00000000
+0000000a
+00000000
+00000002
+00000000
+aaaaaaaa
+aaaaaaaa
+aaaaaaab
+aaaaaaaa
+00000002
+00000000
+00000009
+00000000
+00000000
+00000000
+0000000b
+00000000
+00000003
+00000000
+aaaaaaab
+aaaaaaaa
+aaaaaaa8
+aaaaaaaa
+00000002
+00000000
+00000004
+00000000
+00000002
+00000000
+00000006
+00000000
+00000006
+00000000
+00000002
+00000000
+00000002
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000006
+00000000
+00000006
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+33333334
+33333333
+33333330
+33333333
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+33333334
+33333333
+33333334
+33333333
+00000003
+00000000
+00000005
+00000000
+00000002
+00000000
+00000006
+00000000
+66666666
+66666666
+66666663
+66666666
+00000002
+00000000
+00000004
+00000000
+00000001
+00000000
+00000000
+00000000
+00000003
+00000000
+4afb0cce
+ffffffff
+4afb0ccc
+ffffffff
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+b504f334
+00000000
+b504f330
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000007
+00000000
+66666667
+66666666
+66666664
+66666666
+00000002
+00000000
+00000004
+00000000
+0000000a
+00000000
+00000006
+00000000
+4afb0cce
+ffffffff
+4afb0cca
+ffffffff
+00000002
+00000000
+00000004
+00000000
+00000008
+00000000
+00000000
+00000000
+0000000a
+00000000
+00000006
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cbeqz-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cbeqz-01.reference_output
new file mode 100644
index 000000000..649e7c2e1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cbeqz-01.reference_output
@@ -0,0 +1,300 @@
+ff76df58
+ff76df56
+ff76df5b
+ff76df56
+ff76df5d
+ff76df56
+ff76df5f
+ff76df56
+ff76df61
+ff76df56
+ff76df63
+ff76df56
+ff76df64
+ff76df56
+ff76df66
+ff76df56
+ff76df68
+ff76df56
+ff76df6a
+ff76df56
+ff76df6c
+ff76df56
+ff76df6e
+ff76df56
+ff76df70
+ff76df56
+ff76df72
+ff76df56
+ff76df74
+ff76df56
+ff76df76
+ff76df56
+ff76df78
+ff76df56
+ff76df7a
+ff76df56
+ff76df7c
+ff76df56
+ff76df7e
+ff76df56
+ff76df80
+ff76df56
+ff76df82
+ff76df56
+ff76df84
+ff76df56
+ff76df86
+ff76df56
+ff76df88
+ff76df56
+ff76df8a
+ff76df56
+ff76df8c
+ff76df56
+ff76df8e
+ff76df56
+ff76df90
+ff76df56
+ff76df92
+ff76df56
+ff76df94
+ff76df56
+ff76df96
+ff76df56
+ff76df98
+ff76df56
+ff76df9a
+ff76df56
+ff76df9c
+ff76df56
+ff76df9e
+ff76df56
+ff76dfa0
+ff76df56
+ff76dfa2
+ff76df56
+ff76dfa4
+ff76df56
+ff76dfa6
+ff76df56
+ff76dfa8
+ff76df56
+ff76dfaa
+ff76df56
+ff76dfac
+ff76df56
+ff76dfae
+ff76df56
+ff76dfb0
+ff76df56
+ff76dfb2
+ff76df56
+ff76dfb4
+ff76df56
+ff76dfb6
+ff76df56
+ff76dfb8
+ff76df56
+ff76dfba
+ff76df56
+ff76dfbc
+ff76df56
+ff76dfbe
+ff76df56
+ff76dfc0
+ff76df56
+ff76dfc2
+ff76df56
+ff76dfc4
+ff76df56
+ff76dfc6
+ff76df56
+ff76dfc8
+ff76df56
+ff76dfca
+ff76df56
+ff76dfcc
+ff76df56
+ff76dfce
+ff76df56
+ff76dfd0
+ff76df56
+ff76dfd2
+ff76df56
+ff76dfd4
+ff76df56
+ff76dfd6
+ff76df56
+ff76dfd8
+ff76df56
+ff76dfda
+ff76df56
+ff76dfdc
+ff76df56
+ff76dfde
+ff76df56
+ff76dfe0
+ff76df56
+ff76dfe2
+ff76df56
+ff76dfe4
+ff76df56
+ff76dfe6
+ff76df56
+ff76dfe8
+ff76df56
+ff76dfea
+ff76df56
+ff76dfec
+ff76df56
+ff76dfee
+ff76df56
+ff76dff0
+ff76df56
+ff76dff2
+ff76df56
+ff76dff4
+ff76df56
+ff76dff6
+ff76df56
+ff76dff8
+ff76df56
+ff76dffa
+ff76df56
+ff76dffc
+ff76df56
+ff76dffe
+ff76df56
+ff76e000
+ff76df56
+ff76e002
+ff76df56
+ff76e004
+ff76df56
+ff76e006
+ff76df56
+ff76e008
+ff76df56
+ff76e00a
+ff76df56
+ff76e00c
+ff76df56
+ff76e00e
+ff76df56
+ff76e010
+ff76df56
+ff76e012
+ff76df56
+ff76e014
+ff76df56
+ff76e016
+ff76df56
+ff76e018
+ff76df56
+ff76e01a
+ff76df56
+ff76e01c
+ff76df56
+ff76e01e
+ff76df56
+ff76e020
+ff76df56
+ff76e022
+ff76df56
+ff76e024
+ff76df56
+ff76e026
+ff76df56
+ff76e028
+ff76df56
+ff76e02a
+ff76df56
+ff76e02c
+ff76df56
+ff76e02e
+ff76df56
+ff76e030
+ff76df56
+ff76e032
+ff76df56
+ff76e034
+ff76df56
+ff76e036
+ff76df56
+ff76e038
+ff76df56
+ff76e03a
+ff76df56
+ff76e03c
+ff76df56
+ff76e03e
+ff76df56
+ff76e040
+ff76df56
+ff76e042
+ff76df56
+ff76e044
+ff76df56
+ff76e046
+ff76df56
+ff76e048
+ff76df56
+ff76e04a
+ff76df56
+ff76e04c
+ff76df56
+ff76e04e
+ff76df56
+ff76e050
+ff76df56
+ff76e052
+ff76df56
+ff76e054
+ff76df56
+ff76e056
+ff76df56
+ff76e058
+ff76df56
+ff76e05a
+ff76df56
+ff76e05c
+ff76df56
+ff76e05e
+ff76df56
+ff76e060
+ff76df56
+ff76e062
+ff76df56
+ff76e064
+ff76df56
+ff76e066
+ff76df56
+ff76e068
+ff76df56
+ff76e06a
+ff76df56
+ff76e06c
+ff76df56
+ff76e06e
+ff76df56
+ff76e070
+ff76df56
+ff76e072
+ff76df56
+ff76e074
+ff76df56
+ff76e076
+ff76df56
+ff76e078
+ff76df56
+ff76e07a
+ff76df56
+ff76e07c
+ff76df56
+ff76e07e
+ff76df56
+ff76e080
+ff76df56
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cbnez-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cbnez-01.reference_output
new file mode 100644
index 000000000..44004550b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cbnez-01.reference_output
@@ -0,0 +1,300 @@
+ff76df57
+ff76df56
+ff76df59
+ff76df56
+ff76df5a
+ff76df56
+ff76df5b
+ff76df56
+ff76df5e
+ff76df56
+ff76df61
+ff76df56
+ff76df63
+ff76df56
+ff76df66
+ff76df56
+ff76df67
+ff76df56
+ff76df68
+ff76df56
+ff76df69
+ff76df56
+ff76df6a
+ff76df56
+ff76df6d
+ff76df56
+ff76df70
+ff76df56
+ff76df73
+ff76df56
+ff76df76
+ff76df56
+ff76df77
+ff76df56
+ff76df78
+ff76df56
+ff76df79
+ff76df56
+ff76df7c
+ff76df56
+ff76df7f
+ff76df56
+ff76df82
+ff76df56
+ff76df83
+ff76df56
+ff76df86
+ff76df56
+ff76df87
+ff76df56
+ff76df88
+ff76df56
+ff76df8b
+ff76df56
+ff76df8c
+ff76df56
+ff76df8f
+ff76df56
+ff76df92
+ff76df56
+ff76df95
+ff76df56
+ff76df96
+ff76df56
+ff76df99
+ff76df56
+ff76df9a
+ff76df56
+ff76df9b
+ff76df56
+ff76df9c
+ff76df56
+ff76df9d
+ff76df56
+ff76df9e
+ff76df56
+ff76df9f
+ff76df56
+ff76dfa0
+ff76df56
+ff76dfa1
+ff76df56
+ff76dfa4
+ff76df56
+ff76dfa5
+ff76df56
+ff76dfa6
+ff76df56
+ff76dfa9
+ff76df56
+ff76dfaa
+ff76df56
+ff76dfab
+ff76df56
+ff76dfac
+ff76df56
+ff76dfaf
+ff76df56
+ff76dfb2
+ff76df56
+ff76dfb5
+ff76df56
+ff76dfb6
+ff76df56
+ff76dfb7
+ff76df56
+ff76dfb8
+ff76df56
+ff76dfbb
+ff76df56
+ff76dfbc
+ff76df56
+ff76dfbd
+ff76df56
+ff76dfc0
+ff76df56
+ff76dfc1
+ff76df56
+ff76dfc4
+ff76df56
+ff76dfc7
+ff76df56
+ff76dfca
+ff76df56
+ff76dfcb
+ff76df56
+ff76dfce
+ff76df56
+ff76dfd1
+ff76df56
+ff76dfd4
+ff76df56
+ff76dfd5
+ff76df56
+ff76dfd8
+ff76df56
+ff76dfd9
+ff76df56
+ff76dfdc
+ff76df56
+ff76dfdd
+ff76df56
+ff76dfde
+ff76df56
+ff76dfdf
+ff76df56
+ff76dfe0
+ff76df56
+ff76dfe3
+ff76df56
+ff76dfe6
+ff76df56
+ff76dfe7
+ff76df56
+ff76dfea
+ff76df56
+ff76dfed
+ff76df56
+ff76dff0
+ff76df56
+ff76dff3
+ff76df56
+ff76dff4
+ff76df56
+ff76dff7
+ff76df56
+ff76dff8
+ff76df56
+ff76dffb
+ff76df56
+ff76dffc
+ff76df56
+ff76dfff
+ff76df56
+ff76e000
+ff76df56
+ff76e001
+ff76df56
+ff76e002
+ff76df56
+ff76e003
+ff76df56
+ff76e004
+ff76df56
+ff76e005
+ff76df56
+ff76e006
+ff76df56
+ff76e009
+ff76df56
+ff76e00a
+ff76df56
+ff76e00b
+ff76df56
+ff76e00c
+ff76df56
+ff76e00d
+ff76df56
+ff76e00e
+ff76df56
+ff76e00f
+ff76df56
+ff76e010
+ff76df56
+ff76e013
+ff76df56
+ff76e014
+ff76df56
+ff76e017
+ff76df56
+ff76e018
+ff76df56
+ff76e01b
+ff76df56
+ff76e01c
+ff76df56
+ff76e01f
+ff76df56
+ff76e020
+ff76df56
+ff76e021
+ff76df56
+ff76e022
+ff76df56
+ff76e023
+ff76df56
+ff76e026
+ff76df56
+ff76e029
+ff76df56
+ff76e02a
+ff76df56
+ff76e02d
+ff76df56
+ff76e02e
+ff76df56
+ff76e02f
+ff76df56
+ff76e032
+ff76df56
+ff76e035
+ff76df56
+ff76e036
+ff76df56
+ff76e037
+ff76df56
+ff76e038
+ff76df56
+ff76e03b
+ff76df56
+ff76e03c
+ff76df56
+ff76e03f
+ff76df56
+ff76e042
+ff76df56
+ff76e045
+ff76df56
+ff76e046
+ff76df56
+ff76e047
+ff76df56
+ff76e04a
+ff76df56
+ff76e04d
+ff76df56
+ff76e04e
+ff76df56
+ff76e051
+ff76df56
+ff76e054
+ff76df56
+ff76e057
+ff76df56
+ff76e05a
+ff76df56
+ff76e05b
+ff76df56
+ff76e05e
+ff76df56
+ff76e05f
+ff76df56
+ff76e060
+ff76df56
+ff76e061
+ff76df56
+ff76e064
+ff76df56
+ff76e065
+ff76df56
+ff76e068
+ff76df56
+ff76e06b
+ff76df56
+ff76e06e
+ff76df56
+ff76e071
+ff76df56
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cebreak-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cebreak-01.reference_output
new file mode 100644
index 000000000..91fef5137
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cebreak-01.reference_output
@@ -0,0 +1,8 @@
+00000000
+11111111
+0000010f
+00000000
+00000003
+00000000
+000003a0
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cj-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cj-01.reference_output
new file mode 100644
index 000000000..9a7f95af0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cj-01.reference_output
@@ -0,0 +1,36 @@
+ff76df59
+ff76df56
+ff76df5a
+ff76df56
+ff76df5d
+ff76df56
+ff76df60
+ff76df56
+ff76df63
+ff76df56
+ff76df66
+ff76df56
+ff76df69
+ff76df56
+ff76df6c
+ff76df56
+ff76df6f
+ff76df56
+ff76df70
+ff76df56
+ff76df71
+ff76df56
+ff76df72
+ff76df56
+ff76df75
+ff76df56
+ff76df76
+ff76df56
+ff76df77
+ff76df56
+ff76df78
+ff76df56
+ff76df79
+ff76df56
+ff76df7a
+ff76df56
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cjalr-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cjalr-01.reference_output
new file mode 100644
index 000000000..d982fc98d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cjalr-01.reference_output
@@ -0,0 +1,64 @@
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+0000000f
+00000000
+00000009
+00000000
+0000000f
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cjr-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cjr-01.reference_output
new file mode 100644
index 000000000..2f2b30af8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cjr-01.reference_output
@@ -0,0 +1,64 @@
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000013
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cld-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cld-01.reference_output
new file mode 100644
index 000000000..948362034
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cld-01.reference_output
@@ -0,0 +1,28 @@
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cldsp-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cldsp-01.reference_output
new file mode 100644
index 000000000..67d1521c6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cldsp-01.reference_output
@@ -0,0 +1,64 @@
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+babecafe
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cli-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cli-01.reference_output
new file mode 100644
index 000000000..87e492b52
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cli-01.reference_output
@@ -0,0 +1,64 @@
+ffffffe0
+ffffffff
+00000000
+00000000
+0000001f
+00000000
+00000001
+00000000
+00000002
+00000000
+00000004
+00000000
+00000008
+00000000
+00000010
+00000000
+ffffffea
+ffffffff
+fffffffe
+ffffffff
+fffffffd
+ffffffff
+fffffffb
+ffffffff
+fffffff7
+ffffffff
+ffffffef
+ffffffff
+00000015
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clui-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clui-01.reference_output
new file mode 100644
index 000000000..ab6452d51
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clui-01.reference_output
@@ -0,0 +1,64 @@
+fffef000
+ffffffff
+0001f000
+00000000
+ffff7000
+ffffffff
+00011000
+00000000
+00001000
+00000000
+00002000
+00000000
+00004000
+00000000
+00008000
+00000000
+00015000
+00000000
+fffea000
+ffffffff
+00010000
+00000000
+fffe0000
+ffffffff
+ffffe000
+ffffffff
+ffffd000
+ffffffff
+ffffb000
+ffffffff
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00000000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00001000
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clw-01.reference_output
new file mode 100644
index 000000000..fc36c1e86
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clw-01.reference_output
@@ -0,0 +1,28 @@
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clwsp-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clwsp-01.reference_output
new file mode 100644
index 000000000..a2230c8a0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/clwsp-01.reference_output
@@ -0,0 +1,64 @@
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+babecafe
+ffffffff
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cmv-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cmv-01.reference_output
new file mode 100644
index 000000000..aea12cbc2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cmv-01.reference_output
@@ -0,0 +1,300 @@
+00000000
+80000000
+00000000
+00000000
+ffffffff
+7fffffff
+00000001
+00000000
+00000002
+00000000
+00000004
+00000000
+00000008
+00000000
+00000010
+00000000
+00000000
+00000000
+00000040
+00000000
+00000080
+00000000
+00000100
+00000000
+00000200
+00000000
+00000400
+00000000
+00000800
+00000000
+00001000
+00000000
+00002000
+00000000
+00004000
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00040000
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+00400000
+00000000
+00800000
+00000000
+01000000
+00000000
+02000000
+00000000
+04000000
+00000000
+08000000
+00000000
+10000000
+00000000
+20000000
+00000000
+40000000
+00000000
+80000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000004
+00000000
+00000008
+00000000
+00000010
+00000000
+00000020
+00000000
+00000040
+00000000
+00000080
+00000000
+00000100
+00000000
+00000200
+00000000
+00000400
+00000000
+00000800
+00000000
+00001000
+00000000
+00002000
+00000000
+00004000
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00040000
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+00400000
+00000000
+00800000
+00000000
+01000000
+00000000
+02000000
+00000000
+04000000
+00000000
+08000000
+00000000
+10000000
+00000000
+20000000
+00000000
+40000000
+fffffffe
+ffffffff
+fffffffd
+ffffffff
+fffffffb
+ffffffff
+fffffff7
+ffffffff
+ffffffef
+ffffffff
+ffffffdf
+ffffffff
+ffffffbf
+ffffffff
+ffffff7f
+ffffffff
+fffffeff
+ffffffff
+fffffdff
+ffffffff
+fffffbff
+ffffffff
+fffff7ff
+ffffffff
+ffffefff
+ffffffff
+ffffdfff
+ffffffff
+ffffbfff
+ffffffff
+ffff7fff
+ffffffff
+fffeffff
+ffffffff
+fffdffff
+ffffffff
+fffbffff
+ffffffff
+fff7ffff
+ffffffff
+ffefffff
+ffffffff
+ffffffff
+dfffffff
+ffffffff
+bfffffff
+55555555
+55555555
+aaaaaaaa
+aaaaaaaa
+00000003
+00000000
+00000005
+00000000
+33333333
+33333333
+66666666
+66666666
+4afb0ccd
+ffffffff
+b504f333
+00000000
+55555554
+55555555
+33333332
+33333333
+66666665
+66666666
+b504f332
+00000000
+55555556
+55555555
+aaaaaaab
+aaaaaaaa
+00000006
+00000000
+33333334
+33333333
+66666667
+66666666
+4afb0cce
+ffffffff
+b504f334
+00000000
+ffdfffff
+ffffffff
+ffbfffff
+ffffffff
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
+ffffffff
+f7ffffff
+ffffffff
+efffffff
+ffffffff
+dfffffff
+ffffffff
+bfffffff
+ffffffff
+7fffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+fffffffd
+ffffffff
+fffffffb
+ffffffff
+fffffff7
+ffffffff
+ffffffef
+ffffffff
+ffffffdf
+ffffffff
+ffffffbf
+ffffffff
+ffffff7f
+ffffffff
+fffffeff
+ffffffff
+fffffdff
+ffffffff
+fffffbff
+ffffffff
+fffff7ff
+ffffffff
+ffffefff
+ffffffff
+ffffdfff
+ffffffff
+ffffbfff
+ffffffff
+ffff7fff
+ffffffff
+fffeffff
+ffffffff
+fffdffff
+ffffffff
+fffbffff
+ffffffff
+fff7ffff
+ffffffff
+ffefffff
+ffffffff
+ffdfffff
+ffffffff
+ffbfffff
+ffffffff
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
+ffffffff
+f7ffffff
+ffffffff
+efffffff
+00000020
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cnop-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cnop-01.reference_output
new file mode 100644
index 000000000..43e0ceb3d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cnop-01.reference_output
@@ -0,0 +1,28 @@
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cor-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cor-01.reference_output
new file mode 100644
index 000000000..5d8a6af6a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cor-01.reference_output
@@ -0,0 +1,1360 @@
+02000000
+80000000
+00000000
+80000000
+ffffffff
+ffffffff
+00000005
+00000000
+fffdffff
+ffffffff
+ffffffff
+ffffffff
+ffffff7f
+ffffffff
+00000002
+00000200
+dfffffff
+ffffffff
+0000000d
+00000000
+00000019
+00000000
+00000023
+00000000
+ffff7fff
+ffffffff
+02000080
+00000000
+00000100
+00000000
+00000200
+10000000
+ffffffff
+ffffffbf
+00000840
+00000000
+00001100
+00000000
+00002000
+00080000
+00004000
+00000010
+00808000
+00000000
+ffffffff
+fffdffff
+fbffffff
+ffffffff
+00040002
+00000000
+00080010
+00000000
+b514f334
+00000000
+fdffffff
+ffffffff
+ff7fffff
+ffffffff
+ffffffff
+fffffff7
+ffffffbf
+ffffffff
+02000000
+c0000000
+04000004
+00000000
+08020000
+00000000
+10000004
+00000000
+60000000
+00000000
+4afb0ccd
+ffffffff
+80020000
+00000000
+ffffffff
+fdffffff
+ffffffff
+efffffff
+00000005
+00000004
+4afb0ccd
+ffffffff
+00000006
+00000010
+00000400
+00000020
+33333334
+33333373
+00000007
+00000080
+00000002
+00000100
+ffffffff
+ffffbfff
+00000000
+00000408
+efffffff
+ffffffff
+33333332
+33333333
+fffdffff
+ffffffff
+55555556
+55555555
+00000000
+00008008
+01000000
+00010000
+fffbffff
+ffffffff
+ffefffff
+ffffffff
+00000008
+00080000
+ffffffff
+ffffff7f
+00000000
+01200000
+00000003
+00400000
+33333333
+33b33333
+4afb0ccd
+ffffffff
+33333333
+33333333
+00000000
+04400000
+ffffffff
+ffff7fff
+20000000
+10000000
+08000000
+20000000
+fffffff8
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+fffffffb
+ffffffff
+ffffffff
+ffffffff
+ffffffef
+ffffffff
+ffffffdf
+ffffffff
+ffffffbf
+ffffffff
+ffffffff
+ffffffff
+fffffdff
+ffffffff
+fffffbff
+ffffffff
+ffffffff
+ffffffff
+ffffefff
+ffffffff
+ffffdfff
+ffffffff
+ffffbfff
+ffffffff
+ffffffff
+ffffffff
+fffeffff
+ffffffff
+ffffffff
+ffffffff
+fff7ffff
+ffffffff
+ffefffff
+ffffffff
+ffdfffff
+ffffffff
+ffbfffff
+ffffffff
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
+ffffffff
+f7ffffff
+ffffffff
+efffffff
+ffffffff
+dfffffff
+ffffffff
+bfffffff
+ffffffff
+7fffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffd
+ffffffff
+fffffffb
+ffffffff
+fffffff7
+ffffffff
+ffffffef
+ffffffff
+ffffffdf
+ffffffff
+ffffffbf
+ffffffff
+ffffffff
+ffffffff
+fffffeff
+ffffffff
+fffffdff
+ffffffff
+fffffbff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffff7fff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffefffff
+ffffffff
+ffdfffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
+ffffffff
+f7ffffff
+ffffffff
+efffffff
+ffffffff
+dfffffff
+ffffffff
+bfffffff
+55555557
+55555555
+eeeeeeee
+eeeeeeee
+ffffffff
+f7ffffff
+fffdffff
+ffffffff
+00000800
+00000000
+fffeffff
+ffffffff
+ffffffff
+fffff7ff
+dfffffff
+ffffffff
+00040000
+00000000
+feffffff
+ffffffff
+ffdfffff
+ffffffff
+7fffffff
+ffffffff
+a0000000
+00000000
+00000008
+00000001
+00004000
+00000002
+fff7ffff
+ffffffff
+ffffffff
+dfffffff
+ffffffff
+fffffeff
+00000003
+00000080
+00000000
+00040100
+66666666
+66666666
+00000008
+00000800
+00000002
+00001000
+00000000
+10002000
+b504f334
+00004000
+00000000
+00088000
+ffefffff
+ffffffff
+ffffffff
+ffdfffff
+ffffffff
+ffffffff
+40000000
+08000000
+00100000
+20000000
+00000000
+40000080
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffdf
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffff7ff
+ffffffff
+ffffefff
+ffffffff
+ffffdfff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fff7ffff
+ffffffff
+ffdfffff
+ffffffff
+bfffffff
+ffffffff
+7fffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffb
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffeff
+ffffffff
+ffffffff
+ffffffff
+fffffbff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+dfffffff
+ffffffff
+ffffffff
+00000003
+00000000
+aaaaaaab
+aaaaaaaa
+00000007
+00000000
+33333333
+33333333
+66666667
+66666666
+4afb0ccf
+ffffffff
+b504f333
+00000000
+00000003
+00000000
+55555557
+55555555
+00000003
+00000000
+00000007
+00000000
+33333333
+33333333
+66666667
+66666666
+b504f333
+00000000
+55555557
+55555555
+aaaaaaab
+aaaaaaaa
+00000007
+00000000
+33333337
+33333333
+66666667
+66666666
+4afb0ccf
+ffffffff
+b504f337
+00000000
+55555557
+55555555
+55555555
+55555555
+ffffffff
+ffffffff
+55555555
+55555555
+77777777
+77777777
+77777777
+77777777
+5fff5ddd
+ffffffff
+f555f777
+55555555
+55555557
+55555555
+55555555
+55555555
+55555555
+55555555
+55555555
+55555555
+77777777
+77777777
+77777775
+77777777
+f555f777
+55555555
+55555557
+55555555
+ffffffff
+ffffffff
+55555557
+55555555
+77777775
+77777777
+77777777
+77777777
+5fff5ddf
+ffffffff
+f555f775
+55555555
+aaaaaaab
+aaaaaaaa
+ffffffff
+ffffffff
+aaaaaaaa
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+bbbbbbbb
+bbbbbbbb
+eeeeeeee
+eeeeeeee
+eafbaeef
+ffffffff
+bfaefbbb
+aaaaaaaa
+aaaaaaaa
+aaaaaaaa
+fffffffe
+ffffffff
+aaaaaaaa
+aaaaaaaa
+aaaaaaae
+aaaaaaaa
+bbbbbbba
+bbbbbbbb
+eeeeeeef
+eeeeeeee
+bfaefbba
+aaaaaaaa
+fffffffe
+ffffffff
+aaaaaaab
+aaaaaaaa
+aaaaaaae
+aaaaaaaa
+bbbbbbbe
+bbbbbbbb
+eeeeeeef
+eeeeeeee
+eafbaeee
+ffffffff
+bfaefbbe
+aaaaaaaa
+00000007
+00000000
+55555555
+55555555
+aaaaaaaf
+aaaaaaaa
+00000005
+00000000
+33333337
+33333333
+66666667
+66666666
+4afb0ccd
+ffffffff
+b504f337
+00000000
+00000007
+00000000
+55555555
+55555555
+00000005
+00000000
+00000005
+00000000
+33333337
+33333333
+66666665
+66666666
+b504f337
+00000000
+55555557
+55555555
+aaaaaaaf
+aaaaaaaa
+00000007
+00000000
+33333335
+33333333
+66666667
+66666666
+4afb0ccf
+ffffffff
+b504f335
+00000000
+33333333
+33333333
+77777777
+77777777
+bbbbbbbb
+bbbbbbbb
+33333337
+33333333
+33333333
+33333333
+77777777
+77777777
+7bfb3fff
+ffffffff
+b737f333
+33333333
+33333333
+33333333
+77777777
+77777777
+33333333
+33333333
+33333337
+33333333
+33333333
+33333333
+77777777
+77777777
+b737f333
+33333333
+77777777
+77777777
+bbbbbbbb
+bbbbbbbb
+33333337
+33333333
+33333337
+33333333
+77777777
+77777777
+7bfb3fff
+ffffffff
+b737f337
+33333333
+66666667
+66666666
+77777777
+77777777
+66666667
+66666666
+77777777
+77777777
+66666666
+66666666
+6eff6eef
+ffffffff
+f766f777
+66666666
+66666666
+66666666
+77777776
+77777777
+66666666
+66666666
+66666666
+66666666
+77777776
+77777777
+66666667
+66666666
+f766f776
+66666666
+77777776
+77777777
+eeeeeeef
+eeeeeeee
+66666666
+66666666
+77777776
+77777777
+66666667
+66666666
+6eff6eee
+ffffffff
+f766f776
+66666666
+4afb0ccf
+ffffffff
+5fff5ddd
+ffffffff
+eafbaeef
+ffffffff
+4afb0ccd
+ffffffff
+7bfb3fff
+ffffffff
+6eff6eef
+ffffffff
+4afb0ccd
+ffffffff
+ffffffff
+ffffffff
+4afb0ccf
+ffffffff
+5fff5ddd
+ffffffff
+4afb0ccd
+ffffffff
+4afb0ccd
+ffffffff
+7bfb3fff
+ffffffff
+6eff6eed
+ffffffff
+ffffffff
+ffffffff
+5fff5ddf
+ffffffff
+eafbaeef
+ffffffff
+4afb0ccf
+ffffffff
+7bfb3ffd
+ffffffff
+6eff6eef
+ffffffff
+4afb0ccf
+ffffffff
+fffffffd
+ffffffff
+b504f333
+00000000
+f555f777
+55555555
+bfaefbbb
+aaaaaaaa
+b504f337
+00000000
+b737f333
+33333333
+f766f777
+66666666
+ffffffff
+ffffffff
+b504f333
+00000000
+b504f333
+00000000
+f555f777
+55555555
+b504f333
+00000000
+b504f337
+00000000
+b737f333
+33333333
+f766f777
+66666666
+b504f333
+00000000
+f555f777
+55555555
+bfaefbbb
+aaaaaaaa
+b504f337
+00000000
+b737f337
+33333333
+f766f777
+66666666
+ffffffff
+ffffffff
+b504f337
+00000000
+00000003
+00000000
+55555557
+55555555
+aaaaaaaa
+aaaaaaaa
+00000007
+00000000
+33333333
+33333333
+66666666
+66666666
+4afb0ccf
+ffffffff
+b504f333
+00000000
+00000002
+00000000
+55555556
+55555555
+00000002
+00000000
+00000006
+00000000
+33333332
+33333333
+66666667
+66666666
+b504f332
+00000000
+55555556
+55555555
+aaaaaaab
+aaaaaaaa
+00000006
+00000000
+33333336
+33333333
+66666667
+66666666
+4afb0cce
+ffffffff
+b504f336
+00000000
+55555557
+55555555
+55555555
+55555555
+fffffffe
+ffffffff
+55555555
+55555555
+77777777
+77777777
+77777776
+77777777
+5fff5ddd
+ffffffff
+f555f777
+55555555
+55555556
+55555555
+55555554
+55555555
+55555554
+55555555
+55555554
+55555555
+77777776
+77777777
+77777775
+77777777
+f555f776
+55555555
+55555556
+55555555
+ffffffff
+ffffffff
+55555556
+55555555
+77777774
+77777777
+77777777
+77777777
+5fff5dde
+ffffffff
+f555f774
+55555555
+00000003
+00000000
+55555555
+55555555
+aaaaaaaa
+aaaaaaaa
+00000005
+00000000
+33333333
+33333333
+66666666
+66666666
+4afb0ccd
+ffffffff
+b504f333
+00000000
+00000002
+00000000
+aaaaaaae
+aaaaaaaa
+00000005
+00000000
+33333337
+33333333
+66666666
+66666666
+4afb0ccd
+ffffffff
+b504f337
+00000000
+00000006
+00000000
+55555554
+55555555
+00000004
+00000000
+00000004
+00000000
+33333336
+33333333
+66666665
+66666666
+b504f336
+00000000
+55555556
+55555555
+aaaaaaaf
+aaaaaaaa
+00000006
+00000000
+33333334
+33333333
+66666667
+66666666
+4afb0cce
+ffffffff
+b504f334
+00000000
+33333333
+33333333
+77777777
+77777777
+bbbbbbba
+bbbbbbbb
+33333337
+33333333
+33333333
+33333333
+77777776
+77777777
+7bfb3fff
+ffffffff
+b737f333
+33333333
+33333332
+33333333
+77777776
+77777777
+33333332
+33333333
+33333336
+33333333
+33333332
+33333333
+77777777
+77777777
+b737f332
+33333333
+77777776
+77777777
+bbbbbbbb
+bbbbbbbb
+33333336
+33333333
+33333336
+33333333
+77777777
+77777777
+7bfb3ffe
+ffffffff
+b737f336
+33333333
+66666667
+66666666
+77777775
+77777777
+eeeeeeef
+eeeeeeee
+66666665
+66666666
+77777777
+77777777
+66666667
+66666666
+6eff6eed
+ffffffff
+f766f777
+66666666
+66666667
+66666666
+77777775
+77777777
+66666665
+66666666
+66666665
+66666666
+77777777
+77777777
+66666665
+66666666
+f766f777
+66666666
+77777777
+77777777
+eeeeeeef
+eeeeeeee
+66666667
+66666666
+77777775
+77777777
+66666667
+66666666
+6eff6eef
+ffffffff
+f766f775
+66666666
+b504f333
+00000000
+f555f777
+55555555
+bfaefbba
+aaaaaaaa
+b504f337
+00000000
+b737f333
+33333333
+f766f776
+66666666
+ffffffff
+ffffffff
+b504f333
+00000000
+b504f332
+00000000
+f555f776
+55555555
+b504f332
+00000000
+b504f336
+00000000
+b737f332
+33333333
+f766f777
+66666666
+b504f332
+00000000
+f555f776
+55555555
+bfaefbbb
+aaaaaaaa
+b504f336
+00000000
+b737f336
+33333333
+f766f777
+66666666
+fffffffe
+ffffffff
+b504f336
+00000000
+55555557
+55555555
+55555557
+55555555
+fffffffe
+ffffffff
+55555557
+55555555
+77777777
+77777777
+77777776
+77777777
+5fff5ddf
+ffffffff
+f555f777
+55555555
+55555556
+55555555
+55555556
+55555555
+55555556
+55555555
+55555556
+55555555
+77777776
+77777777
+77777777
+77777777
+f555f776
+55555555
+55555556
+55555555
+ffffffff
+ffffffff
+55555556
+55555555
+77777776
+77777777
+77777777
+77777777
+5fff5dde
+ffffffff
+f555f776
+55555555
+aaaaaaab
+aaaaaaaa
+ffffffff
+ffffffff
+aaaaaaab
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+bbbbbbbb
+bbbbbbbb
+eeeeeeef
+eeeeeeee
+eafbaeef
+ffffffff
+bfaefbbb
+aaaaaaaa
+aaaaaaab
+aaaaaaaa
+ffffffff
+ffffffff
+aaaaaaab
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+bbbbbbbb
+bbbbbbbb
+eeeeeeef
+eeeeeeee
+bfaefbbb
+aaaaaaaa
+ffffffff
+ffffffff
+aaaaaaab
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+bbbbbbbf
+bbbbbbbb
+eeeeeeef
+eeeeeeee
+eafbaeef
+ffffffff
+bfaefbbf
+aaaaaaaa
+00000007
+00000000
+55555557
+55555555
+aaaaaaae
+aaaaaaaa
+00000007
+00000000
+33333337
+33333333
+66666666
+66666666
+4afb0ccf
+ffffffff
+b504f337
+00000000
+00000006
+00000000
+55555556
+55555555
+00000006
+00000000
+00000006
+00000000
+33333336
+33333333
+66666667
+66666666
+b504f336
+00000000
+55555556
+55555555
+aaaaaaaf
+aaaaaaaa
+00000006
+00000000
+33333336
+33333333
+66666667
+66666666
+4afb0cce
+ffffffff
+b504f336
+00000000
+33333337
+33333333
+77777775
+77777777
+bbbbbbbe
+bbbbbbbb
+33333335
+33333333
+33333337
+33333333
+77777776
+77777777
+7bfb3ffd
+ffffffff
+b737f337
+33333333
+33333336
+33333333
+77777774
+77777777
+33333334
+33333333
+33333334
+33333333
+33333336
+33333333
+77777775
+77777777
+b737f336
+33333333
+77777776
+77777777
+bbbbbbbf
+bbbbbbbb
+33333336
+33333333
+33333334
+33333333
+77777777
+77777777
+7bfb3ffe
+ffffffff
+b737f334
+33333333
+66666667
+66666666
+77777777
+77777777
+eeeeeeef
+eeeeeeee
+66666667
+66666666
+77777777
+77777777
+66666667
+66666666
+6eff6eef
+ffffffff
+f766f777
+66666666
+66666667
+66666666
+77777777
+77777777
+66666667
+66666666
+66666667
+66666666
+77777777
+77777777
+66666667
+66666666
+f766f777
+66666666
+77777777
+77777777
+eeeeeeef
+eeeeeeee
+66666667
+66666666
+77777777
+77777777
+66666667
+66666666
+6eff6eef
+ffffffff
+f766f777
+66666666
+4afb0ccf
+ffffffff
+5fff5ddf
+ffffffff
+eafbaeee
+ffffffff
+4afb0ccf
+ffffffff
+7bfb3fff
+ffffffff
+6eff6eee
+ffffffff
+4afb0ccf
+ffffffff
+ffffffff
+ffffffff
+4afb0cce
+ffffffff
+5fff5dde
+ffffffff
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+7bfb3ffe
+ffffffff
+6eff6eef
+ffffffff
+fffffffe
+ffffffff
+5fff5dde
+ffffffff
+eafbaeef
+ffffffff
+4afb0cce
+ffffffff
+7bfb3ffe
+ffffffff
+6eff6eef
+ffffffff
+4afb0cce
+ffffffff
+fffffffe
+ffffffff
+b504f337
+00000000
+f555f775
+55555555
+bfaefbbe
+aaaaaaaa
+b504f335
+00000000
+b737f337
+33333333
+f766f776
+66666666
+fffffffd
+ffffffff
+b504f337
+00000000
+b504f336
+00000000
+f555f774
+55555555
+b504f334
+00000000
+b504f334
+00000000
+b737f336
+33333333
+f766f775
+66666666
+b504f336
+00000000
+f555f776
+55555555
+bfaefbbf
+aaaaaaaa
+b504f336
+00000000
+b737f334
+33333333
+f766f777
+66666666
+fffffffe
+ffffffff
+b504f334
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+33333332
+33333333
+66666665
+66666666
+b504f332
+00000000
+55555556
+55555555
+aaaaaaab
+aaaaaaaa
+00000006
+00000000
+33333334
+33333333
+66666667
+66666666
+4afb0cce
+ffffffff
+b504f334
+00000000
+00000007
+00000000
+55555555
+55555555
+00000000
+80000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csd-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csd-01.reference_output
new file mode 100644
index 000000000..681f90d60
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csd-01.reference_output
@@ -0,0 +1,264 @@
+00000000
+80000000
+00000000
+00000000
+ffffffff
+7fffffff
+00000001
+00000000
+ffffffff
+ffdfffff
+00000002
+00000000
+00000004
+00000000
+00000008
+00000000
+00000010
+00000000
+00000020
+00000000
+00000040
+00000000
+00000080
+00000000
+00000100
+00000000
+00000200
+00000000
+00000400
+00000000
+00000800
+00000000
+00001000
+00000000
+00002000
+00000000
+00004000
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00040000
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+00400000
+00000000
+00800000
+00000000
+01000000
+00000000
+02000000
+00000000
+04000000
+00000000
+08000000
+00000000
+10000000
+00000000
+20000000
+00000000
+40000000
+00000000
+80000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000004
+00000000
+00000008
+00000000
+00000010
+00000000
+00000020
+00000000
+00000040
+00000000
+00000080
+00000000
+00000100
+00000000
+00000200
+00000000
+00000400
+00000000
+00000800
+00000000
+00001000
+00000000
+00002000
+00000000
+00004000
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00040000
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+00400000
+00000000
+00800000
+00000000
+01000000
+00000000
+02000000
+00000000
+04000000
+00000000
+08000000
+00000000
+10000000
+00000000
+20000000
+00000000
+40000000
+fffffffe
+ffffffff
+fffffffd
+ffffffff
+ffffffff
+f7ffffff
+ffffffff
+efffffff
+ffffffff
+dfffffff
+ffffffff
+bfffffff
+55555555
+55555555
+aaaaaaaa
+aaaaaaaa
+fffffff8
+ffffffff
+fffffffb
+ffffffff
+fffffff7
+ffffffff
+ffffffef
+ffffffff
+ffffffdf
+ffffffff
+ffffffbf
+ffffffff
+ffffff7f
+ffffffff
+fffffeff
+ffffffff
+fffffdff
+ffffffff
+fffffbff
+ffffffff
+fffff7ff
+ffffffff
+ffffefff
+ffffffff
+ffffdfff
+ffffffff
+ffffbfff
+ffffffff
+ffff7fff
+ffffffff
+fffeffff
+ffffffff
+fffdffff
+ffffffff
+fffbffff
+ffffffff
+fff7ffff
+ffffffff
+ffefffff
+ffffffff
+ffdfffff
+ffffffff
+ffbfffff
+ffffffff
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
+ffffffff
+f7ffffff
+ffffffff
+efffffff
+ffffffff
+dfffffff
+ffffffff
+bfffffff
+ffffffff
+7fffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+fffffffd
+ffffffff
+fffffffb
+ffffffff
+fffffff7
+ffffffff
+ffffffef
+ffffffff
+ffffffdf
+ffffffff
+ffffffbf
+ffffffff
+ffffff7f
+ffffffff
+fffffeff
+ffffffff
+fffffdff
+ffffffff
+fffffbff
+ffffffff
+fffff7ff
+ffffffff
+ffffefff
+ffffffff
+ffffdfff
+ffffffff
+ffffbfff
+ffffffff
+ffff7fff
+ffffffff
+fffeffff
+ffffffff
+fffdffff
+ffffffff
+fffbffff
+ffffffff
+fff7ffff
+ffffffff
+ffefffff
+ffffffff
+ffbfffff
+ffffffff
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csdsp-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csdsp-01.reference_output
new file mode 100644
index 000000000..5fdc2bcac
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csdsp-01.reference_output
@@ -0,0 +1,264 @@
+00000000
+80000000
+00000000
+00000000
+ffffffff
+7fffffff
+00000001
+00000000
+ffffffdf
+ffffffff
+00000002
+00000000
+00000004
+00000000
+00000008
+00000000
+00000010
+00000000
+00000020
+00000000
+00000040
+00000000
+00000080
+00000000
+00000100
+00000000
+00000200
+00000000
+00000400
+00000000
+00000800
+00000000
+00001000
+00000000
+00002000
+00000000
+00004000
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00040000
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+00400000
+00000000
+00800000
+00000000
+01000000
+00000000
+02000000
+00000000
+04000000
+00000000
+08000000
+00000000
+10000000
+00000000
+20000000
+00000000
+40000000
+00000000
+80000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000004
+00000000
+00000008
+00000000
+00000010
+00000000
+00000020
+00000000
+00000040
+00000000
+00000080
+00000000
+00000100
+00000000
+00000200
+00000000
+00000400
+00000000
+00000800
+00000000
+00001000
+00000000
+00002000
+00000000
+00004000
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00040000
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+00400000
+00000000
+00800000
+00000000
+01000000
+00000000
+02000000
+00000000
+04000000
+00000000
+08000000
+00000000
+10000000
+00000000
+20000000
+00000000
+40000000
+fffffffe
+ffffffff
+fffffffd
+ffffffff
+fffffffb
+ffffffff
+ffffffff
+f7ffffff
+ffffffff
+efffffff
+ffffffff
+dfffffff
+ffffffff
+bfffffff
+55555555
+55555555
+aaaaaaaa
+aaaaaaaa
+ffffffbf
+ffffffff
+fffffff7
+ffffffff
+ffffffef
+ffffffff
+ffffff7f
+ffffffff
+fffffeff
+ffffffff
+fffffdff
+ffffffff
+fffffbff
+ffffffff
+fffff7ff
+ffffffff
+ffffefff
+ffffffff
+ffffdfff
+ffffffff
+ffffbfff
+ffffffff
+ffff7fff
+ffffffff
+fffeffff
+ffffffff
+fffdffff
+ffffffff
+fffbffff
+ffffffff
+fff7ffff
+ffffffff
+ffefffff
+ffffffff
+ffdfffff
+ffffffff
+ffbfffff
+ffffffff
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
+ffffffff
+f7ffffff
+ffffffff
+efffffff
+ffffffff
+dfffffff
+ffffffff
+bfffffff
+ffffffff
+7fffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+fffffffd
+ffffffff
+fffffffb
+ffffffff
+fffffff7
+ffffffff
+ffffffef
+ffffffff
+ffffffdf
+ffffffff
+ffffffbf
+ffffffff
+ffffff7f
+ffffffff
+fffffeff
+ffffffff
+fffffdff
+ffffffff
+fffffbff
+ffffffff
+fffff7ff
+ffffffff
+ffffefff
+ffffffff
+ffffdfff
+ffffffff
+ffffbfff
+ffffffff
+ffff7fff
+ffffffff
+fffeffff
+ffffffff
+fffdffff
+ffffffff
+fffbffff
+ffffffff
+fff7ffff
+ffffffff
+ffefffff
+ffffffff
+ffdfffff
+ffffffff
+ffbfffff
+ffffffff
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cslli-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cslli-01.reference_output
new file mode 100644
index 000000000..522eaeb56
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cslli-01.reference_output
@@ -0,0 +1,296 @@
+fffe0000
+fbffffff
+04f33400
+000000b5
+00000800
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+00001000
+00000000
+00000000
+01000000
+00000000
+00000002
+00000200
+00000000
+00008000
+00000000
+00000200
+00000000
+00002000
+00000000
+00010000
+00000000
+00000000
+00000000
+00080000
+00000000
+40000000
+00000000
+00000000
+00000000
+00000000
+00000001
+20000000
+00000000
+00000000
+00000001
+00000000
+00000000
+80000000
+00000000
+08000000
+00000000
+00000000
+00000002
+00000000
+00100000
+00000000
+00200000
+00000000
+00000020
+00000000
+00000004
+02000000
+00000000
+00000000
+00000000
+00000000
+00000010
+00000000
+00010000
+00000000
+00000020
+00000000
+00000100
+00000000
+00020000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000080
+00000000
+00000040
+00000000
+00004000
+00000000
+00000400
+00000000
+00000000
+00000000
+00000400
+00000000
+00000000
+00000000
+00100000
+00000000
+00000000
+00000000
+00020000
+00000000
+00040000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+80000000
+00000000
+00000000
+00000000
+08000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00400000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffc00
+ffffffff
+fffffa00
+ffffffff
+ffff6000
+ffffffff
+fffffee0
+ffffffff
+ffffff78
+ffffffff
+ffbe0000
+ffffffff
+ffbf0000
+ffffffff
+fdfc0000
+ffffffff
+ffffdfe0
+ffffffff
+fffffbfe
+ffffffff
+ffff7fe0
+ffffffff
+00000000
+80000000
+00000000
+ffbffc00
+00000000
+ffffdfff
+7ffe0000
+ffffffff
+ffdfffc0
+ffffffff
+fffbfffc
+ffffffff
+00000000
+f7fffc00
+fdffff80
+ffffffff
+fffffff0
+dfffffff
+ffffffe0
+7fffffff
+ffff0000
+ffffffff
+00000000
+e0000000
+00000000
+c0000000
+00000000
+f8000000
+55555540
+55555555
+55554000
+55555555
+00018000
+00000000
+80000000
+00000002
+00000000
+99800000
+cccc0000
+cccccccc
+00000000
+ec333400
+27999800
+000005a8
+55555550
+55555555
+66640000
+66666666
+99994000
+99999999
+d413ccc8
+00000002
+aaab0000
+aaaaaaaa
+aaab0000
+aaaaaaaa
+00000300
+00000000
+ccccccd0
+cccccccc
+9999c000
+99999999
+00000000
+c0000000
+fffc0000
+ffffffdf
+fefffff0
+ffffffff
+ffffe000
+fffffffb
+fffc0000
+fffffeff
+f7fffff0
+ffffffff
+fff80000
+fffff7ff
+fffc0000
+fffff7ff
+fffffc00
+ffffffef
+ffff0000
+fffff7ff
+00000000
+ffff8000
+00000000
+80000000
+fffffe00
+ffffff7f
+fffc0000
+fffdffff
+00000000
+e0000000
+00000000
+e0000000
+ffffff00
+fffffbff
+ffffffe0
+fffffeff
+ffff0000
+ffefffff
+fffc0000
+ff7fffff
+ffff0000
+ffbfffff
+ffffff00
+ffff7fff
+00000000
+ff800000
+fffffc00
+ffefffff
+00000000
+e0000000
+fffffffc
+ffffbfff
+00000000
+ff800000
+00000000
+ff800000
+00000000
+ff800000
+00000000
+f8000000
+80000000
+ffffffff
+fffffffc
+ffefffff
+fffffff0
+ff7fffff
+fffff000
+ffffffff
+00000000
+fffffc00
+00000000
+e0000000
+00000000
+ff800000
+fffffff8
+f7ffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csrai-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csrai-01.reference_output
new file mode 100644
index 000000000..1d9e7bb20
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csrai-01.reference_output
@@ -0,0 +1,296 @@
+ffffbfff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+fffc0000
+00000000
+00000000
+7fffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000080
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000800
+00000000
+00000000
+00000000
+00000000
+00000000
+00002000
+00000000
+00020000
+00000000
+00000200
+00000000
+00000020
+00000000
+00000008
+00000000
+00020000
+00000000
+00000000
+00000000
+00100000
+00000000
+00000020
+00000000
+01000000
+00000000
+00040000
+00000000
+00200000
+00000000
+00020000
+00000000
+40000000
+00000000
+00000000
+00000000
+00400000
+00000000
+00100000
+00000000
+00080000
+00000000
+00200000
+00000000
+00000000
+00000001
+80000000
+00000000
+00080000
+00000000
+00000000
+00000002
+00000000
+00000100
+20000000
+00000000
+00000000
+00000800
+10000000
+00000000
+00000010
+00000000
+00010000
+00000000
+00000000
+00000000
+00000000
+00000040
+00080000
+00000000
+00000000
+00020000
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000020
+00000000
+00200000
+00000000
+01000000
+00000000
+00000800
+00000000
+00000000
+00000000
+00000000
+00000000
+00100000
+00000000
+00040000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffd
+ffffffff
+ffffffbf
+ffffffff
+ffffffdf
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffbff
+ffffffff
+ffffff7f
+ffffffff
+fdffffff
+ffffffff
+ffffffff
+ffffffff
+fffdffff
+ffffffff
+ffbfffff
+000000aa
+00000000
+aaaaaaaa
+ffeaaaaa
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+cccccccc
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+aaaaaaaa
+0000aaaa
+66666666
+00006666
+00000001
+00000000
+00000000
+00000000
+55555555
+01555555
+aaaaaaaa
+fffaaaaa
+00000000
+00000000
+33333333
+00000000
+99999999
+00019999
+fff4afb0
+ffffffff
+0002d413
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffdfffff
+ffffffff
+ffffffff
+ffffffff
+fffffff7
+ffffffff
+fffff7ff
+ffffffff
+ff7fffff
+ffffffff
+ffffefff
+ffffffff
+fffeffff
+ffffffff
+fffeffff
+ffffffff
+ffffefff
+ffffffff
+ffffffff
+ffffffff
+ffffbfff
+ffffffff
+ffffffff
+ffffffff
+fdffffff
+ffffffff
+ffefffff
+ffffffff
+fffbffff
+ffffffff
+ffefffff
+ffffffff
+ffffffff
+ffffffef
+ffffffff
+ffffffff
+fffffbff
+ffffffff
+ffffffff
+fffffff7
+ffffffff
+ffffffff
+fbffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffdfff
+ffffffff
+ffffffff
+ffffffff
+fffffeff
+ffffffff
+ffffffdf
+ffffffff
+ffffff7f
+ffffffff
+fffffffb
+ffffffff
+fffffeff
+ffffffff
+ffffffff
+ffffffff
+fffdffff
+ffffffff
+ffbfffff
+ffffffff
+fffffbff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csrli-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csrli-01.reference_output
new file mode 100644
index 000000000..34c72c144
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csrli-01.reference_output
@@ -0,0 +1,300 @@
+ffffffff
+1fff7fff
+00002000
+00000000
+00000000
+00000000
+00000000
+00001000
+00000000
+00000000
+ffffffff
+007fffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000040
+00000000
+00000000
+00000000
+00000040
+00000000
+00000010
+00000000
+00000200
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00002000
+00000000
+00010000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000020
+00000000
+00000020
+00000000
+00040000
+00000000
+00002000
+00000000
+00000800
+00000000
+00000000
+00000000
+00000400
+00000000
+00000000
+00000000
+00200000
+00000000
+00000000
+00000000
+00400000
+00000000
+00040000
+00000000
+00000000
+00000001
+00020000
+00000000
+00000000
+00000000
+02000000
+00000000
+80000000
+00000000
+00000080
+00000000
+00040000
+00000000
+80000000
+00000000
+00000000
+00000000
+00000000
+00000080
+00000000
+00000020
+00000000
+00000800
+00000000
+00000400
+00000000
+00000020
+00000000
+00004000
+00000002
+00000000
+00000000
+00000008
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000008
+00000000
+00000010
+00000000
+00002000
+00000000
+00000008
+00000000
+00004000
+00000000
+00000000
+00000000
+00001000
+00000002
+00000000
+00000000
+00000000
+00000000
+00200000
+ffffffff
+0003ffff
+ffffffff
+000fffff
+ffffffff
+03ffffff
+ffffffff
+00000000
+fffffffd
+1fffffff
+fffffffb
+1fffffff
+0001ffff
+00000000
+ffffffff
+00000000
+00000003
+00000000
+000001ff
+00000000
+ffffffff
+0007ffff
+ffffff7f
+0fffffff
+ffffffff
+0003ffff
+ffffffff
+00007fff
+fffffdff
+07ffffff
+ffffffbf
+007fffff
+ffffdfff
+1fffffff
+ffffffff
+00001fff
+ffffffff
+00000001
+fffffff7
+0000ffff
+00000003
+00000000
+000001f7
+00000000
+ffffffff
+000007bf
+ffffffff
+0077ffff
+ffffffff
+037fffff
+ffffffff
+0000bfff
+aaaaaaaa
+00000000
+aaaaaaaa
+02aaaaaa
+00000000
+00000000
+66666666
+00006666
+cccccccc
+000ccccc
+000001ff
+00000000
+016a09e6
+00000000
+55555555
+00000000
+99999999
+19999999
+33333333
+00033333
+002d413c
+00000000
+55555555
+15555555
+aaaaaaaa
+00002aaa
+00000000
+00000000
+cccccccc
+000ccccc
+66666666
+00666666
+fa57d866
+07ffffff
+00000000
+00000000
+00004000
+00000000
+ffff7fff
+07ffffff
+ffffffff
+00000000
+ffffbfff
+00ffffff
+00000007
+00000000
+ffbfffff
+3fffffff
+ffbfffff
+1fffffff
+fffeffff
+003fffff
+fffdffff
+003fffff
+ffff7fff
+0007ffff
+ffffffff
+00000001
+ffffffff
+00000000
+00000003
+00000000
+000001ff
+00000000
+ffbfffff
+001fffff
+0001ffff
+00000000
+00000001
+00000000
+7fffffff
+07ffffff
+00000007
+00000000
+fdffffff
+0007ffff
+efffffff
+001fffff
+fff7ffff
+000007ff
+ffffffff
+01fffffb
+ffffffff
+1fffff7f
+ffffffff
+003ffffd
+00000007
+00000000
+ffffbfff
+00000001
+ffffffff
+000ffffb
+ffffffff
+7fffbfff
+ffffffff
+1fffdfff
+ffffffff
+3fff7fff
+ffffffff
+07ffbfff
+ffffffff
+00003ffb
+000001ff
+00000000
+ffffffff
+000ffbff
+ffffffff
+00001fef
+0001fdff
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csub-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csub-01.reference_output
new file mode 100644
index 000000000..70de73b36
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csub-01.reference_output
@@ -0,0 +1,1344 @@
+00000000
+80001000
+00000000
+00000000
+00000005
+80000000
+ffffffff
+007fffff
+fe000000
+7fffffff
+00000081
+00000000
+ffffffff
+7fffbfff
+00800002
+00000000
+dffffffd
+ffffffff
+7ffffffb
+ffffffff
+fffffff7
+ffefffff
+fffffff7
+ffffffff
+ffffffdf
+ffffff7f
+0fffffc0
+00000000
+ffffff7f
+ffffffef
+fefffeff
+ffffffff
+fffffe00
+00001fff
+fffffbfb
+ffffffff
+fffff7f8
+ffffffff
+00000000
+00000000
+ffffdfff
+ffffdfff
+ffffc004
+ffffffff
+ffff8001
+ffffffff
+ffff4000
+ffffffff
+fffdffff
+fffffeff
+fffc0004
+ffffffff
+fff7fffa
+ffffffff
+4aeb0ccd
+ffffffff
+ffe00800
+ffffffff
+ffbfffff
+fff7ffff
+ff7fffff
+fffffffe
+feffffff
+fffffffd
+fbfffffb
+ffffffff
+f8000000
+03ffffff
+f0000000
+0001ffff
+e0000004
+ffffffff
+c0000004
+ffffffff
+80000000
+00000003
+00000000
+00007fff
+00200000
+fffffffe
+fffffffc
+fffffffb
+fffffff8
+fffffff7
+ffffffff
+ffffffdf
+fdffffff
+ffffffdf
+ffffffbf
+ffffffbf
+00000000
+007fff80
+00080000
+ffffff00
+00000006
+fffffe00
+ffffffff
+ffeffbff
+00000000
+07fff800
+ffffffdf
+ffffefff
+fffffff9
+ffffdfff
+ffff7fff
+ffff7fff
+55555555
+55545555
+efffffff
+fffdffff
+00000000
+07fc0000
+00000080
+fff80000
+04000000
+fff00000
+ffffffff
+ffdffbff
+00000000
+ffc00800
+dfffffff
+ff7fffff
+ffffffff
+fefdffff
+00400000
+fe000000
+aaaaaaab
+a6aaaaaa
+4afb0cce
+f7ffffff
+00000000
+b0000000
+55555554
+35555555
+10000000
+c0000000
+00000001
+ffffc000
+00000003
+00000008
+00004005
+00000000
+20000009
+00000000
+00000011
+00400000
+00000017
+00000000
+00000041
+00000800
+ffe00100
+ffffffff
+00000201
+00000080
+ffe00400
+ffffffff
+55555d56
+55555555
+00001000
+fc000000
+00002001
+00000002
+00004003
+00000000
+4afb8ccf
+ffffffff
+00090001
+00000000
+ffe20000
+ffffffff
+00040001
+08000000
+00080000
+fffc0000
+f0100000
+ffffffff
+f8200000
+ffffffff
+00400001
+00010000
+0100000a
+00000000
+01fffff8
+00000000
+04000001
+00000010
+07fffff0
+00000000
+76666667
+66666666
+20000001
+10000000
+40000000
+ffffffc0
+80000005
+00000000
+00000008
+00000001
+fffffffb
+00000001
+fffffffe
+00000003
+ffffffe0
+00000007
+4afb0ccf
+0000000f
+fc000000
+0000001f
+00000000
+ffff0040
+55555556
+555555d5
+00000201
+00000100
+fff00000
+000001ff
+00000001
+40000400
+00000000
+f0000800
+00000001
+08001000
+00000000
+e0002000
+00000001
+00005000
+00000001
+01008000
+55555557
+55565555
+00000004
+00020000
+00000001
+000c0000
+00000001
+00080000
+00001001
+00100000
+00000003
+00200000
+b504f335
+00400000
+00000000
+007ffff0
+00000001
+09000000
+00000001
+02000004
+55555557
+59555555
+01000001
+08000000
+55555556
+65555555
+00000005
+20000000
+00000021
+40000000
+aaaaaaab
+aaaaabaa
+88888889
+88888888
+4afb0cd5
+ffffffff
+fffffff0
+ffffffff
+00000030
+00000000
+b504f433
+00000000
+00000400
+00000000
+00002000
+fffffe00
+00007fc0
+00000000
+00010000
+fffffffc
+00020000
+fffffff8
+00040001
+00000040
+99a9999b
+99999999
+00800000
+ffffff80
+02000001
+00080000
+b2aaaaab
+aaaaaaaa
+44000001
+00000000
+7ff80000
+00000000
+04000001
+00000001
+cccccccd
+ccccccec
+00000002
+00000040
+fffffffd
+000001ff
+00000001
+00080400
+00000000
+00000000
+fffffc00
+0003ffff
+00000000
+000ff800
+00800001
+00200000
+01000001
+02000000
+00000001
+20200000
+4afb0cca
+ffffffff
+ffffff78
+ffffffff
+00000300
+00000000
+fffffdef
+ffffffff
+fffffbff
+ffbfffff
+fffff7ff
+feffffff
+ffffeffd
+ffffffff
+ffffe000
+0000ffff
+ffffc000
+000003ff
+1fff0000
+00000000
+fffe0000
+00ffffff
+9995999a
+99999999
+fff80000
+7fffffff
+ffc00005
+ffffffff
+b484f331
+00000000
+bfffffff
+ffffdfff
+ffffffff
+fbfffffb
+04000000
+fffffff8
+fffffff9
+ffffffdf
+00010000
+fffffe00
+ffffffff
+ffffefff
+55555554
+55554555
+b504f332
+ffff8000
+00400000
+ffe00000
+fffffeff
+ffbfffff
+00000020
+ff800000
+00000400
+ff000000
+feffffff
+fdffffff
+00000800
+f8000000
+fff7ffff
+bfffffff
+aaaaaaa6
+aaaaaaaa
+00000000
+00000000
+aaaaaaae
+aaaaaaaa
+55555559
+55555555
+fffffffe
+ffffffff
+ccccccd0
+cccccccc
+9999999d
+99999999
+b504f336
+00000000
+4afb0cd0
+ffffffff
+00000001
+00000000
+aaaaaaaf
+aaaaaaaa
+00000003
+00000000
+ffffffff
+ffffffff
+ccccccd1
+cccccccc
+9999999e
+99999999
+4afb0cd1
+ffffffff
+aaaaaaad
+aaaaaaaa
+55555558
+55555555
+fffffffd
+ffffffff
+cccccccf
+cccccccc
+9999999c
+99999999
+b504f335
+00000000
+4afb0ccf
+ffffffff
+55555552
+55555555
+00000000
+00000000
+aaaaaaab
+aaaaaaaa
+55555550
+55555555
+22222222
+22222222
+eeeeeeef
+eeeeeeee
+0a5a4888
+55555556
+a0506222
+55555554
+55555553
+55555555
+00000001
+00000000
+55555555
+55555555
+55555551
+55555555
+22222223
+22222222
+eeeeeef0
+eeeeeeee
+a0506223
+55555554
+ffffffff
+ffffffff
+aaaaaaaa
+aaaaaaaa
+5555554f
+55555555
+22222221
+22222222
+eeeeeeee
+eeeeeeee
+0a5a4887
+55555556
+a0506221
+55555554
+aaaaaaa7
+aaaaaaaa
+55555555
+55555555
+00000000
+00000000
+aaaaaaa5
+aaaaaaaa
+77777777
+77777777
+44444444
+44444444
+5faf9ddd
+aaaaaaab
+f5a5b777
+aaaaaaa9
+aaaaaaa8
+aaaaaaaa
+55555556
+55555555
+aaaaaaaa
+aaaaaaaa
+77777778
+77777777
+44444445
+44444444
+f5a5b778
+aaaaaaa9
+55555554
+55555555
+ffffffff
+ffffffff
+aaaaaaa4
+aaaaaaaa
+77777776
+77777777
+44444443
+44444444
+5faf9ddc
+aaaaaaab
+f5a5b776
+aaaaaaa9
+00000002
+00000000
+aaaaaab0
+aaaaaaaa
+5555555b
+55555555
+00000000
+00000000
+ccccccd2
+cccccccc
+9999999f
+99999999
+b504f338
+00000000
+4afb0cd2
+ffffffff
+00000003
+00000000
+aaaaaab1
+aaaaaaaa
+00000005
+00000000
+00000001
+00000000
+ccccccd3
+cccccccc
+999999a0
+99999999
+4afb0cd3
+ffffffff
+aaaaaaaf
+aaaaaaaa
+5555555a
+55555555
+ffffffff
+ffffffff
+ccccccd1
+cccccccc
+9999999e
+99999999
+b504f337
+00000000
+4afb0cd1
+ffffffff
+33333330
+33333333
+ddddddde
+dddddddd
+3333332e
+33333333
+00000000
+00000000
+cccccccd
+cccccccc
+e8382666
+33333333
+7e2e4000
+33333332
+33333331
+33333333
+dddddddf
+dddddddd
+33333333
+33333333
+3333332f
+33333333
+00000001
+00000000
+ccccccce
+cccccccc
+7e2e4001
+33333332
+dddddddd
+dddddddd
+88888888
+88888888
+3333332d
+33333333
+ffffffff
+ffffffff
+cccccccc
+cccccccc
+e8382665
+33333333
+7e2e3fff
+33333332
+66666663
+66666666
+11111111
+11111111
+bbbbbbbc
+bbbbbbbb
+66666661
+66666666
+33333333
+33333333
+00000000
+00000000
+1b6b5999
+66666667
+b1617333
+66666665
+66666664
+66666666
+11111112
+11111111
+66666666
+66666666
+66666662
+66666666
+33333334
+33333333
+00000001
+00000000
+b1617334
+66666665
+11111110
+11111111
+bbbbbbbb
+bbbbbbbb
+66666660
+66666666
+33333332
+33333333
+ffffffff
+ffffffff
+1b6b5998
+66666667
+b1617332
+66666665
+4afb0cca
+ffffffff
+f5a5b778
+aaaaaaa9
+a0506223
+55555554
+4afb0cc8
+ffffffff
+17c7d99a
+cccccccc
+e494a667
+99999998
+00000000
+00000000
+95f6199a
+fffffffe
+4afb0ccb
+ffffffff
+f5a5b779
+aaaaaaa9
+4afb0ccd
+ffffffff
+4afb0cc9
+ffffffff
+17c7d99b
+cccccccc
+e494a668
+99999998
+95f6199b
+fffffffe
+f5a5b777
+aaaaaaa9
+a0506222
+55555554
+4afb0cc7
+ffffffff
+17c7d999
+cccccccc
+e494a666
+99999998
+ffffffff
+ffffffff
+95f61999
+fffffffe
+b504f330
+00000000
+5faf9dde
+aaaaaaab
+0a5a4889
+55555556
+b504f32e
+00000000
+81d1c000
+cccccccd
+4e9e8ccd
+9999999a
+6a09e666
+00000001
+00000000
+00000000
+b504f331
+00000000
+5faf9ddf
+aaaaaaab
+b504f333
+00000000
+b504f32f
+00000000
+81d1c001
+cccccccd
+4e9e8cce
+9999999a
+00000001
+00000000
+5faf9ddd
+aaaaaaab
+0a5a4888
+55555556
+b504f32d
+00000000
+81d1bfff
+cccccccd
+4e9e8ccc
+9999999a
+6a09e665
+00000001
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+aaaaaaad
+aaaaaaaa
+55555558
+55555555
+fffffffd
+ffffffff
+cccccccf
+cccccccc
+9999999c
+99999999
+b504f335
+00000000
+4afb0ccf
+ffffffff
+00000000
+00000000
+aaaaaaae
+aaaaaaaa
+00000002
+00000000
+fffffffe
+ffffffff
+ccccccd0
+cccccccc
+9999999d
+99999999
+4afb0cd0
+ffffffff
+aaaaaaac
+aaaaaaaa
+55555557
+55555555
+fffffffc
+ffffffff
+ccccccce
+cccccccc
+9999999b
+99999999
+b504f334
+00000000
+4afb0cce
+ffffffff
+55555551
+55555555
+ffffffff
+ffffffff
+aaaaaaaa
+aaaaaaaa
+5555554f
+55555555
+22222221
+22222222
+eeeeeeee
+eeeeeeee
+0a5a4887
+55555556
+a0506221
+55555554
+55555552
+55555555
+00000000
+00000000
+55555554
+55555555
+55555550
+55555555
+22222222
+22222222
+eeeeeeef
+eeeeeeee
+a0506222
+55555554
+fffffffe
+ffffffff
+aaaaaaa9
+aaaaaaaa
+5555554e
+55555555
+22222220
+22222222
+eeeeeeed
+eeeeeeee
+0a5a4886
+55555556
+a0506220
+55555554
+fffffffd
+ffffffff
+aaaaaaab
+aaaaaaaa
+55555556
+55555555
+fffffffb
+ffffffff
+cccccccd
+cccccccc
+9999999a
+99999999
+b504f333
+00000000
+4afb0ccd
+ffffffff
+fffffffe
+ffffffff
+5555555a
+55555555
+ffffffff
+ffffffff
+ccccccd1
+cccccccc
+9999999e
+99999999
+b504f337
+00000000
+4afb0cd1
+ffffffff
+00000002
+00000000
+aaaaaab0
+aaaaaaaa
+00000004
+00000000
+00000000
+00000000
+ccccccd2
+cccccccc
+9999999f
+99999999
+4afb0cd2
+ffffffff
+aaaaaaae
+aaaaaaaa
+55555559
+55555555
+fffffffe
+ffffffff
+ccccccd0
+cccccccc
+9999999d
+99999999
+b504f336
+00000000
+4afb0cd0
+ffffffff
+3333332f
+33333333
+dddddddd
+dddddddd
+88888888
+88888888
+3333332d
+33333333
+ffffffff
+ffffffff
+cccccccc
+cccccccc
+e8382665
+33333333
+7e2e3fff
+33333332
+33333330
+33333333
+ddddddde
+dddddddd
+33333332
+33333333
+3333332e
+33333333
+00000000
+00000000
+cccccccd
+cccccccc
+7e2e4000
+33333332
+dddddddc
+dddddddd
+88888887
+88888888
+3333332c
+33333333
+fffffffe
+ffffffff
+cccccccb
+cccccccc
+e8382664
+33333333
+7e2e3ffe
+33333332
+66666662
+66666666
+11111110
+11111111
+bbbbbbbb
+bbbbbbbb
+66666660
+66666666
+33333332
+33333333
+ffffffff
+ffffffff
+1b6b5998
+66666667
+b1617332
+66666665
+66666663
+66666666
+11111111
+11111111
+66666665
+66666666
+66666661
+66666666
+33333333
+33333333
+00000000
+00000000
+b1617333
+66666665
+1111110f
+11111111
+bbbbbbba
+bbbbbbbb
+6666665f
+66666666
+33333331
+33333333
+fffffffe
+ffffffff
+1b6b5997
+66666667
+b1617331
+66666665
+b504f32f
+00000000
+5faf9ddd
+aaaaaaab
+0a5a4888
+55555556
+b504f32d
+00000000
+81d1bfff
+cccccccd
+4e9e8ccc
+9999999a
+6a09e665
+00000001
+ffffffff
+ffffffff
+b504f330
+00000000
+5faf9dde
+aaaaaaab
+b504f332
+00000000
+b504f32e
+00000000
+81d1c000
+cccccccd
+4e9e8ccd
+9999999a
+00000000
+00000000
+5faf9ddc
+aaaaaaab
+0a5a4887
+55555556
+b504f32c
+00000000
+81d1bffe
+cccccccd
+4e9e8ccb
+9999999a
+6a09e664
+00000001
+fffffffe
+ffffffff
+55555553
+55555555
+00000001
+00000000
+aaaaaaac
+aaaaaaaa
+55555551
+55555555
+22222223
+22222222
+eeeeeef0
+eeeeeeee
+0a5a4889
+55555556
+a0506223
+55555554
+55555554
+55555555
+00000002
+00000000
+55555556
+55555555
+55555552
+55555555
+22222224
+22222222
+eeeeeef1
+eeeeeeee
+a0506224
+55555554
+00000000
+00000000
+aaaaaaab
+aaaaaaaa
+55555550
+55555555
+22222222
+22222222
+eeeeeeef
+eeeeeeee
+0a5a4888
+55555556
+a0506222
+55555554
+aaaaaaa8
+aaaaaaaa
+55555556
+55555555
+00000001
+00000000
+aaaaaaa6
+aaaaaaaa
+77777778
+77777777
+44444445
+44444444
+5faf9dde
+aaaaaaab
+f5a5b778
+aaaaaaa9
+aaaaaaa9
+aaaaaaaa
+55555557
+55555555
+aaaaaaab
+aaaaaaaa
+aaaaaaa7
+aaaaaaaa
+77777779
+77777777
+44444446
+44444444
+f5a5b779
+aaaaaaa9
+55555555
+55555555
+00000000
+00000000
+aaaaaaa5
+aaaaaaaa
+77777777
+77777777
+44444444
+44444444
+5faf9ddd
+aaaaaaab
+f5a5b777
+aaaaaaa9
+00000003
+00000000
+aaaaaab1
+aaaaaaaa
+5555555c
+55555555
+00000001
+00000000
+ccccccd3
+cccccccc
+999999a0
+99999999
+b504f339
+00000000
+4afb0cd3
+ffffffff
+00000004
+00000000
+aaaaaab2
+aaaaaaaa
+00000006
+00000000
+00000002
+00000000
+ccccccd4
+cccccccc
+999999a1
+99999999
+4afb0cd4
+ffffffff
+aaaaaab0
+aaaaaaaa
+5555555b
+55555555
+00000000
+00000000
+ccccccd2
+cccccccc
+9999999f
+99999999
+b504f338
+00000000
+4afb0cd2
+ffffffff
+33333331
+33333333
+dddddddf
+dddddddd
+8888888a
+88888888
+3333332f
+33333333
+00000001
+00000000
+ccccccce
+cccccccc
+e8382667
+33333333
+7e2e4001
+33333332
+33333332
+33333333
+dddddde0
+dddddddd
+33333334
+33333333
+33333330
+33333333
+00000002
+00000000
+cccccccf
+cccccccc
+7e2e4002
+33333332
+ddddddde
+dddddddd
+88888889
+88888888
+3333332e
+33333333
+00000000
+00000000
+cccccccd
+cccccccc
+e8382666
+33333333
+7e2e4000
+33333332
+66666664
+66666666
+11111112
+11111111
+bbbbbbbd
+bbbbbbbb
+66666662
+66666666
+33333334
+33333333
+00000001
+00000000
+1b6b599a
+66666667
+b1617334
+66666665
+66666665
+66666666
+11111113
+11111111
+66666667
+66666666
+66666663
+66666666
+33333335
+33333333
+00000002
+00000000
+b1617335
+66666665
+11111111
+11111111
+bbbbbbbc
+bbbbbbbb
+66666661
+66666666
+33333333
+33333333
+00000000
+00000000
+1b6b5999
+66666667
+b1617333
+66666665
+4afb0ccb
+ffffffff
+f5a5b779
+aaaaaaa9
+a0506224
+55555554
+4afb0cc9
+ffffffff
+17c7d99b
+cccccccc
+e494a668
+99999998
+00000001
+00000000
+95f6199b
+fffffffe
+4afb0ccc
+ffffffff
+f5a5b77a
+aaaaaaa9
+4afb0cce
+ffffffff
+4afb0cca
+ffffffff
+17c7d99c
+cccccccc
+e494a669
+99999998
+95f6199c
+fffffffe
+f5a5b778
+aaaaaaa9
+a0506223
+55555554
+4afb0cc8
+ffffffff
+17c7d99a
+cccccccc
+e494a667
+99999998
+00000000
+00000000
+95f6199a
+fffffffe
+b504f331
+00000000
+5faf9ddf
+aaaaaaab
+0a5a488a
+55555556
+b504f32f
+00000000
+81d1c001
+cccccccd
+4e9e8cce
+9999999a
+6a09e667
+00000001
+00000001
+00000000
+b504f332
+00000000
+5faf9de0
+aaaaaaab
+b504f334
+00000000
+b504f330
+00000000
+81d1c002
+cccccccd
+4e9e8ccf
+9999999a
+00000002
+00000000
+5faf9dde
+aaaaaaab
+0a5a4889
+55555556
+b504f32e
+00000000
+81d1c000
+cccccccd
+4e9e8ccd
+9999999a
+6a09e666
+00000001
+00000000
+00000000
+aaaaaaac
+aaaaaaaa
+00000000
+00000000
+fffffffc
+ffffffff
+ccccccce
+cccccccc
+9999999b
+99999999
+4afb0cce
+ffffffff
+aaaaaaaa
+aaaaaaaa
+55555555
+55555555
+fffffffa
+ffffffff
+cccccccc
+cccccccc
+99999999
+99999999
+b504f332
+00000000
+4afb0ccc
+ffffffff
+00000001
+00000000
+aaaaaaaf
+aaaaaaaa
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csubw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csubw-01.reference_output
new file mode 100644
index 000000000..4881ba833
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csubw-01.reference_output
@@ -0,0 +1,1340 @@
+ffffffff
+ffffffff
+00000000
+00000000
+00400001
+00000000
+33333333
+00000000
+fffff000
+ffffffff
+00000001
+00000000
+aaaaaaaa
+ffffffff
+00000002
+00000000
+fffffffe
+ffffffff
+33333330
+00000000
+fffffff9
+ffffffff
+fffffff9
+ffffffff
+fff7ffdf
+ffffffff
+ffdfffbf
+ffffffff
+001fff80
+00000000
+00003f00
+00000000
+fffffdef
+ffffffff
+fffffc00
+ffffffff
+ffffe7ff
+ffffffff
+ffffdbff
+ffffffff
+55551556
+00000000
+ffef7fff
+ffffffff
+aaa9aaaa
+ffffffff
+fffdffff
+ffffffff
+fffc0000
+ffffffff
+fff90000
+ffffffff
+fff00000
+ffffffff
+ffe00000
+ffffffff
+07c00000
+00000000
+ff77ffff
+ffffffff
+ff000004
+ffffffff
+fe002000
+ffffffff
+fc000000
+ffffffff
+f7ffffff
+ffffffff
+10000000
+00000000
+dfffffff
+ffffffff
+26666667
+00000000
+7fffffff
+00000000
+ffff7fff
+ffffffff
+00000000
+00000000
+aaaaaaab
+ffffffff
+00001000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00020000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000003
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000400
+00000000
+ffffffff
+ffffffff
+fffffdff
+ffffffff
+33333333
+00000000
+00000000
+00000000
+33333334
+00000000
+fffffffd
+ffffffff
+00040000
+00000000
+b504f334
+ffffffff
+00000000
+00000000
+00000007
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+4afb0cd0
+00000000
+33333337
+00000000
+00000005
+00000000
+00000008
+00000000
+0000000c
+00000000
+00000021
+00000000
+00000041
+00000000
+40000081
+00000000
+00000104
+00000000
+66666867
+00000000
+00000400
+00000000
+00000802
+00000000
+00001011
+00000000
+66668667
+00000000
+00003000
+00000000
+ff808000
+ffffffff
+40010001
+00000000
+0002000a
+00000000
+00040401
+00000000
+00080001
+00000000
+00100001
+00000000
+00200001
+00000000
+00400001
+00000000
+55d55555
+00000000
+00fffffa
+00000000
+01fffffa
+00000000
+04000001
+00000000
+88000001
+ffffffff
+0ffffffa
+00000000
+20000000
+00000000
+40000003
+00000000
+80000011
+ffffffff
+f0000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffff0000
+ffffffff
+00000021
+00000000
+ffffffc0
+ffffffff
+00000007
+00000000
+fffe0000
+ffffffff
+c0000000
+ffffffff
+00000001
+00000000
+00000000
+00000000
+fffffff0
+ffffffff
+00000000
+00000000
+e0000000
+ffffffff
+00001001
+00000000
+fffffff0
+ffffffff
+00001001
+00000000
+00000001
+00000000
+00000007
+00000000
+00000000
+00000000
+00000000
+00000000
+00040001
+00000000
+00000000
+00000000
+0000000a
+00000000
+80000000
+ffffffff
+00000007
+00000000
+00000001
+00000000
+ff800000
+ffffffff
+5555554c
+00000000
+fffff008
+ffffffff
+00000040
+00000000
+fc000080
+ffffffff
+80000100
+ffffffff
+000001fc
+00000000
+fffc0800
+ffffffff
+00010001
+00000000
+00080001
+00000000
+00100801
+00000000
+00800001
+00000000
+01000008
+00000000
+02000004
+00000000
+04000001
+00000000
+c504f332
+ffffffff
+ffffffff
+ffffffff
+00020001
+00000000
+20000001
+00000000
+4afb0ccc
+00000000
+80000000
+ffffffff
+fffffffb
+ffffffff
+04000001
+00000000
+00000004
+00000000
+00100001
+00000000
+c0000000
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+fffffffb
+ffffffff
+fffffff7
+ffffffff
+ffffffdf
+ffffffff
+b504f2b1
+ffffffff
+7ffffeff
+00000000
+fffff7fd
+ffffffff
+ffffdfff
+ffffffff
+ffffbeff
+ffffffff
+00000000
+00000000
+ffb7ffff
+ffffffff
+03000000
+00000000
+f9ffffff
+ffffffff
+fbffffff
+ffffffff
+f7fffffb
+ffffffff
+ffffffff
+ffffffff
+80000000
+ffffffff
+80000000
+ffffffff
+fffffffe
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+20000000
+00000000
+02000000
+00000000
+b504f332
+ffffffff
+ffffffff
+ffffffff
+aaaaaaab
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+40000000
+00000000
+55555555
+00000000
+00000000
+00000000
+aaaaaaae
+ffffffff
+55555559
+00000000
+fffffffe
+ffffffff
+ccccccd0
+ffffffff
+9999999d
+ffffffff
+b504f336
+ffffffff
+4afb0cd0
+00000000
+00000001
+00000000
+aaaaaaaf
+ffffffff
+00000003
+00000000
+ffffffff
+ffffffff
+ccccccd1
+ffffffff
+9999999e
+ffffffff
+4afb0cd1
+00000000
+aaaaaaad
+ffffffff
+55555558
+00000000
+fffffffd
+ffffffff
+cccccccf
+ffffffff
+9999999c
+ffffffff
+b504f335
+ffffffff
+4afb0ccf
+00000000
+55555552
+00000000
+00000000
+00000000
+aaaaaaab
+ffffffff
+55555550
+00000000
+22222222
+00000000
+eeeeeeef
+ffffffff
+0a5a4888
+00000000
+a0506222
+ffffffff
+55555553
+00000000
+00000001
+00000000
+55555555
+00000000
+55555551
+00000000
+22222223
+00000000
+eeeeeef0
+ffffffff
+a0506223
+ffffffff
+ffffffff
+ffffffff
+aaaaaaaa
+ffffffff
+5555554f
+00000000
+22222221
+00000000
+eeeeeeee
+ffffffff
+0a5a4887
+00000000
+a0506221
+ffffffff
+aaaaaaa7
+ffffffff
+55555555
+00000000
+00000000
+00000000
+aaaaaaa5
+ffffffff
+77777777
+00000000
+44444444
+00000000
+5faf9ddd
+00000000
+f5a5b777
+ffffffff
+aaaaaaa8
+ffffffff
+55555556
+00000000
+aaaaaaaa
+ffffffff
+aaaaaaa6
+ffffffff
+77777778
+00000000
+44444445
+00000000
+f5a5b778
+ffffffff
+55555554
+00000000
+ffffffff
+ffffffff
+aaaaaaa4
+ffffffff
+77777776
+00000000
+44444443
+00000000
+5faf9ddc
+00000000
+f5a5b776
+ffffffff
+00000002
+00000000
+aaaaaab0
+ffffffff
+5555555b
+00000000
+00000000
+00000000
+ccccccd2
+ffffffff
+9999999f
+ffffffff
+b504f338
+ffffffff
+4afb0cd2
+00000000
+00000003
+00000000
+aaaaaab1
+ffffffff
+00000005
+00000000
+00000001
+00000000
+ccccccd3
+ffffffff
+999999a0
+ffffffff
+4afb0cd3
+00000000
+aaaaaaaf
+ffffffff
+5555555a
+00000000
+ffffffff
+ffffffff
+ccccccd1
+ffffffff
+9999999e
+ffffffff
+b504f337
+ffffffff
+4afb0cd1
+00000000
+33333330
+00000000
+ddddddde
+ffffffff
+88888889
+ffffffff
+3333332e
+00000000
+00000000
+00000000
+cccccccd
+ffffffff
+e8382666
+ffffffff
+7e2e4000
+00000000
+33333331
+00000000
+dddddddf
+ffffffff
+33333333
+00000000
+3333332f
+00000000
+00000001
+00000000
+ccccccce
+ffffffff
+7e2e4001
+00000000
+dddddddd
+ffffffff
+88888888
+ffffffff
+3333332d
+00000000
+ffffffff
+ffffffff
+cccccccc
+ffffffff
+e8382665
+ffffffff
+7e2e3fff
+00000000
+66666663
+00000000
+11111111
+00000000
+bbbbbbbc
+ffffffff
+66666661
+00000000
+33333333
+00000000
+00000000
+00000000
+1b6b5999
+00000000
+b1617333
+ffffffff
+66666664
+00000000
+11111112
+00000000
+66666666
+00000000
+66666662
+00000000
+33333334
+00000000
+00000001
+00000000
+b1617334
+ffffffff
+11111110
+00000000
+bbbbbbbb
+ffffffff
+66666660
+00000000
+33333332
+00000000
+ffffffff
+ffffffff
+1b6b5998
+00000000
+b1617332
+ffffffff
+4afb0cca
+00000000
+f5a5b778
+ffffffff
+a0506223
+ffffffff
+4afb0cc8
+00000000
+17c7d99a
+00000000
+e494a667
+ffffffff
+00000000
+00000000
+95f6199a
+ffffffff
+4afb0ccb
+00000000
+f5a5b779
+ffffffff
+4afb0ccd
+00000000
+4afb0cc9
+00000000
+17c7d99b
+00000000
+e494a668
+ffffffff
+95f6199b
+ffffffff
+f5a5b777
+ffffffff
+a0506222
+ffffffff
+4afb0cc7
+00000000
+17c7d999
+00000000
+e494a666
+ffffffff
+ffffffff
+ffffffff
+95f61999
+ffffffff
+b504f330
+ffffffff
+5faf9dde
+00000000
+0a5a4889
+00000000
+b504f32e
+ffffffff
+81d1c000
+ffffffff
+4e9e8ccd
+00000000
+6a09e666
+00000000
+00000000
+00000000
+b504f331
+ffffffff
+5faf9ddf
+00000000
+b504f333
+ffffffff
+b504f32f
+ffffffff
+81d1c001
+ffffffff
+4e9e8cce
+00000000
+00000001
+00000000
+5faf9ddd
+00000000
+0a5a4888
+00000000
+b504f32d
+ffffffff
+81d1bfff
+ffffffff
+4e9e8ccc
+00000000
+6a09e665
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+aaaaaaad
+ffffffff
+55555558
+00000000
+fffffffd
+ffffffff
+cccccccf
+ffffffff
+9999999c
+ffffffff
+b504f335
+ffffffff
+4afb0ccf
+00000000
+00000000
+00000000
+aaaaaaae
+ffffffff
+00000002
+00000000
+fffffffe
+ffffffff
+ccccccd0
+ffffffff
+9999999d
+ffffffff
+4afb0cd0
+00000000
+aaaaaaac
+ffffffff
+55555557
+00000000
+fffffffc
+ffffffff
+ccccccce
+ffffffff
+9999999b
+ffffffff
+b504f334
+ffffffff
+4afb0cce
+00000000
+55555551
+00000000
+ffffffff
+ffffffff
+aaaaaaaa
+ffffffff
+5555554f
+00000000
+22222221
+00000000
+eeeeeeee
+ffffffff
+0a5a4887
+00000000
+a0506221
+ffffffff
+55555552
+00000000
+00000000
+00000000
+55555554
+00000000
+55555550
+00000000
+22222222
+00000000
+eeeeeeef
+ffffffff
+a0506222
+ffffffff
+fffffffe
+ffffffff
+aaaaaaa9
+ffffffff
+5555554e
+00000000
+22222220
+00000000
+eeeeeeed
+ffffffff
+0a5a4886
+00000000
+a0506220
+ffffffff
+fffffffd
+ffffffff
+aaaaaaab
+ffffffff
+55555556
+00000000
+fffffffb
+ffffffff
+cccccccd
+ffffffff
+9999999a
+ffffffff
+b504f333
+ffffffff
+4afb0ccd
+00000000
+5555555a
+00000000
+ffffffff
+ffffffff
+ccccccd1
+ffffffff
+9999999e
+ffffffff
+b504f337
+ffffffff
+4afb0cd1
+00000000
+00000002
+00000000
+aaaaaab0
+ffffffff
+00000004
+00000000
+00000000
+00000000
+ccccccd2
+ffffffff
+9999999f
+ffffffff
+4afb0cd2
+00000000
+aaaaaaae
+ffffffff
+55555559
+00000000
+fffffffe
+ffffffff
+ccccccd0
+ffffffff
+9999999d
+ffffffff
+b504f336
+ffffffff
+4afb0cd0
+00000000
+3333332f
+00000000
+dddddddd
+ffffffff
+88888888
+ffffffff
+3333332d
+00000000
+ffffffff
+ffffffff
+cccccccc
+ffffffff
+e8382665
+ffffffff
+7e2e3fff
+00000000
+33333330
+00000000
+ddddddde
+ffffffff
+33333332
+00000000
+3333332e
+00000000
+00000000
+00000000
+cccccccd
+ffffffff
+7e2e4000
+00000000
+dddddddc
+ffffffff
+88888887
+ffffffff
+3333332c
+00000000
+fffffffe
+ffffffff
+cccccccb
+ffffffff
+e8382664
+ffffffff
+7e2e3ffe
+00000000
+66666662
+00000000
+11111110
+00000000
+bbbbbbbb
+ffffffff
+66666660
+00000000
+33333332
+00000000
+ffffffff
+ffffffff
+1b6b5998
+00000000
+b1617332
+ffffffff
+66666663
+00000000
+11111111
+00000000
+66666665
+00000000
+66666661
+00000000
+33333333
+00000000
+00000000
+00000000
+b1617333
+ffffffff
+1111110f
+00000000
+bbbbbbba
+ffffffff
+6666665f
+00000000
+33333331
+00000000
+fffffffe
+ffffffff
+1b6b5997
+00000000
+b1617331
+ffffffff
+b504f32f
+ffffffff
+5faf9ddd
+00000000
+0a5a4888
+00000000
+b504f32d
+ffffffff
+81d1bfff
+ffffffff
+4e9e8ccc
+00000000
+6a09e665
+00000000
+ffffffff
+ffffffff
+b504f330
+ffffffff
+5faf9dde
+00000000
+b504f332
+ffffffff
+b504f32e
+ffffffff
+81d1c000
+ffffffff
+4e9e8ccd
+00000000
+00000000
+00000000
+5faf9ddc
+00000000
+0a5a4887
+00000000
+b504f32c
+ffffffff
+81d1bffe
+ffffffff
+4e9e8ccb
+00000000
+6a09e664
+00000000
+fffffffe
+ffffffff
+55555553
+00000000
+00000001
+00000000
+aaaaaaac
+ffffffff
+55555551
+00000000
+22222223
+00000000
+eeeeeef0
+ffffffff
+0a5a4889
+00000000
+a0506223
+ffffffff
+55555554
+00000000
+00000002
+00000000
+55555556
+00000000
+55555552
+00000000
+22222224
+00000000
+eeeeeef1
+ffffffff
+a0506224
+ffffffff
+00000000
+00000000
+aaaaaaab
+ffffffff
+55555550
+00000000
+22222222
+00000000
+eeeeeeef
+ffffffff
+0a5a4888
+00000000
+a0506222
+ffffffff
+aaaaaaa8
+ffffffff
+55555556
+00000000
+00000001
+00000000
+aaaaaaa6
+ffffffff
+77777778
+00000000
+44444445
+00000000
+5faf9dde
+00000000
+f5a5b778
+ffffffff
+aaaaaaa9
+ffffffff
+55555557
+00000000
+aaaaaaab
+ffffffff
+aaaaaaa7
+ffffffff
+77777779
+00000000
+44444446
+00000000
+f5a5b779
+ffffffff
+55555555
+00000000
+00000000
+00000000
+aaaaaaa5
+ffffffff
+77777777
+00000000
+44444444
+00000000
+5faf9ddd
+00000000
+f5a5b777
+ffffffff
+00000003
+00000000
+aaaaaab1
+ffffffff
+5555555c
+00000000
+00000001
+00000000
+ccccccd3
+ffffffff
+999999a0
+ffffffff
+b504f339
+ffffffff
+4afb0cd3
+00000000
+00000004
+00000000
+aaaaaab2
+ffffffff
+00000006
+00000000
+00000002
+00000000
+ccccccd4
+ffffffff
+999999a1
+ffffffff
+4afb0cd4
+00000000
+aaaaaab0
+ffffffff
+5555555b
+00000000
+00000000
+00000000
+ccccccd2
+ffffffff
+9999999f
+ffffffff
+b504f338
+ffffffff
+4afb0cd2
+00000000
+33333331
+00000000
+dddddddf
+ffffffff
+8888888a
+ffffffff
+3333332f
+00000000
+00000001
+00000000
+ccccccce
+ffffffff
+e8382667
+ffffffff
+7e2e4001
+00000000
+33333332
+00000000
+dddddde0
+ffffffff
+33333334
+00000000
+00000002
+00000000
+cccccccf
+ffffffff
+7e2e4002
+00000000
+ddddddde
+ffffffff
+88888889
+ffffffff
+3333332e
+00000000
+00000000
+00000000
+cccccccd
+ffffffff
+e8382666
+ffffffff
+7e2e4000
+00000000
+66666664
+00000000
+11111112
+00000000
+bbbbbbbd
+ffffffff
+66666662
+00000000
+33333334
+00000000
+00000001
+00000000
+1b6b599a
+00000000
+b1617334
+ffffffff
+66666665
+00000000
+11111113
+00000000
+66666667
+00000000
+66666663
+00000000
+33333335
+00000000
+00000002
+00000000
+b1617335
+ffffffff
+11111111
+00000000
+bbbbbbbc
+ffffffff
+66666661
+00000000
+33333333
+00000000
+00000000
+00000000
+1b6b5999
+00000000
+b1617333
+ffffffff
+4afb0ccb
+00000000
+f5a5b779
+ffffffff
+a0506224
+ffffffff
+4afb0cc9
+00000000
+17c7d99b
+00000000
+e494a668
+ffffffff
+00000001
+00000000
+95f6199b
+ffffffff
+4afb0ccc
+00000000
+f5a5b77a
+ffffffff
+4afb0cce
+00000000
+4afb0cca
+00000000
+17c7d99c
+00000000
+e494a669
+ffffffff
+95f6199c
+ffffffff
+f5a5b778
+ffffffff
+a0506223
+ffffffff
+4afb0cc8
+00000000
+17c7d99a
+00000000
+e494a667
+ffffffff
+00000000
+00000000
+95f6199a
+ffffffff
+b504f331
+ffffffff
+5faf9ddf
+00000000
+0a5a488a
+00000000
+b504f32f
+ffffffff
+81d1c001
+ffffffff
+4e9e8cce
+00000000
+6a09e667
+00000000
+00000001
+00000000
+b504f332
+ffffffff
+5faf9de0
+00000000
+b504f334
+ffffffff
+b504f330
+ffffffff
+81d1c002
+ffffffff
+4e9e8ccf
+00000000
+00000002
+00000000
+5faf9dde
+00000000
+0a5a4889
+00000000
+b504f32e
+ffffffff
+81d1c000
+ffffffff
+4e9e8ccd
+00000000
+6a09e666
+00000000
+00000000
+00000000
+fffffffe
+ffffffff
+aaaaaaac
+ffffffff
+00000000
+00000000
+fffffffc
+ffffffff
+ccccccce
+ffffffff
+9999999b
+ffffffff
+4afb0cce
+00000000
+aaaaaaaa
+ffffffff
+55555555
+00000000
+fffffffa
+ffffffff
+cccccccc
+ffffffff
+99999999
+ffffffff
+b504f332
+ffffffff
+4afb0ccc
+00000000
+00000001
+00000000
+aaaaaaaf
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csw-01.reference_output
new file mode 100644
index 000000000..1af6353b8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/csw-01.reference_output
@@ -0,0 +1,264 @@
+00000000
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+00000001
+deadbeef
+ffffffff
+deadbeef
+00000002
+deadbeef
+00000004
+deadbeef
+00000008
+deadbeef
+00000010
+deadbeef
+00000020
+deadbeef
+00000040
+deadbeef
+00000080
+deadbeef
+00000100
+deadbeef
+00000200
+deadbeef
+00000400
+deadbeef
+00000800
+deadbeef
+00001000
+deadbeef
+00002000
+deadbeef
+00004000
+deadbeef
+00008000
+deadbeef
+00010000
+deadbeef
+00020000
+deadbeef
+00040000
+deadbeef
+00080000
+deadbeef
+00100000
+deadbeef
+00200000
+deadbeef
+00400000
+deadbeef
+00800000
+deadbeef
+01000000
+deadbeef
+02000000
+deadbeef
+04000000
+deadbeef
+08000000
+deadbeef
+10000000
+deadbeef
+20000000
+deadbeef
+40000000
+deadbeef
+80000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+fffffffe
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+55555555
+deadbeef
+aaaaaaaa
+deadbeef
+fffffffd
+deadbeef
+fffffffb
+deadbeef
+fffffff7
+deadbeef
+ffffffef
+deadbeef
+ffffffdf
+deadbeef
+ffffffbf
+deadbeef
+ffffff7f
+deadbeef
+fffffeff
+deadbeef
+fffffdff
+deadbeef
+fffffbff
+deadbeef
+fffff7ff
+deadbeef
+ffffefff
+deadbeef
+ffffdfff
+deadbeef
+ffffbfff
+deadbeef
+ffff7fff
+deadbeef
+fffeffff
+deadbeef
+fffdffff
+deadbeef
+fffbffff
+deadbeef
+fff7ffff
+deadbeef
+ffefffff
+deadbeef
+ffdfffff
+deadbeef
+ffbfffff
+deadbeef
+ff7fffff
+deadbeef
+feffffff
+deadbeef
+fdffffff
+deadbeef
+fbffffff
+deadbeef
+f7ffffff
+deadbeef
+efffffff
+deadbeef
+dfffffff
+deadbeef
+bfffffff
+deadbeef
+7fffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cswsp-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cswsp-01.reference_output
new file mode 100644
index 000000000..825b07e70
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cswsp-01.reference_output
@@ -0,0 +1,268 @@
+00000000
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+00000001
+deadbeef
+00000009
+deadbeef
+00000002
+deadbeef
+00000004
+deadbeef
+00000008
+deadbeef
+00000010
+deadbeef
+00000020
+deadbeef
+00000040
+deadbeef
+00000080
+deadbeef
+00000100
+deadbeef
+00000200
+deadbeef
+00000400
+deadbeef
+00000800
+deadbeef
+00001000
+deadbeef
+00002000
+deadbeef
+00004000
+deadbeef
+00008000
+deadbeef
+00010000
+deadbeef
+00020000
+deadbeef
+00040000
+deadbeef
+00080000
+deadbeef
+00100000
+deadbeef
+00200000
+deadbeef
+00400000
+deadbeef
+00800000
+deadbeef
+01000000
+deadbeef
+02000000
+deadbeef
+04000000
+deadbeef
+08000000
+deadbeef
+10000000
+deadbeef
+20000000
+deadbeef
+40000000
+deadbeef
+80000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+fffffffe
+deadbeef
+fffffffd
+deadbeef
+fffffffb
+deadbeef
+fffffff7
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+55555555
+deadbeef
+aaaaaaaa
+deadbeef
+00000010
+deadbeef
+ffffffef
+deadbeef
+ffffffdf
+deadbeef
+ffffffbf
+deadbeef
+ffffff7f
+deadbeef
+fffffeff
+deadbeef
+fffffdff
+deadbeef
+fffffbff
+deadbeef
+fffff7ff
+deadbeef
+ffffefff
+deadbeef
+ffffdfff
+deadbeef
+ffffbfff
+deadbeef
+ffff7fff
+deadbeef
+fffeffff
+deadbeef
+fffdffff
+deadbeef
+fffbffff
+deadbeef
+fff7ffff
+deadbeef
+ffefffff
+deadbeef
+ffdfffff
+deadbeef
+ffbfffff
+deadbeef
+ff7fffff
+deadbeef
+feffffff
+deadbeef
+fdffffff
+deadbeef
+fbffffff
+deadbeef
+f7ffffff
+deadbeef
+efffffff
+deadbeef
+dfffffff
+deadbeef
+bfffffff
+deadbeef
+7fffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cxor-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cxor-01.reference_output
new file mode 100644
index 000000000..83949081f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/C/references/cxor-01.reference_output
@@ -0,0 +1,1328 @@
+fffff7ff
+7fffffff
+00000000
+00000000
+00008000
+80000000
+fffffffe
+fffffdff
+00000000
+00000000
+b504f332
+00000000
+00000200
+80000000
+00040001
+00000000
+00000002
+00000020
+66666661
+66666666
+00020008
+00000000
+b504f322
+00000000
+66666647
+66666666
+00100040
+00000000
+ffffff7f
+ffffbfff
+fffffeff
+efffffff
+fffffdff
+fffffff7
+fffffbff
+ffbfffff
+00000800
+00000040
+ffffefff
+fffeffff
+00002000
+00000000
+ffff3fff
+ffffffff
+00008000
+02000000
+00010000
+20000000
+00020002
+00000000
+20080000
+00000000
+ffafffff
+ffffffff
+00200000
+00100000
+ffbff7ff
+ffffffff
+ff7fffff
+fdffffff
+67666666
+66666666
+02100000
+00000000
+04010000
+00000000
+f7ffffff
+feffffff
+5afb0ccd
+ffffffff
+20000000
+00040000
+bfefffff
+ffffffff
+80000000
+00010000
+00000000
+00020001
+20000000
+00000002
+fffbffff
+fffffffb
+66666665
+6666666e
+00000000
+00000110
+00000080
+00000020
+ffffbfff
+ffffffbf
+aaaaaaaa
+aaaaaa2a
+00000000
+00000140
+ffffffff
+ffeffdff
+feffffff
+fffffbff
+ffffffff
+fffdf7ff
+00000000
+02001000
+ffffffff
+ffffdffb
+aaaaaaaa
+aaaaeaaa
+00000000
+40008000
+66666667
+66676666
+00000040
+00020000
+00000020
+00040000
+ffffffff
+fff7ffff
+ffff7fff
+ffefffff
+ffffff7f
+ffdfffff
+ffffffff
+ffbffff7
+ffffffbf
+ff7fffff
+00000000
+01080000
+fffff7ff
+fdffffff
+00040000
+04000000
+ffffff7f
+f7ffffff
+ffffffff
+efffdfff
+fffdffff
+dfffffff
+fdffffff
+bfffffff
+fffffffe
+ffffffdf
+ccccccce
+cccccccc
+00100004
+00000000
+fffff7f7
+ffffffff
+00001010
+00000000
+ffffffdf
+fffdffff
+00000041
+00000000
+00000280
+00000000
+4afb0dcb
+ffffffff
+ccccc8cc
+cccccccc
+10000800
+00000000
+ffffefff
+ffffffff
+ffffdfff
+ffffffdf
+ffffbff7
+ffffffff
+00028000
+00000000
+00010000
+08000000
+02020000
+00000000
+fffbffff
+ffffffff
+fff7fffb
+ffffffff
+00000000
+00000000
+00200000
+00000001
+b544f331
+00000000
+00000000
+00000000
+21000000
+00000000
+fdffffff
+ff7fffff
+fbfffffc
+ffffffff
+08000000
+00000000
+10000000
+08000000
+dffffeff
+ffffffff
+40000000
+00000800
+77ffffff
+ffffffff
+ffbfffff
+fffffffe
+ffffffff
+fbfffffd
+ffffffff
+ffffffeb
+00000000
+00000008
+00000000
+00100010
+ffffffff
+ff7fffdf
+00004000
+00000040
+ffffffff
+ff7fff7f
+00000000
+00800100
+ffffffff
+fffff9ff
+ffffbfff
+fffffbff
+08000000
+00000800
+00000002
+00001000
+bfffffff
+ffffdfff
+fffffff9
+ffffbfff
+fdffffff
+ffff7fff
+ffffdfff
+fffeffff
+00000400
+00020000
+fffdffff
+fffbffff
+fbffffff
+fff7ffff
+00000000
+02100000
+ffffffff
+ffdfdfff
+00000008
+00400000
+00008000
+00800000
+00080000
+01000000
+ffffffff
+fdfbffff
+ffffffff
+fbfdffff
+ffffffff
+f7bfffff
+00000000
+10008000
+fffffdff
+dfffffff
+00000009
+40000000
+aaaaaaaa
+aaaa8aaa
+aaaaaaaa
+aaaaaaab
+55555545
+55555555
+00000400
+00000000
+ffffeff7
+ffffffff
+00008000
+00010000
+fff7fff9
+ffffffff
+efdfffff
+ffffffff
+ff7ffff6
+ffffffff
+feffffff
+ffffffdf
+e7ffffff
+ffffffff
+80000000
+00000010
+fbffffff
+fffffffd
+ffffffff
+7ffffffb
+efffffff
+fffffff7
+33333334
+333333b3
+fffffffa
+fffffdff
+ffffffff
+fffff3ff
+ffffffff
+ffffeeff
+00000001
+00004000
+00000000
+00008004
+66666665
+66466666
+00000080
+01000000
+01000000
+08000000
+00000400
+10000000
+0000000c
+00000000
+00040010
+00000000
+00000024
+00000000
+fffffeff
+ffffbfff
+ffffdfff
+ffffffff
+00010000
+00000100
+cceccccc
+cccccccc
+aeaaaaaa
+aaaaaaaa
+bfffffff
+fffffff7
+7fffffff
+fffbffff
+ffffffff
+fffffffd
+fffffffe
+ffffffef
+ffffffff
+fff7ffdf
+fffffffb
+ffffffbf
+00000000
+00000000
+fffffff9
+fffffeff
+fffffbff
+fffffbff
+00000000
+00001100
+00000000
+00040200
+55555555
+555d5555
+ffffffff
+ffdfffef
+00000000
+04200000
+ffffffff
+9fffffff
+00000000
+40000800
+55575555
+55555555
+00000000
+00000000
+55555556
+55555555
+aaaaaaa9
+aaaaaaaa
+00000006
+00000000
+33333330
+33333333
+66666665
+66666666
+4afb0cce
+ffffffff
+b504f330
+00000000
+00000001
+00000000
+55555557
+55555555
+00000003
+00000000
+00000007
+00000000
+33333331
+33333333
+66666666
+66666666
+b504f331
+00000000
+55555555
+55555555
+aaaaaaa8
+aaaaaaaa
+00000005
+00000000
+33333337
+33333333
+66666664
+66666666
+4afb0ccd
+ffffffff
+b504f337
+00000000
+55555556
+55555555
+00000000
+00000000
+ffffffff
+ffffffff
+55555550
+55555555
+66666666
+66666666
+33333333
+33333333
+1fae5998
+aaaaaaaa
+e051a666
+55555555
+55555557
+55555555
+00000001
+00000000
+55555555
+55555555
+55555551
+55555555
+66666667
+66666666
+33333330
+33333333
+e051a667
+55555555
+00000003
+00000000
+fffffffe
+ffffffff
+55555553
+55555555
+66666661
+66666666
+33333332
+33333333
+1fae599b
+aaaaaaaa
+e051a661
+55555555
+aaaaaaa9
+aaaaaaaa
+ffffffff
+ffffffff
+00000000
+00000000
+aaaaaaaf
+aaaaaaaa
+99999999
+99999999
+cccccccc
+cccccccc
+e051a667
+55555555
+1fae5999
+aaaaaaaa
+aaaaaaa8
+aaaaaaaa
+fffffffe
+ffffffff
+aaaaaaaa
+aaaaaaaa
+aaaaaaae
+aaaaaaaa
+99999998
+99999999
+cccccccf
+cccccccc
+1fae5998
+aaaaaaaa
+fffffffc
+ffffffff
+00000001
+00000000
+aaaaaaac
+aaaaaaaa
+9999999e
+99999999
+cccccccd
+cccccccc
+e051a664
+55555555
+1fae599e
+aaaaaaaa
+00000006
+00000000
+55555550
+55555555
+aaaaaaaf
+aaaaaaaa
+00000000
+00000000
+33333336
+33333333
+66666663
+66666666
+4afb0cc8
+ffffffff
+b504f336
+00000000
+00000007
+00000000
+55555551
+55555555
+00000005
+00000000
+00000001
+00000000
+33333337
+33333333
+66666660
+66666666
+b504f337
+00000000
+55555553
+55555555
+aaaaaaae
+aaaaaaaa
+00000003
+00000000
+33333331
+33333333
+66666662
+66666666
+4afb0ccb
+ffffffff
+b504f331
+00000000
+33333330
+33333333
+66666666
+66666666
+99999999
+99999999
+33333336
+33333333
+00000000
+00000000
+55555555
+55555555
+79c83ffe
+cccccccc
+8637c000
+33333333
+33333331
+33333333
+66666667
+66666666
+33333333
+33333333
+33333337
+33333333
+00000001
+00000000
+55555556
+55555555
+8637c001
+33333333
+66666665
+66666666
+99999998
+99999999
+33333335
+33333333
+00000007
+00000000
+55555554
+55555555
+79c83ffd
+cccccccc
+8637c007
+33333333
+66666665
+66666666
+33333333
+33333333
+cccccccc
+cccccccc
+66666663
+66666666
+55555555
+55555555
+00000000
+00000000
+2c9d6aab
+99999999
+d3629555
+66666666
+66666664
+66666666
+33333332
+33333333
+66666666
+66666666
+66666662
+66666666
+55555554
+55555555
+00000003
+00000000
+d3629554
+66666666
+33333330
+33333333
+cccccccd
+cccccccc
+66666660
+66666666
+55555552
+55555555
+00000001
+00000000
+2c9d6aa8
+99999999
+d3629552
+66666666
+4afb0cce
+ffffffff
+1fae5998
+aaaaaaaa
+e051a667
+55555555
+4afb0cc8
+ffffffff
+79c83ffe
+cccccccc
+2c9d6aab
+99999999
+00000000
+00000000
+fffffffe
+ffffffff
+4afb0ccf
+ffffffff
+1fae5999
+aaaaaaaa
+4afb0ccd
+ffffffff
+4afb0cc9
+ffffffff
+79c83fff
+cccccccc
+2c9d6aa8
+99999999
+ffffffff
+ffffffff
+1fae599b
+aaaaaaaa
+e051a666
+55555555
+4afb0ccb
+ffffffff
+79c83ff9
+cccccccc
+2c9d6aaa
+99999999
+00000003
+00000000
+fffffff9
+ffffffff
+b504f330
+00000000
+e051a666
+55555555
+1fae5999
+aaaaaaaa
+b504f336
+00000000
+8637c000
+33333333
+d3629555
+66666666
+fffffffe
+ffffffff
+00000000
+00000000
+b504f331
+00000000
+e051a667
+55555555
+b504f333
+00000000
+b504f337
+00000000
+8637c001
+33333333
+d3629556
+66666666
+00000001
+00000000
+e051a665
+55555555
+1fae5998
+aaaaaaaa
+b504f335
+00000000
+8637c007
+33333333
+d3629554
+66666666
+fffffffd
+ffffffff
+00000007
+00000000
+00000001
+00000000
+55555557
+55555555
+aaaaaaa8
+aaaaaaaa
+00000007
+00000000
+33333331
+33333333
+66666664
+66666666
+4afb0ccf
+ffffffff
+b504f331
+00000000
+00000000
+00000000
+55555556
+55555555
+00000002
+00000000
+00000006
+00000000
+33333330
+33333333
+66666667
+66666666
+b504f330
+00000000
+55555554
+55555555
+aaaaaaa9
+aaaaaaaa
+00000004
+00000000
+33333336
+33333333
+66666665
+66666666
+4afb0ccc
+ffffffff
+b504f336
+00000000
+55555557
+55555555
+00000001
+00000000
+fffffffe
+ffffffff
+55555551
+55555555
+66666667
+66666666
+33333332
+33333333
+1fae5999
+aaaaaaaa
+e051a667
+55555555
+55555556
+55555555
+00000000
+00000000
+55555554
+55555555
+55555550
+55555555
+66666666
+66666666
+33333331
+33333333
+e051a666
+55555555
+00000002
+00000000
+ffffffff
+ffffffff
+55555552
+55555555
+66666660
+66666666
+33333333
+33333333
+1fae599a
+aaaaaaaa
+e051a660
+55555555
+00000003
+00000000
+55555555
+55555555
+aaaaaaaa
+aaaaaaaa
+00000005
+00000000
+33333333
+33333333
+66666666
+66666666
+4afb0ccd
+ffffffff
+aaaaaaae
+aaaaaaaa
+00000001
+00000000
+33333337
+33333333
+66666662
+66666666
+4afb0cc9
+ffffffff
+b504f337
+00000000
+00000006
+00000000
+55555550
+55555555
+00000004
+00000000
+00000000
+00000000
+33333336
+33333333
+66666661
+66666666
+b504f336
+00000000
+55555552
+55555555
+aaaaaaaf
+aaaaaaaa
+00000002
+00000000
+33333330
+33333333
+66666663
+66666666
+4afb0cca
+ffffffff
+b504f330
+00000000
+33333331
+33333333
+66666667
+66666666
+99999998
+99999999
+33333337
+33333333
+00000001
+00000000
+55555554
+55555555
+79c83fff
+cccccccc
+8637c001
+33333333
+33333330
+33333333
+66666666
+66666666
+33333332
+33333333
+33333336
+33333333
+00000000
+00000000
+55555557
+55555555
+8637c000
+33333333
+66666664
+66666666
+99999999
+99999999
+33333334
+33333333
+00000006
+00000000
+55555555
+55555555
+79c83ffc
+cccccccc
+8637c006
+33333333
+66666666
+66666666
+33333330
+33333333
+cccccccf
+cccccccc
+66666660
+66666666
+55555556
+55555555
+00000003
+00000000
+2c9d6aa8
+99999999
+d3629556
+66666666
+66666667
+66666666
+33333331
+33333333
+66666665
+66666666
+55555557
+55555555
+00000000
+00000000
+d3629557
+66666666
+33333333
+33333333
+ccccccce
+cccccccc
+66666663
+66666666
+55555551
+55555555
+00000002
+00000000
+2c9d6aab
+99999999
+d3629551
+66666666
+b504f331
+00000000
+e051a667
+55555555
+1fae5998
+aaaaaaaa
+b504f337
+00000000
+8637c001
+33333333
+d3629554
+66666666
+ffffffff
+ffffffff
+00000001
+00000000
+b504f330
+00000000
+e051a666
+55555555
+b504f332
+00000000
+b504f336
+00000000
+8637c000
+33333333
+d3629557
+66666666
+00000000
+00000000
+e051a664
+55555555
+1fae5999
+aaaaaaaa
+b504f334
+00000000
+8637c006
+33333333
+d3629555
+66666666
+fffffffc
+ffffffff
+00000006
+00000000
+55555555
+55555555
+00000003
+00000000
+fffffffc
+ffffffff
+55555553
+55555555
+66666665
+66666666
+33333330
+33333333
+1fae599b
+aaaaaaaa
+e051a665
+55555555
+55555554
+55555555
+00000002
+00000000
+55555556
+55555555
+55555552
+55555555
+66666664
+66666666
+33333333
+33333333
+e051a664
+55555555
+00000000
+00000000
+fffffffd
+ffffffff
+55555550
+55555555
+66666662
+66666666
+33333331
+33333333
+1fae5998
+aaaaaaaa
+e051a662
+55555555
+aaaaaaa8
+aaaaaaaa
+fffffffe
+ffffffff
+00000001
+00000000
+aaaaaaae
+aaaaaaaa
+99999998
+99999999
+cccccccd
+cccccccc
+e051a666
+55555555
+1fae5998
+aaaaaaaa
+aaaaaaa9
+aaaaaaaa
+ffffffff
+ffffffff
+aaaaaaab
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+99999999
+99999999
+ccccccce
+cccccccc
+1fae5999
+aaaaaaaa
+fffffffd
+ffffffff
+00000000
+00000000
+aaaaaaad
+aaaaaaaa
+9999999f
+99999999
+cccccccc
+cccccccc
+e051a665
+55555555
+1fae599f
+aaaaaaaa
+00000005
+00000000
+55555553
+55555555
+aaaaaaac
+aaaaaaaa
+00000003
+00000000
+33333335
+33333333
+66666660
+66666666
+4afb0ccb
+ffffffff
+b504f335
+00000000
+00000004
+00000000
+55555552
+55555555
+00000006
+00000000
+00000002
+00000000
+33333334
+33333333
+66666663
+66666666
+b504f334
+00000000
+55555550
+55555555
+aaaaaaad
+aaaaaaaa
+00000000
+00000000
+33333332
+33333333
+66666661
+66666666
+4afb0cc8
+ffffffff
+b504f332
+00000000
+33333337
+33333333
+66666661
+66666666
+9999999e
+99999999
+33333331
+33333333
+00000007
+00000000
+55555552
+55555555
+79c83ff9
+cccccccc
+8637c007
+33333333
+33333336
+33333333
+66666660
+66666666
+33333334
+33333333
+33333330
+33333333
+00000006
+00000000
+55555551
+55555555
+8637c006
+33333333
+66666662
+66666666
+9999999f
+99999999
+33333332
+33333333
+00000000
+00000000
+55555553
+55555555
+79c83ffa
+cccccccc
+8637c000
+33333333
+66666664
+66666666
+33333332
+33333333
+cccccccd
+cccccccc
+66666662
+66666666
+55555554
+55555555
+00000001
+00000000
+2c9d6aaa
+99999999
+d3629554
+66666666
+66666665
+66666666
+33333333
+33333333
+66666667
+66666666
+66666663
+66666666
+55555555
+55555555
+00000002
+00000000
+d3629555
+66666666
+33333331
+33333333
+cccccccc
+cccccccc
+66666661
+66666666
+55555553
+55555555
+00000000
+00000000
+2c9d6aa9
+99999999
+d3629553
+66666666
+4afb0ccd
+ffffffff
+1fae599b
+aaaaaaaa
+e051a664
+55555555
+4afb0ccb
+ffffffff
+79c83ffd
+cccccccc
+2c9d6aa8
+99999999
+00000003
+00000000
+fffffffd
+ffffffff
+4afb0ccc
+ffffffff
+1fae599a
+aaaaaaaa
+4afb0cce
+ffffffff
+4afb0cca
+ffffffff
+79c83ffc
+cccccccc
+2c9d6aab
+99999999
+fffffffc
+ffffffff
+1fae5998
+aaaaaaaa
+e051a665
+55555555
+4afb0cc8
+ffffffff
+79c83ffa
+cccccccc
+2c9d6aa9
+99999999
+00000000
+00000000
+fffffffa
+ffffffff
+b504f337
+00000000
+e051a661
+55555555
+1fae599e
+aaaaaaaa
+b504f331
+00000000
+8637c007
+33333333
+d3629552
+66666666
+fffffff9
+ffffffff
+00000007
+00000000
+b504f336
+00000000
+e051a660
+55555555
+b504f334
+00000000
+b504f330
+00000000
+8637c006
+33333333
+d3629551
+66666666
+00000006
+00000000
+e051a662
+55555555
+1fae599f
+aaaaaaaa
+b504f332
+00000000
+8637c000
+33333333
+d3629553
+66666666
+fffffffa
+ffffffff
+00000000
+00000000
+b504f333
+00000000
+00000002
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+33333332
+33333333
+66666665
+66666666
+55555556
+55555555
+aaaaaaab
+aaaaaaaa
+00000006
+00000000
+33333334
+33333333
+66666667
+66666666
+4afb0cce
+ffffffff
+b504f334
+00000000
+00000007
+00000000
+55555551
+55555555
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/.gitignore b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/Makefile
new file mode 100644
index 000000000..18dc245c8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv64i -mabi=lp64 -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/Makefrag
new file mode 100644
index 000000000..f85d344df
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/Makefrag
@@ -0,0 +1,37 @@
+# RISC-V Architecture Test RV64I Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV64I architectural tests
+
+rv64i_sc_tests = \
+ add-01 \
+
+
+
+rv64i_tests = $(addsuffix .elf, $(rv64i_sc_tests))
+
+target_tests += $(rv64i_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/references/add-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/references/add-01.reference_output
new file mode 100644
index 000000000..ee1cbb832
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/references/add-01.reference_output
@@ -0,0 +1,1360 @@
+00000000
+00000000
+c0000004
+ffffffff
+fefffffe
+ffffffff
+ffffffbf
+007fffff
+00000080
+00000000
+66666665
+e6666666
+00000001
+00000000
+0001ffff
+80000000
+10000001
+00000000
+fffffeff
+7fffffff
+00000000
+00000800
+fffefffe
+7fffffff
+fffffffd
+ffffffff
+00000004
+20000000
+00000008
+00000020
+0000000f
+ffe00000
+00000020
+00000000
+00000080
+08000000
+00000000
+00000000
+00010200
+00000000
+00000405
+00000000
+ffff87ff
+ffffffff
+00001000
+00080000
+4afb2cce
+ffffffff
+00003ff7
+00000000
+00008004
+00000000
+0000fffc
+00000000
+00020000
+80000000
+00040005
+00000000
+e007ffff
+ffffffff
+00100005
+00000000
+001bffff
+00000000
+00400008
+00000000
+ff7fffff
+ffffffff
+00ffffff
+fff80000
+02000000
+00000200
+03fbffff
+00000000
+88000000
+00000000
+50000000
+00000000
+20000010
+00000000
+73333334
+33333333
+80000000
+00000080
+00000000
+00002001
+00002000
+00000002
+ffffffff
+00000001
+00002000
+00000008
+00000000
+00800010
+ffffffff
+0000001d
+55555555
+55555595
+00800000
+00000080
+ffffffff
+000000bf
+ffffffdf
+000001ff
+00400000
+00000400
+00000000
+00001100
+08000000
+00002000
+00000000
+01004000
+00000000
+00028000
+ffffffff
+fff0ffff
+ffffffff
+fff1ffff
+7fffffff
+0003ffff
+00002000
+00080000
+ffffffff
+ffffffff
+00080000
+00200000
+fffffffe
+003fffff
+fff7ffff
+00ffffff
+00000000
+12000000
+fffffff8
+03ffffff
+00000004
+08000000
+66666667
+76666666
+fff7ffff
+1fffffff
+33333333
+73333333
+fffffffe
+ffffffff
+fffffffc
+fffbffff
+55555551
+55555555
+effffff6
+ffffffff
+ffffffee
+ffffffff
+ffffffde
+efffffff
+ffffffbf
+0001ffff
+b504f2b1
+00000000
+fffffe1f
+ffffffff
+fffffc1f
+ffffffff
+fffff8ff
+ffffffff
+fff7effe
+ffffffff
+ffffdfff
+0fffffff
+ffffc003
+ffffffff
+ffff7ffe
+efffffff
+fffcfffe
+ffffffff
+003bffff
+00000000
+fef7fffe
+ffffffff
+ffeffffe
+7fffffff
+ffdffffe
+ffffbfff
+ffbffffe
+ff7fffff
+ff8fffff
+ffffffff
+feffffff
+00007fff
+fdfffffe
+ffffefff
+fc00ffff
+ffffffff
+f7fffffb
+ffffffff
+efffffff
+00007fff
+dfffffff
+1fffffff
+7fbffffe
+ffffffff
+ffffffff
+001ffffe
+003fffff
+fffffffe
+fffffffe
+fdfffffb
+ffffffff
+00000037
+4afb0ccc
+ffffffef
+fffefffe
+ffffffdf
+ffffffbe
+ffffffbf
+00000003
+ffffff80
+0000003f
+ffffff00
+fffffffe
+ffeffdff
+00000004
+fffffc00
+fffffffe
+ffffefff
+0000000f
+fffff000
+fffffffe
+ffffdfdf
+000003ff
+ffffc000
+03ffffff
+ffff8000
+ffffffff
+ffff003f
+00001fff
+fffe0000
+ffffffff
+fffc003f
+dffffffe
+fff7ffff
+ffffffff
+fff000ff
+55555553
+55355555
+55555554
+55155555
+fff7fffe
+ff7fffff
+00000004
+ff000000
+aaaaaaaa
+a8aaaaaa
+ffffffff
+fbffffff
+ffffffde
+f7ffffff
+0000001f
+f0000000
+aaaaaaaa
+8aaaaaaa
+000001ff
+c0000000
+bbbbbbbb
+bbbbbbbb
+aaaaaaaa
+aaeaaaaa
+00000002
+00100000
+00000080
+00000100
+800007ff
+ffffffff
+04001000
+00000000
+fff03fff
+ffffffff
+00007ffa
+00000000
+c003ffff
+ffffffff
+b524f334
+00000000
+00ffbfff
+00000000
+01ffffff
+ff800000
+20000080
+00000000
+00000000
+80000001
+00000000
+40000002
+00080000
+00000004
+00000000
+00200008
+efffffff
+0000000f
+00000200
+00000400
+04000000
+00000800
+00000000
+00801000
+00000000
+08004000
+00000040
+00010000
+00400000
+00040000
+00000040
+00100000
+efffffff
+01ffffff
+55555554
+59555555
+00000000
+40000000
+fffffff7
+ffffffff
+03ffffef
+00000000
+ffffff7f
+ffffffff
+000000ff
+00000000
+fbfffdfe
+ffffffff
+fffffbfa
+ffffffff
+33332b31
+33333333
+ffdfeffe
+ffffffff
+ffffdffe
+bfffffff
+ffefbffe
+ffffffff
+fffe0007
+ffffffff
+66566664
+66666666
+ffdffffe
+ff7fffff
+fdffffff
+0003ffff
+03ffffff
+00000000
+f7fffffe
+efffffff
+c3ffffff
+ffffffff
+fffffffe
+ffffdffe
+fffffffe
+ffdffffb
+ffffffff
+03fffff7
+fffffffb
+ffffffef
+ffffffff
+0000007f
+00001fff
+ffffff00
+ffffffff
+fffffeff
+fffffffe
+fffff7ff
+ffff7ffe
+ffffdfff
+ffffffff
+001f7fff
+fffffffe
+fffefff7
+b504f332
+fffe0000
+fffffffc
+ffbfffff
+fffff7fe
+feffffff
+ffffffff
+0bffffff
+b504f331
+f8000000
+ffffffff
+e7ffffff
+fffffbfe
+bfffffff
+aaaaaaaa
+aaaaaaaa
+00000006
+00000000
+55555558
+55555555
+aaaaaaad
+aaaaaaaa
+00000008
+00000000
+33333336
+33333333
+66666669
+66666666
+4afb0cd0
+ffffffff
+b504f336
+00000000
+00000005
+00000000
+55555557
+55555555
+00000003
+00000000
+00000007
+00000000
+33333335
+33333333
+66666668
+66666666
+b504f335
+00000000
+55555559
+55555555
+aaaaaaae
+aaaaaaaa
+00000009
+00000000
+33333337
+33333333
+6666666a
+66666666
+4afb0cd1
+ffffffff
+b504f337
+00000000
+55555558
+55555555
+aaaaaaaa
+aaaaaaaa
+ffffffff
+ffffffff
+5555555a
+55555555
+88888888
+88888888
+bbbbbbbb
+bbbbbbbb
+a0506222
+55555554
+0a5a4888
+55555556
+55555557
+55555555
+aaaaaaa9
+aaaaaaaa
+55555555
+55555555
+55555559
+55555555
+88888887
+88888888
+bbbbbbba
+bbbbbbbb
+0a5a4887
+55555556
+aaaaaaab
+aaaaaaaa
+00000000
+00000000
+5555555b
+55555555
+88888889
+88888888
+bbbbbbbc
+bbbbbbbb
+a0506223
+55555554
+0a5a4889
+55555556
+aaaaaaad
+aaaaaaaa
+ffffffff
+ffffffff
+55555554
+55555555
+aaaaaaaf
+aaaaaaaa
+dddddddd
+dddddddd
+11111110
+11111111
+f5a5b777
+aaaaaaa9
+5faf9ddd
+aaaaaaab
+aaaaaaac
+aaaaaaaa
+fffffffe
+ffffffff
+aaaaaaae
+aaaaaaaa
+dddddddc
+dddddddd
+1111110f
+11111111
+5faf9ddc
+aaaaaaab
+00000000
+00000000
+55555555
+55555555
+aaaaaab0
+aaaaaaaa
+ddddddde
+dddddddd
+11111111
+11111111
+f5a5b778
+aaaaaaa9
+5faf9dde
+aaaaaaab
+00000008
+00000000
+5555555a
+55555555
+aaaaaaaf
+aaaaaaaa
+0000000a
+00000000
+33333338
+33333333
+6666666b
+66666666
+4afb0cd2
+ffffffff
+b504f338
+00000000
+00000007
+00000000
+55555559
+55555555
+00000005
+00000000
+00000009
+00000000
+33333337
+33333333
+6666666a
+66666666
+b504f337
+00000000
+5555555b
+55555555
+aaaaaab0
+aaaaaaaa
+0000000b
+00000000
+33333339
+33333333
+6666666c
+66666666
+4afb0cd3
+ffffffff
+b504f339
+00000000
+33333336
+33333333
+88888888
+88888888
+dddddddd
+dddddddd
+33333338
+33333333
+66666666
+66666666
+99999999
+99999999
+7e2e4000
+33333332
+e8382666
+33333333
+33333335
+33333333
+88888887
+88888888
+33333333
+33333333
+33333337
+33333333
+66666665
+66666666
+99999998
+99999999
+e8382665
+33333333
+88888889
+88888888
+ddddddde
+dddddddd
+33333339
+33333333
+66666667
+66666666
+9999999a
+99999999
+7e2e4001
+33333332
+e8382667
+33333333
+66666669
+66666666
+11111110
+11111111
+6666666b
+66666666
+99999999
+99999999
+cccccccc
+cccccccc
+b1617333
+66666665
+1b6b5999
+66666667
+66666668
+66666666
+bbbbbbba
+bbbbbbbb
+66666666
+66666666
+6666666a
+66666666
+99999998
+99999999
+cccccccb
+cccccccc
+1b6b5998
+66666667
+bbbbbbbc
+bbbbbbbb
+11111111
+11111111
+6666666c
+66666666
+9999999a
+99999999
+cccccccd
+cccccccc
+b1617334
+66666665
+1b6b599a
+66666667
+4afb0cd0
+ffffffff
+a0506222
+55555554
+f5a5b777
+aaaaaaa9
+4afb0cd2
+ffffffff
+7e2e4000
+33333332
+b1617333
+66666665
+95f6199a
+fffffffe
+00000000
+00000000
+4afb0ccf
+ffffffff
+a0506221
+55555554
+4afb0ccd
+ffffffff
+4afb0cd1
+ffffffff
+7e2e3fff
+33333332
+b1617332
+66666665
+ffffffff
+ffffffff
+a0506223
+55555554
+f5a5b778
+aaaaaaa9
+4afb0cd3
+ffffffff
+7e2e4001
+33333332
+b1617334
+66666665
+95f6199b
+fffffffe
+00000001
+00000000
+b504f336
+00000000
+0a5a4888
+55555556
+5faf9ddd
+aaaaaaab
+b504f338
+00000000
+e8382666
+33333333
+1b6b5999
+66666667
+00000000
+00000000
+6a09e666
+00000001
+b504f335
+00000000
+0a5a4887
+55555556
+b504f333
+00000000
+b504f337
+00000000
+e8382665
+33333333
+1b6b5998
+66666667
+6a09e665
+00000001
+0a5a4889
+55555556
+5faf9dde
+aaaaaaab
+b504f339
+00000000
+e8382667
+33333333
+1b6b599a
+66666667
+00000001
+00000000
+6a09e667
+00000001
+00000005
+00000000
+55555557
+55555555
+aaaaaaac
+aaaaaaaa
+00000007
+00000000
+33333335
+33333333
+66666668
+66666666
+4afb0ccf
+ffffffff
+b504f335
+00000000
+00000004
+00000000
+55555556
+55555555
+00000002
+00000000
+00000006
+00000000
+33333334
+33333333
+66666667
+66666666
+b504f334
+00000000
+55555558
+55555555
+aaaaaaad
+aaaaaaaa
+00000008
+00000000
+33333336
+33333333
+66666669
+66666666
+4afb0cd0
+ffffffff
+b504f336
+00000000
+55555557
+55555555
+aaaaaaa9
+aaaaaaaa
+fffffffe
+ffffffff
+55555559
+55555555
+88888887
+88888888
+bbbbbbba
+bbbbbbbb
+a0506221
+55555554
+0a5a4887
+55555556
+55555556
+55555555
+aaaaaaa8
+aaaaaaaa
+55555554
+55555555
+55555558
+55555555
+88888886
+88888888
+bbbbbbb9
+bbbbbbbb
+0a5a4886
+55555556
+aaaaaaaa
+aaaaaaaa
+ffffffff
+ffffffff
+5555555a
+55555555
+88888888
+88888888
+bbbbbbbb
+bbbbbbbb
+a0506222
+55555554
+0a5a4888
+55555556
+00000003
+00000000
+55555555
+55555555
+aaaaaaaa
+aaaaaaaa
+00000005
+00000000
+33333333
+33333333
+66666666
+66666666
+4afb0ccd
+ffffffff
+b504f333
+00000000
+4afb0cce
+ffffffff
+b504f334
+00000000
+00000007
+00000000
+55555559
+55555555
+aaaaaaae
+aaaaaaaa
+00000009
+00000000
+33333337
+33333333
+6666666a
+66666666
+4afb0cd1
+ffffffff
+b504f337
+00000000
+00000006
+00000000
+55555558
+55555555
+00000004
+00000000
+00000008
+00000000
+33333336
+33333333
+66666669
+66666666
+b504f336
+00000000
+aaaaaaaf
+aaaaaaaa
+0000000a
+00000000
+33333338
+33333333
+6666666b
+66666666
+4afb0cd2
+ffffffff
+b504f338
+00000000
+33333335
+33333333
+88888887
+88888888
+dddddddc
+dddddddd
+33333337
+33333333
+66666665
+66666666
+99999998
+99999999
+7e2e3fff
+33333332
+e8382665
+33333333
+33333334
+33333333
+88888886
+88888888
+33333332
+33333333
+33333336
+33333333
+66666664
+66666666
+99999997
+99999999
+e8382664
+33333333
+88888888
+88888888
+dddddddd
+dddddddd
+33333338
+33333333
+66666666
+66666666
+99999999
+99999999
+7e2e4000
+33333332
+e8382666
+33333333
+66666668
+66666666
+bbbbbbba
+bbbbbbbb
+1111110f
+11111111
+6666666a
+66666666
+99999998
+99999999
+cccccccb
+cccccccc
+b1617332
+66666665
+1b6b5998
+66666667
+66666667
+66666666
+bbbbbbb9
+bbbbbbbb
+66666665
+66666666
+66666669
+66666666
+99999997
+99999999
+ccccccca
+cccccccc
+1b6b5997
+66666667
+bbbbbbbb
+bbbbbbbb
+11111110
+11111111
+6666666b
+66666666
+99999999
+99999999
+cccccccc
+cccccccc
+b1617333
+66666665
+1b6b5999
+66666667
+b504f335
+00000000
+0a5a4887
+55555556
+5faf9ddc
+aaaaaaab
+b504f337
+00000000
+e8382665
+33333333
+1b6b5998
+66666667
+ffffffff
+ffffffff
+6a09e665
+00000001
+b504f334
+00000000
+0a5a4886
+55555556
+b504f332
+00000000
+b504f336
+00000000
+e8382664
+33333333
+1b6b5997
+66666667
+6a09e664
+00000001
+0a5a4888
+55555556
+5faf9ddd
+aaaaaaab
+b504f338
+00000000
+e8382666
+33333333
+1b6b5999
+66666667
+00000000
+00000000
+6a09e666
+00000001
+55555559
+55555555
+aaaaaaab
+aaaaaaaa
+00000000
+00000000
+5555555b
+55555555
+88888889
+88888888
+bbbbbbbc
+bbbbbbbb
+a0506223
+55555554
+0a5a4889
+55555556
+55555558
+55555555
+aaaaaaaa
+aaaaaaaa
+55555556
+55555555
+5555555a
+55555555
+88888888
+88888888
+bbbbbbbb
+bbbbbbbb
+0a5a4888
+55555556
+aaaaaaac
+aaaaaaaa
+00000001
+00000000
+5555555c
+55555555
+8888888a
+88888888
+bbbbbbbd
+bbbbbbbb
+a0506224
+55555554
+0a5a488a
+55555556
+aaaaaaae
+aaaaaaaa
+00000000
+00000000
+55555555
+55555555
+aaaaaab0
+aaaaaaaa
+ddddddde
+dddddddd
+11111111
+11111111
+f5a5b778
+aaaaaaa9
+5faf9dde
+aaaaaaab
+aaaaaaad
+aaaaaaaa
+ffffffff
+ffffffff
+aaaaaaab
+aaaaaaaa
+aaaaaaaf
+aaaaaaaa
+dddddddd
+dddddddd
+11111110
+11111111
+5faf9ddd
+aaaaaaab
+00000001
+00000000
+55555556
+55555555
+aaaaaab1
+aaaaaaaa
+dddddddf
+dddddddd
+11111112
+11111111
+f5a5b779
+aaaaaaa9
+5faf9ddf
+aaaaaaab
+00000009
+00000000
+5555555b
+55555555
+aaaaaab0
+aaaaaaaa
+0000000b
+00000000
+33333339
+33333333
+6666666c
+66666666
+4afb0cd3
+ffffffff
+b504f339
+00000000
+00000008
+00000000
+5555555a
+55555555
+00000006
+00000000
+0000000a
+00000000
+33333338
+33333333
+6666666b
+66666666
+b504f338
+00000000
+5555555c
+55555555
+aaaaaab1
+aaaaaaaa
+0000000c
+00000000
+3333333a
+33333333
+6666666d
+66666666
+4afb0cd4
+ffffffff
+b504f33a
+00000000
+33333337
+33333333
+88888889
+88888888
+ddddddde
+dddddddd
+33333339
+33333333
+66666667
+66666666
+9999999a
+99999999
+7e2e4001
+33333332
+e8382667
+33333333
+33333336
+33333333
+88888888
+88888888
+33333334
+33333333
+33333338
+33333333
+66666666
+66666666
+99999999
+99999999
+e8382666
+33333333
+8888888a
+88888888
+dddddddf
+dddddddd
+3333333a
+33333333
+66666668
+66666666
+9999999b
+99999999
+7e2e4002
+33333332
+e8382668
+33333333
+6666666a
+66666666
+bbbbbbbc
+bbbbbbbb
+11111111
+11111111
+6666666c
+66666666
+9999999a
+99999999
+cccccccd
+cccccccc
+b1617334
+66666665
+1b6b599a
+66666667
+66666669
+66666666
+bbbbbbbb
+bbbbbbbb
+66666667
+66666666
+6666666b
+66666666
+99999999
+99999999
+cccccccc
+cccccccc
+1b6b5999
+66666667
+bbbbbbbd
+bbbbbbbb
+11111112
+11111111
+6666666d
+66666666
+9999999b
+99999999
+ccccccce
+cccccccc
+b1617335
+66666665
+1b6b599b
+66666667
+4afb0cd1
+ffffffff
+a0506223
+55555554
+f5a5b778
+aaaaaaa9
+4afb0cd3
+ffffffff
+7e2e4001
+33333332
+b1617334
+66666665
+95f6199b
+fffffffe
+00000001
+00000000
+4afb0cd0
+ffffffff
+a0506222
+55555554
+4afb0cce
+ffffffff
+4afb0cd2
+ffffffff
+7e2e4000
+33333332
+b1617333
+66666665
+00000000
+00000000
+a0506224
+55555554
+f5a5b779
+aaaaaaa9
+4afb0cd4
+ffffffff
+7e2e4002
+33333332
+b1617335
+66666665
+95f6199c
+fffffffe
+00000002
+00000000
+b504f337
+00000000
+0a5a4889
+55555556
+5faf9dde
+aaaaaaab
+b504f339
+00000000
+e8382667
+33333333
+1b6b599a
+66666667
+00000001
+00000000
+6a09e667
+00000001
+b504f336
+00000000
+0a5a4888
+55555556
+b504f334
+00000000
+b504f338
+00000000
+e8382666
+33333333
+1b6b5999
+66666667
+6a09e666
+00000001
+0a5a488a
+55555556
+5faf9ddf
+aaaaaaab
+b504f33a
+00000000
+e8382668
+33333333
+1b6b599b
+66666667
+00000002
+00000000
+6a09e668
+00000001
+00000002
+00000000
+55555554
+55555555
+00000000
+00000000
+00000004
+00000000
+33333332
+33333333
+66666665
+66666666
+b504f332
+00000000
+55555556
+55555555
+aaaaaaab
+aaaaaaaa
+00000006
+00000000
+33333334
+33333333
+66666667
+66666666
+5555555a
+55555555
+ff7ffffb
+ffffffff
+00000101
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/add-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/add-01.S
new file mode 100644
index 000000000..e93d0d0b9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/add-01.S
@@ -0,0 +1,3479 @@
+
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.1
+// timestamp : Wed Dec 16 03:45:17 2020 GMT
+// usage : riscv_ctg \
+// -- cgf ('/scratch/git-repo/incoresemi/riscv-compliance/riscv_ctg/sample_cgfs/dataset.cgf', '/scratch/git-repo/incoresemi/riscv-compliance/riscv_ctg/sample_cgfs/rv64i.cgf') \
+// -- xlen 64 \
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the add instruction of the RISC-V I extension for the add covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_1=True;",add)
+
+RVTEST_SIGBASE( x8,signature_x8_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x0, rs2==x0, rd==x20, rs1_val > 0 and rs2_val > 0, rs1_val == 4, rs1_val==4 and rs2_val==6148914691236517206, rs1_val != rs2_val
+// opcode: add ; op1:x0; op2:x0; dest:x20; op1val:0x0; op2val:0x0
+TEST_RR_OP(add, x20, x0, x0, 0x0, 0x0, 0x0, x8, 0, x16)
+
+inst_1:
+// rs2 == rd != rs1, rs1==x2, rs2==x26, rd==x26, rs1_val > 0 and rs2_val < 0, rs2_val == -1073741825
+// opcode: add ; op1:x2; op2:x26; dest:x26; op1val:0x5; op2val:-0x40000001
+TEST_RR_OP(add, x26, x2, x26, 0xffffffffc0000004, 0x5, -0x40000001, x8, 8, x16)
+
+inst_2:
+// rs1 == rs2 == rd, rs1==x22, rs2==x22, rd==x22, rs1_val < 0 and rs2_val < 0, rs1_val == -8388609
+// opcode: add ; op1:x22; op2:x22; dest:x22; op1val:-0x800001; op2val:-0x800001
+TEST_RR_OP(add, x22, x22, x22, 0xfffffffffefffffe, -0x800001, -0x800001, x8, 16, x16)
+
+inst_3:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x26, rs2==x6, rd==x10, rs1_val < 0 and rs2_val > 0, rs1_val == -65, rs2_val == 36028797018963968
+// opcode: add ; op1:x26; op2:x6; dest:x10; op1val:-0x41; op2val:0x80000000000000
+TEST_RR_OP(add, x10, x26, x6, 0x7fffffffffffbf, -0x41, 0x80000000000000, x8, 24, x16)
+
+inst_4:
+// rs1 == rd != rs2, rs1==x27, rs2==x23, rd==x27, rs1_val == rs2_val, rs2_val == 64, rs1_val == 64
+// opcode: add ; op1:x27; op2:x23; dest:x27; op1val:0x40; op2val:0x40
+TEST_RR_OP(add, x27, x27, x23, 0x80, 0x40, 0x40, x8, 32, x16)
+
+inst_5:
+// rs1==x20, rs2==x3, rd==x2, rs2_val == (-2**(xlen-1)), rs2_val == -9223372036854775808
+// opcode: add ; op1:x20; op2:x3; dest:x2; op1val:0x6666666666666665; op2val:-0x8000000000000000
+TEST_RR_OP(add, x2, x20, x3, 0xe666666666666665, 0x6666666666666665, -0x8000000000000000, x8, 40, x16)
+
+inst_6:
+// rs1==x13, rs2==x30, rd==x14, rs2_val == 0, rs1_val == 1
+// opcode: add ; op1:x13; op2:x30; dest:x14; op1val:0x1; op2val:0x0
+TEST_RR_OP(add, x14, x13, x30, 0x1, 0x1, 0x0, x8, 48, x16)
+
+inst_7:
+// rs1==x6, rs2==x10, rd==x7, rs2_val == (2**(xlen-1)-1), rs2_val == 9223372036854775807, rs1_val == 131072
+// opcode: add ; op1:x6; op2:x10; dest:x7; op1val:0x20000; op2val:0x7fffffffffffffff
+TEST_RR_OP(add, x7, x6, x10, 0x800000000001ffff, 0x20000, 0x7fffffffffffffff, x8, 56, x16)
+
+inst_8:
+// rs1==x9, rs2==x25, rd==x1, rs2_val == 1, rs1_val == 268435456
+// opcode: add ; op1:x9; op2:x25; dest:x1; op1val:0x10000000; op2val:0x1
+TEST_RR_OP(add, x1, x9, x25, 0x10000001, 0x10000000, 0x1, x8, 64, x16)
+
+inst_9:
+// rs1==x14, rs2==x31, rd==x5, rs1_val == (-2**(xlen-1)), rs1_val == -9223372036854775808, rs2_val == -257
+// opcode: add ; op1:x14; op2:x31; dest:x5; op1val:-0x8000000000000000; op2val:-0x101
+TEST_RR_OP(add, x5, x14, x31, 0x7ffffffffffffeff, -0x8000000000000000, -0x101, x8, 72, x16)
+
+inst_10:
+// rs1==x29, rs2==x1, rd==x19, rs1_val == 0, rs2_val == 8796093022208
+// opcode: add ; op1:x29; op2:x1; dest:x19; op1val:0x0; op2val:0x80000000000
+TEST_RR_OP(add, x19, x29, x1, 0x80000000000, 0x0, 0x80000000000, x8, 80, x16)
+
+inst_11:
+// rs1==x15, rs2==x11, rd==x21, rs1_val == (2**(xlen-1)-1), rs1_val == 9223372036854775807, rs2_val == -65537
+// opcode: add ; op1:x15; op2:x11; dest:x21; op1val:0x7fffffffffffffff; op2val:-0x10001
+TEST_RR_OP(add, x21, x15, x11, 0x7ffffffffffefffe, 0x7fffffffffffffff, -0x10001, x8, 88, x16)
+
+inst_12:
+// rs1==x3, rs2==x7, rd==x9, rs2_val == 2, rs1_val == -5
+// opcode: add ; op1:x3; op2:x7; dest:x9; op1val:-0x5; op2val:0x2
+TEST_RR_OP(add, x9, x3, x7, 0xfffffffffffffffd, -0x5, 0x2, x8, 96, x16)
+
+inst_13:
+// rs1==x21, rs2==x27, rd==x6, rs2_val == 4, rs1_val == 2305843009213693952
+// opcode: add ; op1:x21; op2:x27; dest:x6; op1val:0x2000000000000000; op2val:0x4
+TEST_RR_OP(add, x6, x21, x27, 0x2000000000000004, 0x2000000000000000, 0x4, x8, 104, x16)
+
+inst_14:
+// rs1==x30, rs2==x13, rd==x23, rs2_val == 8, rs1_val == 137438953472
+// opcode: add ; op1:x30; op2:x13; dest:x23; op1val:0x2000000000; op2val:0x8
+TEST_RR_OP(add, x23, x30, x13, 0x2000000008, 0x2000000000, 0x8, x8, 112, x16)
+
+inst_15:
+// rs1==x10, rs2==x19, rd==x24, rs2_val == 16, rs1_val == -9007199254740993
+// opcode: add ; op1:x10; op2:x19; dest:x24; op1val:-0x20000000000001; op2val:0x10
+TEST_RR_OP(add, x24, x10, x19, 0xffe000000000000f, -0x20000000000001, 0x10, x8, 120, x16)
+
+inst_16:
+// rs1==x1, rs2==x9, rd==x30, rs2_val == 32,
+// opcode: add ; op1:x1; op2:x9; dest:x30; op1val:0x0; op2val:0x20
+TEST_RR_OP(add, x30, x1, x9, 0x20, 0x0, 0x20, x8, 128, x16)
+
+inst_17:
+// rs1==x12, rs2==x4, rd==x13, rs2_val == 128, rs1_val == 576460752303423488
+// opcode: add ; op1:x12; op2:x4; dest:x13; op1val:0x800000000000000; op2val:0x80
+TEST_RR_OP(add, x13, x12, x4, 0x800000000000080, 0x800000000000000, 0x80, x8, 136, x16)
+
+inst_18:
+// rs1==x18, rs2==x17, rd==x0, rs2_val == 256,
+// opcode: add ; op1:x18; op2:x17; dest:x0; op1val:0x1; op2val:0x100
+TEST_RR_OP(add, x0, x18, x17, 0, 0x1, 0x100, x8, 144, x16)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_19:
+// rs1==x19, rs2==x15, rd==x16, rs2_val == 512, rs1_val == 65536
+// opcode: add ; op1:x19; op2:x15; dest:x16; op1val:0x10000; op2val:0x200
+TEST_RR_OP(add, x16, x19, x15, 0x10200, 0x10000, 0x200, x1, 0, x6)
+
+inst_20:
+// rs1==x28, rs2==x20, rd==x4, rs2_val == 1024,
+// opcode: add ; op1:x28; op2:x20; dest:x4; op1val:0x5; op2val:0x400
+TEST_RR_OP(add, x4, x28, x20, 0x405, 0x5, 0x400, x1, 8, x6)
+
+inst_21:
+// rs1==x8, rs2==x28, rd==x12, rs2_val == 2048, rs1_val == -32769
+// opcode: add ; op1:x8; op2:x28; dest:x12; op1val:-0x8001; op2val:0x800
+TEST_RR_OP(add, x12, x8, x28, 0xffffffffffff87ff, -0x8001, 0x800, x1, 16, x6)
+
+inst_22:
+// rs1==x16, rs2==x5, rd==x11, rs2_val == 4096, rs1_val == 2251799813685248
+// opcode: add ; op1:x16; op2:x5; dest:x11; op1val:0x8000000000000; op2val:0x1000
+TEST_RR_OP(add, x11, x16, x5, 0x8000000001000, 0x8000000000000, 0x1000, x1, 24, x6)
+
+inst_23:
+// rs1==x4, rs2==x24, rd==x29, rs2_val == 8192,
+// opcode: add ; op1:x4; op2:x24; dest:x29; op1val:-0xb504f332; op2val:0x2000
+TEST_RR_OP(add, x29, x4, x24, 0xffffffff4afb2cce, -0xb504f332, 0x2000, x1, 32, x6)
+
+inst_24:
+// rs1==x11, rs2==x29, rd==x3, rs2_val == 16384, rs1_val == -9
+// opcode: add ; op1:x11; op2:x29; dest:x3; op1val:-0x9; op2val:0x4000
+TEST_RR_OP(add, x3, x11, x29, 0x3ff7, -0x9, 0x4000, x1, 40, x6)
+
+inst_25:
+// rs1==x7, rs2==x12, rd==x15, rs2_val == 32768,
+// opcode: add ; op1:x7; op2:x12; dest:x15; op1val:0x4; op2val:0x8000
+TEST_RR_OP(add, x15, x7, x12, 0x8004, 0x4, 0x8000, x1, 48, x6)
+
+inst_26:
+// rs1==x17, rs2==x16, rd==x31, rs2_val == 65536,
+// opcode: add ; op1:x17; op2:x16; dest:x31; op1val:-0x4; op2val:0x10000
+TEST_RR_OP(add, x31, x17, x16, 0xfffc, -0x4, 0x10000, x1, 56, x6)
+
+inst_27:
+// rs1==x31, rs2==x18, rd==x17, rs2_val == 131072,
+// opcode: add ; op1:x31; op2:x18; dest:x17; op1val:-0x8000000000000000; op2val:0x20000
+TEST_RR_OP(add, x17, x31, x18, 0x8000000000020000, -0x8000000000000000, 0x20000, x1, 64, x6)
+
+inst_28:
+// rs1==x5, rs2==x21, rd==x8, rs2_val == 262144,
+// opcode: add ; op1:x5; op2:x21; dest:x8; op1val:0x5; op2val:0x40000
+TEST_RR_OP(add, x8, x5, x21, 0x40005, 0x5, 0x40000, x1, 72, x6)
+
+inst_29:
+// rs1==x24, rs2==x2, rd==x18, rs2_val == 524288, rs1_val == -536870913
+// opcode: add ; op1:x24; op2:x2; dest:x18; op1val:-0x20000001; op2val:0x80000
+TEST_RR_OP(add, x18, x24, x2, 0xffffffffe007ffff, -0x20000001, 0x80000, x1, 80, x6)
+
+inst_30:
+// rs1==x23, rs2==x14, rd==x25, rs2_val == 1048576,
+// opcode: add ; op1:x23; op2:x14; dest:x25; op1val:0x5; op2val:0x100000
+TEST_RR_OP(add, x25, x23, x14, 0x100005, 0x5, 0x100000, x1, 88, x6)
+
+inst_31:
+// rs1==x25, rs2==x8, rd==x28, rs2_val == 2097152, rs1_val == -262145
+// opcode: add ; op1:x25; op2:x8; dest:x28; op1val:-0x40001; op2val:0x200000
+TEST_RR_OP(add, x28, x25, x8, 0x1bffff, -0x40001, 0x200000, x1, 96, x6)
+
+inst_32:
+// rs2_val == 4194304, rs1_val == 8
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x400000
+TEST_RR_OP(add, x12, x10, x11, 0x400008, 0x8, 0x400000, x1, 104, x6)
+
+inst_33:
+// rs2_val == 8388608, rs1_val == -16777217
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:0x800000
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffff7fffff, -0x1000001, 0x800000, x1, 112, x6)
+
+inst_34:
+// rs2_val == 16777216, rs1_val == -2251799813685249
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x8000000000001; op2val:0x1000000
+TEST_RR_OP(add, x12, x10, x11, 0xfff8000000ffffff, -0x8000000000001, 0x1000000, x1, 120, x6)
+
+inst_35:
+// rs2_val == 33554432, rs1_val == 2199023255552
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20000000000; op2val:0x2000000
+TEST_RR_OP(add, x12, x10, x11, 0x20002000000, 0x20000000000, 0x2000000, x1, 128, x6)
+
+inst_36:
+// rs2_val == 67108864,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0x4000000
+TEST_RR_OP(add, x12, x10, x11, 0x3fbffff, -0x40001, 0x4000000, x1, 136, x6)
+
+inst_37:
+// rs2_val == 134217728, rs1_val == 2147483648
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x80000000; op2val:0x8000000
+TEST_RR_OP(add, x12, x10, x11, 0x88000000, 0x80000000, 0x8000000, x1, 144, x6)
+
+inst_38:
+// rs2_val == 268435456, rs1_val == 1073741824
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0x10000000
+TEST_RR_OP(add, x12, x10, x11, 0x50000000, 0x40000000, 0x10000000, x1, 152, x6)
+
+inst_39:
+// rs2_val == 536870912, rs1_val == 16
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0x20000000
+TEST_RR_OP(add, x12, x10, x11, 0x20000010, 0x10, 0x20000000, x1, 160, x6)
+
+inst_40:
+// rs2_val == 1073741824,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x40000000
+TEST_RR_OP(add, x12, x10, x11, 0x3333333373333334, 0x3333333333333334, 0x40000000, x1, 168, x6)
+
+inst_41:
+// rs2_val == 2147483648, rs1_val == 549755813888
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000; op2val:0x80000000
+TEST_RR_OP(add, x12, x10, x11, 0x8080000000, 0x8000000000, 0x80000000, x1, 176, x6)
+
+inst_42:
+// rs2_val == 4294967296, rs1_val == 35184372088832
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x200000000000; op2val:0x100000000
+TEST_RR_OP(add, x12, x10, x11, 0x200100000000, 0x200000000000, 0x100000000, x1, 184, x6)
+
+inst_43:
+// rs2_val == 8589934592, rs1_val == 8192
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x200000000
+TEST_RR_OP(add, x12, x10, x11, 0x200002000, 0x2000, 0x200000000, x1, 192, x6)
+
+inst_44:
+// rs2_val == 17179869184, rs1_val == -8589934593
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x200000001; op2val:0x400000000
+TEST_RR_OP(add, x12, x10, x11, 0x1ffffffff, -0x200000001, 0x400000000, x1, 200, x6)
+
+inst_45:
+// rs2_val == 34359738368,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x800000000
+TEST_RR_OP(add, x12, x10, x11, 0x800002000, 0x2000, 0x800000000, x1, 208, x6)
+
+inst_46:
+// rs2_val == 68719476736, rs1_val == 36028797018963968
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x80000000000000; op2val:0x1000000000
+TEST_RR_OP(add, x12, x10, x11, 0x80001000000000, 0x80000000000000, 0x1000000000, x1, 216, x6)
+
+inst_47:
+// rs2_val == 137438953472,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x200000001; op2val:0x2000000000
+TEST_RR_OP(add, x12, x10, x11, 0x1dffffffff, -0x200000001, 0x2000000000, x1, 224, x6)
+
+inst_48:
+// rs2_val == 274877906944, rs1_val == 6148914691236517205
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x4000000000
+TEST_RR_OP(add, x12, x10, x11, 0x5555559555555555, 0x5555555555555555, 0x4000000000, x1, 232, x6)
+
+inst_49:
+// rs2_val == 549755813888, rs1_val == 8388608
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0x8000000000
+TEST_RR_OP(add, x12, x10, x11, 0x8000800000, 0x800000, 0x8000000000, x1, 240, x6)
+
+inst_50:
+// rs2_val == 1099511627776, rs1_val == -274877906945
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4000000001; op2val:0x10000000000
+TEST_RR_OP(add, x12, x10, x11, 0xbfffffffff, -0x4000000001, 0x10000000000, x1, 248, x6)
+
+inst_51:
+// rs2_val == 2199023255552, rs1_val == -33
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x20000000000
+TEST_RR_OP(add, x12, x10, x11, 0x1ffffffffdf, -0x21, 0x20000000000, x1, 256, x6)
+
+inst_52:
+// rs2_val == 4398046511104, rs1_val == 4194304
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x40000000000
+TEST_RR_OP(add, x12, x10, x11, 0x40000400000, 0x400000, 0x40000000000, x1, 264, x6)
+
+inst_53:
+// rs2_val == 17592186044416, rs1_val == 1099511627776
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10000000000; op2val:0x100000000000
+TEST_RR_OP(add, x12, x10, x11, 0x110000000000, 0x10000000000, 0x100000000000, x1, 272, x6)
+
+inst_54:
+// rs2_val == 35184372088832, rs1_val == 134217728
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0x200000000000
+TEST_RR_OP(add, x12, x10, x11, 0x200008000000, 0x8000000, 0x200000000000, x1, 280, x6)
+
+inst_55:
+// rs2_val == 70368744177664, rs1_val == 72057594037927936
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x100000000000000; op2val:0x400000000000
+TEST_RR_OP(add, x12, x10, x11, 0x100400000000000, 0x100000000000000, 0x400000000000, x1, 288, x6)
+
+inst_56:
+// rs2_val == 140737488355328, rs1_val == 562949953421312
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000; op2val:0x800000000000
+TEST_RR_OP(add, x12, x10, x11, 0x2800000000000, 0x2000000000000, 0x800000000000, x1, 296, x6)
+
+inst_57:
+// rs2_val == 281474976710656, rs1_val == -4503599627370497
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10000000000001; op2val:0x1000000000000
+TEST_RR_OP(add, x12, x10, x11, 0xfff0ffffffffffff, -0x10000000000001, 0x1000000000000, x1, 304, x6)
+
+inst_58:
+// rs2_val == 562949953421312,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10000000000001; op2val:0x2000000000000
+TEST_RR_OP(add, x12, x10, x11, 0xfff1ffffffffffff, -0x10000000000001, 0x2000000000000, x1, 312, x6)
+
+inst_59:
+// rs2_val == 1125899906842624, rs1_val == -2147483649
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80000001; op2val:0x4000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x3ffff7fffffff, -0x80000001, 0x4000000000000, x1, 320, x6)
+
+inst_60:
+// rs2_val == 2251799813685248,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:0x8000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x8000000002000, 0x2000, 0x8000000000000, x1, 328, x6)
+
+inst_61:
+// rs2_val == 4503599627370496,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10000000000001; op2val:0x10000000000000
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffffff, -0x10000000000001, 0x10000000000000, x1, 336, x6)
+
+inst_62:
+// rs2_val == 9007199254740992, rs1_val == 524288
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:0x20000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x20000000080000, 0x80000, 0x20000000000000, x1, 344, x6)
+
+inst_63:
+// rs2_val == 18014398509481984, rs1_val == -2
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x40000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x3ffffffffffffe, -0x2, 0x40000000000000, x1, 352, x6)
+
+inst_64:
+// rs2_val == 72057594037927936, rs1_val == -524289
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:0x100000000000000
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffff7ffff, -0x80001, 0x100000000000000, x1, 360, x6)
+
+inst_65:
+// rs2_val == 144115188075855872, rs1_val == 1152921504606846976
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1000000000000000; op2val:0x200000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x1200000000000000, 0x1000000000000000, 0x200000000000000, x1, 368, x6)
+
+inst_66:
+// rs2_val == 288230376151711744,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x8; op2val:0x400000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x3fffffffffffff8, -0x8, 0x400000000000000, x1, 376, x6)
+
+inst_67:
+// rs2_val == 576460752303423488,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x800000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x800000000000004, 0x4, 0x800000000000000, x1, 384, x6)
+
+inst_68:
+// rs2_val == 1152921504606846976,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x1000000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x7666666666666667, 0x6666666666666667, 0x1000000000000000, x1, 392, x6)
+
+inst_69:
+// rs2_val == 2305843009213693952,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:0x2000000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x1ffffffffff7ffff, -0x80001, 0x2000000000000000, x1, 400, x6)
+
+inst_70:
+// rs2_val == 4611686018427387904,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x4000000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x7333333333333333, 0x3333333333333333, 0x4000000000000000, x1, 408, x6)
+
+inst_71:
+// rs2_val == -2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x2
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffffffe, 0x0, -0x2, x1, 416, x6)
+
+inst_72:
+// rs2_val == -3, rs1_val == -1125899906842625
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4000000000001; op2val:-0x3
+TEST_RR_OP(add, x12, x10, x11, 0xfffbfffffffffffc, -0x4000000000001, -0x3, x1, 424, x6)
+
+inst_73:
+// rs2_val == -5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:-0x5
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555551, 0x5555555555555556, -0x5, x1, 432, x6)
+
+inst_74:
+// rs2_val == -9, rs1_val == -268435457
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10000001; op2val:-0x9
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffeffffff6, -0x10000001, -0x9, x1, 440, x6)
+
+inst_75:
+// rs2_val == -17,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1; op2val:-0x11
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffffee, -0x1, -0x11, x1, 448, x6)
+
+inst_76:
+// rs2_val == -33, rs1_val == -1152921504606846977
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1000000000000001; op2val:-0x21
+TEST_RR_OP(add, x12, x10, x11, 0xefffffffffffffde, -0x1000000000000001, -0x21, x1, 456, x6)
+
+inst_77:
+// rs2_val == -65,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000; op2val:-0x41
+TEST_RR_OP(add, x12, x10, x11, 0x1ffffffffffbf, 0x2000000000000, -0x41, x1, 464, x6)
+
+inst_78:
+// rs2_val == -129,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:-0x81
+TEST_RR_OP(add, x12, x10, x11, 0xb504f2b1, 0xb504f332, -0x81, x1, 472, x6)
+
+inst_79:
+// rs2_val == -513, rs1_val == 32
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:-0x201
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffffe1f, 0x20, -0x201, x1, 480, x6)
+
+inst_80:
+// rs2_val == -1025,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:-0x401
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffffc1f, 0x20, -0x401, x1, 488, x6)
+
+inst_81:
+// rs2_val == -2049, rs1_val == 256
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:-0x801
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffff8ff, 0x100, -0x801, x1, 496, x6)
+
+inst_82:
+// rs2_val == -4097,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:-0x1001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffff7effe, -0x80001, -0x1001, x1, 504, x6)
+
+inst_83:
+// rs2_val == -8193,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1000000000000000; op2val:-0x2001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffdfff, 0x1000000000000000, -0x2001, x1, 512, x6)
+
+inst_84:
+// rs2_val == -16385,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x4001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffc003, 0x4, -0x4001, x1, 520, x6)
+
+inst_85:
+// rs2_val == -32769,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1000000000000001; op2val:-0x8001
+TEST_RR_OP(add, x12, x10, x11, 0xefffffffffff7ffe, -0x1000000000000001, -0x8001, x1, 528, x6)
+
+inst_86:
+// rs2_val == -131073, rs1_val == -65537
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x20001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffcfffe, -0x10001, -0x20001, x1, 536, x6)
+
+inst_87:
+// rs2_val == -262145,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:-0x40001
+TEST_RR_OP(add, x12, x10, x11, 0x3bffff, 0x400000, -0x40001, x1, 544, x6)
+
+inst_88:
+// rs2_val == -524289,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1000001; op2val:-0x80001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffef7fffe, -0x1000001, -0x80001, x1, 552, x6)
+
+inst_89:
+// rs2_val == -1048577,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:-0x100001
+TEST_RR_OP(add, x12, x10, x11, 0x7fffffffffeffffe, 0x7fffffffffffffff, -0x100001, x1, 560, x6)
+
+inst_90:
+// rs2_val == -2097153, rs1_val == -70368744177665
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x400000000001; op2val:-0x200001
+TEST_RR_OP(add, x12, x10, x11, 0xffffbfffffdffffe, -0x400000000001, -0x200001, x1, 568, x6)
+
+inst_91:
+// rs2_val == -4194305, rs1_val == -36028797018963969
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000000001; op2val:-0x400001
+TEST_RR_OP(add, x12, x10, x11, 0xff7fffffffbffffe, -0x80000000000001, -0x400001, x1, 576, x6)
+
+inst_92:
+// rs2_val == -8388609, rs1_val == 1048576
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:-0x800001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffff8fffff, 0x100000, -0x800001, x1, 584, x6)
+
+inst_93:
+// rs2_val == -16777217, rs1_val == 140737488355328
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x800000000000; op2val:-0x1000001
+TEST_RR_OP(add, x12, x10, x11, 0x7ffffeffffff, 0x800000000000, -0x1000001, x1, 592, x6)
+
+inst_94:
+// rs2_val == -33554433, rs1_val == -17592186044417
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x100000000001; op2val:-0x2000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffeffffdfffffe, -0x100000000001, -0x2000001, x1, 600, x6)
+
+inst_95:
+// rs2_val == -67108865,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:-0x4000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffc00ffff, 0x10000, -0x4000001, x1, 608, x6)
+
+inst_96:
+// rs2_val == -134217729,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4; op2val:-0x8000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffff7fffffb, -0x4, -0x8000001, x1, 616, x6)
+
+inst_97:
+// rs2_val == -268435457,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x800000000000; op2val:-0x10000001
+TEST_RR_OP(add, x12, x10, x11, 0x7fffefffffff, 0x800000000000, -0x10000001, x1, 624, x6)
+
+inst_98:
+// rs2_val == -536870913,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:-0x20000001
+TEST_RR_OP(add, x12, x10, x11, 0x1fffffffdfffffff, 0x2000000000000000, -0x20000001, x1, 632, x6)
+
+inst_99:
+// rs2_val == -2147483649, rs1_val == -4194305
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x400001; op2val:-0x80000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff7fbffffe, -0x400001, -0x80000001, x1, 640, x6)
+
+inst_100:
+// rs2_val == -4294967297, rs1_val == 9007199254740992
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20000000000000; op2val:-0x100000001
+TEST_RR_OP(add, x12, x10, x11, 0x1ffffeffffffff, 0x20000000000000, -0x100000001, x1, 648, x6)
+
+inst_101:
+// rs2_val == -8589934593,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:-0x200000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffe003fffff, 0x400000, -0x200000001, x1, 656, x6)
+
+inst_102:
+// rs2_val == -17179869185, rs1_val == -144115188075855873
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x200000000000001; op2val:-0x400000001
+TEST_RR_OP(add, x12, x10, x11, 0xfdfffffbfffffffe, -0x200000000000001, -0x400000001, x1, 664, x6)
+
+inst_103:
+// rs2_val == -34359738369, rs1_val == 274877906944
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000; op2val:-0x800000001
+TEST_RR_OP(add, x12, x10, x11, 0x37ffffffff, 0x4000000000, -0x800000001, x1, 672, x6)
+
+inst_104:
+// rs2_val == -68719476737,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:-0x1000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffef4afb0ccc, -0xb504f333, -0x1000000001, x1, 680, x6)
+
+inst_105:
+// rs2_val == -137438953473,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10001; op2val:-0x2000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffdffffefffe, -0x10001, -0x2000000001, x1, 688, x6)
+
+inst_106:
+// rs2_val == -274877906945,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x41; op2val:-0x4000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffbfffffffbe, -0x41, -0x4000000001, x1, 696, x6)
+
+inst_107:
+// rs2_val == -549755813889,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x8000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffff8000000003, 0x4, -0x8000000001, x1, 704, x6)
+
+inst_108:
+// rs2_val == -1099511627777,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:-0x10000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffff000000003f, 0x40, -0x10000000001, x1, 712, x6)
+
+inst_109:
+// rs2_val == -2199023255553,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10000000000001; op2val:-0x20000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffeffdfffffffffe, -0x10000000000001, -0x20000000001, x1, 720, x6)
+
+inst_110:
+// rs2_val == -4398046511105,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x40000000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffc0000000004, 0x5, -0x40000000001, x1, 728, x6)
+
+inst_111:
+// rs2_val == -8796093022209, rs1_val == -8796093022209
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000001; op2val:-0x80000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffeffffffffffe, -0x80000000001, -0x80000000001, x1, 736, x6)
+
+inst_112:
+// rs2_val == -17592186044417,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:-0x100000000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffff0000000000f, 0x10, -0x100000000001, x1, 744, x6)
+
+inst_113:
+// rs2_val == -35184372088833, rs1_val == -137438953473
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x2000000001; op2val:-0x200000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffdfdffffffffe, -0x2000000001, -0x200000000001, x1, 752, x6)
+
+inst_114:
+// rs2_val == -70368744177665, rs1_val == 1024
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:-0x400000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffc000000003ff, 0x400, -0x400000000001, x1, 760, x6)
+
+inst_115:
+// rs2_val == -140737488355329, rs1_val == 67108864
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:-0x800000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffff800003ffffff, 0x4000000, -0x800000000001, x1, 768, x6)
+
+inst_116:
+// rs2_val == -281474976710657,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000; op2val:-0x1000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffff003fffffffff, 0x4000000000, -0x1000000000001, x1, 776, x6)
+
+inst_117:
+// rs2_val == -562949953421313,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:-0x2000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffe000000001fff, 0x2000, -0x2000000000001, x1, 784, x6)
+
+inst_118:
+// rs2_val == -1125899906842625,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000; op2val:-0x4000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffc003fffffffff, 0x4000000000, -0x4000000000001, x1, 792, x6)
+
+inst_119:
+// rs2_val == -2251799813685249,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x20000001; op2val:-0x8000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xfff7ffffdffffffe, -0x20000001, -0x8000000000001, x1, 800, x6)
+
+inst_120:
+// rs2_val == -4503599627370497,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10000000000; op2val:-0x10000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xfff000ffffffffff, 0x10000000000, -0x10000000000001, x1, 808, x6)
+
+inst_121:
+// rs2_val == -9007199254740993,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:-0x20000000000001
+TEST_RR_OP(add, x12, x10, x11, 0x5535555555555553, 0x5555555555555554, -0x20000000000001, x1, 816, x6)
+
+inst_122:
+// rs2_val == -18014398509481985,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:-0x40000000000001
+TEST_RR_OP(add, x12, x10, x11, 0x5515555555555554, 0x5555555555555555, -0x40000000000001, x1, 824, x6)
+
+inst_123:
+// rs2_val == -36028797018963969,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x80001; op2val:-0x80000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xff7ffffffff7fffe, -0x80001, -0x80000000000001, x1, 832, x6)
+
+inst_124:
+// rs2_val == -72057594037927937,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x100000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xff00000000000004, 0x5, -0x100000000000001, x1, 840, x6)
+
+inst_125:
+// rs2_val == -144115188075855873,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:-0x200000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xa8aaaaaaaaaaaaaa, -0x5555555555555555, -0x200000000000001, x1, 848, x6)
+
+inst_126:
+// rs2_val == -288230376151711745,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x400000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xfbffffffffffffff, 0x0, -0x400000000000001, x1, 856, x6)
+
+inst_127:
+// rs2_val == -576460752303423489,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:-0x800000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xf7ffffffffffffde, -0x21, -0x800000000000001, x1, 864, x6)
+
+inst_128:
+// rs2_val == -1152921504606846977,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:-0x1000000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xf00000000000001f, 0x20, -0x1000000000000001, x1, 872, x6)
+
+inst_129:
+// rs2_val == -2305843009213693953,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:-0x2000000000000001
+TEST_RR_OP(add, x12, x10, x11, 0x8aaaaaaaaaaaaaaa, -0x5555555555555555, -0x2000000000000001, x1, 880, x6)
+
+inst_130:
+// rs2_val == -4611686018427387905, rs1_val == 512
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:-0x4000000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xc0000000000001ff, 0x200, -0x4000000000000001, x1, 888, x6)
+
+inst_131:
+// rs2_val == 6148914691236517205, rs1_val==7378697629483820646 and rs2_val==6148914691236517205
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbb, 0x6666666666666666, 0x5555555555555555, x1, 896, x6)
+
+inst_132:
+// rs2_val == -6148914691236517206, rs1_val == 18014398509481984
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x40000000000000; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaeaaaaaaaaaaaaa, 0x40000000000000, -0x5555555555555556, x1, 904, x6)
+
+inst_133:
+// rs1_val == 2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x10000000000002, 0x2, 0x10000000000000, x1, 912, x6)
+
+inst_134:
+// rs1_val == 128,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0x10000000000
+TEST_RR_OP(add, x12, x10, x11, 0x10000000080, 0x80, 0x10000000000, x1, 920, x6)
+
+inst_135:
+// rs1_val == 2048,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:-0x80000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff800007ff, 0x800, -0x80000001, x1, 928, x6)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x4000000
+TEST_RR_OP(add, x12, x10, x11, 0x4001000, 0x1000, 0x4000000, x1, 936, x6)
+
+inst_137:
+// rs1_val == 16384,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:-0x100001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffff03fff, 0x4000, -0x100001, x1, 944, x6)
+
+inst_138:
+// rs1_val == 32768,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:-0x6
+TEST_RR_OP(add, x12, x10, x11, 0x7ffa, 0x8000, -0x6, x1, 952, x6)
+
+inst_139:
+// rs1_val == 262144,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:-0x40000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffc003ffff, 0x40000, -0x40000001, x1, 960, x6)
+
+inst_140:
+// rs1_val == 2097152,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xb524f334, 0x200000, 0xb504f334, x1, 968, x6)
+
+inst_141:
+// rs1_val == 16777216,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:-0x4001
+TEST_RR_OP(add, x12, x10, x11, 0xffbfff, 0x1000000, -0x4001, x1, 976, x6)
+
+inst_142:
+// rs1_val == 33554432,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:-0x80000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xff80000001ffffff, 0x2000000, -0x80000000000001, x1, 984, x6)
+
+inst_143:
+// rs1_val == 536870912,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x80
+TEST_RR_OP(add, x12, x10, x11, 0x20000080, 0x20000000, 0x80, x1, 992, x6)
+
+inst_144:
+// rs1_val == 4294967296,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x100000000; op2val:-0x8000000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x8000000100000000, 0x100000000, -0x8000000000000000, x1, 1000, x6)
+
+inst_145:
+// rs1_val == 8589934592,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x200000000; op2val:0x4000000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x4000000200000000, 0x200000000, 0x4000000000000000, x1, 1008, x6)
+
+inst_146:
+// rs1_val == 17179869184,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400000000; op2val:0x80000
+TEST_RR_OP(add, x12, x10, x11, 0x400080000, 0x400000000, 0x80000, x1, 1016, x6)
+
+inst_147:
+// rs1_val == 34359738368,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x800000000; op2val:0x20000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x20000800000000, 0x800000000, 0x20000000000000, x1, 1024, x6)
+
+inst_148:
+// rs1_val == 68719476736,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1000000000; op2val:-0x10000001
+TEST_RR_OP(add, x12, x10, x11, 0xfefffffff, 0x1000000000, -0x10000001, x1, 1032, x6)
+
+inst_149:
+// rs1_val == 4398046511104,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x40000000000; op2val:0x200
+TEST_RR_OP(add, x12, x10, x11, 0x40000000200, 0x40000000000, 0x200, x1, 1040, x6)
+
+inst_150:
+// rs1_val == 8796093022208,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x80000000000; op2val:0x4000000
+TEST_RR_OP(add, x12, x10, x11, 0x80004000000, 0x80000000000, 0x4000000, x1, 1048, x6)
+
+inst_151:
+// rs1_val == 17592186044416,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x100000000000; op2val:0x80000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x80100000000000, 0x100000000000, 0x80000000000000, x1, 1056, x6)
+
+inst_152:
+// rs1_val == 70368744177664,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400000000000; op2val:0x800000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x800400000000000, 0x400000000000, 0x800000000000000, x1, 1064, x6)
+
+inst_153:
+// rs1_val == 281474976710656,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1000000000000; op2val:0x40
+TEST_RR_OP(add, x12, x10, x11, 0x1000000000040, 0x1000000000000, 0x40, x1, 1072, x6)
+
+inst_154:
+// rs1_val == 1125899906842624,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000; op2val:0x400000
+TEST_RR_OP(add, x12, x10, x11, 0x4000000400000, 0x4000000000000, 0x400000, x1, 1080, x6)
+
+inst_155:
+// rs1_val == 4503599627370496,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x10000000000000; op2val:0x40
+TEST_RR_OP(add, x12, x10, x11, 0x10000000000040, 0x10000000000000, 0x40, x1, 1088, x6)
+
+inst_156:
+// rs1_val == 144115188075855872,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x200000000000000; op2val:-0x10000001
+TEST_RR_OP(add, x12, x10, x11, 0x1ffffffefffffff, 0x200000000000000, -0x10000001, x1, 1096, x6)
+
+inst_157:
+// rs1_val == 288230376151711744,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x400000000000000; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x5955555555555554, 0x400000000000000, 0x5555555555555554, x1, 1104, x6)
+
+inst_158:
+// rs1_val == 4611686018427387904,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x4000000000000000, 0x4000000000000000, 0x0, x1, 1112, x6)
+
+inst_159:
+// rs1_val == -3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x3; op2val:-0x6
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffffff7, -0x3, -0x6, x1, 1120, x6)
+
+inst_160:
+// rs1_val == -17,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x4000000
+TEST_RR_OP(add, x12, x10, x11, 0x3ffffef, -0x11, 0x4000000, x1, 1128, x6)
+
+inst_161:
+// rs1_val == -129,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffff7f, -0x81, 0x0, x1, 1136, x6)
+
+inst_162:
+// rs1_val == -257,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x101; op2val:0x200
+TEST_RR_OP(add, x12, x10, x11, 0xff, -0x101, 0x200, x1, 1144, x6)
+
+inst_163:
+// rs1_val == -513,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:-0x4000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffbfffdfe, -0x201, -0x4000001, x1, 1152, x6)
+
+inst_164:
+// rs1_val == -1025,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x401; op2val:-0x5
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffffbfa, -0x401, -0x5, x1, 1160, x6)
+
+inst_165:
+// rs1_val == -2049,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x801; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333332b31, -0x801, 0x3333333333333332, x1, 1168, x6)
+
+inst_166:
+// rs1_val == -4097,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1001; op2val:-0x200001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffdfeffe, -0x1001, -0x200001, x1, 1176, x6)
+
+inst_167:
+// rs1_val == -8193,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x2001; op2val:-0x4000000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xbfffffffffffdffe, -0x2001, -0x4000000000000001, x1, 1184, x6)
+
+inst_168:
+// rs1_val == -16385,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4001; op2val:-0x100001
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffefbffe, -0x4001, -0x100001, x1, 1192, x6)
+
+inst_169:
+// rs1_val == -131073,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x20001; op2val:0x8
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffe0007, -0x20001, 0x8, x1, 1200, x6)
+
+inst_170:
+// rs1_val == -1048577,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x100001; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666566664, -0x100001, 0x6666666666666665, x1, 1208, x6)
+
+inst_171:
+// rs1_val == -2097153,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:-0x80000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xff7fffffffdffffe, -0x200001, -0x80000000000001, x1, 1216, x6)
+
+inst_172:
+// rs1_val == -33554433,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x2000001; op2val:0x4000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x3fffffdffffff, -0x2000001, 0x4000000000000, x1, 1224, x6)
+
+inst_173:
+// rs1_val == -67108865,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4000001; op2val:0x8000000
+TEST_RR_OP(add, x12, x10, x11, 0x3ffffff, -0x4000001, 0x8000000, x1, 1232, x6)
+
+inst_174:
+// rs1_val == -134217729,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x8000001; op2val:-0x1000000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xeffffffff7fffffe, -0x8000001, -0x1000000000000001, x1, 1240, x6)
+
+inst_175:
+// rs1_val == -1073741825,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x40000001; op2val:0x4000000
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffc3ffffff, -0x40000001, 0x4000000, x1, 1248, x6)
+
+inst_176:
+// rs1_val == -4294967297,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x100000001; op2val:-0x200000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffffdffefffffffe, -0x100000001, -0x200000000001, x1, 1256, x6)
+
+inst_177:
+// rs1_val == -17179869185,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x400000001; op2val:-0x20000000000001
+TEST_RR_OP(add, x12, x10, x11, 0xffdffffbfffffffe, -0x400000001, -0x20000000000001, x1, 1264, x6)
+
+inst_178:
+// rs1_val == -34359738369,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x800000001; op2val:0x400000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x3fffff7ffffffff, -0x800000001, 0x400000000000000, x1, 1272, x6)
+
+inst_179:
+// rs1_val == -68719476737,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1000000001; op2val:-0x4
+TEST_RR_OP(add, x12, x10, x11, 0xffffffeffffffffb, -0x1000000001, -0x4, x1, 1280, x6)
+
+inst_180:
+// rs1_val == -549755813889,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x8000000001; op2val:0x10000000000
+TEST_RR_OP(add, x12, x10, x11, 0x7fffffffff, -0x8000000001, 0x10000000000, x1, 1288, x6)
+
+inst_181:
+// rs1_val == -1099511627777,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x10000000001; op2val:0x2000
+TEST_RR_OP(add, x12, x10, x11, 0xffffff0000001fff, -0x10000000001, 0x2000, x1, 1296, x6)
+
+inst_182:
+// rs1_val == -2199023255553,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x20000000001; op2val:0x10000000000
+TEST_RR_OP(add, x12, x10, x11, 0xfffffeffffffffff, -0x20000000001, 0x10000000000, x1, 1304, x6)
+
+inst_183:
+// rs1_val == -4398046511105,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x40000000001; op2val:-0x40000000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffff7fffffffffe, -0x40000000001, -0x40000000001, x1, 1312, x6)
+
+inst_184:
+// rs1_val == -35184372088833,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x200000000001; op2val:-0x8001
+TEST_RR_OP(add, x12, x10, x11, 0xffffdfffffff7ffe, -0x200000000001, -0x8001, x1, 1320, x6)
+
+inst_185:
+// rs1_val == -140737488355329,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x800000000001; op2val:0x20000000000000
+TEST_RR_OP(add, x12, x10, x11, 0x1f7fffffffffff, -0x800000000001, 0x20000000000000, x1, 1328, x6)
+
+inst_186:
+// rs1_val == -281474976710657,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x1000000000001; op2val:-0x800000001
+TEST_RR_OP(add, x12, x10, x11, 0xfffefff7fffffffe, -0x1000000000001, -0x800000001, x1, 1336, x6)
+
+inst_187:
+// rs1_val == -562949953421313,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x2000000000001; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xfffe0000b504f332, -0x2000000000001, 0xb504f333, x1, 1344, x6)
+
+inst_188:
+// rs1_val == -18014398509481985,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x40000000000001; op2val:-0x3
+TEST_RR_OP(add, x12, x10, x11, 0xffbffffffffffffc, -0x40000000000001, -0x3, x1, 1352, x6)
+
+inst_189:
+// rs1_val == -72057594037927937,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x100000000000001; op2val:-0x801
+TEST_RR_OP(add, x12, x10, x11, 0xfefffffffffff7fe, -0x100000000000001, -0x801, x1, 1360, x6)
+
+inst_190:
+// rs1_val == -288230376151711745,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x400000000000001; op2val:0x1000000000000000
+TEST_RR_OP(add, x12, x10, x11, 0xbffffffffffffff, -0x400000000000001, 0x1000000000000000, x1, 1368, x6)
+
+inst_191:
+// rs1_val == -576460752303423489,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x800000000000001; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xf8000000b504f331, -0x800000000000001, 0xb504f332, x1, 1376, x6)
+
+inst_192:
+// rs1_val == -2305843009213693953,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x2000000000000001; op2val:0x800000000000000
+TEST_RR_OP(add, x12, x10, x11, 0xe7ffffffffffffff, -0x2000000000000001, 0x800000000000000, x1, 1384, x6)
+
+inst_193:
+// rs1_val == -4611686018427387905,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x4000000000000001; op2val:-0x401
+TEST_RR_OP(add, x12, x10, x11, 0xbffffffffffffbfe, -0x4000000000000001, -0x401, x1, 1392, x6)
+
+inst_194:
+// rs1_val == -6148914691236517206, rs1_val==-6148914691236517206 and rs2_val==0
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaa, -0x5555555555555556, 0x0, x1, 1400, x6)
+
+inst_195:
+// rs1_val==3 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x3, 0x3, x1, 1408, x6)
+
+inst_196:
+// rs1_val==3 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555558, 0x3, 0x5555555555555555, x1, 1416, x6)
+
+inst_197:
+// rs1_val==3 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaad, 0x3, -0x5555555555555556, x1, 1424, x6)
+
+inst_198:
+// rs1_val==3 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x3, 0x5, x1, 1432, x6)
+
+inst_199:
+// rs1_val==3 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333336, 0x3, 0x3333333333333333, x1, 1440, x6)
+
+inst_200:
+// rs1_val==3 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666669, 0x3, 0x6666666666666666, x1, 1448, x6)
+
+inst_201:
+// rs1_val==3 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd0, 0x3, -0xb504f333, x1, 1456, x6)
+
+inst_202:
+// rs1_val==3 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xb504f336, 0x3, 0xb504f333, x1, 1464, x6)
+
+inst_203:
+// rs1_val==3 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x5, 0x3, 0x2, x1, 1472, x6)
+
+inst_204:
+// rs1_val==3 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555557, 0x3, 0x5555555555555554, x1, 1480, x6)
+
+inst_205:
+// rs1_val==3 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x3, 0x3, 0x0, x1, 1488, x6)
+
+inst_206:
+// rs1_val==3 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x7, 0x3, 0x4, x1, 1496, x6)
+
+inst_207:
+// rs1_val==3 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333335, 0x3, 0x3333333333333332, x1, 1504, x6)
+
+inst_208:
+// rs1_val==3 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666668, 0x3, 0x6666666666666665, x1, 1512, x6)
+
+inst_209:
+// rs1_val==3 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xb504f335, 0x3, 0xb504f332, x1, 1520, x6)
+
+inst_210:
+// rs1_val==3 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555559, 0x3, 0x5555555555555556, x1, 1528, x6)
+
+inst_211:
+// rs1_val==3 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaae, 0x3, -0x5555555555555555, x1, 1536, x6)
+
+inst_212:
+// rs1_val==3 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x9, 0x3, 0x6, x1, 1544, x6)
+
+inst_213:
+// rs1_val==3 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333337, 0x3, 0x3333333333333334, x1, 1552, x6)
+
+inst_214:
+// rs1_val==3 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666a, 0x3, 0x6666666666666667, x1, 1560, x6)
+
+inst_215:
+// rs1_val==3 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd1, 0x3, -0xb504f332, x1, 1568, x6)
+
+inst_216:
+// rs1_val==3 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xb504f337, 0x3, 0xb504f334, x1, 1576, x6)
+
+inst_217:
+// rs1_val==6148914691236517205 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555558, 0x5555555555555555, 0x3, x1, 1584, x6)
+
+inst_218:
+// rs1_val==6148914691236517205 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaa, 0x5555555555555555, 0x5555555555555555, x1, 1592, x6)
+
+inst_219:
+// rs1_val==6148914691236517205 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffffff, 0x5555555555555555, -0x5555555555555556, x1, 1600, x6)
+
+inst_220:
+// rs1_val==6148914691236517205 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555a, 0x5555555555555555, 0x5, x1, 1608, x6)
+
+inst_221:
+// rs1_val==6148914691236517205 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888888, 0x5555555555555555, 0x3333333333333333, x1, 1616, x6)
+
+inst_222:
+// rs1_val==6148914691236517205 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbb, 0x5555555555555555, 0x6666666666666666, x1, 1624, x6)
+
+inst_223:
+// rs1_val==6148914691236517205 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506222, 0x5555555555555555, -0xb504f333, x1, 1632, x6)
+
+inst_224:
+// rs1_val==6148914691236517205 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4888, 0x5555555555555555, 0xb504f333, x1, 1640, x6)
+
+inst_225:
+// rs1_val==6148914691236517205 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555557, 0x5555555555555555, 0x2, x1, 1648, x6)
+
+inst_226:
+// rs1_val==6148914691236517205 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaa9, 0x5555555555555555, 0x5555555555555554, x1, 1656, x6)
+
+inst_227:
+// rs1_val==6148914691236517205 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555555, 0x5555555555555555, 0x0, x1, 1664, x6)
+
+inst_228:
+// rs1_val==6148914691236517205 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555559, 0x5555555555555555, 0x4, x1, 1672, x6)
+
+inst_229:
+// rs1_val==6148914691236517205 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888887, 0x5555555555555555, 0x3333333333333332, x1, 1680, x6)
+
+inst_230:
+// rs1_val==6148914691236517205 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbba, 0x5555555555555555, 0x6666666666666665, x1, 1688, x6)
+
+inst_231:
+// rs1_val==6148914691236517205 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4887, 0x5555555555555555, 0xb504f332, x1, 1696, x6)
+
+inst_232:
+// rs1_val==6148914691236517205 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaab, 0x5555555555555555, 0x5555555555555556, x1, 1704, x6)
+
+inst_233:
+// rs1_val==6148914691236517205 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0x5555555555555555, -0x5555555555555555, x1, 1712, x6)
+
+inst_234:
+// rs1_val==6148914691236517205 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555b, 0x5555555555555555, 0x6, x1, 1720, x6)
+
+inst_235:
+// rs1_val==6148914691236517205 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888889, 0x5555555555555555, 0x3333333333333334, x1, 1728, x6)
+
+inst_236:
+// rs1_val==6148914691236517205 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbc, 0x5555555555555555, 0x6666666666666667, x1, 1736, x6)
+
+inst_237:
+// rs1_val==6148914691236517205 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506223, 0x5555555555555555, -0xb504f332, x1, 1744, x6)
+
+inst_238:
+// rs1_val==6148914691236517205 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4889, 0x5555555555555555, 0xb504f334, x1, 1752, x6)
+
+inst_239:
+// rs1_val==-6148914691236517206 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaad, -0x5555555555555556, 0x3, x1, 1760, x6)
+
+inst_240:
+// rs1_val==-6148914691236517206 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffffff, -0x5555555555555556, 0x5555555555555555, x1, 1768, x6)
+
+inst_241:
+// rs1_val==-6148914691236517206 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555554, -0x5555555555555556, -0x5555555555555556, x1, 1776, x6)
+
+inst_242:
+// rs1_val==-6148914691236517206 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaf, -0x5555555555555556, 0x5, x1, 1784, x6)
+
+inst_243:
+// rs1_val==-6148914691236517206 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddddddddddd, -0x5555555555555556, 0x3333333333333333, x1, 1792, x6)
+
+inst_244:
+// rs1_val==-6148914691236517206 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111110, -0x5555555555555556, 0x6666666666666666, x1, 1800, x6)
+
+inst_245:
+// rs1_val==-6148914691236517206 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9f5a5b777, -0x5555555555555556, -0xb504f333, x1, 1808, x6)
+
+inst_246:
+// rs1_val==-6148914691236517206 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9ddd, -0x5555555555555556, 0xb504f333, x1, 1816, x6)
+
+inst_247:
+// rs1_val==-6148914691236517206 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaac, -0x5555555555555556, 0x2, x1, 1824, x6)
+
+inst_248:
+// rs1_val==-6148914691236517206 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffffffe, -0x5555555555555556, 0x5555555555555554, x1, 1832, x6)
+
+inst_249:
+// rs1_val==-6148914691236517206 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaae, -0x5555555555555556, 0x4, x1, 1840, x6)
+
+inst_250:
+// rs1_val==-6148914691236517206 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddddddddddc, -0x5555555555555556, 0x3333333333333332, x1, 1848, x6)
+
+inst_251:
+// rs1_val==-6148914691236517206 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x111111111111110f, -0x5555555555555556, 0x6666666666666665, x1, 1856, x6)
+
+inst_252:
+// rs1_val==-6148914691236517206 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9ddc, -0x5555555555555556, 0xb504f332, x1, 1864, x6)
+
+inst_253:
+// rs1_val==-6148914691236517206 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x0, -0x5555555555555556, 0x5555555555555556, x1, 1872, x6)
+
+inst_254:
+// rs1_val==-6148914691236517206 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555555, -0x5555555555555556, -0x5555555555555555, x1, 1880, x6)
+
+inst_255:
+// rs1_val==-6148914691236517206 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaab0, -0x5555555555555556, 0x6, x1, 1888, x6)
+
+inst_256:
+// rs1_val==-6148914691236517206 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0xddddddddddddddde, -0x5555555555555556, 0x3333333333333334, x1, 1896, x6)
+
+inst_257:
+// rs1_val==-6148914691236517206 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111111, -0x5555555555555556, 0x6666666666666667, x1, 1904, x6)
+
+inst_258:
+// rs1_val==-6148914691236517206 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9f5a5b778, -0x5555555555555556, -0xb504f332, x1, 1912, x6)
+
+inst_259:
+// rs1_val==-6148914691236517206 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9dde, -0x5555555555555556, 0xb504f334, x1, 1920, x6)
+
+inst_260:
+// rs1_val==5 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x5, 0x3, x1, 1928, x6)
+
+inst_261:
+// rs1_val==5 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555a, 0x5, 0x5555555555555555, x1, 1936, x6)
+
+inst_262:
+// rs1_val==5 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaf, 0x5, -0x5555555555555556, x1, 1944, x6)
+
+inst_263:
+// rs1_val==5 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xa, 0x5, 0x5, x1, 1952, x6)
+
+inst_264:
+// rs1_val==5 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333338, 0x5, 0x3333333333333333, x1, 1960, x6)
+
+inst_265:
+// rs1_val==5 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666b, 0x5, 0x6666666666666666, x1, 1968, x6)
+
+inst_266:
+// rs1_val==5 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd2, 0x5, -0xb504f333, x1, 1976, x6)
+
+inst_267:
+// rs1_val==5 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xb504f338, 0x5, 0xb504f333, x1, 1984, x6)
+
+inst_268:
+// rs1_val==5 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x7, 0x5, 0x2, x1, 1992, x6)
+
+inst_269:
+// rs1_val==5 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555559, 0x5, 0x5555555555555554, x1, 2000, x6)
+
+inst_270:
+// rs1_val==5 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x5, 0x5, 0x0, x1, 2008, x6)
+
+inst_271:
+// rs1_val==5 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x9, 0x5, 0x4, x1, 2016, x6)
+
+inst_272:
+// rs1_val==5 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333337, 0x5, 0x3333333333333332, x1, 2024, x6)
+
+inst_273:
+// rs1_val==5 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666a, 0x5, 0x6666666666666665, x1, 2032, x6)
+
+inst_274:
+// rs1_val==5 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xb504f337, 0x5, 0xb504f332, x1, 2040, x6)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_275:
+// rs1_val==5 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555b, 0x5, 0x5555555555555556, x1, 0, x6)
+
+inst_276:
+// rs1_val==5 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaab0, 0x5, -0x5555555555555555, x1, 8, x6)
+
+inst_277:
+// rs1_val==5 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xb, 0x5, 0x6, x1, 16, x6)
+
+inst_278:
+// rs1_val==5 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333339, 0x5, 0x3333333333333334, x1, 24, x6)
+
+inst_279:
+// rs1_val==5 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666c, 0x5, 0x6666666666666667, x1, 32, x6)
+
+inst_280:
+// rs1_val==5 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd3, 0x5, -0xb504f332, x1, 40, x6)
+
+inst_281:
+// rs1_val==5 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xb504f339, 0x5, 0xb504f334, x1, 48, x6)
+
+inst_282:
+// rs1_val==3689348814741910323 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333336, 0x3333333333333333, 0x3, x1, 56, x6)
+
+inst_283:
+// rs1_val==3689348814741910323 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888888, 0x3333333333333333, 0x5555555555555555, x1, 64, x6)
+
+inst_284:
+// rs1_val==3689348814741910323 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddddddddddd, 0x3333333333333333, -0x5555555555555556, x1, 72, x6)
+
+inst_285:
+// rs1_val==3689348814741910323 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333338, 0x3333333333333333, 0x5, x1, 80, x6)
+
+inst_286:
+// rs1_val==3689348814741910323 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666666, 0x3333333333333333, 0x3333333333333333, x1, 88, x6)
+
+inst_287:
+// rs1_val==3689348814741910323 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999999, 0x3333333333333333, 0x6666666666666666, x1, 96, x6)
+
+inst_288:
+// rs1_val==3689348814741910323 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4000, 0x3333333333333333, -0xb504f333, x1, 104, x6)
+
+inst_289:
+// rs1_val==3689348814741910323 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382666, 0x3333333333333333, 0xb504f333, x1, 112, x6)
+
+inst_290:
+// rs1_val==3689348814741910323 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333335, 0x3333333333333333, 0x2, x1, 120, x6)
+
+inst_291:
+// rs1_val==3689348814741910323 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888887, 0x3333333333333333, 0x5555555555555554, x1, 128, x6)
+
+inst_292:
+// rs1_val==3689348814741910323 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333333, 0x3333333333333333, 0x0, x1, 136, x6)
+
+inst_293:
+// rs1_val==3689348814741910323 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333337, 0x3333333333333333, 0x4, x1, 144, x6)
+
+inst_294:
+// rs1_val==3689348814741910323 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666665, 0x3333333333333333, 0x3333333333333332, x1, 152, x6)
+
+inst_295:
+// rs1_val==3689348814741910323 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999998, 0x3333333333333333, 0x6666666666666665, x1, 160, x6)
+
+inst_296:
+// rs1_val==3689348814741910323 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382665, 0x3333333333333333, 0xb504f332, x1, 168, x6)
+
+inst_297:
+// rs1_val==3689348814741910323 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888889, 0x3333333333333333, 0x5555555555555556, x1, 176, x6)
+
+inst_298:
+// rs1_val==3689348814741910323 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xddddddddddddddde, 0x3333333333333333, -0x5555555555555555, x1, 184, x6)
+
+inst_299:
+// rs1_val==3689348814741910323 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333339, 0x3333333333333333, 0x6, x1, 192, x6)
+
+inst_300:
+// rs1_val==3689348814741910323 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666667, 0x3333333333333333, 0x3333333333333334, x1, 200, x6)
+
+inst_301:
+// rs1_val==3689348814741910323 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x999999999999999a, 0x3333333333333333, 0x6666666666666667, x1, 208, x6)
+
+inst_302:
+// rs1_val==3689348814741910323 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4001, 0x3333333333333333, -0xb504f332, x1, 216, x6)
+
+inst_303:
+// rs1_val==3689348814741910323 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333333; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382667, 0x3333333333333333, 0xb504f334, x1, 224, x6)
+
+inst_304:
+// rs1_val==7378697629483820646 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666669, 0x6666666666666666, 0x3, x1, 232, x6)
+
+inst_305:
+// rs1_val==7378697629483820646 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111110, 0x6666666666666666, -0x5555555555555556, x1, 240, x6)
+
+inst_306:
+// rs1_val==7378697629483820646 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666b, 0x6666666666666666, 0x5, x1, 248, x6)
+
+inst_307:
+// rs1_val==7378697629483820646 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999999, 0x6666666666666666, 0x3333333333333333, x1, 256, x6)
+
+inst_308:
+// rs1_val==7378697629483820646 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccccccccccc, 0x6666666666666666, 0x6666666666666666, x1, 264, x6)
+
+inst_309:
+// rs1_val==7378697629483820646 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617333, 0x6666666666666666, -0xb504f333, x1, 272, x6)
+
+inst_310:
+// rs1_val==7378697629483820646 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5999, 0x6666666666666666, 0xb504f333, x1, 280, x6)
+
+inst_311:
+// rs1_val==7378697629483820646 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666668, 0x6666666666666666, 0x2, x1, 288, x6)
+
+inst_312:
+// rs1_val==7378697629483820646 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbba, 0x6666666666666666, 0x5555555555555554, x1, 296, x6)
+
+inst_313:
+// rs1_val==7378697629483820646 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666666, 0x6666666666666666, 0x0, x1, 304, x6)
+
+inst_314:
+// rs1_val==7378697629483820646 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666a, 0x6666666666666666, 0x4, x1, 312, x6)
+
+inst_315:
+// rs1_val==7378697629483820646 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999998, 0x6666666666666666, 0x3333333333333332, x1, 320, x6)
+
+inst_316:
+// rs1_val==7378697629483820646 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccccccccccb, 0x6666666666666666, 0x6666666666666665, x1, 328, x6)
+
+inst_317:
+// rs1_val==7378697629483820646 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5998, 0x6666666666666666, 0xb504f332, x1, 336, x6)
+
+inst_318:
+// rs1_val==7378697629483820646 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbc, 0x6666666666666666, 0x5555555555555556, x1, 344, x6)
+
+inst_319:
+// rs1_val==7378697629483820646 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111111, 0x6666666666666666, -0x5555555555555555, x1, 352, x6)
+
+inst_320:
+// rs1_val==7378697629483820646 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666c, 0x6666666666666666, 0x6, x1, 360, x6)
+
+inst_321:
+// rs1_val==7378697629483820646 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x999999999999999a, 0x6666666666666666, 0x3333333333333334, x1, 368, x6)
+
+inst_322:
+// rs1_val==7378697629483820646 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccccccccccd, 0x6666666666666666, 0x6666666666666667, x1, 376, x6)
+
+inst_323:
+// rs1_val==7378697629483820646 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617334, 0x6666666666666666, -0xb504f332, x1, 384, x6)
+
+inst_324:
+// rs1_val==7378697629483820646 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666666; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b599a, 0x6666666666666666, 0xb504f334, x1, 392, x6)
+
+inst_325:
+// rs1_val==-3037000499 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd0, -0xb504f333, 0x3, x1, 400, x6)
+
+inst_326:
+// rs1_val==-3037000499 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506222, -0xb504f333, 0x5555555555555555, x1, 408, x6)
+
+inst_327:
+// rs1_val==-3037000499 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9f5a5b777, -0xb504f333, -0x5555555555555556, x1, 416, x6)
+
+inst_328:
+// rs1_val==-3037000499 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd2, -0xb504f333, 0x5, x1, 424, x6)
+
+inst_329:
+// rs1_val==-3037000499 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4000, -0xb504f333, 0x3333333333333333, x1, 432, x6)
+
+inst_330:
+// rs1_val==-3037000499 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617333, -0xb504f333, 0x6666666666666666, x1, 440, x6)
+
+inst_331:
+// rs1_val==-3037000499 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffe95f6199a, -0xb504f333, -0xb504f333, x1, 448, x6)
+
+inst_332:
+// rs1_val==-3037000499 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x0, -0xb504f333, 0xb504f333, x1, 456, x6)
+
+inst_333:
+// rs1_val==-3037000499 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0ccf, -0xb504f333, 0x2, x1, 464, x6)
+
+inst_334:
+// rs1_val==-3037000499 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506221, -0xb504f333, 0x5555555555555554, x1, 472, x6)
+
+inst_335:
+// rs1_val==-3037000499 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0ccd, -0xb504f333, 0x0, x1, 480, x6)
+
+inst_336:
+// rs1_val==-3037000499 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd1, -0xb504f333, 0x4, x1, 488, x6)
+
+inst_337:
+// rs1_val==-3037000499 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e3fff, -0xb504f333, 0x3333333333333332, x1, 496, x6)
+
+inst_338:
+// rs1_val==-3037000499 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617332, -0xb504f333, 0x6666666666666665, x1, 504, x6)
+
+inst_339:
+// rs1_val==-3037000499 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffffff, -0xb504f333, 0xb504f332, x1, 512, x6)
+
+inst_340:
+// rs1_val==-3037000499 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506223, -0xb504f333, 0x5555555555555556, x1, 520, x6)
+
+inst_341:
+// rs1_val==-3037000499 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9f5a5b778, -0xb504f333, -0x5555555555555555, x1, 528, x6)
+
+inst_342:
+// rs1_val==-3037000499 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd3, -0xb504f333, 0x6, x1, 536, x6)
+
+inst_343:
+// rs1_val==-3037000499 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4001, -0xb504f333, 0x3333333333333334, x1, 544, x6)
+
+inst_344:
+// rs1_val==-3037000499 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617334, -0xb504f333, 0x6666666666666667, x1, 552, x6)
+
+inst_345:
+// rs1_val==-3037000499 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffe95f6199b, -0xb504f333, -0xb504f332, x1, 560, x6)
+
+inst_346:
+// rs1_val==-3037000499 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f333; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x1, -0xb504f333, 0xb504f334, x1, 568, x6)
+
+inst_347:
+// rs1_val==3037000499 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xb504f336, 0xb504f333, 0x3, x1, 576, x6)
+
+inst_348:
+// rs1_val==3037000499 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4888, 0xb504f333, 0x5555555555555555, x1, 584, x6)
+
+inst_349:
+// rs1_val==3037000499 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9ddd, 0xb504f333, -0x5555555555555556, x1, 592, x6)
+
+inst_350:
+// rs1_val==3037000499 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xb504f338, 0xb504f333, 0x5, x1, 600, x6)
+
+inst_351:
+// rs1_val==3037000499 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382666, 0xb504f333, 0x3333333333333333, x1, 608, x6)
+
+inst_352:
+// rs1_val==3037000499 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5999, 0xb504f333, 0x6666666666666666, x1, 616, x6)
+
+inst_353:
+// rs1_val==3037000499 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0xb504f333, -0xb504f333, x1, 624, x6)
+
+inst_354:
+// rs1_val==3037000499 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e666, 0xb504f333, 0xb504f333, x1, 632, x6)
+
+inst_355:
+// rs1_val==3037000499 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xb504f335, 0xb504f333, 0x2, x1, 640, x6)
+
+inst_356:
+// rs1_val==3037000499 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4887, 0xb504f333, 0x5555555555555554, x1, 648, x6)
+
+inst_357:
+// rs1_val==3037000499 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xb504f333, 0xb504f333, 0x0, x1, 656, x6)
+
+inst_358:
+// rs1_val==3037000499 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xb504f337, 0xb504f333, 0x4, x1, 664, x6)
+
+inst_359:
+// rs1_val==3037000499 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382665, 0xb504f333, 0x3333333333333332, x1, 672, x6)
+
+inst_360:
+// rs1_val==3037000499 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5998, 0xb504f333, 0x6666666666666665, x1, 680, x6)
+
+inst_361:
+// rs1_val==3037000499 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e665, 0xb504f333, 0xb504f332, x1, 688, x6)
+
+inst_362:
+// rs1_val==3037000499 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4889, 0xb504f333, 0x5555555555555556, x1, 696, x6)
+
+inst_363:
+// rs1_val==3037000499 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9dde, 0xb504f333, -0x5555555555555555, x1, 704, x6)
+
+inst_364:
+// rs1_val==3037000499 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xb504f339, 0xb504f333, 0x6, x1, 712, x6)
+
+inst_365:
+// rs1_val==3037000499 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382667, 0xb504f333, 0x3333333333333334, x1, 720, x6)
+
+inst_366:
+// rs1_val==3037000499 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b599a, 0xb504f333, 0x6666666666666667, x1, 728, x6)
+
+inst_367:
+// rs1_val==3037000499 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x1, 0xb504f333, -0xb504f332, x1, 736, x6)
+
+inst_368:
+// rs1_val==3037000499 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f333; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e667, 0xb504f333, 0xb504f334, x1, 744, x6)
+
+inst_369:
+// rs1_val==2 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x5, 0x2, 0x3, x1, 752, x6)
+
+inst_370:
+// rs1_val==2 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555557, 0x2, 0x5555555555555555, x1, 760, x6)
+
+inst_371:
+// rs1_val==2 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaac, 0x2, -0x5555555555555556, x1, 768, x6)
+
+inst_372:
+// rs1_val==2 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x7, 0x2, 0x5, x1, 776, x6)
+
+inst_373:
+// rs1_val==2 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333335, 0x2, 0x3333333333333333, x1, 784, x6)
+
+inst_374:
+// rs1_val==2 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666668, 0x2, 0x6666666666666666, x1, 792, x6)
+
+inst_375:
+// rs1_val==2 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0ccf, 0x2, -0xb504f333, x1, 800, x6)
+
+inst_376:
+// rs1_val==2 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xb504f335, 0x2, 0xb504f333, x1, 808, x6)
+
+inst_377:
+// rs1_val==2 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x4, 0x2, 0x2, x1, 816, x6)
+
+inst_378:
+// rs1_val==2 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555556, 0x2, 0x5555555555555554, x1, 824, x6)
+
+inst_379:
+// rs1_val==2 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x2, 0x2, 0x0, x1, 832, x6)
+
+inst_380:
+// rs1_val==2 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x2, 0x4, x1, 840, x6)
+
+inst_381:
+// rs1_val==2 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333334, 0x2, 0x3333333333333332, x1, 848, x6)
+
+inst_382:
+// rs1_val==2 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666667, 0x2, 0x6666666666666665, x1, 856, x6)
+
+inst_383:
+// rs1_val==2 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xb504f334, 0x2, 0xb504f332, x1, 864, x6)
+
+inst_384:
+// rs1_val==2 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555558, 0x2, 0x5555555555555556, x1, 872, x6)
+
+inst_385:
+// rs1_val==2 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaad, 0x2, -0x5555555555555555, x1, 880, x6)
+
+inst_386:
+// rs1_val==2 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x2, 0x6, x1, 888, x6)
+
+inst_387:
+// rs1_val==2 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333336, 0x2, 0x3333333333333334, x1, 896, x6)
+
+inst_388:
+// rs1_val==2 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666669, 0x2, 0x6666666666666667, x1, 904, x6)
+
+inst_389:
+// rs1_val==2 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd0, 0x2, -0xb504f332, x1, 912, x6)
+
+inst_390:
+// rs1_val==2 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xb504f336, 0x2, 0xb504f334, x1, 920, x6)
+
+inst_391:
+// rs1_val==6148914691236517204 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555557, 0x5555555555555554, 0x3, x1, 928, x6)
+
+inst_392:
+// rs1_val==6148914691236517204 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaa9, 0x5555555555555554, 0x5555555555555555, x1, 936, x6)
+
+inst_393:
+// rs1_val==6148914691236517204 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffffffffffe, 0x5555555555555554, -0x5555555555555556, x1, 944, x6)
+
+inst_394:
+// rs1_val==6148914691236517204 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555559, 0x5555555555555554, 0x5, x1, 952, x6)
+
+inst_395:
+// rs1_val==6148914691236517204 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888887, 0x5555555555555554, 0x3333333333333333, x1, 960, x6)
+
+inst_396:
+// rs1_val==6148914691236517204 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbba, 0x5555555555555554, 0x6666666666666666, x1, 968, x6)
+
+inst_397:
+// rs1_val==6148914691236517204 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506221, 0x5555555555555554, -0xb504f333, x1, 976, x6)
+
+inst_398:
+// rs1_val==6148914691236517204 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4887, 0x5555555555555554, 0xb504f333, x1, 984, x6)
+
+inst_399:
+// rs1_val==6148914691236517204 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555556, 0x5555555555555554, 0x2, x1, 992, x6)
+
+inst_400:
+// rs1_val==6148914691236517204 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaa8, 0x5555555555555554, 0x5555555555555554, x1, 1000, x6)
+
+inst_401:
+// rs1_val==6148914691236517204 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555554, 0x5555555555555554, 0x0, x1, 1008, x6)
+
+inst_402:
+// rs1_val==6148914691236517204 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555558, 0x5555555555555554, 0x4, x1, 1016, x6)
+
+inst_403:
+// rs1_val==6148914691236517204 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888886, 0x5555555555555554, 0x3333333333333332, x1, 1024, x6)
+
+inst_404:
+// rs1_val==6148914691236517204 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbb9, 0x5555555555555554, 0x6666666666666665, x1, 1032, x6)
+
+inst_405:
+// rs1_val==6148914691236517204 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4886, 0x5555555555555554, 0xb504f332, x1, 1040, x6)
+
+inst_406:
+// rs1_val==6148914691236517204 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaa, 0x5555555555555554, 0x5555555555555556, x1, 1048, x6)
+
+inst_407:
+// rs1_val==6148914691236517204 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffffff, 0x5555555555555554, -0x5555555555555555, x1, 1056, x6)
+
+inst_408:
+// rs1_val==6148914691236517204 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555a, 0x5555555555555554, 0x6, x1, 1064, x6)
+
+inst_409:
+// rs1_val==6148914691236517204 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888888, 0x5555555555555554, 0x3333333333333334, x1, 1072, x6)
+
+inst_410:
+// rs1_val==6148914691236517204 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbb, 0x5555555555555554, 0x6666666666666667, x1, 1080, x6)
+
+inst_411:
+// rs1_val==6148914691236517204 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506222, 0x5555555555555554, -0xb504f332, x1, 1088, x6)
+
+inst_412:
+// rs1_val==6148914691236517204 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555554; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4888, 0x5555555555555554, 0xb504f334, x1, 1096, x6)
+
+inst_413:
+// rs1_val==0 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x3, 0x0, 0x3, x1, 1104, x6)
+
+inst_414:
+// rs1_val==0 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555555, 0x0, 0x5555555555555555, x1, 1112, x6)
+
+inst_415:
+// rs1_val==0 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaa, 0x0, -0x5555555555555556, x1, 1120, x6)
+
+inst_416:
+// rs1_val==0 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x5, 0x0, 0x5, x1, 1128, x6)
+
+inst_417:
+// rs1_val==0 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333333, 0x0, 0x3333333333333333, x1, 1136, x6)
+
+inst_418:
+// rs1_val==0 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666666, 0x0, 0x6666666666666666, x1, 1144, x6)
+
+inst_419:
+// rs1_val==0 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0ccd, 0x0, -0xb504f333, x1, 1152, x6)
+
+inst_420:
+// rs1_val==0 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xb504f333, 0x0, 0xb504f333, x1, 1160, x6)
+
+inst_421:
+// rs1_val==0 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cce, 0x0, -0xb504f332, x1, 1168, x6)
+
+inst_422:
+// rs1_val==0 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xb504f334, 0x0, 0xb504f334, x1, 1176, x6)
+
+inst_423:
+// rs1_val==4 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x7, 0x4, 0x3, x1, 1184, x6)
+
+inst_424:
+// rs1_val==4 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555559, 0x4, 0x5555555555555555, x1, 1192, x6)
+
+inst_425:
+// rs1_val==4 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaae, 0x4, -0x5555555555555556, x1, 1200, x6)
+
+inst_426:
+// rs1_val==4 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x9, 0x4, 0x5, x1, 1208, x6)
+
+inst_427:
+// rs1_val==4 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333337, 0x4, 0x3333333333333333, x1, 1216, x6)
+
+inst_428:
+// rs1_val==4 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666a, 0x4, 0x6666666666666666, x1, 1224, x6)
+
+inst_429:
+// rs1_val==4 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd1, 0x4, -0xb504f333, x1, 1232, x6)
+
+inst_430:
+// rs1_val==4 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xb504f337, 0x4, 0xb504f333, x1, 1240, x6)
+
+inst_431:
+// rs1_val==4 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x4, 0x2, x1, 1248, x6)
+
+inst_432:
+// rs1_val==4 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555558, 0x4, 0x5555555555555554, x1, 1256, x6)
+
+inst_433:
+// rs1_val==4 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x4, 0x4, 0x0, x1, 1264, x6)
+
+inst_434:
+// rs1_val==4 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x4, 0x4, x1, 1272, x6)
+
+inst_435:
+// rs1_val==4 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333336, 0x4, 0x3333333333333332, x1, 1280, x6)
+
+inst_436:
+// rs1_val==4 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666669, 0x4, 0x6666666666666665, x1, 1288, x6)
+
+inst_437:
+// rs1_val==4 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xb504f336, 0x4, 0xb504f332, x1, 1296, x6)
+
+inst_438:
+// rs1_val==4 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaf, 0x4, -0x5555555555555555, x1, 1304, x6)
+
+inst_439:
+// rs1_val==4 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xa, 0x4, 0x6, x1, 1312, x6)
+
+inst_440:
+// rs1_val==4 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333338, 0x4, 0x3333333333333334, x1, 1320, x6)
+
+inst_441:
+// rs1_val==4 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666b, 0x4, 0x6666666666666667, x1, 1328, x6)
+
+inst_442:
+// rs1_val==4 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd2, 0x4, -0xb504f332, x1, 1336, x6)
+
+inst_443:
+// rs1_val==4 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xb504f338, 0x4, 0xb504f334, x1, 1344, x6)
+
+inst_444:
+// rs1_val==3689348814741910322 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333335, 0x3333333333333332, 0x3, x1, 1352, x6)
+
+inst_445:
+// rs1_val==3689348814741910322 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888887, 0x3333333333333332, 0x5555555555555555, x1, 1360, x6)
+
+inst_446:
+// rs1_val==3689348814741910322 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddddddddddc, 0x3333333333333332, -0x5555555555555556, x1, 1368, x6)
+
+inst_447:
+// rs1_val==3689348814741910322 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333337, 0x3333333333333332, 0x5, x1, 1376, x6)
+
+inst_448:
+// rs1_val==3689348814741910322 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666665, 0x3333333333333332, 0x3333333333333333, x1, 1384, x6)
+
+inst_449:
+// rs1_val==3689348814741910322 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999998, 0x3333333333333332, 0x6666666666666666, x1, 1392, x6)
+
+inst_450:
+// rs1_val==3689348814741910322 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e3fff, 0x3333333333333332, -0xb504f333, x1, 1400, x6)
+
+inst_451:
+// rs1_val==3689348814741910322 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382665, 0x3333333333333332, 0xb504f333, x1, 1408, x6)
+
+inst_452:
+// rs1_val==3689348814741910322 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333334, 0x3333333333333332, 0x2, x1, 1416, x6)
+
+inst_453:
+// rs1_val==3689348814741910322 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888886, 0x3333333333333332, 0x5555555555555554, x1, 1424, x6)
+
+inst_454:
+// rs1_val==3689348814741910322 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333332, 0x3333333333333332, 0x0, x1, 1432, x6)
+
+inst_455:
+// rs1_val==3689348814741910322 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333336, 0x3333333333333332, 0x4, x1, 1440, x6)
+
+inst_456:
+// rs1_val==3689348814741910322 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666664, 0x3333333333333332, 0x3333333333333332, x1, 1448, x6)
+
+inst_457:
+// rs1_val==3689348814741910322 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999997, 0x3333333333333332, 0x6666666666666665, x1, 1456, x6)
+
+inst_458:
+// rs1_val==3689348814741910322 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382664, 0x3333333333333332, 0xb504f332, x1, 1464, x6)
+
+inst_459:
+// rs1_val==3689348814741910322 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888888, 0x3333333333333332, 0x5555555555555556, x1, 1472, x6)
+
+inst_460:
+// rs1_val==3689348814741910322 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddddddddddd, 0x3333333333333332, -0x5555555555555555, x1, 1480, x6)
+
+inst_461:
+// rs1_val==3689348814741910322 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333338, 0x3333333333333332, 0x6, x1, 1488, x6)
+
+inst_462:
+// rs1_val==3689348814741910322 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666666, 0x3333333333333332, 0x3333333333333334, x1, 1496, x6)
+
+inst_463:
+// rs1_val==3689348814741910322 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999999, 0x3333333333333332, 0x6666666666666667, x1, 1504, x6)
+
+inst_464:
+// rs1_val==3689348814741910322 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4000, 0x3333333333333332, -0xb504f332, x1, 1512, x6)
+
+inst_465:
+// rs1_val==3689348814741910322 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333332; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382666, 0x3333333333333332, 0xb504f334, x1, 1520, x6)
+
+inst_466:
+// rs1_val==7378697629483820645 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666668, 0x6666666666666665, 0x3, x1, 1528, x6)
+
+inst_467:
+// rs1_val==7378697629483820645 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbba, 0x6666666666666665, 0x5555555555555555, x1, 1536, x6)
+
+inst_468:
+// rs1_val==7378697629483820645 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x111111111111110f, 0x6666666666666665, -0x5555555555555556, x1, 1544, x6)
+
+inst_469:
+// rs1_val==7378697629483820645 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666a, 0x6666666666666665, 0x5, x1, 1552, x6)
+
+inst_470:
+// rs1_val==7378697629483820645 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999998, 0x6666666666666665, 0x3333333333333333, x1, 1560, x6)
+
+inst_471:
+// rs1_val==7378697629483820645 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccccccccccb, 0x6666666666666665, 0x6666666666666666, x1, 1568, x6)
+
+inst_472:
+// rs1_val==7378697629483820645 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617332, 0x6666666666666665, -0xb504f333, x1, 1576, x6)
+
+inst_473:
+// rs1_val==7378697629483820645 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5998, 0x6666666666666665, 0xb504f333, x1, 1584, x6)
+
+inst_474:
+// rs1_val==7378697629483820645 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666667, 0x6666666666666665, 0x2, x1, 1592, x6)
+
+inst_475:
+// rs1_val==7378697629483820645 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbb9, 0x6666666666666665, 0x5555555555555554, x1, 1600, x6)
+
+inst_476:
+// rs1_val==7378697629483820645 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666665, 0x6666666666666665, 0x0, x1, 1608, x6)
+
+inst_477:
+// rs1_val==7378697629483820645 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666669, 0x6666666666666665, 0x4, x1, 1616, x6)
+
+inst_478:
+// rs1_val==7378697629483820645 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999997, 0x6666666666666665, 0x3333333333333332, x1, 1624, x6)
+
+inst_479:
+// rs1_val==7378697629483820645 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0xccccccccccccccca, 0x6666666666666665, 0x6666666666666665, x1, 1632, x6)
+
+inst_480:
+// rs1_val==7378697629483820645 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5997, 0x6666666666666665, 0xb504f332, x1, 1640, x6)
+
+inst_481:
+// rs1_val==7378697629483820645 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbb, 0x6666666666666665, 0x5555555555555556, x1, 1648, x6)
+
+inst_482:
+// rs1_val==7378697629483820645 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111110, 0x6666666666666665, -0x5555555555555555, x1, 1656, x6)
+
+inst_483:
+// rs1_val==7378697629483820645 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666b, 0x6666666666666665, 0x6, x1, 1664, x6)
+
+inst_484:
+// rs1_val==7378697629483820645 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999999, 0x6666666666666665, 0x3333333333333334, x1, 1672, x6)
+
+inst_485:
+// rs1_val==7378697629483820645 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccccccccccc, 0x6666666666666665, 0x6666666666666667, x1, 1680, x6)
+
+inst_486:
+// rs1_val==7378697629483820645 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617333, 0x6666666666666665, -0xb504f332, x1, 1688, x6)
+
+inst_487:
+// rs1_val==7378697629483820645 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666665; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5999, 0x6666666666666665, 0xb504f334, x1, 1696, x6)
+
+inst_488:
+// rs1_val==3037000498 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xb504f335, 0xb504f332, 0x3, x1, 1704, x6)
+
+inst_489:
+// rs1_val==3037000498 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4887, 0xb504f332, 0x5555555555555555, x1, 1712, x6)
+
+inst_490:
+// rs1_val==3037000498 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9ddc, 0xb504f332, -0x5555555555555556, x1, 1720, x6)
+
+inst_491:
+// rs1_val==3037000498 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xb504f337, 0xb504f332, 0x5, x1, 1728, x6)
+
+inst_492:
+// rs1_val==3037000498 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382665, 0xb504f332, 0x3333333333333333, x1, 1736, x6)
+
+inst_493:
+// rs1_val==3037000498 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5998, 0xb504f332, 0x6666666666666666, x1, 1744, x6)
+
+inst_494:
+// rs1_val==3037000498 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffffff, 0xb504f332, -0xb504f333, x1, 1752, x6)
+
+inst_495:
+// rs1_val==3037000498 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e665, 0xb504f332, 0xb504f333, x1, 1760, x6)
+
+inst_496:
+// rs1_val==3037000498 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xb504f334, 0xb504f332, 0x2, x1, 1768, x6)
+
+inst_497:
+// rs1_val==3037000498 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4886, 0xb504f332, 0x5555555555555554, x1, 1776, x6)
+
+inst_498:
+// rs1_val==3037000498 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xb504f332, 0xb504f332, 0x0, x1, 1784, x6)
+
+inst_499:
+// rs1_val==3037000498 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xb504f336, 0xb504f332, 0x4, x1, 1792, x6)
+
+inst_500:
+// rs1_val==3037000498 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382664, 0xb504f332, 0x3333333333333332, x1, 1800, x6)
+
+inst_501:
+// rs1_val==3037000498 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5997, 0xb504f332, 0x6666666666666665, x1, 1808, x6)
+
+inst_502:
+// rs1_val==3037000498 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e664, 0xb504f332, 0xb504f332, x1, 1816, x6)
+
+inst_503:
+// rs1_val==3037000498 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4888, 0xb504f332, 0x5555555555555556, x1, 1824, x6)
+
+inst_504:
+// rs1_val==3037000498 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9ddd, 0xb504f332, -0x5555555555555555, x1, 1832, x6)
+
+inst_505:
+// rs1_val==3037000498 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xb504f338, 0xb504f332, 0x6, x1, 1840, x6)
+
+inst_506:
+// rs1_val==3037000498 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382666, 0xb504f332, 0x3333333333333334, x1, 1848, x6)
+
+inst_507:
+// rs1_val==3037000498 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5999, 0xb504f332, 0x6666666666666667, x1, 1856, x6)
+
+inst_508:
+// rs1_val==3037000498 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0xb504f332, -0xb504f332, x1, 1864, x6)
+
+inst_509:
+// rs1_val==3037000498 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f332; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e666, 0xb504f332, 0xb504f334, x1, 1872, x6)
+
+inst_510:
+// rs1_val==6148914691236517206 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555559, 0x5555555555555556, 0x3, x1, 1880, x6)
+
+inst_511:
+// rs1_val==6148914691236517206 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaab, 0x5555555555555556, 0x5555555555555555, x1, 1888, x6)
+
+inst_512:
+// rs1_val==6148914691236517206 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0x5555555555555556, -0x5555555555555556, x1, 1896, x6)
+
+inst_513:
+// rs1_val==6148914691236517206 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555b, 0x5555555555555556, 0x5, x1, 1904, x6)
+
+inst_514:
+// rs1_val==6148914691236517206 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888889, 0x5555555555555556, 0x3333333333333333, x1, 1912, x6)
+
+inst_515:
+// rs1_val==6148914691236517206 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbc, 0x5555555555555556, 0x6666666666666666, x1, 1920, x6)
+
+inst_516:
+// rs1_val==6148914691236517206 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506223, 0x5555555555555556, -0xb504f333, x1, 1928, x6)
+
+inst_517:
+// rs1_val==6148914691236517206 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4889, 0x5555555555555556, 0xb504f333, x1, 1936, x6)
+
+inst_518:
+// rs1_val==6148914691236517206 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555558, 0x5555555555555556, 0x2, x1, 1944, x6)
+
+inst_519:
+// rs1_val==6148914691236517206 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaa, 0x5555555555555556, 0x5555555555555554, x1, 1952, x6)
+
+inst_520:
+// rs1_val==6148914691236517206 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555556, 0x5555555555555556, 0x0, x1, 1960, x6)
+
+inst_521:
+// rs1_val==6148914691236517206 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555a, 0x5555555555555556, 0x4, x1, 1968, x6)
+
+inst_522:
+// rs1_val==6148914691236517206 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888888, 0x5555555555555556, 0x3333333333333332, x1, 1976, x6)
+
+inst_523:
+// rs1_val==6148914691236517206 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbb, 0x5555555555555556, 0x6666666666666665, x1, 1984, x6)
+
+inst_524:
+// rs1_val==6148914691236517206 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4888, 0x5555555555555556, 0xb504f332, x1, 1992, x6)
+
+inst_525:
+// rs1_val==6148914691236517206 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaac, 0x5555555555555556, 0x5555555555555556, x1, 2000, x6)
+
+inst_526:
+// rs1_val==6148914691236517206 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x1, 0x5555555555555556, -0x5555555555555555, x1, 2008, x6)
+
+inst_527:
+// rs1_val==6148914691236517206 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555c, 0x5555555555555556, 0x6, x1, 2016, x6)
+
+inst_528:
+// rs1_val==6148914691236517206 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x888888888888888a, 0x5555555555555556, 0x3333333333333334, x1, 2024, x6)
+
+inst_529:
+// rs1_val==6148914691236517206 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbd, 0x5555555555555556, 0x6666666666666667, x1, 2032, x6)
+
+inst_530:
+// rs1_val==6148914691236517206 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506224, 0x5555555555555556, -0xb504f332, x1, 2040, x6)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_531:
+// rs1_val==6148914691236517206 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555556; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a488a, 0x5555555555555556, 0xb504f334, x1, 0, x6)
+
+inst_532:
+// rs1_val==-6148914691236517205 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaae, -0x5555555555555555, 0x3, x1, 8, x6)
+
+inst_533:
+// rs1_val==-6148914691236517205 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x0, -0x5555555555555555, 0x5555555555555555, x1, 16, x6)
+
+inst_534:
+// rs1_val==-6148914691236517205 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555555, -0x5555555555555555, -0x5555555555555556, x1, 24, x6)
+
+inst_535:
+// rs1_val==-6148914691236517205 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaab0, -0x5555555555555555, 0x5, x1, 32, x6)
+
+inst_536:
+// rs1_val==-6148914691236517205 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0xddddddddddddddde, -0x5555555555555555, 0x3333333333333333, x1, 40, x6)
+
+inst_537:
+// rs1_val==-6148914691236517205 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111111, -0x5555555555555555, 0x6666666666666666, x1, 48, x6)
+
+inst_538:
+// rs1_val==-6148914691236517205 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9f5a5b778, -0x5555555555555555, -0xb504f333, x1, 56, x6)
+
+inst_539:
+// rs1_val==-6148914691236517205 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9dde, -0x5555555555555555, 0xb504f333, x1, 64, x6)
+
+inst_540:
+// rs1_val==-6148914691236517205 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaad, -0x5555555555555555, 0x2, x1, 72, x6)
+
+inst_541:
+// rs1_val==-6148914691236517205 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffffffffff, -0x5555555555555555, 0x5555555555555554, x1, 80, x6)
+
+inst_542:
+// rs1_val==-6148914691236517205 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaab, -0x5555555555555555, 0x0, x1, 88, x6)
+
+inst_543:
+// rs1_val==-6148914691236517205 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaaf, -0x5555555555555555, 0x4, x1, 96, x6)
+
+inst_544:
+// rs1_val==-6148914691236517205 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddddddddddd, -0x5555555555555555, 0x3333333333333332, x1, 104, x6)
+
+inst_545:
+// rs1_val==-6148914691236517205 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111110, -0x5555555555555555, 0x6666666666666665, x1, 112, x6)
+
+inst_546:
+// rs1_val==-6148914691236517205 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9ddd, -0x5555555555555555, 0xb504f332, x1, 120, x6)
+
+inst_547:
+// rs1_val==-6148914691236517205 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x1, -0x5555555555555555, 0x5555555555555556, x1, 128, x6)
+
+inst_548:
+// rs1_val==-6148914691236517205 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555556, -0x5555555555555555, -0x5555555555555555, x1, 136, x6)
+
+inst_549:
+// rs1_val==-6148914691236517205 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaab1, -0x5555555555555555, 0x6, x1, 144, x6)
+
+inst_550:
+// rs1_val==-6148914691236517205 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddddddddddf, -0x5555555555555555, 0x3333333333333334, x1, 152, x6)
+
+inst_551:
+// rs1_val==-6148914691236517205 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111112, -0x5555555555555555, 0x6666666666666667, x1, 160, x6)
+
+inst_552:
+// rs1_val==-6148914691236517205 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9f5a5b779, -0x5555555555555555, -0xb504f332, x1, 168, x6)
+
+inst_553:
+// rs1_val==-6148914691236517205 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555555; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9ddf, -0x5555555555555555, 0xb504f334, x1, 176, x6)
+
+inst_554:
+// rs1_val==6 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x9, 0x6, 0x3, x1, 184, x6)
+
+inst_555:
+// rs1_val==6 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555b, 0x6, 0x5555555555555555, x1, 192, x6)
+
+inst_556:
+// rs1_val==6 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaab0, 0x6, -0x5555555555555556, x1, 200, x6)
+
+inst_557:
+// rs1_val==6 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xb, 0x6, 0x5, x1, 208, x6)
+
+inst_558:
+// rs1_val==6 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333339, 0x6, 0x3333333333333333, x1, 216, x6)
+
+inst_559:
+// rs1_val==6 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666c, 0x6, 0x6666666666666666, x1, 224, x6)
+
+inst_560:
+// rs1_val==6 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd3, 0x6, -0xb504f333, x1, 232, x6)
+
+inst_561:
+// rs1_val==6 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xb504f339, 0x6, 0xb504f333, x1, 240, x6)
+
+inst_562:
+// rs1_val==6 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x8, 0x6, 0x2, x1, 248, x6)
+
+inst_563:
+// rs1_val==6 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555a, 0x6, 0x5555555555555554, x1, 256, x6)
+
+inst_564:
+// rs1_val==6 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x6, 0x0, x1, 264, x6)
+
+inst_565:
+// rs1_val==6 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xa, 0x6, 0x4, x1, 272, x6)
+
+inst_566:
+// rs1_val==6 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333338, 0x6, 0x3333333333333332, x1, 280, x6)
+
+inst_567:
+// rs1_val==6 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666b, 0x6, 0x6666666666666665, x1, 288, x6)
+
+inst_568:
+// rs1_val==6 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xb504f338, 0x6, 0xb504f332, x1, 296, x6)
+
+inst_569:
+// rs1_val==6 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555c, 0x6, 0x5555555555555556, x1, 304, x6)
+
+inst_570:
+// rs1_val==6 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaab1, 0x6, -0x5555555555555555, x1, 312, x6)
+
+inst_571:
+// rs1_val==6 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xc, 0x6, 0x6, x1, 320, x6)
+
+inst_572:
+// rs1_val==6 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x333333333333333a, 0x6, 0x3333333333333334, x1, 328, x6)
+
+inst_573:
+// rs1_val==6 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666d, 0x6, 0x6666666666666667, x1, 336, x6)
+
+inst_574:
+// rs1_val==6 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd4, 0x6, -0xb504f332, x1, 344, x6)
+
+inst_575:
+// rs1_val==6 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0xb504f33a, 0x6, 0xb504f334, x1, 352, x6)
+
+inst_576:
+// rs1_val==3689348814741910324 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333337, 0x3333333333333334, 0x3, x1, 360, x6)
+
+inst_577:
+// rs1_val==3689348814741910324 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888889, 0x3333333333333334, 0x5555555555555555, x1, 368, x6)
+
+inst_578:
+// rs1_val==3689348814741910324 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xddddddddddddddde, 0x3333333333333334, -0x5555555555555556, x1, 376, x6)
+
+inst_579:
+// rs1_val==3689348814741910324 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333339, 0x3333333333333334, 0x5, x1, 384, x6)
+
+inst_580:
+// rs1_val==3689348814741910324 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666667, 0x3333333333333334, 0x3333333333333333, x1, 392, x6)
+
+inst_581:
+// rs1_val==3689348814741910324 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x999999999999999a, 0x3333333333333334, 0x6666666666666666, x1, 400, x6)
+
+inst_582:
+// rs1_val==3689348814741910324 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4001, 0x3333333333333334, -0xb504f333, x1, 408, x6)
+
+inst_583:
+// rs1_val==3689348814741910324 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382667, 0x3333333333333334, 0xb504f333, x1, 416, x6)
+
+inst_584:
+// rs1_val==3689348814741910324 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333336, 0x3333333333333334, 0x2, x1, 424, x6)
+
+inst_585:
+// rs1_val==3689348814741910324 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x8888888888888888, 0x3333333333333334, 0x5555555555555554, x1, 432, x6)
+
+inst_586:
+// rs1_val==3689348814741910324 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333334, 0x3333333333333334, 0x0, x1, 440, x6)
+
+inst_587:
+// rs1_val==3689348814741910324 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333338, 0x3333333333333334, 0x4, x1, 448, x6)
+
+inst_588:
+// rs1_val==3689348814741910324 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666666, 0x3333333333333334, 0x3333333333333332, x1, 456, x6)
+
+inst_589:
+// rs1_val==3689348814741910324 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999999, 0x3333333333333334, 0x6666666666666665, x1, 464, x6)
+
+inst_590:
+// rs1_val==3689348814741910324 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382666, 0x3333333333333334, 0xb504f332, x1, 472, x6)
+
+inst_591:
+// rs1_val==3689348814741910324 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x888888888888888a, 0x3333333333333334, 0x5555555555555556, x1, 480, x6)
+
+inst_592:
+// rs1_val==3689348814741910324 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xdddddddddddddddf, 0x3333333333333334, -0x5555555555555555, x1, 488, x6)
+
+inst_593:
+// rs1_val==3689348814741910324 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x333333333333333a, 0x3333333333333334, 0x6, x1, 496, x6)
+
+inst_594:
+// rs1_val==3689348814741910324 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666668, 0x3333333333333334, 0x3333333333333334, x1, 504, x6)
+
+inst_595:
+// rs1_val==3689348814741910324 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x999999999999999b, 0x3333333333333334, 0x6666666666666667, x1, 512, x6)
+
+inst_596:
+// rs1_val==3689348814741910324 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4002, 0x3333333333333334, -0xb504f332, x1, 520, x6)
+
+inst_597:
+// rs1_val==3689348814741910324 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x3333333333333334; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382668, 0x3333333333333334, 0xb504f334, x1, 528, x6)
+
+inst_598:
+// rs1_val==7378697629483820647 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666a, 0x6666666666666667, 0x3, x1, 536, x6)
+
+inst_599:
+// rs1_val==7378697629483820647 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbc, 0x6666666666666667, 0x5555555555555555, x1, 544, x6)
+
+inst_600:
+// rs1_val==7378697629483820647 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111111, 0x6666666666666667, -0x5555555555555556, x1, 552, x6)
+
+inst_601:
+// rs1_val==7378697629483820647 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666c, 0x6666666666666667, 0x5, x1, 560, x6)
+
+inst_602:
+// rs1_val==7378697629483820647 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x999999999999999a, 0x6666666666666667, 0x3333333333333333, x1, 568, x6)
+
+inst_603:
+// rs1_val==7378697629483820647 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccccccccccd, 0x6666666666666667, 0x6666666666666666, x1, 576, x6)
+
+inst_604:
+// rs1_val==7378697629483820647 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617334, 0x6666666666666667, -0xb504f333, x1, 584, x6)
+
+inst_605:
+// rs1_val==7378697629483820647 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b599a, 0x6666666666666667, 0xb504f333, x1, 592, x6)
+
+inst_606:
+// rs1_val==7378697629483820647 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666669, 0x6666666666666667, 0x2, x1, 600, x6)
+
+inst_607:
+// rs1_val==7378697629483820647 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbb, 0x6666666666666667, 0x5555555555555554, x1, 608, x6)
+
+inst_608:
+// rs1_val==7378697629483820647 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666667, 0x6666666666666667, 0x0, x1, 616, x6)
+
+inst_609:
+// rs1_val==7378697629483820647 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666b, 0x6666666666666667, 0x4, x1, 624, x6)
+
+inst_610:
+// rs1_val==7378697629483820647 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x9999999999999999, 0x6666666666666667, 0x3333333333333332, x1, 632, x6)
+
+inst_611:
+// rs1_val==7378697629483820647 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0xcccccccccccccccc, 0x6666666666666667, 0x6666666666666665, x1, 640, x6)
+
+inst_612:
+// rs1_val==7378697629483820647 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5999, 0x6666666666666667, 0xb504f332, x1, 648, x6)
+
+inst_613:
+// rs1_val==7378697629483820647 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xbbbbbbbbbbbbbbbd, 0x6666666666666667, 0x5555555555555556, x1, 656, x6)
+
+inst_614:
+// rs1_val==7378697629483820647 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x1111111111111112, 0x6666666666666667, -0x5555555555555555, x1, 664, x6)
+
+inst_615:
+// rs1_val==7378697629483820647 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x666666666666666d, 0x6666666666666667, 0x6, x1, 672, x6)
+
+inst_616:
+// rs1_val==7378697629483820647 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x999999999999999b, 0x6666666666666667, 0x3333333333333334, x1, 680, x6)
+
+inst_617:
+// rs1_val==7378697629483820647 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0xccccccccccccccce, 0x6666666666666667, 0x6666666666666667, x1, 688, x6)
+
+inst_618:
+// rs1_val==7378697629483820647 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617335, 0x6666666666666667, -0xb504f332, x1, 696, x6)
+
+inst_619:
+// rs1_val==7378697629483820647 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x6666666666666667; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b599b, 0x6666666666666667, 0xb504f334, x1, 704, x6)
+
+inst_620:
+// rs1_val==-3037000498 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd1, -0xb504f332, 0x3, x1, 712, x6)
+
+inst_621:
+// rs1_val==-3037000498 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506223, -0xb504f332, 0x5555555555555555, x1, 720, x6)
+
+inst_622:
+// rs1_val==-3037000498 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9f5a5b778, -0xb504f332, -0x5555555555555556, x1, 728, x6)
+
+inst_623:
+// rs1_val==-3037000498 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd3, -0xb504f332, 0x5, x1, 736, x6)
+
+inst_624:
+// rs1_val==-3037000498 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4001, -0xb504f332, 0x3333333333333333, x1, 744, x6)
+
+inst_625:
+// rs1_val==-3037000498 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617334, -0xb504f332, 0x6666666666666666, x1, 752, x6)
+
+inst_626:
+// rs1_val==-3037000498 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffe95f6199b, -0xb504f332, -0xb504f333, x1, 760, x6)
+
+inst_627:
+// rs1_val==-3037000498 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x1, -0xb504f332, 0xb504f333, x1, 768, x6)
+
+inst_628:
+// rs1_val==-3037000498 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd0, -0xb504f332, 0x2, x1, 776, x6)
+
+inst_629:
+// rs1_val==-3037000498 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506222, -0xb504f332, 0x5555555555555554, x1, 784, x6)
+
+inst_630:
+// rs1_val==-3037000498 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cce, -0xb504f332, 0x0, x1, 792, x6)
+
+inst_631:
+// rs1_val==-3037000498 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd2, -0xb504f332, 0x4, x1, 800, x6)
+
+inst_632:
+// rs1_val==-3037000498 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4000, -0xb504f332, 0x3333333333333332, x1, 808, x6)
+
+inst_633:
+// rs1_val==-3037000498 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617333, -0xb504f332, 0x6666666666666665, x1, 816, x6)
+
+inst_634:
+// rs1_val==-3037000498 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x0, -0xb504f332, 0xb504f332, x1, 824, x6)
+
+inst_635:
+// rs1_val==-3037000498 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x55555554a0506224, -0xb504f332, 0x5555555555555556, x1, 832, x6)
+
+inst_636:
+// rs1_val==-3037000498 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaa9f5a5b779, -0xb504f332, -0x5555555555555555, x1, 840, x6)
+
+inst_637:
+// rs1_val==-3037000498 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xffffffff4afb0cd4, -0xb504f332, 0x6, x1, 848, x6)
+
+inst_638:
+// rs1_val==-3037000498 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x333333327e2e4002, -0xb504f332, 0x3333333333333334, x1, 856, x6)
+
+inst_639:
+// rs1_val==-3037000498 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x66666665b1617335, -0xb504f332, 0x6666666666666667, x1, 864, x6)
+
+inst_640:
+// rs1_val==-3037000498 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xfffffffe95f6199c, -0xb504f332, -0xb504f332, x1, 872, x6)
+
+inst_641:
+// rs1_val==-3037000498 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0xb504f332; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x2, -0xb504f332, 0xb504f334, x1, 880, x6)
+
+inst_642:
+// rs1_val==3037000500 and rs2_val==3,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x3
+TEST_RR_OP(add, x12, x10, x11, 0xb504f337, 0xb504f334, 0x3, x1, 888, x6)
+
+inst_643:
+// rs1_val==3037000500 and rs2_val==6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4889, 0xb504f334, 0x5555555555555555, x1, 896, x6)
+
+inst_644:
+// rs1_val==3037000500 and rs2_val==-6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:-0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9dde, 0xb504f334, -0x5555555555555556, x1, 904, x6)
+
+inst_645:
+// rs1_val==3037000500 and rs2_val==5,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x5
+TEST_RR_OP(add, x12, x10, x11, 0xb504f339, 0xb504f334, 0x5, x1, 912, x6)
+
+inst_646:
+// rs1_val==3037000500 and rs2_val==3689348814741910323,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x3333333333333333
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382667, 0xb504f334, 0x3333333333333333, x1, 920, x6)
+
+inst_647:
+// rs1_val==3037000500 and rs2_val==7378697629483820646,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x6666666666666666
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b599a, 0xb504f334, 0x6666666666666666, x1, 928, x6)
+
+inst_648:
+// rs1_val==3037000500 and rs2_val==-3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:-0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x1, 0xb504f334, -0xb504f333, x1, 936, x6)
+
+inst_649:
+// rs1_val==3037000500 and rs2_val==3037000499,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0xb504f333
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e667, 0xb504f334, 0xb504f333, x1, 944, x6)
+
+inst_650:
+// rs1_val==3037000500 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0xb504f336, 0xb504f334, 0x2, x1, 952, x6)
+
+inst_651:
+// rs1_val==3037000500 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a4888, 0xb504f334, 0x5555555555555554, x1, 960, x6)
+
+inst_652:
+// rs1_val==3037000500 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0xb504f334, 0xb504f334, 0x0, x1, 968, x6)
+
+inst_653:
+// rs1_val==3037000500 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0xb504f338, 0xb504f334, 0x4, x1, 976, x6)
+
+inst_654:
+// rs1_val==3037000500 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382666, 0xb504f334, 0x3333333333333332, x1, 984, x6)
+
+inst_655:
+// rs1_val==3037000500 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b5999, 0xb504f334, 0x6666666666666665, x1, 992, x6)
+
+inst_656:
+// rs1_val==3037000500 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e666, 0xb504f334, 0xb504f332, x1, 1000, x6)
+
+inst_657:
+// rs1_val==3037000500 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x555555560a5a488a, 0xb504f334, 0x5555555555555556, x1, 1008, x6)
+
+inst_658:
+// rs1_val==3037000500 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaab5faf9ddf, 0xb504f334, -0x5555555555555555, x1, 1016, x6)
+
+inst_659:
+// rs1_val==3037000500 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0xb504f33a, 0xb504f334, 0x6, x1, 1024, x6)
+
+inst_660:
+// rs1_val==3037000500 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x33333333e8382668, 0xb504f334, 0x3333333333333334, x1, 1032, x6)
+
+inst_661:
+// rs1_val==3037000500 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x666666671b6b599b, 0xb504f334, 0x6666666666666667, x1, 1040, x6)
+
+inst_662:
+// rs1_val==3037000500 and rs2_val==-3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:-0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0x2, 0xb504f334, -0xb504f332, x1, 1048, x6)
+
+inst_663:
+// rs1_val==3037000500 and rs2_val==3037000500,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0xb504f334; op2val:0xb504f334
+TEST_RR_OP(add, x12, x10, x11, 0x16a09e668, 0xb504f334, 0xb504f334, x1, 1056, x6)
+
+inst_664:
+// rs1_val==0 and rs2_val==2,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x2
+TEST_RR_OP(add, x12, x10, x11, 0x2, 0x0, 0x2, x1, 1064, x6)
+
+inst_665:
+// rs1_val==0 and rs2_val==6148914691236517204,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5555555555555554
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555554, 0x0, 0x5555555555555554, x1, 1072, x6)
+
+inst_666:
+// rs1_val==0 and rs2_val==0,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x0
+TEST_RR_OP(add, x12, x10, x11, 0x0, 0x0, 0x0, x1, 1080, x6)
+
+inst_667:
+// rs1_val==0 and rs2_val==4,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x4
+TEST_RR_OP(add, x12, x10, x11, 0x4, 0x0, 0x4, x1, 1088, x6)
+
+inst_668:
+// rs1_val==0 and rs2_val==3689348814741910322,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3333333333333332
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333332, 0x0, 0x3333333333333332, x1, 1096, x6)
+
+inst_669:
+// rs1_val==0 and rs2_val==7378697629483820645,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6666666666666665
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666665, 0x0, 0x6666666666666665, x1, 1104, x6)
+
+inst_670:
+// rs1_val==0 and rs2_val==3037000498,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0xb504f332
+TEST_RR_OP(add, x12, x10, x11, 0xb504f332, 0x0, 0xb504f332, x1, 1112, x6)
+
+inst_671:
+// rs1_val==0 and rs2_val==6148914691236517206,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x5555555555555556, 0x0, 0x5555555555555556, x1, 1120, x6)
+
+inst_672:
+// rs1_val==0 and rs2_val==-6148914691236517205,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:-0x5555555555555555
+TEST_RR_OP(add, x12, x10, x11, 0xaaaaaaaaaaaaaaab, 0x0, -0x5555555555555555, x1, 1128, x6)
+
+inst_673:
+// rs1_val==0 and rs2_val==6,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6
+TEST_RR_OP(add, x12, x10, x11, 0x6, 0x0, 0x6, x1, 1136, x6)
+
+inst_674:
+// rs1_val==0 and rs2_val==3689348814741910324,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x3333333333333334
+TEST_RR_OP(add, x12, x10, x11, 0x3333333333333334, 0x0, 0x3333333333333334, x1, 1144, x6)
+
+inst_675:
+// rs1_val==0 and rs2_val==7378697629483820647,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x6666666666666667
+TEST_RR_OP(add, x12, x10, x11, 0x6666666666666667, 0x0, 0x6666666666666667, x1, 1152, x6)
+
+inst_676:
+// rs1_val > 0 and rs2_val > 0, rs1_val == 4, rs1_val==4 and rs2_val==6148914691236517206, rs1_val != rs2_val
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:0x5555555555555556
+TEST_RR_OP(add, x12, x10, x11, 0x555555555555555a, 0x4, 0x5555555555555556, x1, 1160, x6)
+
+inst_677:
+// rs1_val < 0 and rs2_val < 0, rs1_val == -8388609
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:-0x800001; op2val:-0x4
+TEST_RR_OP(add, x12, x10, x11, 0xffffffffff7ffffb, -0x800001, -0x4, x1, 1168, x6)
+
+inst_678:
+// rs2_val == 256,
+// opcode: add ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x100
+TEST_RR_OP(add, x12, x10, x11, 0x101, 0x1, 0x100, x1, 1176, x6)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x8_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 148*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/Makefile
new file mode 100644
index 000000000..6db6b8483
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/Makefile
@@ -0,0 +1,4 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv64ib -mabi=lp64 -DXLEN=$(XLEN)))
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/Makefrag
new file mode 100644
index 000000000..250a9b506
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/Makefrag
@@ -0,0 +1,31 @@
+# RISC-V Compliance Test RV64K Makefrag
+#
+#
+# Copyright (c) 2021 Imperas Software Ltd., www.imperas.com
+# Copyright (c) 2021 Indian Institute of Technology Madras
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied.
+#
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+#
+# Description: Makefrag for RV64K compliance tests
+
+rv64k_sc_tests = \
+
+rv64k_tests = $(addsuffix .elf, $(rv64k_sc_tests))
+
+target_tests += $(rv64k_tests)
+
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ds-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ds-01.reference_output
new file mode 100644
index 000000000..700a0d10f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ds-01.reference_output
@@ -0,0 +1,116 @@
+386a3652
+d5a50930
+5892ac53
+72042d68
+b3167add
+ca9e8ed4
+cbc64d4b
+febbcf06
+61926f3d
+ee23cb9f
+79146e2e
+2c25fd23
+e2db5a30
+61f14d54
+af1e7778
+7fc17c28
+3b0f81f0
+ac8f5a47
+1fb1f4cc
+c60bb9c9
+f83a450c
+93c55f90
+7226d031
+c669b748
+e89ff775
+fbb9c95b
+0d533ec7
+eb0502e1
+376149ef
+961cba2b
+512c2285
+71883be1
+b54ed57e
+0a3393a7
+ae7875e2
+9db9dd26
+55143757
+771b4a64
+648f4cea
+04159c04
+3f71ff22
+7e48e74b
+7d0477e1
+7ed66955
+26142117
+630c2bba
+613b2ac8
+4df5eb83
+00000000
+00000000
+527fb552
+a94a5252
+0d7ac960
+9f9c5119
+5fa807b1
+33c71227
+3110801f
+59ecdd88
+f43ed29a
+4b79db78
+205252fc
+525256c6
+1b1a296f
+71c5b7aa
+89621847
+0ebef11d
+6e74ade2
+2235f91c
+85377596
+e8dface7
+73116797
+41dcf2f0
+eacfb43a
+cee6914f
+6b1e3fc1
+8f0faf01
+02bd13d0
+038a2cca
+06abbcf7
+00d3e4b8
+0a58b390
+0545d88c
+8448ed5e
+50b915a7
+da468d6c
+579d70fd
+92f668d4
+6498a45d
+165c6572
+ccb6f886
+25a1d976
+66245b6d
+b2a28b08
+49d12e28
+4e94c2ee
+32234c42
+3d95fa54
+0bc37ba6
+cb392f34
+82ff8ec4
+8743de7c
+44e9e39b
+fb6a36bf
+d5a54081
+38a3f352
+9ed70930
+58773f53
+7dd72d68
+b0bb53a0
+3c99e0ae
+ef7fb52d
+a94ae593
+20c0cdfc
+fe5a56c6
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ds-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ds-rwp1.reference_output
new file mode 100644
index 000000000..94447d5d3
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ds-rwp1.reference_output
@@ -0,0 +1,156 @@
+e8f210f4
+03211540
+22ecc6b8
+eb624c9a
+5965efd4
+789f8622
+92e9aeaa
+7dcafc4c
+a7d68f61
+aad7579d
+58c8d48e
+f6a3b3c3
+7e45ea6e
+b77fba52
+a7e58e4b
+6798a89d
+0e8b4cf8
+3b4a2fc3
+b517adc3
+2a017937
+8b2f508a
+2fc50869
+6edf60f4
+12b99d90
+cd569b10
+e4a5401e
+8b2979f4
+560393b2
+e298a54b
+6b058785
+28d4d67b
+be48a372
+98a489f1
+88f85bfa
+36ecb050
+ceaaadd7
+5e0523e2
+79c3a736
+9eace54f
+99b5a1e4
+28c7d7cb
+929b878d
+69e199ee
+6be3840b
+7c216c53
+914094c6
+03d94ebe
+81517a72
+33bf4365
+73559784
+d0d8c21a
+04469855
+5fd084b8
+74ba82a9
+5aa15017
+83ca9634
+1e392a83
+39e59d38
+f20b746f
+4b91ce3f
+4590a637
+a55a8284
+ecd9f974
+7f9d38e5
+eab9fee6
+b1231c3c
+bd1a2885
+4c67eb2a
+0ead8284
+7facdadd
+270fd5db
+d429ee1c
+f9ce5a26
+4763ef73
+0937bd7e
+ae814f22
+a9bc398d
+af7af1b1
+fab218b9
+a7778dfd
+ca826b37
+484d4fb5
+96b5efad
+3cb8e260
+60de99c4
+bd70a8a2
+354d3710
+337866bc
+4f5004da
+a52988d9
+3898a995
+d4e3437d
+e8079f77
+fa42f841
+a041de82
+61532bc2
+85b90f22
+4d09c349
+22cd271c
+ca434896
+c19b7580
+59423e06
+953be889
+0b600f74
+0777bb12
+26202de7
+2c9563db
+e3f0b673
+b31f4467
+2e0d2d65
+34eabdd0
+3ee636ae
+052ab8a0
+26312d4a
+29681f95
+f38dccab
+95d097ef
+706b6d47
+9895ab30
+5a36ade7
+1bf76d7c
+5e2c5381
+a8381757
+e83e7c3b
+f050070c
+2a4f40d9
+bdad0618
+6789b0a8
+dfae8291
+a7ac97bf
+5a3b0a10
+390bf8b7
+a6be2c33
+a595435f
+82df206c
+2299dd0f
+8471e13c
+31b3ac79
+b2ff00e9
+7fe27608
+667adc6f
+69cc9988
+b46c32c7
+5a54fa4c
+63b76c83
+14973213
+fa78b5bc
+21a6afab
+00d1ccd9
+0c2effc9
+d1116db8
+f3b0e499
+4b5ae888
+09935efe
+46d8b04c
+ba746245
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64dsm-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64dsm-01.reference_output
new file mode 100644
index 000000000..b210e6b5b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64dsm-01.reference_output
@@ -0,0 +1,116 @@
+49b32be7
+6e102017
+35b2ab19
+91f3a8f9
+7454b99b
+837bdb2d
+ad8d3d16
+517363cd
+3f3b68cd
+a559a9cc
+d5789818
+6e1a0aa9
+972586b5
+b70cbf94
+6eddd1dc
+26d4eaf2
+33ed0398
+4111cba5
+6953b519
+1d8d032e
+76c2c6f9
+b51b5067
+00000000
+00000000
+a9e847f3
+6292ebcb
+a661c0a0
+131ae0e4
+4ef2cb87
+840c9e0d
+6514b912
+59fe55d1
+45858515
+7c42ffcc
+08ee51f6
+96c673fc
+f0b3d0b2
+c14078bb
+d0de6221
+ffde6ec6
+4fddb2b3
+600ed622
+a0996fb9
+2cff084f
+7c587353
+be731122
+106130f9
+6e57739a
+48b84048
+ace6bd1c
+4b5f011d
+a78fda67
+9e88fd35
+b89de08e
+9c4646dd
+0c0ab473
+a657703f
+67b73808
+b53bcf2f
+d8360c41
+19e84d6d
+97c05734
+729ece65
+7f87f0a1
+1f58fd0e
+73f534ee
+87e5eed9
+3c9c184a
+a115f316
+4ce0f020
+9e95b52c
+c9465f4f
+b6f8a540
+b7231f7d
+d01a89c8
+4d69313b
+48c6a153
+0ca2fd3c
+b616db9d
+4d42ac2c
+2325780f
+e1781499
+3e39a9d1
+1fbdec15
+5275ffa5
+cdc0642e
+99f4c87d
+166fdca0
+8af34367
+aca6909e
+36ab9c2a
+7d66a8c7
+5e7b5aec
+0e314eef
+14cf6f42
+d6799626
+e8c1230c
+2c7a7635
+73125ed6
+aa7dc828
+6e57fba4
+6c5c7a9f
+b2f24f17
+519bbdc6
+1c96a313
+6e29192e
+a4d44576
+da844ffe
+76d56898
+16c53369
+20b8f3de
+f84e29cf
+4ee97752
+2e6c8754
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64dsm-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64dsm-rwp1.reference_output
new file mode 100644
index 000000000..369b16aab
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64dsm-rwp1.reference_output
@@ -0,0 +1,156 @@
+52914d70
+3f18c797
+f7676848
+32372b71
+8cee4124
+a1cae1c9
+b8a27a1f
+12ae9d26
+9bd59647
+6566ed59
+64cbcda8
+39120907
+08aff9e1
+697b2416
+133c2f87
+59a91923
+ba52ed34
+057b9e7d
+cfc35494
+27efbe13
+6b7d4c24
+8033aa92
+8e8d7c5a
+bd4f3f6b
+bfe8c98e
+4a1ad09f
+dc6370e0
+45a268fb
+b5d2ac5f
+78a47ccc
+b452e85f
+4d531e27
+5cc1c51c
+0e1364a8
+f289fcbd
+48419285
+f424a6ec
+da3d529e
+e45db495
+8fbe653d
+52368611
+84904354
+d790c27a
+055ae4bc
+3d17e9a1
+dc20c4bb
+42efcb4c
+cc312a0f
+c974f6e1
+bdf6334d
+1de7b49e
+7b15e203
+92eff23c
+0be9f8ff
+c389aa5c
+507f884c
+7d3b4e86
+018357ac
+9109106a
+73f704ab
+52d939f6
+0b9ac5ad
+9c3ee2f8
+8b65b263
+9a5ee56a
+45db96ba
+f55f74d4
+d1e5b967
+fdae20d6
+ace0ba22
+d40c7789
+07658ee3
+c308f676
+b664751f
+55200088
+60010526
+f5ab847b
+61fabbb5
+39ee122c
+6c051dd4
+2d44a4d9
+f3cc11d1
+71732043
+8739bc04
+406b64ac
+7231f276
+e6435aa0
+0ca6605b
+9c5e696a
+9af78e3e
+1be7a9c9
+b682330e
+35264c58
+962c962d
+7d600dad
+0d3d45ae
+5702ffbb
+af7ea6b9
+644fd22d
+95eab991
+871980b1
+06ebcf01
+af6f5758
+75765142
+a053b59f
+65ebedaf
+8bb16d56
+a03b763b
+6a3c9841
+aaee7f50
+a9f95dbe
+5300dbc8
+983958ce
+4bd7c02c
+5bfae08a
+6e38632c
+a768df2d
+c84fb701
+aa2de3f2
+e21277a1
+427ad510
+189d4e6b
+8dae897a
+46e8ebd4
+d5c69921
+8499d736
+4811efb8
+94cdb41b
+73efea14
+77d60183
+f67a6295
+e9716e8b
+b6b33230
+a8a71635
+6206e297
+a59688d2
+64a823c7
+b6bcf9a4
+09cee88b
+0ffcdbcb
+0ab6f5e6
+3ef5bdc2
+d8a01b4e
+0d6dde06
+7c2c056e
+47693eb2
+eee5ac2c
+d7704460
+144cd549
+faf81402
+78a5ee26
+ae47c512
+b8c9f9f9
+4ae269fb
+b54ba13d
+f9055540
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64es-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64es-01.reference_output
new file mode 100644
index 000000000..ab8c7a0e6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64es-01.reference_output
@@ -0,0 +1,116 @@
+c5776b63
+7b6f7cf2
+02848155
+0989616e
+44a0ba78
+7e2be052
+338d226d
+f087e6a8
+ad8420cc
+23f7f8b9
+a52d1dc7
+957561f7
+a256acf2
+6c3277b7
+44401065
+a4bc9818
+3938bf64
+468fa8e0
+37e859b3
+d7f16ac1
+edcd6363
+63243563
+4e6816c6
+a8998300
+70b9bb5e
+d7b11312
+ac5512b4
+e57fa041
+a5df0b9e
+7cde4ea1
+c0a30a88
+741cb941
+bf15bb0d
+422e334a
+e065af46
+04b14368
+d82dd539
+1c79891a
+188f0917
+92cb8d89
+a60a95dc
+3f00a66d
+68895441
+0f42a1b0
+162de68c
+0dbb99bf
+9498559b
+e98ef8ce
+df87d9e1
+11281e69
+00000000
+00000000
+9e570370
+661d3548
+6363bde8
+1f63634b
+8a74a6ba
+2e8bdd1c
+a9377a6c
+ea4ec865
+08f4d5e7
+6dae568d
+5c3a95c2
+62243291
+79ac06e0
+0ae4d349
+884f5e46
+149081de
+dbb82a60
+dc0bee22
+17135dc4
+3d440c64
+737e97cd
+ec19a75f
+f540ffbc
+2138a310
+d2da9d51
+8ff3b692
+85aa3c45
+7f33ef50
+a8024dd0
+fb9ff943
+5b004c6a
+39b1d14a
+cfbefc53
+ed58cb20
+a02ce352
+b35a8329
+84d66e09
+1a2f3b1b
+9a232707
+e205c7eb
+75809604
+c3b21218
+cc93d834
+f1f7fd71
+15e53fb7
+2631a536
+f0c9a4ad
+af47829c
+c0a259ca
+7d72d4fa
+c577d730
+2b6f7cfe
+76676b63
+7bab01f2
+eee68155
+09abf96e
+edcd28bb
+2a2435d0
+0eb5c161
+b9f63e86
+c625bde8
+1fb4784b
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64es-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64es-rwp1.reference_output
new file mode 100644
index 000000000..5f336776e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64es-rwp1.reference_output
@@ -0,0 +1,156 @@
+dca78d08
+1e54a501
+148b7450
+21accb6c
+6f025d3c
+b25101d4
+4a728f91
+919239a5
+844269df
+16abe758
+7b5c3230
+4adf0306
+4a9fd4db
+97b52563
+0d35176d
+d35abf58
+a45bd5de
+8f883806
+278ced31
+591004b8
+03592af3
+d9244e99
+e6a91a8d
+e458db60
+27c84e74
+c86f8640
+7a06fa08
+f921019a
+13b726b7
+c42715ad
+5a525cfd
+1c001209
+183b4232
+e48367d8
+b6737b93
+a2d191f5
+2b7f3546
+2831236b
+6a81f75f
+4e034af9
+dceac5db
+452d6c90
+ca415334
+0c8293f1
+99542855
+d201cf8d
+e6ac0ab8
+c2102139
+51303fe3
+89b05acf
+2eefa23a
+73bec4b0
+a1e7e498
+0342de4c
+4023d98c
+c99258ad
+aec9edce
+ce3560c5
+42fbb322
+bc4133c2
+8bd0eeb8
+b5aec5cf
+9f96364f
+6f587d35
+99f631dd
+a1e659ec
+623a7d88
+b5975bd9
+da2a18cf
+a5811e78
+f3884f90
+0e042ab9
+7c3dda68
+690f5f73
+eeb8ae0d
+e0fe9edc
+4e332afe
+e105204f
+929ad2b1
+00e65f20
+d87d95b8
+4a114c03
+844a1122
+3ee4e1d6
+90a4b89c
+2ed1c380
+70112874
+da65254d
+0a0c1bbe
+4c34cb28
+145ab9e5
+d8828316
+c5a666e6
+5271a2ec
+8de02713
+c960716f
+dcb14bdc
+927c00e2
+887a38de
+11a23160
+6b2c6a42
+82a347f0
+a698875c
+6870614f
+e5e614dd
+f1a93822
+ce04cc14
+3479a3b6
+adbada97
+370e6be3
+3c17af51
+c7196169
+0dd7aa21
+dfce7a8d
+e56ec4e5
+d14cebaa
+0651ba9e
+d7d2b3e0
+0b148641
+fd8f7340
+25458cca
+14a3cafe
+79c5eb39
+6a375598
+21adfb62
+a846697a
+0b2a7d95
+4a5cc425
+da69a80c
+97819430
+5ffc208d
+0926fb38
+7de4a92e
+dce5788a
+360ba353
+6f28a238
+30a56203
+7c02d34e
+c3474472
+99462804
+9a57fbc2
+b5b3071c
+4841156a
+862b64d8
+d8d303ce
+54c4b6ff
+0f65534d
+2d3626aa
+f5cc2a28
+00be76c8
+6d131450
+7c946a28
+b2aeeb1c
+d786f9ea
+bf2cb3d8
+6461c551
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64esm-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64esm-01.reference_output
new file mode 100644
index 000000000..56234b327
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64esm-01.reference_output
@@ -0,0 +1,116 @@
+28b2e9c9
+e8ddc06f
+fec1d9b4
+481d25ff
+1a55a8c1
+c1668aca
+7e1b9602
+79501d0d
+03ff9f4a
+6ccbe941
+33742f3a
+27d83fb6
+a80fe9e4
+5f1063b2
+00000000
+00000000
+59e07013
+908767f1
+11781549
+7630ca01
+f23e4a35
+2ed3fcea
+b3d21c8b
+514905af
+001c93a3
+211a2b77
+c3e3c3bc
+cd2b7ee3
+3cc45740
+90cc3829
+b184a276
+8e5c783a
+dc46e066
+47e31cad
+db184ce3
+425e22a0
+18c527e3
+e64584d1
+8f3397a2
+f9245cdc
+b7ac55ab
+6f8a0514
+cea4019f
+368420ce
+cc099d32
+c00dd1ae
+484216de
+f61145f3
+c35705f1
+af143cc9
+cbc33221
+309f421a
+e364112c
+3ced63b4
+2c4e20f4
+2f6163b5
+0871fb60
+2ebe15e1
+b09868c8
+e614d62d
+03d9594d
+ae2ba538
+4ac7e15d
+7a4dfb29
+632e7a04
+f857c912
+d005a3a9
+405878bb
+9f573cdd
+20a524ba
+37865c70
+9ea78da5
+4333092e
+9ce5cdb9
+91c76ccc
+e9a024c7
+0b0ed716
+ed536482
+48a25de1
+d258bfc6
+6f7ae4c6
+4e89ebf2
+44cba95b
+cca90274
+3282a6c8
+3277a8b3
+62125b16
+dfd06925
+b04730f2
+0d50064e
+22d3b6de
+3b1b9378
+f016dd5c
+152b3277
+949efd44
+607163f8
+3266e8c4
+829b128f
+7a8b4e8f
+3f7ae556
+25974506
+494da287
+615dd9b0
+5c219c27
+455c6a6a
+51336d2c
+5f2a933a
+f2c1686e
+aa13b6ca
+99d173ae
+7739c1fe
+5f14489b
+680a3a09
+e25c4d63
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64esm-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64esm-rwp1.reference_output
new file mode 100644
index 000000000..2f0f74e2c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64esm-rwp1.reference_output
@@ -0,0 +1,156 @@
+91af27e7
+ce2eb2bc
+27152aa3
+91872f13
+5c9c03cf
+027ae5ab
+c124488b
+660beb19
+42a54fd8
+88c87d3f
+bdbb1437
+d4bc9961
+a9f4981f
+00957a8b
+8f0711db
+b03d00e3
+2669d368
+ecef87bd
+7cb658e5
+7577d92e
+7b6e4fd9
+73efb006
+9e9e7fa7
+4e9325ff
+54d88cd5
+a25b2eb6
+10709779
+7cc902f4
+79c14bc6
+41cf16c3
+a6ebe90d
+313f3138
+1f2ee381
+44956c65
+b166da20
+02c79a48
+d6f08687
+ff5256aa
+430f5857
+c567267a
+f5646ad3
+ce490013
+c1a09b16
+01695dd9
+aa65601f
+fd2dd998
+d59d42f2
+ed3c372c
+934f9cfd
+a96e3952
+5f2f6148
+578689e1
+d02727ea
+277a931d
+f5d30010
+af8a79f2
+2a43e1cc
+868694ca
+c671bf20
+f4f2c7cd
+e06b9f19
+508902ca
+54f41dcd
+a44948da
+52941a5f
+6af76c03
+00275ed4
+cd737866
+d7f65b5d
+468b79f6
+fe540c02
+ed0e4d37
+a74cfce4
+1789b561
+c6e177a5
+c49e0204
+666af356
+c565bc97
+bfe1291c
+d9a8af47
+90a4d66a
+ccb3e289
+cc9352f0
+b8464f5c
+98dc90c4
+d5885bba
+45ee67f1
+38d7724a
+3ff3543b
+ae869c2f
+ffd4764f
+90f94ee8
+60831e1e
+585a721d
+28c55feb
+c34ba19e
+26915e13
+7eb7f431
+3091a81d
+113dee20
+d3c7fa81
+823c98b0
+ac015c14
+10767525
+5f2a219e
+0e5b4354
+74c8f957
+cb8bd8c0
+83ce4057
+35cd1059
+33941163
+566847af
+02541413
+4ebf5c4b
+4fc9210d
+fbb162f4
+5e8c04a5
+ef8e2710
+53c9387a
+c5d3e7b0
+c6a32360
+58559b15
+97c8d9e8
+051d0189
+cfa0c9b3
+c76c3d6b
+e5a11a97
+6387180b
+7a032648
+701f0cd1
+ff96aec9
+eeb863d9
+c5d32d25
+bb5c92be
+31bc2565
+1c7b70ca
+3712e435
+0f5101bc
+08e6f0ac
+4b1007af
+de224c44
+e1a26937
+0c34a2ec
+d23a0af3
+32037e89
+c0268bb4
+ffc54b05
+af97913e
+056c3260
+821fc15c
+2dd520e2
+7ef52706
+1e7d8a02
+ef66458e
+13ffd2c6
+5c817935
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-01.reference_output
new file mode 100644
index 000000000..01fc206e0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-01.reference_output
@@ -0,0 +1,300 @@
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+be082513
+deadbeef
+52099289
+deadbeef
+248444c4
+deadbeef
+1f4f2f6f
+deadbeef
+8fa797b7
+deadbeef
+c7d3cbdb
+deadbeef
+e3e9e5ed
+deadbeef
+f1f4f2f6
+deadbeef
+13be0825
+deadbeef
+89520992
+deadbeef
+c4248444
+deadbeef
+6f1f4f2f
+deadbeef
+b78fa797
+deadbeef
+dbc7d3cb
+deadbeef
+ede3e9e5
+deadbeef
+f6f1f4f2
+deadbeef
+2513be08
+deadbeef
+92895209
+deadbeef
+44c42484
+deadbeef
+2f6f1f4f
+deadbeef
+97b78fa7
+deadbeef
+cbdbc7d3
+deadbeef
+e5ede3e9
+deadbeef
+f2f6f1f4
+deadbeef
+082513be
+deadbeef
+09928952
+deadbeef
+8444c424
+deadbeef
+4f2f6f1f
+deadbeef
+a797b78f
+deadbeef
+d3cbdbc7
+deadbeef
+e9e5ede3
+deadbeef
+f4f2f6f1
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+0b0d090e
+deadbeef
+ee815097
+deadbeef
+fbad4f20
+deadbeef
+8b14c9bc
+deadbeef
+607bf0cb
+deadbeef
+814653aa
+deadbeef
+3aacd31f
+deadbeef
+b4d951d0
+deadbeef
+eaaaa9b2
+deadbeef
+a4274a82
+deadbeef
+c7ef3b79
+deadbeef
+1ac19d05
+deadbeef
+309e9e72
+deadbeef
+94b7345a
+deadbeef
+d7bd7a3e
+deadbeef
+7d569544
+deadbeef
+8e3a2d4c
+deadbeef
+0a0abec7
+deadbeef
+4696dd98
+deadbeef
+b1e354e2
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+41f7daec
+deadbeef
+adf66d76
+deadbeef
+db7bbb3b
+deadbeef
+e0b0d090
+deadbeef
+70586848
+deadbeef
+382c3424
+deadbeef
+1c161a12
+deadbeef
+0e0b0d09
+deadbeef
+ec41f7da
+deadbeef
+76adf66d
+deadbeef
+3bdb7bbb
+deadbeef
+90e0b0d0
+deadbeef
+48705868
+deadbeef
+24382c34
+deadbeef
+121c161a
+deadbeef
+090e0b0d
+deadbeef
+daec41f7
+deadbeef
+6d76adf6
+deadbeef
+bb3bdb7b
+deadbeef
+d090e0b0
+deadbeef
+68487058
+deadbeef
+3424382c
+deadbeef
+1a121c16
+deadbeef
+0d090e0b
+deadbeef
+f7daec41
+deadbeef
+f66d76ad
+deadbeef
+7bbb3bdb
+deadbeef
+b0d090e0
+deadbeef
+58684870
+deadbeef
+2c342438
+deadbeef
+161a121c
+deadbeef
+a5d8c4d1
+deadbeef
+ffffffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-rwp1.reference_output
new file mode 100644
index 000000000..a157e3c16
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+20cc0924
+98f2b452
+5b452048
+0b0f7eea
+8476d693
+6c023547
+8148a6d8
+b92dd850
+7eb75927
+46d227af
+0dd09a3f
+9c55496a
+9675f16a
+e9dbf32b
+11ff1ad6
+7dd9bde4
+acf6b0ac
+4f0e7329
+9c710ca7
+b0d3bac2
+636f5748
+eca75e9c
+00e1a410
+a38b1ba1
+4d1a4341
+1f1d9808
+b2e5bcbe
+e0e267f7
+53074732
+6fef7bd6
+f349a53e
+084e462d
+f268012d
+64c32a8c
+85d9f49f
+f3461900
+faf6e5de
+308f998a
+5398276d
+6c5d1ed4
+56913d4c
+a32d78a1
+a42cb886
+3ff54ad7
+5bd34779
+c00ab528
+d625f8df
+0c6725bc
+5233cf7a
+f0d326f7
+fba2922d
+4da5ae55
+1515b62e
+d5a6539a
+edcd65dd
+78ad91fe
+083d55a3
+45d10407
+1a0fcf81
+c2836a06
+fb9e98a6
+997d6ba2
+04616759
+6682945d
+d6d5b6ce
+26575c5d
+f33165dc
+fe4064aa
+d921965a
+3bbcfaa4
+b1a509ca
+bd7bb672
+a41fa9c5
+06da09d7
+cdae757a
+3bdc1de0
+964e2340
+c2f9ebc8
+d7c90faa
+aa93b392
+2836f055
+556c4c6d
+41c6b234
+bd83b67d
+433fb2cf
+1636ec39
+acf18f8e
+533d0070
+c4490a21
+3441a740
+e112782d
+c8c164ff
+4f5a418c
+8e9392d2
+51b7c65e
+b9ad09d2
+864aed5f
+748f4175
+79b512a0
+8b70be8a
+18496d21
+b866479b
+50a51ff7
+3d0ac6f3
+feed5998
+835dbd20
+ee915c98
+58d5d905
+e85f373b
+3f561c24
+5e3405bf
+34783a4d
+4994cd7b
+f4d1d996
+15ba4783
+938b6a18
+ea45b87c
+6c7495e7
+0f65a0a0
+5f2a25d6
+d79fac8e
+7fc7122c
+8e0adf12
+8af53896
+81fd5f28
+f909502b
+ce2f06ec
+6bc5cfea
+b1d72401
+7bd4215e
+8007dd12
+efee114b
+ee7823fd
+dcfb94e8
+1187dc02
+23046b17
+7dfda0b2
+f92aad54
+cfaf2ddf
+9215923f
+4fa750cc
+a22780f4
+f261884d
+c35a255f
+b43c62bc
+efddd405
+3b34241e
+9f21cef9
+70f7b95d
+8f03e503
+752a7a46
+281796c3
+8ad585b9
+d7e8693c
+0c721591
+24a25aa0
+2244d448
+650ce3f6
+b14d1aea
+d608fef2
+121290f0
+bed9e518
+befafcd8
+b818ccf6
+52c8a234
+ca6c9ff1
+13cda113
+8d8bacf8
+cc1ea618
+17a49273
+33e159e7
+e85b6d8c
+ea532d08
+3f220927
+145df025
+67bc37df
+00904f11
+da308ae7
+d235139a
+6e5e995f
+5859452a
+fa3dfacb
+5e3942b8
+3483de12
+f99ff86d
+3141db26
+e49c1893
+13aff8c9
+1b63e76c
+ec500736
+dab51b9a
+6f9ee25f
+ac08aae0
+1754020d
+b268b272
+e61226e6
+d295e997
+7a9113e5
+5ef91789
+1562462c
+775b40d6
+bee772ed
+d65da8a0
+547acb3e
+2e7e4d9e
+9374a19d
+d181b261
+6c8b5e62
+24da1627
+7c995be6
+0709b071
+6101f6ce
+30ac07d0
+0c872b8f
+e49adff7
+990c7a8f
+fe1969d8
+594a7a09
+5e92ed2b
+58b1c49a
+5f747b0c
+fe04416c
+e3537f93
+3e6534b8
+1cac806c
+c19acb47
+e49cdff7
+9af382af
+c83d53f6
+c21852cc
+68c8d8e9
+c4141160
+52135d56
+2de37f54
+4ab2d163
+00028364
+168555f9
+74f72eb1
+a3c87b65
+8b0a522a
+896cbb2b
+ebe3db2a
+769344d4
+141c24d5
+6a5c5e66
+ce0c8056
+dca6f480
+72541426
+38de791a
+e749c1fc
+c3e3c21c
+d0bc9a3a
+2d3dcb25
+dabc13b9
+5720f8ef
+4cedfddc
+85e2cc35
+69ae119a
+c35fadaf
+75f1955d
+3ca05250
+8a0e6aa2
+341c25a0
+dd3f62c5
+f138a1c5
+7c7e490e
+6b55d58f
+12d03774
+2dc51a2a
+072cdbff
+bddd2199
+c66c04a1
+f59b606c
+5d7dd722
+b7b9be0a
+64ee2c7c
+ef42899e
+3fcfd8f2
+10bd7661
+c030270d
+adc99dd4
+374edbff
+c12bab6c
+a2cdf4c6
+0971ed61
+3ddfc84a
+74bd2e93
+971acc3b
+2b7599b3
+24188bcd
+c823cb2f
+b719fd5d
+1ca9ad63
+6cfe896f
+9e53d96f
+2a4a2733
+61ac2690
+d5b5d8cc
+7b41ceab
+971d313c
+b321b875
+a7451471
+96780b11
+3a468b02
+f7f576a7
+2ab7ea92
+74b3485c
+e08ef17a
+5f519095
+255e6aee
+d41d2736
+3a2f646b
+a87af0fa
+31c45bb4
+57850f05
+ce3ba44b
+07fa8737
+b5380c9b
+42115846
+f1497cde
+6df4310f
+b71a1872
+b287d885
+6d8e7a4d
+6ae0d032
+5f5cfb2c
+5b20d542
+478be0c8
+ce3ffa8f
+e728e41b
+54f8735b
+a3cac099
+ab078ca4
+5c353f66
+b507e365
+8e307d8d
+c264fc6e
+619d0ebc
+f42501de
+7a742aa0
+51704b2a
+a57f8862
+b93723ed
+2f0f6272
+b4721f32
+0552a2d2
+f2bac320
+d5a23f5f
+0df07127
+f03a34e9
+f20f8ed8
+0fc5cb16
+697ab4d4
+b9800962
+9714ac5c
+16a302e5
+a459e93b
+4100c385
+9b07ed10
+afb2f00c
+113ca5e9
+3deebb89
+4954b5b2
+ff9f876b
+a797efa4
+3d8ec31d
+14b5aa70
+80a1a4e8
+eb4a558f
+7f5e5b17
+1bd80da6
+303509d1
+27a3e10d
+62edfaa8
+800bf168
+255f378a
+5ce4e7ad
+7a9113c2
+5c931825
+5ffa42dd
+d90690a4
+c15d2dd5
+7a6a777e
+615890f7
+97cba8ed
+27386a2b
+68345712
+d8c795d4
+5f06f7ad
+82ddebd3
+2d358398
+ed294ae9
+b2cb0c19
+8bd0b9f1
+939e1ac3
+24eeb7cf
+0fc5352b
+c6b02aee
+096bf47b
+d59a5b98
+f9513eaf
+ecd58e89
+8e253ba9
+60197e39
+71dac456
+9fe681c6
+9bdf9ce3
+4aef382f
+8f5ffe15
+06c60b79
+960ebf65
+19f07cef
+f9da381e
+374b8630
+288ce342
+0b843570
+fa9a0dea
+381c56b4
+2de91157
+cc679c3b
+d74af4eb
+0e2d4669
+28b50b14
+f1d2b996
+fde3c55e
+386c49b8
+81dca870
+064326c6
+53f39718
+39db8a8b
+fdbc23ec
+fb24d57d
+18f7c1a0
+b61c76ab
+e25eb8c5
+9b9426c9
+0556869a
+d277af9d
+1bec06be
+e0e0a83f
+e413f941
+1f1f57c0
+01bed3ee
+0434d582
+5f7e9231
+08c817b0
+5a280b96
+36506813
+01be696c
+3edc9bee
+7da37a1e
+6488f48f
+702122da
+d76fc834
+f27da73b
+4c18c344
+bff0cc90
+47ca752b
+400f336f
+b8358ad4
+19be8a6c
+4122e410
+f6f1e7a1
+026f9268
+04744065
+b656cf24
+52df1cb0
+0e8b61f7
+9c4b9066
+cbfa82a0
+dc9b7581
+e6e9b0ae
+bf2f1a18
+d2eccdf1
+26a6bcae
+faf6e1ef
+d9594351
+05091e10
+52e0df3e
+50ab8607
+75375e4f
+0c472e1f
+b6084436
+395a602d
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-rwp2.reference_output
new file mode 100644
index 000000000..11f31698b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64im-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+5e7b5003
+de2093fd
+7b89296c
+93fdcab8
+7eb75927
+46d227af
+7dc59a3a
+d2d6b877
+9aa74d68
+f9a51e89
+a749f9c5
+cf84b683
+1890f9a3
+0bad8e56
+08ceac39
+854a9657
+31553304
+08c507c4
+53e8eb43
+137a9777
+2e94b019
+5031dd35
+ff1e5bef
+5c74e45e
+b2e5bcbe
+e0e267f7
+6b9f15c4
+dc338383
+db0def1c
+d3d649a3
+9a6ab329
+5ae6a228
+5491a906
+ee0d7aaf
+acca7f0d
+432779ee
+2083db6c
+c0cc07f8
+2cb7362c
+af949e5e
+a125a2a7
+f0852ca2
+a96ec2b3
+5cd2875e
+5bd34779
+c00ab528
+708cc1b6
+9d02fc90
+aa38160f
+3273ae1c
+0b54aa22
+953b00b0
+de1ccadf
+5388fa3f
+3c53d0e3
+224c0601
+8ef1daf9
+f8b30e2c
+f0e58650
+e8dac663
+e9ac0284
+1e2f05a3
+e5f0307e
+3d7c95f9
+04616759
+6682945d
+aaac3142
+8c8a18b2
+cbc5bac1
+2dddfaa6
+6f9fb997
+785036de
+8530f49f
+96944381
+a7298c66
+95a4d257
+fb6018e7
+6e445ac4
+d814d575
+807da245
+8c295990
+53b645ba
+69b1dcbf
+3d061437
+2836f055
+556c4c6d
+08208d09
+7f216822
+936f5505
+2d25120e
+dae98554
+14b91c79
+09fe899c
+3c07bf4c
+c6880007
+c5ec6148
+5d290934
+6218c6bc
+6a013380
+7213516d
+98a76a8d
+43b1da75
+ae4839a1
+4652f62d
+79b512a0
+8b70be8a
+9e044706
+85986adb
+a57ad1d5
+130ebf0e
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ks1i-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ks1i-01.reference_output
new file mode 100644
index 000000000..2f24ee079
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ks1i-01.reference_output
@@ -0,0 +1,172 @@
+c56f6bf2
+c56f6bf2
+bca32d60
+bca32d60
+b649a998
+b649a998
+6b2b75f4
+6b2b75f4
+76e71700
+76e71700
+95398f7e
+95398f7e
+cfa978b8
+cfa978b8
+283fe4ec
+283fe4ec
+0a11bff0
+0a11bff0
+cd16b8ef
+cd16b8ef
+63636343
+63636343
+121455ab
+121455ab
+410e5b1a
+410e5b1a
+3f60df46
+3f60df46
+12d06ffd
+12d06ffd
+4a0356fb
+4a0356fb
+ac6a0312
+ac6a0312
+c6d879b0
+c6d879b0
+4780bd4a
+4780bd4a
+891aa801
+891aa801
+6d9d0a91
+6d9d0a91
+7b777c63
+7b777c63
+16bb54b0
+16bb54b0
+0f2d9941
+0f2d9941
+6842e6bf
+6842e6bf
+0d89a18c
+0d89a18c
+df2855ce
+df2855ce
+e9871e9b
+e9871e9b
+948ed969
+948ed969
+00000000
+00000000
+9e1dc186
+9e1dc186
+b9573561
+b9573561
+0ef60348
+0ef60348
+66b53e70
+66b53e70
+8a8bbd4b
+8a8bbd4b
+1f74dde8
+1f74dde8
+c6b4a61c
+c6b4a61c
+2e2578ba
+2e2578ba
+08ae7a65
+08ae7a65
+eaf4566c
+eaf4566c
+a94ed58d
+a94ed58d
+6d37c8e7
+6d37c8e7
+79e49591
+79e49591
+62acd3c2
+62acd3c2
+5c240649
+5c240649
+0a3a32e0
+0a3a32e0
+db0b5ede
+db0b5ede
+14b8ee46
+14b8ee46
+88902a22
+88902a22
+dc4f8160
+dc4f8160
+73195d64
+73195d64
+3d7ea7c4
+3d7ea7c4
+1744975f
+1744975f
+ec130ccd
+ec130ccd
+d2f3ff10
+d2f3ff10
+21dab6bc
+21dab6bc
+f5389d92
+f5389d92
+8f40a351
+8f40a351
+a89f3c50
+a89f3c50
+7f02f945
+7f02f945
+85334d43
+85334d43
+fbaaefd0
+fbaaefd0
+cf584c4a
+cf584c4a
+39becb6a
+39becb6a
+5bb1fc20
+5bb1fc20
+ed00d153
+ed00d153
+842fe329
+842fe329
+b3d63b52
+b3d63b52
+a05a6e1b
+a05a6e1b
+1a2c8309
+1a2c8309
+75b227eb
+75b227eb
+e2801207
+e2801207
+9a059618
+9a059618
+c323c704
+c323c704
+1531d871
+1531d871
+f1e5a534
+f1e5a534
+ccf73f36
+ccf73f36
+2693fdb7
+2693fdb7
+c072a49c
+c072a49c
+afa2d4ad
+afa2d4ad
+f04759fa
+f04759fa
+7dc982ca
+7dc982ca
+76abd7fe
+76abd7fe
+2b670130
+2b670130
+248893fd
+248893fd
+1198f8e1
+1198f8e1
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ks2-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ks2-01.reference_output
new file mode 100644
index 000000000..4621edd7c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/aes64ks2-01.reference_output
@@ -0,0 +1,440 @@
+50e93920
+254a9493
+0000000d
+0000000d
+ffffffff
+ffffffff
+fffeffff
+20010000
+ffffffff
+10000000
+ffffffff
+08000000
+ffffbfff
+04004000
+3fffffff
+c2000000
+00000001
+fefffffe
+00000002
+ff7ffffd
+bfffffff
+40400000
+00000000
+ffdfffff
+00000000
+ffefffff
+00000200
+fff7fdff
+ffbfffff
+00440000
+ffffffff
+00020000
+00000000
+fffeffff
+00000000
+ffff7fff
+ffffbfff
+00000000
+ffffffff
+00002000
+00000000
+ffffefff
+ffffbfff
+00004800
+00010000
+fffefbff
+04000000
+fbfffdff
+00000000
+fffffeff
+bfffffff
+40000080
+ffffffff
+00000040
+08000000
+f7ffffdf
+00000000
+00000000
+fff7ffff
+00080008
+ffffdfff
+00002004
+feffffff
+01000002
+00000000
+fffffffe
+7ffffff7
+80000008
+40000000
+bfffffff
+20000000
+dfffffff
+10000080
+efffff7f
+08000004
+f7fffffb
+04800000
+fb7fffff
+fdffffff
+02000000
+03000000
+fcffffff
+ff7ffff7
+00800008
+ffbfffff
+00400000
+00200200
+ffdffdff
+ffe7ffff
+00180000
+00080000
+fff7ffff
+00048000
+fffb7fff
+00020000
+fffdffff
+fffeffff
+00010000
+ffff7fff
+00008000
+ffffbfff
+00004000
+00002000
+ffffdfff
+ffffefff
+00001000
+fffff3ff
+00000c00
+fdfffbff
+02000400
+00000200
+fffffdff
+fffffeff
+00000100
+00000080
+ffffff7f
+00200040
+ffdfffbf
+ffffffdf
+00000020
+20000010
+dfffffef
+fffffff7
+00000008
+effffffb
+10000004
+00000000
+ffffffff
+fffbfffe
+00040001
+7fffffff
+7ffffffb
+bfffffff
+9fffffff
+dfffffff
+dfffffdf
+10000001
+effffffe
+f7ffffdf
+f7ffffdf
+02000000
+fdfffbff
+01000000
+fefffffe
+ff7fffff
+ff7fbfff
+ffbfdfff
+ffbfdfff
+ffeffff6
+ffeffff6
+01080000
+fef7ffff
+00040000
+fffbfffe
+00028000
+fffd7fff
+fffeffff
+ffeeffff
+ffffbffd
+ffffbffd
+00002000
+ffffddff
+ffffefff
+fdffefff
+08000800
+f7fff7ff
+00100400
+ffeffbff
+00000100
+effffeff
+ffffff7f
+3fffff7f
+ffffffff
+ffffffff
+ffffffdf
+ffbfffdf
+fffdffef
+fffdffef
+fffffff7
+fff7fff7
+fffffff9
+fffffff9
+ffffffff
+fffffeff
+01000000
+feffffff
+efffffff
+efffffff
+fffffffc
+fffffffc
+00000000
+fffffbff
+fffffffe
+fffffffe
+00000000
+fffffffe
+00000002
+fffffffd
+00000000
+7fffffff
+ffffffed
+ffffffed
+ffffffff
+ffff7fff
+9507f887
+0c098d6d
+196460c0
+9f6fba6d
+a4c9610f
+c22382d6
+c752b5b7
+df741db3
+c76e065e
+ee51993e
+77c4a8eb
+6d651600
+abc99e1d
+2db16bfe
+739c9bc2
+28ef976f
+74364d26
+c61df258
+9d933776
+ce3559a7
+f452bef8
+42abce97
+94367c85
+4460142b
+3eba7e85
+94d1cc38
+0aa128d4
+233d131b
+721878ba
+6ddceb70
+b2969831
+46559b36
+ba2e7f3c
+1a78e24a
+093b4744
+2494dd83
+b11cf4be
+8545ddf0
+ffffffff
+feffffff
+00000000
+ffbfffff
+00000000
+fffffeff
+00000008
+fffffff7
+02000000
+fdffffff
+ffffffff
+efffffff
+aaaaaaaa
+ffffffff
+00000000
+fffffffd
+ffffffff
+feffffff
+ffbfffff
+ffbfffff
+00000000
+fffdffff
+fffffffd
+fffffffd
+ffffffff
+ffffffdf
+ffffffff
+ffbfffff
+ffffffff
+ffffbfff
+ffdfffff
+ffdfffff
+ffffffdf
+7fffffdf
+55555555
+15555555
+08000000
+00000000
+00000000
+04000000
+ffbfffff
+ff3fffff
+00200000
+00000000
+00080000
+000c0000
+ffffffff
+fffdffff
+ffffffff
+fffeffff
+fffff7ff
+ffffd7ff
+00200000
+00201000
+ffffffff
+fffff7ff
+20000000
+20000400
+ffffffff
+fffffdff
+00000000
+00000080
+00004000
+00004040
+ffffffff
+ffffffef
+00000000
+00000008
+00002000
+00002002
+00000000
+00000001
+7fffffff
+7fffffff
+40000000
+40000000
+dffffff7
+dffffff7
+08000000
+08000000
+44000000
+44000000
+fdfffdff
+fdfffdff
+01000000
+01000000
+80800000
+80800000
+ffefffff
+ffefffff
+fff7fffe
+fff7fffe
+fffbdfff
+fffbdfff
+fffeffff
+fffeffff
+ffff7fff
+ffff7fff
+ffffffff
+ffffffff
+ffffeffb
+ffffeffb
+fffff7ff
+fffff7ff
+fffffbff
+fffffbff
+aaaaa8aa
+aaaaa8aa
+fffffcff
+fffffcff
+ffffff7f
+ffffff7f
+00000010
+00000010
+80000008
+80000008
+00000014
+00000014
+fbffffff
+04000040
+80800000
+80800000
+bfefffff
+40100000
+fffdffff
+00020800
+ffff7ff6
+00008009
+55554555
+00001000
+0000080e
+0000080e
+00000204
+00000204
+fffffeff
+20000100
+ffffff7a
+00000085
+ffffffb6
+00000049
+00000020
+00000020
+00400004
+00400004
+00000802
+00000802
+00000011
+00000011
+ffffffef
+00000010
+00000000
+00000800
+fff7ffff
+00080000
+0000000a
+0000000a
+ffffffff
+01000000
+ffffffff
+00040000
+00000020
+00000020
+ffffff7f
+00000080
+fdffffff
+02000000
+ffffffef
+00000010
+ffffffff
+00000004
+fffff7ff
+00000800
+04000000
+04000000
+00000005
+00000005
+ffbfffff
+00400000
+ffffffff
+00000000
+00000000
+00000001
+fffffeff
+00000100
+40000000
+40000000
+bfffffff
+40000000
+00000000
+00100000
+860068c2
+43527ea2
+00000000
+bfffffff
+ffffffff
+00020000
+00000000
+ffffffef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/andn-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/andn-01.reference_output
new file mode 100644
index 000000000..8513be14d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/andn-01.reference_output
@@ -0,0 +1,1048 @@
+00000000
+00000000
+00000000
+00000000
+c38671b6
+6f061d6d
+00000000
+00000000
+2502307f
+485246bf
+392e6fa3
+c50bd94a
+80e4d23b
+80627494
+cec7313a
+2005b307
+5d003e38
+31410cba
+0b815ef0
+9681bcad
+83e2ba3a
+3328804a
+46e4abd8
+e48bf412
+242d8cef
+061bf2da
+d8d8dd47
+810d9484
+c1f36fae
+0097ed4f
+d7704260
+044bafe7
+058160e6
+3001038b
+d8bca4df
+a4603852
+e812dd49
+4084177d
+3d32d01e
+4216a775
+2037e34e
+481c5e43
+874434d3
+50010372
+875e9bf5
+c00c84b7
+17d8a217
+a293021c
+87f996d6
+0c80300b
+0d42ea01
+0000b460
+2de4eb20
+0200900f
+d6308385
+05215435
+ab72f99f
+8a340809
+4e7b7359
+00c806cb
+d96429c9
+b6de8bcf
+c8cdf63e
+a1981301
+c06209fb
+30480609
+644918a7
+101d0c00
+4f63879f
+3400001c
+1f3c1ad7
+a2162046
+1bb3e347
+300d8260
+0bedcfc5
+c1084340
+14496066
+e50000a4
+88552f4b
+042aa060
+04507198
+001e8241
+0256b0e2
+22800102
+9929dfeb
+348532c0
+b22036ed
+02880001
+83422130
+00144495
+2141c528
+50102014
+400397cd
+07800242
+2001c392
+6180a261
+50942250
+10702019
+2c0090b1
+16a01400
+56d646e8
+98108110
+4510b7ae
+5267c011
+00800bd9
+0c894280
+223c8755
+2a020918
+609200d7
+54985000
+82082833
+94910504
+012f68c9
+16421000
+0e620056
+923eb0ca
+2300401d
+03ab40c3
+c081b2ae
+62a70209
+706d811d
+0300818a
+a601008c
+8bc01740
+61620c07
+4243c262
+48112301
+65802100
+01808080
+a0c04383
+00042e02
+00438b44
+00000000
+00000000
+00000000
+00000000
+00000000
+40000000
+00000000
+20000000
+00000000
+40000000
+00000000
+08000000
+00000000
+a8000000
+00000000
+02000000
+00000000
+52000000
+00000000
+25800000
+00000000
+06c00000
+00000000
+54a00000
+00000000
+54200000
+00000000
+43200000
+00000000
+14000000
+00000000
+08320000
+00000000
+4d410000
+00000000
+91428000
+00000000
+820a0000
+00000000
+02602000
+00000000
+0000b000
+00000000
+60029800
+00000000
+82210400
+00000000
+01c00c00
+00000000
+40105500
+00000000
+2c00d200
+00000000
+43080800
+00000000
+b0005100
+00000000
+14002010
+00000000
+23038188
+00000000
+0d408030
+00000000
+05056902
+00000000
+90140242
+80000000
+10900208
+00000000
+08624845
+60000000
+40490500
+b0000000
+70010508
+00000000
+90108045
+40000000
+84750060
+70000000
+014aa031
+0b000000
+905e9560
+e2000000
+0404a207
+2c400000
+7b835008
+02000000
+a8804320
+7a400000
+00400344
+00c00000
+c1466049
+02ec0000
+51109501
+08860000
+244005c7
+82450000
+80140202
+01e90000
+1281013b
+71050000
+05000504
+10002000
+949c4040
+10000000
+28000045
+e201e000
+ae202c62
+20042c00
+47508081
+56161000
+190228a1
+02960800
+00100504
+0c041080
+01551a00
+92801040
+030628c5
+46803300
+793503b0
+2061c490
+0824c000
+a0000840
+08120780
+92c92e34
+058b2020
+000016e6
+84404414
+20747604
+405c8a0a
+08884215
+010f80c0
+0c44a118
+1093a202
+00095300
+06000000
+4800e418
+23820401
+82280a60
+0068a003
+0620a140
+80a84804
+200c0200
+02027000
+99000680
+01000a71
+29290800
+04a00806
+b2024200
+04000017
+81064000
+08444060
+00402800
+60048880
+c8013000
+40040228
+08c84000
+82480084
+03228000
+10808048
+00208000
+0261d527
+832c0000
+a0a46202
+08180000
+08118d07
+2a080000
+6084a180
+60c00000
+42216218
+13800000
+0904e404
+40200000
+d10dc11d
+21400000
+0b605a8c
+41800000
+04e30623
+01000000
+8530424d
+0a000000
+e8104090
+48000000
+1081008a
+08000000
+08a9340b
+50000000
+0a0480ca
+00000000
+0a800000
+80000000
+0ab0cc00
+00000000
+110116a1
+00000000
+c0280501
+00000000
+09026842
+00000000
+0034060c
+00000000
+c0003a08
+00000000
+080a8540
+00000000
+200a2040
+00000000
+1c804140
+00000000
+80008200
+00000000
+08810300
+00000000
+81180a00
+00000000
+40541400
+00000000
+0328e000
+00000000
+88080000
+00000000
+04350000
+00000000
+10908000
+00000000
+c0038000
+00000000
+04110000
+00000000
+69920000
+00000000
+00000000
+00000000
+e0400000
+00000000
+99c00000
+00000000
+17400000
+00000000
+a0800000
+00000000
+04800000
+00000000
+01000000
+00000000
+4c000000
+00000000
+18000000
+00000000
+10000000
+00000000
+30000000
+00000000
+20000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+081602a0
+0168a920
+54c40248
+1012a08a
+11828912
+40200012
+02ae1086
+269299c2
+2280178a
+00152110
+0c2ef85d
+24002200
+88062121
+02052111
+730f580d
+49000483
+414124da
+04019611
+00f428f1
+04c04041
+e1087378
+c3106040
+081001eb
+0c040b00
+30e10845
+55618a14
+ba08575d
+02352284
+1163166e
+08155004
+b23c793c
+89240013
+9802b3e8
+2311040c
+12306b95
+80030414
+0802bf7e
+21202284
+1016352d
+0190e80a
+10606b75
+209a40a2
+20c7281d
+01038401
+64207a6e
+42058313
+f3695e7c
+8d201049
+0206ce0b
+10596211
+00adca5b
+0018884e
+2393cd5a
+0000480d
+9585a3fa
+63604161
+c81f21ff
+200088d3
+1288f0c3
+42184280
+3203dcf8
+9c108b00
+31911bf7
+c6000e2d
+6672eada
+0024a430
+8a116ca0
+61ca40a5
+a630b44d
+80052040
+686cc193
+3607b027
+69780d70
+40800101
+2d01d181
+24200715
+4928a17b
+06a2291f
+f6d6c917
+d4800143
+87b54144
+681cdc1f
+b07d649a
+e0644095
+e8474edc
+70010242
+74e944f2
+040a27ac
+c641de8d
+112028da
+6e1bd534
+a80a1799
+68a57aaf
+76102e0b
+4bcd2b08
+6081061b
+4892bab2
+52880a5c
+32634fc5
+2409a446
+11285db5
+208b400d
+894e02c2
+0c255b70
+4c6774ad
+2000fe62
+c3b9beef
+2144cb7f
+64fe0833
+0008f684
+a4cce666
+8526f5e1
+d2c8217e
+a4e9cb1e
+40681adf
+0149d850
+92073309
+104b25e3
+1f7bf60f
+264862ca
+bcd00de7
+2c735232
+fc4e28b4
+01cc6135
+b4915fef
+b853a012
+44170772
+50083f03
+d0746162
+5915e3f2
+264c4064
+00280928
+028884b0
+a0212156
+38e6a05d
+92088000
+16118049
+a0050264
+44808120
+521a0488
+e501a402
+98a8c008
+01218042
+78052004
+982000a0
+2e000118
+06801052
+c3220c80
+42280120
+42000208
+01183245
+f088a6c0
+c2930404
+03e04044
+11904528
+9ad02091
+02207408
+d8209899
+12c41888
+6e180400
+102a4316
+6410c107
+8c108274
+764a40b4
+10220141
+946c0018
+00541008
+fd844400
+0a394014
+1d6d2002
+e620905c
+91991044
+3268044a
+1b2e2891
+2f086410
+d53c2488
+02180474
+c21668a8
+16a00242
+5c7fb009
+8160d030
+aeb0a908
+88623c00
+cc81f252
+34605048
+2041c022
+c508f730
+f0f1d8d3
+0600a106
+426e6dd9
+40700a00
+e715dfe5
+102a4001
+db54e658
+08848020
+a3729599
+80e40521
+6fd08d91
+4e020011
+1ad9c6d8
+e22100f5
+05d54cb2
+6020e401
+9e2e5be5
+795e0413
+866534cd
+2080e20c
+56f55245
+66127d00
+44eb31e4
+1f060430
+7db4d3b5
+7f20c144
+3372969f
+8fc00006
+a38d0f39
+f2e04621
+b06670aa
+ea741100
+23f7d227
+2c40622c
+887aae6a
+de14a008
+106607dc
+6be0248e
+c4aaf35a
+1530140a
+0981abb6
+b7e02901
+db14a009
+ca710223
+eea93b6f
+167cc426
+fa342b15
+ec9a5180
+b7b8b1a0
+fb7a3b29
+3473f51f
+f1bae488
+57d53e43
+63522412
+2141c6d1
+b3257d52
+e7ff25b9
+c196c580
+28c0d4ae
+b6d3e849
+0942c3fb
+79a2ed01
+418bfbb0
+13f5bc90
+af3aeaa3
+a111f5fb
+1d849e2b
+d4652688
+44339c10
+67ba7848
+746fe5b9
+caa0a141
+9064dbd9
+90034004
+080e5323
+002a2020
+20300201
+4030020e
+28484392
+c2050029
+08000858
+04004a09
+00032000
+029471a8
+06320404
+00400841
+02d013c6
+0cc00682
+01550174
+88281820
+00a64420
+002a1731
+00484200
+f512e080
+00040095
+80e00090
+00010889
+04410520
+000d8019
+20401409
+00000100
+0a4bc278
+0002a012
+14000c10
+0001b440
+60100014
+00004022
+00028121
+00004040
+58000c20
+00002009
+094ce086
+00000400
+a9010234
+00000007
+e4502102
+00000203
+200c0631
+00000290
+a004b24e
+00000122
+00262020
+0000000a
+48008621
+00000042
+7001c198
+00000028
+ae096415
+00000010
+05246000
+0000000c
+22500eb0
+00000006
+01168432
+00000002
+08180102
+00000000
+0900003c
+00000000
+58c20584
+00000000
+10012108
+00000000
+18904405
+00000000
+00204406
+00000000
+0211e050
+00000000
+0001d120
+00000000
+00100221
+00000000
+00801212
+00000000
+00302000
+00000000
+00301042
+00000000
+00088000
+00000000
+00009a01
+00000000
+00020000
+00000000
+00024004
+00000000
+0001293e
+00000000
+0000b807
+00000000
+00004520
+00000000
+00002000
+00000000
+00000829
+00000000
+00000a02
+00000000
+00000010
+00000000
+00000199
+00000000
+00000111
+00000000
+00000000
+00000000
+00000039
+00000000
+00000026
+00000000
+00000014
+00000000
+0000000f
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+8a000126
+02319082
+2501db00
+4001088c
+64622480
+24002828
+200228a9
+1c00210b
+469702c2
+00008000
+d286104e
+04208060
+64a41500
+0080ca60
+901017a8
+01048410
+02024005
+000020a7
+10100404
+00122224
+63544003
+00242808
+058a4836
+00048200
+0185341f
+00090023
+10441064
+00060241
+0a630102
+00032612
+4844042a
+00010201
+028c0189
+0000c14c
+78010024
+00004812
+44008500
+00000241
+0007a220
+000000a0
+91406492
+00000290
+24000c0c
+000004b0
+c1088219
+00000019
+14010091
+00000020
+201000e0
+00000020
+96410481
+00000030
+18804009
+00000000
+17050814
+00000010
+120e3907
+00000008
+0b011224
+00000001
+6010b028
+00000003
+1400402a
+00000001
+60012142
+00000000
+4070a804
+00000000
+06100a08
+00000000
+00401538
+00000000
+00023e21
+00000000
+02040a08
+00000000
+008a0200
+00000000
+000089e8
+00000000
+00a44150
+00000000
+004046b0
+00000000
+0011c002
+00000000
+0000e000
+00000000
+00005110
+00000000
+0006410a
+00000000
+00010608
+00000000
+0000088d
+00000000
+00009500
+00000000
+00000308
+00000000
+00000070
+00000000
+00001c0c
+00000000
+00000810
+00000000
+00000468
+00000000
+00000012
+00000000
+0000001c
+00000000
+00000080
+00000000
+00000006
+00000000
+00000021
+00000000
+00000010
+00000000
+0000000b
+00000000
+00000004
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+28521002
+31282100
+8455001a
+20010070
+14890542
+4814096e
+ea244400
+89807c48
+21100108
+00002048
+81050810
+08809818
+0042910c
+f0499020
+404240a6
+c211d303
+12680020
+63009500
+040c0102
+593a04a1
+00342080
+29d1f0a0
+0400c646
+01e16080
+09804030
+2586a0a4
+a2a00020
+46000c09
+808141a8
+986c0160
+a0b84248
+7e548312
+10218491
+3d972c45
+c1932010
+a6e92c62
+11054580
+ccddc252
+04101905
+5f74600c
+40850000
+71c97115
+62006804
+470be960
+504c210a
+0013c801
+cc2100a4
+92c0be14
+10120c20
+3691023b
+8105b601
+dbd57f24
+00040860
+09a188c0
+25638101
+1c7f5e89
+a2200000
+09a30c00
+ad490100
+6181e038
+06000842
+7a0329fc
+88a02441
+93a1ea86
+11492102
+8d8bacf8
+115008e0
+83d36992
+c4280830
+644b8ad2
+e0400b00
+f30da6dc
+f0412124
+20c3ba4b
+d1800442
+70f7b95d
+181c0001
+994f8d46
+ee22014b
+d56cc52c
+ba700000
+7ada1757
+9803042b
+6aca68e3
+ae02444c
+c1e37ade
+74802406
+4994cd7b
+a7000181
+ac040093
+d3608040
+38f5036d
+d2502922
+22970dfe
+95fec06b
+8decae92
+3a131ea2
+e744d716
+66108600
+d9afc609
+25164823
+eb46e386
+c2f9e988
+f68c1763
+d7f4e402
+28673630
+58d67299
+6a5b2da8
+7375e54d
+8ca3f894
+b277bae0
+76b2154b
+f4ab5511
+6ac4ff4f
+c2b7f909
+07d62d60
+b267b400
+56913d4c
+533580e0
+bcd88611
+a5195dd5
+9e4f11f6
+4123da19
+00e1a410
+ac1714bc
+ec856888
+307b497c
+d6fb3210
+fc33f0d8
+cb3d257f
+5ae10604
+5ba2c7dd
+2af42d39
+92eeeb1c
+d96429c9
+b4cc02c7
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/clmul-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/clmul-01.reference_output
new file mode 100644
index 000000000..af9c380f1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/clmul-01.reference_output
@@ -0,0 +1,1052 @@
+55555555
+55555555
+00140010
+11445401
+00000000
+00000000
+00000000
+40000000
+00000000
+60000000
+00000000
+50000000
+00000000
+08000000
+00000000
+b8000000
+00000000
+70000000
+00000000
+70000000
+00000000
+a5000000
+00000000
+6e000000
+00000000
+0a600000
+00000000
+11b00000
+00000000
+6eb00000
+00000000
+e5800000
+00000000
+21f40000
+00000000
+18650000
+00000000
+00000000
+00000000
+8e378000
+00000000
+32d2c000
+00000000
+4b881000
+00000000
+b0cc1800
+00000000
+a26aa400
+00000000
+00000000
+00000000
+00000000
+00000000
+64a87000
+00000000
+fa87e340
+00000000
+84895de0
+00000000
+b2861c90
+00000000
+5cd5df48
+00000000
+ae642da8
+00000000
+fbe4b0b6
+00000000
+c4531049
+80000000
+9606dc0e
+40000000
+b6e9fb41
+e0000000
+5cc26cfb
+b0000000
+657fab39
+70000000
+9ded44d9
+4c000000
+634a7a2f
+70000000
+073bcd65
+9a000000
+59197415
+23800000
+d2592171
+ca400000
+a5770740
+be000000
+3b6762c7
+06800000
+a1d7b639
+66d80000
+8ff0960c
+5dd80000
+09963c2c
+5aa00000
+6e70dc73
+3c3b0000
+c2c594fa
+89340000
+7487cc33
+b8118000
+8a488186
+b9862000
+efed1c42
+7275b000
+7e32f486
+8b3e9800
+8ab10903
+65930c00
+fa055df8
+b3beb600
+86d05367
+533a3200
+47b0061c
+f4883f80
+781f63af
+0bdb0d80
+ea4f2c9e
+3d05fe60
+7dca914a
+85d96740
+35e46cd2
+2a67e868
+04db84d1
+869d199c
+7f6fbf64
+1fe2d880
+a59f0921
+b2371ce6
+a69f7ea9
+00000000
+00000000
+00000000
+80000000
+00000000
+40000000
+00000000
+e0000000
+00000000
+10000000
+00000000
+f8000000
+00000000
+1c000000
+00000000
+16000000
+00000000
+0e000000
+00000000
+ac800000
+00000000
+92400000
+00000000
+3c200000
+00000000
+61f00000
+00000000
+c6b00000
+00000000
+ba840000
+00000000
+f56a0000
+00000000
+92f30000
+00000000
+a4168000
+00000000
+d6cfc000
+00000000
+e4556000
+00000000
+105e2000
+00000000
+ac638800
+00000000
+c4b0c800
+00000000
+354c7000
+00000000
+1a3ff200
+00000000
+ef3a9200
+00000000
+404fc0c0
+00000000
+93af7000
+00000000
+df17c980
+00000000
+f41e8aa8
+00000000
+e7246e78
+00000000
+8ab26590
+00000000
+c51fb763
+00000000
+91bb9148
+c0000000
+206d1ff3
+40000000
+2f80e626
+00000000
+9ac482a9
+18000000
+c4d4defc
+a0000000
+b0d8a852
+4e000000
+35d64806
+c1000000
+ff1f2d8e
+1a000000
+95646529
+b9c00000
+0bf2bee6
+fb800000
+97d1ef68
+57800000
+e17e74df
+2f000000
+a8e3a798
+11600000
+ad30f85d
+e2c20000
+11b49bde
+81200000
+a0655829
+9bfb8000
+363021b7
+138b4000
+0f5dfabd
+4a9f0000
+2b200995
+94819000
+ca87d455
+8f24f000
+815f8aaf
+58afec00
+847c519d
+f5a02600
+6e1ed243
+b981c100
+98904715
+255ae500
+0d65cf0e
+162b1f00
+37f99759
+a78e1ba0
+4695d66c
+3befacc0
+3e285d71
+edd06718
+37c1233d
+5de77334
+15914ee0
+32cc1786
+9038cff9
+339de029
+fa1d3b53
+35b0944e
+a6b9c176
+a632f9cc
+b46e2d72
+5aeff00b
+8f76ee54
+b0e340a8
+df686e43
+44aa9cfa
+ff876f35
+3ca82b6d
+9fc4709c
+9e3810ab
+78aca5a6
+02a4b1e3
+940220d3
+05c233ce
+9d052803
+65623ebe
+c8668e4e
+7f10d14c
+f5f0a299
+a37a6480
+7f5934b7
+7d770f96
+2a5c6bac
+18f46ccd
+ee5413d5
+07ff568f
+45c81364
+42fc60b0
+fb7a4062
+72f09655
+b2e7bcff
+a174b8fe
+76a97ebb
+f365b7d3
+22c07e4f
+61ecc46c
+a3d18209
+3da714fe
+43cc6f70
+3483a29b
+c2afe2cd
+24df6ff0
+3817790d
+056faf40
+34afe9b8
+9fb01b3b
+109c21ca
+5aa02cce
+6cd65562
+25069617
+6eaa25db
+94f0e89c
+69a0dcce
+c63c479b
+27d9fa3d
+8ecc2a38
+d82e1fd4
+f738fe46
+0fd66e41
+ba1a2c3d
+0356af81
+ad08e0d7
+6f89c9f5
+f360111f
+174723bf
+92eedc04
+3cfd622b
+d9a4a3d2
+fc7a364a
+db1b68a1
+e2564350
+6aa92434
+30191944
+e2900e61
+9581657a
+0c62b481
+bd9d157a
+e52662d0
+10c3915b
+f0e0cc44
+a1ccb184
+a8da6556
+52534ba0
+856aa896
+8d811066
+e331a957
+3276f657
+fa88b794
+cbaf32db
+6d847aba
+4dc0054e
+f15cbad9
+a7e22198
+3d44d15b
+6b4fa6b3
+81239d07
+0477349e
+4f8f2f3e
+6ce79f36
+d23e2d07
+173ad2db
+1ff2db6a
+2a3820b8
+72e86a97
+f4dcb67a
+c83e88f9
+97c7b01f
+e356f26c
+db859090
+948c3074
+b2c0a61e
+aa0814fc
+1ccbe7d0
+e825a8cc
+469a3ff5
+01d383d9
+c63f6d5b
+08043493
+a5df00ec
+c0a3634a
+574785bf
+e2c96a80
+9dd45cf0
+65cab469
+9c6d922f
+6fa8c691
+db65c33d
+8c52ddc0
+25ee3144
+ca819e43
+6cd14533
+d9dd02ef
+d9abc1c4
+a581d687
+a6626a70
+f2d90623
+e4cdc9b8
+eac4c1de
+127ad386
+64199f4a
+df242210
+a04ab62e
+0f3d9404
+ae02f7e3
+f2db06b6
+74e46efa
+2aefd23b
+d75fa47d
+6d84d540
+97c1d20c
+ab9702c5
+86182296
+f3162d3e
+553ac79e
+3022ae8e
+32ffd88f
+e524e98d
+39a48241
+0269246e
+83a0c40d
+4a998d49
+036e8c26
+5e6e57f1
+d19cc07f
+8c8beced
+a0ef464e
+1565be4c
+f7257386
+f3fd7b8b
+9ba84d5e
+dad4845b
+36357c8f
+45d964ce
+ddf26081
+00882a48
+9c5710ac
+09d197ea
+9b31ec9c
+01fd4814
+e7dbee63
+bf65640b
+f1d63403
+86fee987
+12a04a00
+aa12b238
+7b2d0514
+47c33630
+3b541efd
+7b9d78bb
+3a25a3f8
+9bbc208a
+777b0ce3
+dd668848
+d35a7135
+e5017777
+3745396e
+107f2131
+728eea24
+1c7f9118
+727d5185
+7d79d52a
+b1aa1a2a
+c0756719
+6db2ca7c
+2acda560
+f8e71258
+fb2f9deb
+d7c66a69
+be55ad5f
+3a818923
+ba24f726
+f29790e1
+1a42b494
+790d96fb
+d5333031
+176a1f2e
+1caea2e3
+8f5c19b9
+9ee647dd
+72c98330
+fd6fb0ac
+6c11b3ad
+0c59d75c
+6d24c33b
+35ce5361
+448b9016
+303c3697
+5a4d61c6
+66e46aae
+d26f54eb
+a7b99c7a
+917786ce
+17daff74
+143dc0f0
+3a691380
+8900ad44
+c792f8d6
+36eef777
+f937060a
+e4ed4a7f
+15f213a0
+6a8d5ce0
+eb921d65
+24a84452
+c16c49f4
+a07c0750
+bf6d74ec
+c11aae08
+317b9b44
+016f4d39
+35ee8a46
+39259ff0
+fd64355b
+96a7a87b
+6552bfab
+e579758b
+6259f404
+2c9e774c
+762cb312
+df16d689
+87a1ae5c
+cb50fa20
+8ab58ed0
+21fc9992
+51a990f2
+e98589c6
+38b039ba
+fc6613be
+f2bb7d5e
+97796170
+3a5d16bb
+e16743d4
+0bd83f85
+00931cd0
+bfc6dfcf
+e600c2c8
+873a55ef
+adb39106
+4523b7f9
+61e33ac8
+55643299
+62cc7d30
+53b294fa
+5b46e0b4
+aa99bc22
+769bda00
+30e6b210
+4d1af6d7
+f5966a5f
+093f62e8
+dd5c2139
+eb66e3d2
+afb1f2ef
+2bc98126
+797c6364
+e638fe7c
+ae428050
+dfe70942
+b9f8e06f
+0e4e8052
+9e7f0648
+e4cf7360
+d05d40f2
+dcf13cb7
+ea9bb0d5
+2084f102
+4abf08fe
+dc528de4
+c7a2e366
+8da55f60
+ceab3309
+4bbb43fa
+d5b9e824
+154b9618
+d8dfa50c
+ef062027
+7ecabf07
+74a8d338
+85398ffc
+40f463ce
+f323e0c7
+1ab9e04c
+d8ecd870
+e27048aa
+1b67ac30
+5018300e
+7cabade0
+b9b2c5e8
+8b412d5b
+10d6872c
+bfa89d9b
+0c1b68a4
+570ec409
+61b02eb4
+cf3666ae
+8fc0ee4c
+d7852f3a
+f332e9d0
+31af809d
+5c590e05
+7b2ba71b
+40bf518e
+9466604f
+38a4f38e
+d8a39c75
+3483ddc1
+ab1e3893
+0ffc9834
+cf785957
+2e4555db
+69f10af3
+09c80860
+5188bc88
+6b7a0f0b
+3f8c695b
+b7e56056
+363519f6
+051c0ac4
+824028b9
+a70a8310
+6e4375cf
+6f9f7c70
+cfd99fff
+9add0bea
+2d3e57ac
+4bf922d0
+27d1e654
+7227993e
+bfff8e24
+108a3222
+478cf57d
+e69cfb04
+61b482ed
+dae45842
+aef1c73a
+42f7d7ba
+91d87f25
+c38eaa50
+6a061537
+8447d7ec
+761278ae
+7caf6b9b
+cc54a431
+67ba7848
+746fe5b9
+00000000
+00000000
+a67c4b3a
+ec6f4980
+d7e842a0
+e4112a19
+8c6984ce
+e7d3f988
+72e792d2
+93093b69
+4f4caade
+dfb5c4df
+4cefa028
+8beff7fb
+9591834e
+10bcbb96
+0222ae06
+8219a90b
+21d7fedc
+0382e45b
+fe39f194
+6525beca
+20188b19
+260e0762
+588b99f4
+54c4f99e
+776c377e
+3595adec
+62e61da6
+9248384e
+cf6e4573
+23c6bc01
+4ac82081
+b32ba0e4
+9730f59a
+a97461c7
+6c2151d8
+c4a99ee1
+9d06b2b4
+9b217c1c
+6de7db10
+a67f3999
+e391eadc
+7f0937ce
+dcdb17b2
+d6e9bf6f
+2c4526ba
+a7a30b18
+ca6980c0
+bde620d8
+bc4c1080
+c8831d80
+7245ec8a
+e2245241
+732358ad
+fd80b8cf
+c960ed00
+783d3047
+0ecf49e5
+08fb6daf
+c8c2b2ac
+31abb3f0
+4a4dd33b
+06dd50b9
+f0f3afda
+33ce8011
+d88cbc04
+f9f844f9
+33799e5c
+522ddb34
+119bf956
+941cc71f
+76326958
+e0b6540e
+e6a829f0
+97dd1459
+e88a6328
+e60f913a
+74946c78
+20cd753b
+8d3bc0d8
+1846be0d
+0c8ade28
+747cfc03
+a5937b50
+55bd714c
+abea0db8
+65fe980e
+4fa68a51
+79c68e09
+3512f90a
+469b514b
+f8044a55
+d1dd77ac
+d648ff55
+44b229b9
+0bd7c2bf
+a6f2d0d8
+72185248
+90a7a8bb
+4e7ca02e
+95e6088a
+29e27e64
+640abfa5
+7565cad6
+ff4860fa
+84227578
+06a40b2e
+c5798699
+de6a7058
+78a892ee
+68c3af7b
+ab3a070a
+4c80af22
+e672e8c6
+dd5e0763
+d6582456
+05d6f41e
+74efd280
+ee14663e
+c9d2249c
+961e16cf
+89c417b0
+aed40cb6
+d0e89d7a
+731123ab
+960110a6
+5f52284b
+965eda32
+309d6b79
+00000000
+00000000
+7bc46c00
+4606ad7b
+b3f7b3e0
+426c92b2
+59dc9665
+e221333f
+39e3991e
+0518060e
+e14fd738
+823d093b
+699807af
+fa40347d
+558df750
+e48ec8a9
+e94aa13c
+bd9d4d28
+ac131688
+097c5015
+c6b6e6ca
+907f164c
+8eb8db88
+ff0b511f
+f9b3bf87
+ebcb3077
+566a4ca0
+4d91b84e
+b5aed539
+3c115c31
+d1eb0826
+6233bd12
+ebb796a6
+5303deb3
+7192ad8a
+40e2c7d6
+0e1667e0
+05ec3141
+0f353030
+a6bc227e
+cb2f8c21
+c0ab9dd6
+5e7d5248
+01750d02
+4d4af26d
+eade259d
+490fd19a
+989d0f39
+2dc1bb8e
+f6d19537
+308726e0
+f6d1ea80
+4f9ef570
+919a41f3
+9f9095c4
+5a701723
+525fee60
+32dfc1a9
+dfdcf3d0
+5ef64932
+a88a7be5
+9fe3cb7b
+f43e6d68
+c6545f52
+97cfff16
+409421aa
+c9132173
+d4294f2f
+59118ff5
+b7aa4e6c
+54c235f9
+7aabf617
+42281670
+252122f3
+9f2c326c
+8b50d353
+cc359d88
+28f01fbe
+b8e734e7
+14a229cb
+ed304f6a
+15e2e9ee
+d9358fc0
+702da7b9
+5be412a7
+af73fbb9
+fc1e1fa8
+c940eba8
+1e891938
+8b8737ae
+29747024
+c3d3ce41
+c3a838b3
+2bda5460
+7a106c1c
+53534d4d
+c2ab3730
+bfc52c42
+c372d4a5
+4e72dae4
+cb8e53fd
+44590406
+139c7bce
+152bb431
+8c710818
+912e2d0b
+6739d756
+0f403c2c
+c3193f64
+a216a4d1
+e47757d8
+a5800941
+9dc97721
+ae090613
+e7c81bab
+a6c3db6e
+7ea861a6
+9290db20
+70bfc7ae
+a789794d
+92e709ae
+23356d1e
+65c19a3c
+30d0ef2f
+268db34a
+530b3fd9
+236b2a1c
+c9ce53bb
+8c1e05d6
+698b7890
+b40d65da
+a522d0fd
+fd59cb93
+c4d61714
+541c16bb
+4f26399d
+e0d45768
+44ced599
+4887ebcb
+b29fc4cc
+edd81f4d
+43a85742
+ab4d23d0
+2956d23a
+78c62500
+c5ebbf41
+c2486f50
+2e98add9
+cbe2c612
+36c7d0c4
+46da1298
+192959af
+c05a71d2
+b1f11cea
+22eaa196
+c8fa166b
+79b37881
+0ee2dd4a
+c24038bc
+a9f3eb59
+3ebf6fe8
+b58fea9b
+4199c768
+45219c08
+af325a82
+b3c60b96
+bf40b590
+d9cd69a7
+e390803b
+4735ee7f
+5441bfca
+fc15396d
+a52934d6
+155934e6
+d520c700
+ce8980e2
+74c2ab97
+589abfa0
+194a0120
+8a33e40a
+64c2bce5
+8d4adfba
+a8da128e
+fb8ce5a0
+d02b10b1
+45eff8ef
+f4d521fe
+b1c3ec48
+ea588290
+e55aafb7
+06ac9015
+f661f951
+43f2ee38
+518f46cd
+024b2e5a
+cef781ad
+a403c9d8
+f249e607
+a6cf8f58
+bcf6daea
+23f1ccf0
+b74bd202
+3be97095
+0db84cab
+cfc82d4d
+0716bc60
+c7e7c15f
+9fc72e9c
+b79c4de2
+4714223c
+c1bb41fc
+e4823e48
+b97b9880
+61a2afec
+a33dbdcc
+d7d30e6f
+cfda61f8
+2c6b3678
+6ce85d10
+f2fd3336
+fd169d3c
+4902ad4a
+d255adf4
+f8c0cc5b
+2f7d2822
+5a48f60b
+35785880
+e85c7b0a
+cb573f90
+a721acc4
+affc2e65
+8c83dc9e
+a113857c
+a0feb70f
+b607989f
+4a5bf799
+3b71823e
+e26fc077
+f794f6e2
+0f9d0dfd
+2abb356e
+c7396006
+2e9c7b9c
+8fb62ce4
+72781602
+d0749bb6
+ce66e256
+3a93d9d2
+35356ebb
+8ecc4655
+88c55f60
+dc5aeb4c
+54a5cb08
+ee76f65f
+6ec48b3a
+568ca6e4
+3a9e9b04
+3b59cb4b
+8af8db02
+31f8894a
+0144051d
+13be4980
+00000000
+00000000
+00000000
+c0378000
+00000000
+e99fc400
+00000000
+56dd4900
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/clmulh-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/clmulh-01.reference_output
new file mode 100644
index 000000000..b6406409f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/clmulh-01.reference_output
@@ -0,0 +1,1052 @@
+55555555
+55555555
+50155151
+11454404
+00000000
+00000000
+0abd0b4e
+34bbbac7
+00000000
+00000000
+e4b72b0e
+17f1c6bd
+7c15f1f5
+1dc97a7f
+d2fce903
+08b15795
+5a3a1f60
+59c20444
+26c7f7cb
+2a5ad4e7
+ba589df7
+77041274
+a08e3262
+08f609e8
+72d322ea
+00c4a4dc
+2765a4a0
+2e727023
+ddcaf866
+63b82984
+b12d98f8
+25f55032
+2ffc50e2
+44c74792
+3d15e669
+0abee91e
+832c5b58
+0a34e73f
+3a1881fa
+0f0a8245
+a55a33ec
+6b0810d4
+408ee4ac
+72632882
+ce0dc968
+155da612
+26569b1a
+3fb35b2c
+74f9420b
+390f6080
+733a516f
+1e677604
+cfb84cf9
+39e93609
+0f208e4d
+7e29f06a
+7a3136ac
+2b9ab258
+5acbeeb6
+14dd1e2e
+00000000
+00000000
+409291ee
+22f36372
+1d047a50
+152a6924
+3d3a7d4a
+28a11e96
+43df77e1
+24daabe0
+884f2ef5
+2201d7b8
+ec9024d4
+1899eaac
+e4f90f31
+0b2bb6e7
+a0baf0ee
+080db2e2
+325b230c
+495ab010
+8940323c
+39520e68
+e9f57d7c
+47fcb507
+22449fbf
+1ea011f4
+5bae8b5a
+567ed413
+3a440486
+1edda219
+29b78af3
+327d671f
+7fb19e9b
+1a60227c
+5d212d77
+77079671
+6bc11d37
+020fc2ae
+39aeeb60
+15a898d0
+7d2c3d1a
+242f4e1b
+1e6377f1
+76b5f3f8
+d313dcc0
+09fcf1f8
+fa24cd75
+5d324b47
+0be5a6d7
+021d4ec8
+a66049f0
+2f67a8fa
+6d36b201
+6eca19d1
+05e227eb
+3053de18
+5061b7ae
+09462c23
+3513e68e
+7c960508
+5c2cc2a0
+7733e564
+2a9bc2fa
+31c98464
+1e6a1d38
+7dc0a469
+4ebb8d9f
+3c49282c
+c726cc8b
+06eddac4
+90e2a7bc
+08968454
+00000000
+00000000
+a5f694ba
+76a7676b
+cc81ad1c
+0a72d4ab
+e9de876d
+015cbbc2
+80b5b953
+7d29d8f5
+5fcc3a24
+3e8c4466
+d224d4ee
+329c09f6
+caf9c459
+1ab60d97
+5c539d16
+0f64d7d8
+a44b19d6
+1a5817cb
+312e03de
+13c74cc6
+ffb3e94e
+292d4202
+746eec4c
+08b59778
+72cc0c6b
+010bc68f
+b8a92813
+1d8364e1
+72c436ad
+03d2ad5f
+9a2e9758
+723e96b0
+a55b8ea0
+25708c83
+d10bde06
+2de636ae
+e3d7711a
+0e2647dd
+c8c27817
+069fc83f
+5703a02b
+7f4d327a
+1de7e662
+3e5e1177
+1471d46f
+00cf1626
+3a3a7487
+38cb8a8c
+a10a871d
+090ab2b0
+eb5aa863
+6c90d7da
+4d8d664b
+283e1c7c
+95205070
+3b6a557b
+79c91270
+18d410d2
+80a68d4b
+4e7c0755
+aad8ef19
+1ba642cb
+277b6222
+2782f2f6
+2f29e391
+06a450f2
+dc6c525b
+13392592
+869e3013
+3a3dc768
+efecc863
+79b44eea
+01d19341
+054ab944
+c8b309d6
+102b1f06
+fdbbc0ea
+00ed81bf
+24aa034c
+15644322
+7e752a4b
+0d29be02
+e9f87354
+7dd2df1c
+a9b09378
+36510a20
+c9c7abdd
+3d0c8d50
+6dfd4111
+18d5d38f
+1fe54a3b
+082f712b
+9290a1a2
+756009e4
+d70956c0
+2a6d4fe4
+e1f046db
+00c8aa66
+a1dfc1b2
+029b5aeb
+1032ed38
+0552130e
+c21f58c3
+00d695a2
+81f1c062
+2bd77034
+546d3864
+7c0a2cb0
+254c224b
+0657e4e7
+71716e96
+57c3bc67
+57592cc1
+00a20dbc
+fe786528
+30b3884c
+480261a4
+7c75291a
+d0cd654c
+04cd2c71
+b24b8ee1
+3d6daa05
+4647db11
+146fda6f
+f919f83f
+2930f6c6
+98d3764c
+09aade5d
+184ee5ca
+08491652
+5b3563d7
+47c4056d
+d6b2d484
+032ed77c
+0ea82e25
+7eb44972
+f45a56d4
+0111b38f
+f83e2345
+312bf7ea
+cbf795f4
+0d67293d
+c19c93a8
+75cd5b3a
+811e2504
+505950f1
+25a5608f
+0027ab04
+418af5e5
+1791c717
+48db82be
+36f2ea8e
+5691df56
+315b8f5e
+f6869c5f
+2c01f541
+44b60344
+1292a569
+5f988d67
+00c49511
+110da20a
+0f18d5d2
+b9d1a2cb
+40c66226
+6c84a322
+313fda9c
+0ab9a8e2
+0b487e18
+0b73bda4
+28367364
+e9050ff1
+19f068e4
+539f627c
+070256dd
+4c84bddb
+0156921e
+541c7d04
+0026a7ca
+2d62e660
+01688058
+7d77ca7e
+47e48a42
+ab368fc1
+09a4e255
+4abc94f2
+19dfd027
+907ca0c5
+74e4fc08
+5bdca3b4
+044a6dd6
+94cca9d3
+0a2adde7
+2c4535f8
+08e07fe2
+4ee376f0
+11592bd6
+7f134fff
+1fb6c73d
+4c79b3a0
+16dd1962
+9087ae4c
+3504ccd2
+e21f9c15
+1511eab6
+5faffe5a
+0e61651b
+d9f59fa7
+2ec749d8
+20f608fb
+01728d3b
+34f0af73
+0ef10c9f
+68b5225a
+6cc10550
+1f8d2413
+119a91d2
+4315b4d6
+006f1f7b
+45b52912
+064eb155
+3b50e1c9
+1187c7ce
+08a2740a
+0874e586
+962371f3
+39ff3b8f
+e6337c65
+32a13e34
+9914d14c
+41feac06
+3869537a
+08a7b868
+5938c153
+165f6b8b
+a68dd4be
+054512f3
+a9ebb475
+2105f038
+a3d6563f
+57b1775b
+78da7320
+01a7499c
+7e7a8adb
+3d99c47e
+458c545c
+6ae6d8f7
+a6cb21d4
+4aaedf63
+cc866d93
+1e6d7094
+d8e6be86
+1e0cb7d7
+54e07a9f
+4bb49a4b
+b2e55a34
+0e36c917
+9057396e
+249a3cc2
+ef24089d
+002fca7d
+c53f7630
+077b0320
+27b2bff9
+741d668e
+76f96831
+12cef040
+0db2e869
+0ca41ec6
+1096654c
+49135173
+435260d6
+158168e2
+3d9ec1bd
+27024bcb
+8dd3a82b
+317a1fb0
+bdf3cdc6
+15acd39e
+19342f99
+09241918
+0c9efd4b
+542f6002
+b826a0dc
+2035d155
+e3128229
+012cff73
+ccc8feda
+00273856
+6f049ae5
+2399ae0e
+d2137052
+0947b9fd
+5abe9bdf
+06f934aa
+3a7394c3
+56f910b3
+26ad46c8
+358711bf
+67784ff4
+1bb08f65
+5f315f0d
+008454e7
+b6ec88f3
+679a6377
+5619ed22
+3e4043f0
+40d87f25
+14756832
+53b5d80f
+5e73b25d
+6b71330e
+047405fc
+d3987fa3
+03295046
+453e13f3
+0bac508b
+39096a72
+07f4b7cf
+a783432c
+2188ca05
+3c444e95
+14d15949
+8615aacc
+060e83e6
+8a4e6974
+070b2383
+8be23523
+3a5b52ea
+adc34ef6
+0e77fc2b
+b0cb45a4
+099f6389
+10a38c93
+18b1ca16
+b5e90cfa
+1fdb8c06
+950925ba
+00f5b9b0
+5fe4da62
+772fbab6
+f98087af
+0af9e28a
+dc7e9491
+39416d21
+6e771082
+4c40659e
+1cb65615
+07d29d11
+ecda5f9b
+2628fe55
+998b9efe
+03a9e47c
+87ac9b94
+75c68928
+87960812
+70d83d82
+80166619
+0a4bda8d
+e9d56663
+29aa7c82
+19c02e4a
+16d31515
+ae053c4b
+0e0200c4
+d7b9184b
+12adfe4b
+a030c03f
+112a4004
+4fb504c8
+2130e3ae
+61fb67ab
+2fa43874
+ee3f0017
+2404ff78
+87620dd8
+1b0a3eea
+a1326378
+19a07f4c
+1b8bab5c
+1e99d3f2
+411977d0
+4a28f99f
+9401c80b
+0370dd5f
+34ac2bc2
+0d56a02a
+e579758b
+6259f404
+a371233b
+782e5a32
+80ed13e8
+23608a75
+53b71110
+10a2a023
+73de4494
+084f26f9
+8e9c377f
+038853d9
+8d08f4e9
+03f3fbe0
+b13dcc76
+009d9887
+0f78515d
+00347c0a
+a7497756
+00521cc1
+d4fcf0c2
+001f148b
+aeb3c9b0
+0013c24f
+ef11aab3
+00003493
+1193903f
+00077c5f
+eeddf5ea
+00020bb0
+040d2f6c
+00009b92
+eea81987
+00006c8a
+3742e943
+00003784
+94fa7ba6
+00003421
+3b2d314a
+0000183d
+6fe5c6e0
+00000111
+cbc4f917
+0000073d
+fb524b85
+0000006a
+3e2adfd6
+000001a6
+c568fcdc
+000000cf
+f1d4d906
+00000024
+8a8784ff
+00000036
+2269d8fe
+0000001c
+351d6fb2
+00000002
+8f4f3b88
+00000007
+99eec50b
+00000001
+dadfbdff
+00000001
+b49d9a87
+00000000
+6d15fc63
+00000000
+1338d557
+00000000
+02e3eec8
+00000000
+006759a7
+00000000
+053c2570
+00000000
+03462261
+00000000
+00f1910e
+00000000
+007e085e
+00000000
+00369d2c
+00000000
+000f16b6
+00000000
+00149b8b
+00000000
+000dc218
+00000000
+00016710
+00000000
+0003f35a
+00000000
+0000350a
+00000000
+00009cca
+00000000
+000006ae
+00000000
+00003408
+00000000
+000017b6
+00000000
+000009cd
+00000000
+0000062c
+00000000
+000000df
+00000000
+000000ab
+00000000
+00000028
+00000000
+0000006b
+00000000
+0000000a
+00000000
+00000001
+00000000
+00000007
+00000000
+00000007
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+a1e7804f
+4d9f09d5
+87765aee
+1ecfae69
+e2d34b46
+1f2cca46
+3bd04ec4
+04245705
+645673ab
+07f0d8dd
+e3d8f9cf
+02f6c706
+01984edb
+009acb79
+af384d90
+00dd5038
+5c24bb7b
+00462323
+2b291197
+0013f33d
+52f66a8e
+000a01b8
+53708fc6
+00004a98
+583e21be
+0000260a
+e0157e51
+0003080f
+0fcddb2e
+0001792c
+1316b2a7
+00008725
+3d142fb8
+00007113
+8412d62b
+00003c33
+aef57025
+00001aa0
+afe62720
+00000b0c
+ee319fd6
+000000d6
+84e0322d
+00000137
+10adae2b
+0000010a
+c5e2fd26
+000000f7
+d0bba8d8
+00000064
+70ddbc13
+00000005
+21fa9e21
+00000001
+34a377bb
+00000005
+15362e68
+00000005
+501b0451
+00000003
+27efc239
+00000000
+a8b7f959
+00000000
+3a3829b8
+00000000
+340cfe3a
+00000000
+01393578
+00000000
+096d9f41
+00000000
+046ca361
+00000000
+036620f3
+00000000
+002c32a3
+00000000
+00926cf1
+00000000
+001677c7
+00000000
+003e23ec
+00000000
+0000e4f3
+00000000
+000581ce
+00000000
+00013e28
+00000000
+00002cad
+00000000
+00005b09
+00000000
+0000d0c5
+00000000
+00002609
+00000000
+0000187b
+00000000
+00000fe4
+00000000
+000002ae
+00000000
+000002c3
+00000000
+000002a2
+00000000
+000001fa
+00000000
+000000e4
+00000000
+00000008
+00000000
+00000033
+00000000
+0000000f
+00000000
+0000000d
+00000000
+00000007
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11aefb57
+04b1ca7c
+e7adbb22
+68a7cac5
+ef6d6e58
+2349907e
+af504b52
+5f99a504
+62210210
+23bd4c29
+21067e88
+68b2e78f
+ef42d169
+2460d138
+fa0a2eef
+5a425a8a
+bc85c0cd
+5a5b7247
+6bedc75d
+071306a0
+1730bb67
+4737a911
+da7e0791
+04232eea
+53fd6782
+642e8d5b
+258c33e5
+30ebed00
+132dd1af
+20e5cb1c
+bc435f4c
+12110ab4
+2842dd9b
+198ba1f1
+3cd4643d
+1d75aff7
+6045e475
+1b4df8cf
+ba630ba8
+02f47ff0
+4386ef8b
+2d939dde
+0021738e
+0b7344d6
+bb80bf46
+26eb7483
+af369d4c
+78f6810f
+a0b6549e
+6d861d72
+fff6ef5e
+458052b7
+b39cfc63
+78d48aad
+e9ffbb9f
+2caee6c8
+9784108d
+1e883156
+353f149f
+07b271f9
+aba9642e
+73fe8510
+1ef02d8b
+67211a14
+2f46f7fb
+0f3f6dd5
+8d04bcec
+566728dc
+ee903e64
+4d9b830a
+41c52713
+02aca30b
+885f8df6
+77d369b0
+4e904fde
+1177debc
+aa9b19e9
+477862bb
+0457ce7f
+36bf4122
+fd91f99f
+0ee62f2d
+12a1de80
+38849785
+9ee46db8
+410e940a
+21add357
+6f7ec022
+fee7913c
+663dd695
+d7618caf
+768999b0
+b72e056b
+5c122bb9
+f5c5deda
+141bfa71
+a14c0c06
+6e23b03c
+6c4799ca
+269a59ed
+33f82154
+5faffea7
+40776125
+5276f9a2
+d4b4bae5
+189b5fca
+db414412
+0ea248fe
+489b5359
+0651a58d
+04c31466
+19cb4060
+b918ea21
+5d9c4cb9
+da4e202d
+63e19add
+7ec2b4a1
+2cc8df67
+abdbef78
+766644de
+287da15c
+740ad3f5
+a0811993
+370198b6
+37253578
+0d8c6b11
+b9f0fd14
+4b3a43b7
+4bf29a25
+5add2f02
+09a56e3b
+015a0cbc
+cbcbe32d
+70d5e6d7
+0562bc13
+60702e91
+3b7e6c66
+24de4f2a
+630ed71e
+5362bc18
+7d2c1891
+522cc1fb
+73dc8ae5
+048d240d
+140c3d1a
+14b2dea9
+6886aa80
+7466a016
+2286514a
+626a1500
+552c8765
+4dff7d75
+419d1be3
+55f5eeb6
+2228835c
+49d63d5a
+456aab51
+68a87d04
+13057684
+228ffa54
+14cc9279
+7f668870
+d63d9db7
+41d85c9d
+d6653d33
+370da227
+6ea33759
+111e17aa
+e2271cd8
+607972d1
+d40eaee2
+7a127efa
+5bfa355d
+6853f1eb
+5a0f3ab4
+555bedc2
+c38b7ee9
+24eac001
+636f28f4
+4725ab15
+d3b8cf2b
+1c19807c
+f2012fc2
+5235d2fa
+3774ca34
+5e8060de
+be933aab
+52345154
+6e973239
+75d5f543
+819fd908
+7cabb201
+5ae2a328
+2435f328
+9e63a2fd
+2e2c3102
+a83da2a6
+2be47224
+1ec0054d
+7693d31b
+0f03841c
+0451c8e1
+0340f7d9
+4aebc36c
+1bc0f846
+7af83d9e
+5c1f54f6
+226fd197
+0fc681fe
+198ee9b1
+c338c553
+7ce35867
+22a7f546
+731372f4
+cf46a599
+15f47ce0
+86da0cc3
+6dd91183
+c855965b
+3156aadb
+1b89c427
+42f9ab8e
+e49bb0e7
+4b27ae00
+d9ff6fdf
+2e0ecf24
+bca42f92
+08691858
+88a50609
+1dcfe8ad
+b658808e
+0c68f428
+eb020c95
+072ea78b
+e7f9082a
+4d77b8ba
+62e7790c
+7363b1cd
+8479f74e
+2ecbfd26
+3b783c7e
+78c4a66c
+06cc6664
+7316ff90
+14c7fd93
+57e74e75
+c488394b
+6725be6e
+64462afc
+3ee2d75a
+365d9e1b
+20905a07
+6a4be35e
+550a36a5
+cea7a6c1
+0ed672d2
+457c6d81
+18fc44a5
+0144051d
+13be4980
+00000000
+00000000
+e1c338db
+37830eb6
+76215e30
+2d236b88
+38478359
+01c75bc1
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/orn-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/orn-01.reference_output
new file mode 100644
index 000000000..107396092
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/orn-01.reference_output
@@ -0,0 +1,1052 @@
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+7fffffff
+ffffffff
+ffffffff
+ffffffff
+5fffffff
+ffffffff
+dfffffff
+ffffffff
+cfffffff
+ffffffff
+b7ffffff
+ffffffff
+fdffffff
+ffffffff
+ffffffff
+ffffffff
+bf7fffff
+ffffffff
+ffbfffff
+ffffffff
+df7fffff
+ffffffff
+a3bfffff
+00000000
+00000000
+ffffffff
+76ffffff
+ffffffff
+fdffffff
+ffffffff
+eef2ffff
+ffffffff
+f5fe7fff
+ffffffff
+c2ffbfff
+ffffffff
+f9bfdfff
+ffffffff
+de239fff
+ffffffff
+eddec7ff
+ffffffff
+fedff7ff
+ffffffff
+0c84b1ff
+ffffffff
+347eb6ff
+ffffffff
+5fdef9ff
+ffffffff
+85bbddff
+ffffffff
+df375fdf
+ffffffff
+72ffdfff
+ffffffff
+fedeefff
+ffffffff
+bbfbf76b
+ffffffff
+3afd5f7f
+ffffffff
+70ff6e3c
+7fffffff
+75dff2ff
+3fffffff
+af7ff5ef
+ffffffff
+78afdb73
+afffffff
+ef3aefdb
+7fffffff
+fffb67f5
+fbffffff
+e6efe5ff
+e5ffffff
+4bff9be3
+66ffffff
+efffb7d3
+fd7fffff
+f7bf3eef
+ffffffff
+fbabcfeb
+ffdfffff
+c6f774ff
+e7efffff
+7e707d9e
+578fffff
+dfebfedb
+aeffffff
+fffbfbff
+7f9fffff
+dffafdbd
+fdbcffff
+ffb2fcd9
+d7f77fff
+bb73bf34
+d750bfff
+d377fdf9
+7fbbdfff
+3fdbffdb
+abfebfff
+ebeedf7e
+fefeb7ff
+fcbbfffd
+dfbabbff
+def7ddff
+4f3ffbff
+bfff9e23
+6effc5ff
+f7befffe
+7f70cbff
+1bbfecdf
+d6dff3bf
+efb7eaef
+f67fbf1f
+9bb7ffee
+bfff63ff
+fbd7fff7
+ef7ffe87
+defbeee7
+cf1f3feb
+7ff17dfa
+cdd7f0e1
+f7ea7bdb
+d9e77efe
+b3739fce
+16d59ecf
+e5cdc9f6
+b412d68a
+92b13128
+cdf94b8e
+d634ad50
+b10bc490
+f51a21e8
+2dc93212
+d8da0a6e
+cb7f3f52
+7a0c7e29
+bc9f0136
+fd001a72
+9f1fee14
+d66b6d36
+add517dd
+ff0fec45
+66b5aaa0
+f79a6dba
+a29d6ac0
+f6e0e4a5
+32f87774
+76e8bab5
+b15b8772
+d6f38a49
+448aea95
+ffbd4188
+8f619f0e
+7777b648
+c0081b72
+8b32327f
+18e98ec0
+cd5db3b4
+4fc00b76
+fd4aa974
+a3c2a918
+aeae51d6
+e7332808
+1f73e025
+a8a2da71
+9f0cfa23
+831e0b4c
+e8fbfd44
+9060cb4d
+fbefbe72
+b07cd137
+4df7fe83
+dbb26df9
+7ebf7731
+a4ecfb8b
+afacffd3
+9b18869e
+ef5a7ad5
+cfa1c07f
+babdfb29
+9edaf777
+7d34ee33
+f817409a
+33cfffef
+9d6e0f1d
+efe9c97c
+a70bacd7
+2d5fe93b
+f5f6afb6
+ffbf8a7b
+ccbb344f
+91b7ee5f
+dd12768e
+fbfe7f7f
+ff0e0971
+6eefbf0f
+f708e34f
+ffe7afcb
+b877f4ee
+f67db57d
+eedcffa7
+fffdfdfc
+7f06fdaa
+7ffff6b7
+ff141aa8
+f9ff9f6b
+fbc9fd83
+17bfbff7
+fdca6f08
+ffeff6bc
+f2f931e3
+e9fd7ffb
+ff7a98b7
+4fffe7de
+aecc431f
+fd6feedd
+96ffcd17
+d5baf7ef
+dfef7c10
+a5ffffe7
+db7fcd9f
+b3fefedb
+fff998c2
+fef5c9fb
+fbf7538e
+dfaedf57
+fbf2b2e7
+fcdf5e57
+defb7958
+fbeb9f5f
+e3dbe929
+bf7dedfb
+aec7af4e
+dffcbbc7
+de1efbd8
+bdbbbff3
+eeff8fa2
+f8dcbdf7
+9f8f93f9
+75777fdd
+d3bdff43
+577f7ee7
+7ec533fa
+fff727fc
+fef1cffb
+fcecd75c
+f9fffbdc
+5c52efda
+daddffbe
+3ddfe56b
+a59f7fee
+fe7d56ff
+ff7d77ff
+dffedb7a
+8afb4ebf
+b7bfbffc
+cf75bfbe
+dedffa1a
+dfb9dff5
+47c73a55
+7f3aff78
+b3ef2ea7
+eb2afbfe
+136ff5c7
+97fff5f7
+a2fafea6
+766ed67d
+1e7efcff
+dff5c7a5
+95ad6bfd
+ffedef52
+dead9fdf
+f6ffcfc2
+f6c3ff57
+fbfed7d4
+fcdffffe
+b7daed80
+66fffdf6
+efafb0ba
+77ffffab
+1be9f557
+d75f6bff
+0f72fb91
+fff5bc79
+71bca1d0
+dfe7ff6f
+8f3dbaff
+fdf66b7f
+2effc902
+cb73dfbf
+ff6ed875
+77f4e3f9
+7fdd4cb4
+eefb6e3d
+3f993d02
+7feff5f6
+6f64e7ad
+f77df3bd
+b361b010
+bbea7fbd
+efb0f1c0
+a6fffe3b
+ebd02d4d
+ffbedf7f
+efe07552
+ff9ed39b
+df0bba39
+ddf7dbda
+fd1139a4
+3ff93fcf
+fa44c8ad
+7bfcc5df
+f3547e48
+9bd9cf7e
+d94902ca
+9efdffe5
+ce2e7447
+39bd7fbf
+f7192179
+e1effdad
+15a03321
+7936eac6
+b733640c
+77bfbfdc
+6aede476
+e97bfa0f
+6d2db9e3
+7f7fedf1
+bffb6c5c
+6d9bbb6c
+27b012a3
+7c9af3cf
+14a7dd83
+dc13f78e
+2f6aa770
+cdbddfec
+112154cc
+effaae8d
+f96eaffa
+fefdfce1
+8fbff9ba
+fb7bf8ab
+2552fbf9
+ff6ebaf8
+0f99d8bc
+94fff76c
+b68c8fce
+f7fdcfd2
+13e5cf6b
+e41fe2a9
+47cd73ed
+7697ebd5
+8364a709
+6df75da3
+d0917142
+fe34a15a
+76427709
+e55f776c
+20176dbe
+fdf861c8
+9738bfb9
+b7e5da8e
+5843990b
+bdc8d020
+25fb16b4
+ff8eb1b1
+bd94509c
+7f41ea23
+fe183d04
+6f5c2871
+386ef954
+bfae401e
+0274846b
+fa41b7ed
+180c5db5
+7e610134
+41e5a5de
+79c88ec0
+275bbf80
+e67ce511
+ae5fdcbb
+a4b6b671
+b0f94bb3
+6dae4547
+7b7ffffd
+ddf8ff37
+ffded6dd
+f2fffedf
+bffbdffb
+cd3ad6bf
+4afedebf
+77bbbddb
+7afe77cf
+ac15fd7f
+efeffc5f
+ff7f22d2
+b97fffbf
+eb4f6bbf
+ff3f5bff
+7d4b77fb
+fbfdeeff
+779ffe57
+4efffdff
+ffdfebff
+ff9effff
+e3ffeff9
+69bbffff
+dfd69f9f
+ffe7bfff
+5f6bdbbf
+ba9d7fff
+23ff7fee
+5f7fffff
+fd7776f4
+f7bfffff
+bfbe77f7
+9f7bffff
+b35f1fee
+def9ffff
+febfffff
+9f5fffff
+f7e777fe
+7affffff
+6fb9fcfb
+17ffffff
+fadbe1b7
+e7dfffff
+51c3ad7f
+f4ffffff
+e3bfd7f7
+f77fffff
+edffdf7d
+7fffffff
+fddfe7b9
+ffffffff
+e2defe7f
+a3ffffff
+9bd75aff
+b7ffffff
+f77ef5e3
+cfffffff
+b929dbdf
+ffffffff
+eb5873ea
+7fffffff
+fdffeff3
+ffffffff
+cf5b1fff
+ffffffff
+1fadfdf6
+ffffffff
+edcb6afd
+ffffffff
+b717b777
+ffffffff
+beeffd37
+ffffffff
+efe7cf7f
+ffffffff
+27f86fdf
+ffffffff
+37ffffff
+ffffffff
+ffab67ff
+ffffffff
+fa5fffff
+ffffffff
+fff755ff
+ffffffff
+79b9afff
+ffffffff
+eebe27ff
+ffffffff
+f569ffff
+ffffffff
+bade5fff
+ffffffff
+ff1b3fff
+ffffffff
+fda77fff
+ffffffff
+dfd8ffff
+ffffffff
+a67fffff
+ffffffff
+6dfbffff
+ffffffff
+fe3fffff
+ffffffff
+b3ffffff
+ffffffff
+6f5fffff
+ffffffff
+fb7fffff
+ffffffff
+bf7fffff
+ffffffff
+bcffffff
+ffffffff
+6fffffff
+ffffffff
+7fffffff
+ffffffff
+ffffffff
+ffffffff
+2fffffff
+ffffffff
+dfffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fecd5def
+8f7d2f3c
+fbbfa7b7
+bf75e956
+fefef67f
+dbedbebf
+779de3ff
+fb87ef74
+cc969fee
+f67f57bf
+ff5fae7e
+ffbfeb1b
+7ffbffe7
+fc85ecbc
+b8ff9fff
+ff5d75fa
+7eb53f77
+ffffdf99
+ef2d7daa
+ff9ddfeb
+bb5f7e57
+ffc8fed1
+efff74ed
+fffaf9f5
+f1fbd7ff
+fff8fcb7
+6e7ff7ef
+fff9ffbd
+dad59eff
+fffdee9b
+7fbbf7ff
+fffeff8f
+ffd7ebfd
+ffff57f4
+1af73feb
+fffff9fe
+fbf7ffda
+fffff77e
+ff7fe75c
+ffffee97
+f7febf7e
+fffff67e
+7b79fdda
+fffffff7
+ffc9f599
+ffffffff
+ebf92e75
+fffffeef
+f7f7e3de
+ffffff7f
+f7ecf9be
+ffffffce
+bfeb7f6b
+fffffff2
+f4fbd3fe
+ffffffff
+f729ffb5
+ffffffff
+bfb2e5ff
+ffffffff
+dcfc7ffa
+fffffffd
+fe6efb7d
+ffffffff
+9fffc9bb
+ffffffff
+e4f4adaf
+ffffffff
+ffffdfbf
+ffffffff
+fb2f7fff
+ffffffff
+ff77edf7
+ffffffff
+f9fefedf
+ffffffff
+fcdef3ec
+ffffffff
+ff7ffdfc
+ffffffff
+ff7fddf9
+ffffffff
+ffeffd5f
+ffffffff
+ffdec1fe
+ffffffff
+fffbe7f9
+ffffffff
+ffff733f
+ffffffff
+fffaeeac
+ffffffff
+ffffb43d
+ffffffff
+fffffcff
+ffffffff
+ffffbf9f
+ffffffff
+fffffdcf
+ffffffff
+ffffc77b
+ffffffff
+fffff72f
+ffffffff
+fffffde9
+ffffffff
+fffffbbb
+ffffffff
+fffffdf9
+ffffffff
+fffffff6
+ffffffff
+ffffffda
+ffffffff
+ffffffff
+ffffffff
+fffffffd
+ffffffff
+fffffff7
+ffffffff
+fffffff2
+ffffffff
+fffffffb
+ffffffff
+fffffffd
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+fc2ffffe
+edef77bf
+edeefdfb
+edfddb4b
+cf73175e
+2ffee3fe
+f37ddfef
+9fee3cd9
+bedede4d
+0d6f6a36
+3afe7fad
+26fa4c5c
+f55f7fed
+aeffbfff
+ffd0befe
+15f5d975
+ef7efdf3
+5da7d6e6
+e6ae1fbf
+ac5e6f96
+fd1ffb8b
+a1effffd
+9dedd7d7
+fa5fbeeb
+fccffdfa
+f85ff7bf
+79e695e9
+7576ed10
+fe6bc7fd
+6b46bfdb
+beafffff
+1ec5fe6d
+fdd1f7be
+6421fdf7
+f2a397ef
+5675eff7
+fa51ffef
+22f377ff
+8bdfffef
+15c27fb8
+ff75fff7
+ecbb9e1f
+feffbbc6
+848c37e7
+fdfcb6ff
+4c8d3afe
+ff2cf6df
+138fc73f
+affebe3b
+04fe62ab
+de7efff5
+e86618df
+f29dfbff
+f41224f8
+ffffffff
+bb161b5f
+57bff77b
+15c5f97e
+7a7e6ebe
+62bd098f
+4fdfb5ff
+ee64b01a
+7bffff62
+674dfbef
+ffa8eefc
+9bbf6224
+7ffebfb4
+098db45f
+be9b77fa
+f3dd7d99
+9c9fdf3f
+1e28cff0
+cbf8ffbf
+464cc714
+6fd1ef7c
+5d089b85
+9faffffd
+ed35c08f
+3b3f7a67
+63c134ab
+dacfbff7
+c968e1e4
+5bf3e89d
+6c4c5c26
+1d7d7afb
+faf97b40
+e23e8bf3
+9aeae3bf
+3b099b3f
+de78f0f4
+fd370dff
+f0aad36b
+e1cbfd6f
+dd8b15e7
+fc1f6f7f
+09324d07
+baeffcaf
+a9c16412
+9a426dbe
+94888cf0
+f29afecf
+87aee9f7
+ffdc5bff
+c957f420
+27464bb3
+b587634c
+6fd5eefb
+3bd48e8f
+c5349ffd
+7cb39785
+eab32dd5
+4accfd03
+5669b5ba
+ea3e2d20
+c42fccf9
+5c15d7b2
+38cde33f
+893b9751
+cf4e82f4
+1ed4d470
+2b159a2f
+78bc0149
+626a7b87
+5994f2c7
+34ff77ae
+d056ebda
+69a125cd
+cf629486
+380217fa
+88cb283e
+abbdedff
+fbbfdab6
+35dffff1
+fd35afed
+77fef6fb
+75e8fbec
+33df79bd
+fcc1e53f
+d7df32ef
+69d5daf3
+f38e7fff
+bee3fe7f
+f5bed778
+6fa2feee
+b99af7fb
+efffbf9f
+f7fffbdf
+eef1bfef
+beb98ff6
+0977f37f
+ebfcfaff
+c976fdef
+87dffd3f
+0c7dfefd
+fdfdff5f
+ac7ffc3f
+fbe45fef
+513fff73
+fefb7fee
+612faffe
+ff5f6fbe
+36335a75
+e3bffdbb
+2a9ccb5f
+7e6ffdf7
+279ee977
+e5f5ef7c
+2dd63e69
+3c87eaef
+071c94f8
+fbf1f7ff
+76b4abff
+b5fe6ddf
+1d95cffa
+dfbcf67b
+6b3d9f7f
+7fb9ffdf
+891b83f7
+35ff8bf6
+b68a27fa
+be5ddcaf
+ce80f7f3
+daef5dbb
+897d9fe5
+bf7f1f1f
+75f32b51
+5f5ff95f
+239853fd
+afff5b7f
+08d6920f
+607effee
+94038f33
+ff8370fe
+a9632e3d
+e2b7b347
+1141b67f
+d47eef2f
+faa97965
+3f9f5f8f
+d6ac851f
+d2de1d7d
+07f5e51d
+9da7befb
+9875bad1
+d73efeaa
+339863c4
+fffa4fb9
+c988a7cc
+0d73fdee
+5bc1c366
+06aed7f3
+132a7176
+37fce7b9
+498db88f
+a331fc5f
+c313bc1f
+62fbfbdd
+b1834066
+032cdfff
+aa467bbe
+79a7ff9f
+9b9aaad1
+d9737f7e
+e4367cca
+1e4fafaf
+3c2c0e92
+e3d4ffaf
+b264d045
+b4c8cfdf
+6baeea37
+540867f2
+e0f003e9
+c099be5d
+f69b0ae6
+7dddcf7e
+29ade05f
+6dc3ccff
+13e6d903
+d9adf7ff
+0af2ee97
+0d453dff
+2a5dc0a0
+cb293efd
+e6a4d5ca
+6ed2604e
+a422af66
+8347ddfd
+755961a9
+fc6c3192
+9aaacd63
+7886e3eb
+9c1f741f
+e1832ab6
+5902a9db
+596f5f8b
+1694bd33
+ca11073d
+dd4ec4d8
+dc17ae6e
+ef677106
+ebfff7e7
+f33b77dd
+addffd9f
+aff7f6f6
+5effedff
+fdfffbef
+fbf7dd75
+fb967e4b
+7d9d5b5b
+f5ecfeef
+fdfdfc9f
+feb3d97e
+5ef7ffbf
+fe7fbf7b
+d84e59f7
+fe57d3e7
+9afdb576
+ffcfffe3
+ac3f7fcb
+ffbe7ffb
+fc7ee2ee
+ffddf7ba
+f7f7fff6
+ffff7bdf
+ffabf773
+fffffffd
+a7bf7fee
+fffb3f6f
+bdef77fe
+ffffdde8
+b4ffd27a
+ffffbfff
+df7f84fb
+fffffffd
+f5fbe63f
+ffffaf7e
+7da7efc5
+ffffcf73
+779dff3d
+ffffff1c
+73bffa1e
+fffff79f
+fb756eff
+fffff9e2
+fcfcfdeb
+fffffe47
+fe6b13f7
+fffffff6
+9cdefffb
+ffffff3f
+fffffec9
+ffffffe4
+0fffbdff
+ffffffcd
+ffffb99d
+ffffffe9
+eff5ba9f
+fffffffd
+bd5bf13f
+ffffffff
+b76fdaff
+ffffffff
+bbf97d7b
+ffffffff
+77edf313
+ffffffff
+b75f5de8
+ffffffff
+f7be8a3a
+ffffffff
+ef66abeb
+ffffffff
+f7f57db7
+ffffffff
+ffafffdb
+ffffffff
+fe9fff73
+ffffffff
+ffef9b6b
+ffffffff
+ff7fdb90
+ffffffff
+ffdfaebf
+ffffffff
+ffff7fdd
+ffffffff
+ffe6afc7
+ffffffff
+fff795fb
+ffffffff
+fffbefef
+ffffffff
+fffc7bbe
+ffffffff
+fffedc7f
+ffffffff
+ffffdeb7
+ffffffff
+ffffe7ef
+ffffffff
+fffffaab
+ffffffff
+ffffeff9
+ffffffff
+ffffff76
+ffffffff
+fffffbdf
+ffffffff
+ffffff7f
+ffffffff
+fffffef4
+ffffffff
+ffffffdd
+ffffffff
+ffffffbf
+ffffffff
+ffffffcd
+ffffffff
+fffffff2
+ffffffff
+fffffff7
+ffffffff
+fffffffb
+ffffffff
+fffffffc
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+deffffff
+ffffffff
+bef7ffff
+ffffffff
+4eaff5ff
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/pack-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/pack-01.reference_output
new file mode 100644
index 000000000..aecfc75e2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/pack-01.reference_output
@@ -0,0 +1,1048 @@
+00000000
+00000000
+5ae10604
+5ae10604
+c38671b6
+00000000
+2af42d39
+00000000
+2502307f
+00000000
+392e6fa3
+00000000
+80e4d23b
+00000000
+cec7313a
+00000000
+5d003e38
+00000000
+0b815ef0
+00000000
+83e2ba3a
+00000000
+46e4abd8
+00000000
+242d8cef
+00000000
+d8d8dd47
+00000000
+c1f36fae
+00000000
+d7704260
+00000000
+058160e6
+00000000
+d8bca4df
+00000000
+e812dd49
+00000000
+00000000
+00000000
+2037e34e
+00000000
+874434d3
+00000000
+875e9bf5
+00000000
+17d8a217
+00000000
+87f996d6
+00000000
+0d42ea01
+00000000
+2de4eb20
+00000000
+d6308385
+00000000
+ab72f99f
+00000000
+4e7b7359
+00000000
+d96429c9
+00000000
+c8cdf63e
+00000000
+c06209fb
+00000000
+644918a7
+00000000
+4f63879f
+80000000
+1f3c1ad7
+c0000000
+3bb3e347
+20000000
+2bedcfc5
+70000000
+7c496066
+e8000000
+a8552f4b
+24000000
+24507198
+3a000000
+6656b0e2
+fd000000
+9929dfeb
+02800000
+ff6036ed
+4d400000
+93c22130
+10a00000
+a1c1c528
+98900000
+408b97cd
+a8f80000
+aa8dc392
+db8c0000
+5c962250
+8c620000
+7c2890b1
+526b0000
+56f646e8
+28288000
+5710b7ae
+3aaf4000
+3a810bd9
+ba452000
+22feb755
+54c37000
+fcd220d7
+9d416800
+8b082833
+29454400
+072f6ac9
+b6c00600
+0e724556
+91107f00
+3b50c99d
+98dfbd80
+d6cbf3ae
+3f6a4d40
+f66fa51d
+8f8264e0
+aeb522fc
+48b4be70
+63735e07
+12915378
+4b1d37e9
+33ecd4fc
+0196f0c0
+323e7f5e
+89476e6e
+af5bc16d
+00000000
+e92a6130
+00000000
+4bed2975
+00000000
+3206b471
+00000000
+4ef43b6f
+00000000
+d236cded
+00000000
+3480c0ad
+00000000
+4360fec9
+00000000
+60e011eb
+00000000
+522ae822
+00000000
+994a555f
+00000000
+5d62953f
+00000000
+cd07888b
+00000000
+4ea4788d
+00000000
+bb75156a
+00000000
+709e60f1
+00000000
+3ff7e48d
+00000000
+e716713f
+00000000
+b03ff489
+00000000
+5c3d56e7
+00000000
+18ccd7f7
+00000000
+575d258e
+00000000
+7ce1f4b3
+00000000
+6f9f34b2
+00000000
+4f832ec8
+00000000
+244d9206
+00000000
+5b130474
+00000000
+64e77961
+00000000
+305e3f80
+00000000
+61250888
+00000000
+07e8bf65
+00000000
+6291f0e2
+00000000
+58f45328
+00000000
+0a095049
+80000000
+3344cbb0
+c0000000
+e2ed8971
+60000000
+00f1f68e
+f0000000
+48f71cb0
+98000000
+df880b11
+ec000000
+bd230058
+76000000
+86f90255
+8b000000
+80ebe557
+fb800000
+1db6027c
+2c400000
+023590f7
+c2200000
+cd26ce1c
+7b700000
+01b56748
+0cc80000
+5d3bbce0
+96fc0000
+fd1032e8
+dde60000
+f57083ef
+d3570000
+75923260
+47f98000
+4616e73d
+f9c74000
+8ccaec71
+7952a000
+6d5fcd18
+1ce93000
+2dedb6a7
+e301e800
+1d241ed6
+ac86ac00
+ddbad0b1
+de167a00
+a9e16e27
+06bf0d00
+1529755d
+0e079180
+6273ed06
+d2955440
+6c5744bc
+6ec13320
+a97bcc25
+f0f1c6b0
+d19e3224
+f0f54bc8
+56f547ab
+92d9be34
+25329041
+058f7fe6
+5fefe911
+797d76df
+598b88db
+0aab4e37
+7727bd62
+8f64b9bc
+b3aa58e5
+1d19df81
+3d56ac8b
+7d3aed38
+b5ff09a7
+82283aee
+14d5348f
+963ab5d7
+f81a1e9f
+740e023d
+dd9329bf
+dfe4c7a5
+66eef97f
+af698a52
+865292ff
+b2fe4fc2
+09fc3dff
+e10e43d4
+64092bff
+914aad80
+d92f97ff
+e88130ba
+30d04fff
+0ae95557
+e6371fff
+0b72bb91
+f8dd3fff
+303ca1d0
+be5f7fff
+832cbaff
+70c2ffff
+0c99c902
+d581ffff
+3e0ad875
+1493ffff
+6dd54cb4
+8d37ffff
+1f893d02
+cc6fffff
+6d64e7ad
+bddfffff
+3161b010
+5cbfffff
+6fb0f1c0
+3e7fffff
+a1d02d4d
+b4ffffff
+6be07552
+71ffffff
+db0bba39
+b3ffffff
+5d1139a4
+57ffffff
+7a44c8ad
+2fffffff
+93547e48
+9fffffff
+994902ca
+3fffffff
+4e2e7447
+7fffffff
+f7192179
+ffffffff
+15a03321
+ffffffff
+b733640c
+ffffffff
+6aede476
+ffffffff
+6d2db9e3
+ffffffff
+bffb6c5c
+ffffffff
+27b012a3
+ffffffff
+14a7dd83
+ffffffff
+2f6aa770
+ffffffff
+112154cc
+ffffffff
+f96eaffa
+ffffffff
+8fbff9ba
+ffffffff
+2552fbf9
+ffffffff
+0f99d8bc
+ffffffff
+b68c8fce
+ffffffff
+13e5cf6b
+ffffffff
+47cd73ed
+ffffffff
+8364a709
+ffffffff
+d0917142
+ffffffff
+76427709
+ffffffff
+20176dbe
+ffffffff
+9738bfb9
+ffffffff
+5843990b
+ffffffff
+25fb16b4
+ffffffff
+bd94509c
+ffffffff
+fe183d04
+ffffffff
+386ef954
+ffffffff
+0274846b
+ffffffff
+180c5db5
+ffffffff
+41e5a5de
+ffffffff
+275bbf80
+ffffffff
+ae5fdcbb
+ffffffff
+b0f94bb3
+ffffffff
+1a5632e0
+96c03042
+d4d686cd
+8033ada7
+31a3cf7b
+6025666d
+42ee9aa7
+f541ab61
+6a8877cf
+cd09e875
+efeffc5f
+f3d107a2
+883ead3f
+46b88c5e
+733f597f
+00f0a572
+63dd2cff
+269e1925
+4ef73dff
+ff03170e
+eb1873ff
+0a710087
+291917ff
+b74d1614
+ffe78fff
+cf1ec7ba
+ba185fff
+457288a2
+5f67bfff
+ee84a991
+f63c7fff
+4c4006c3
+9d02ffff
+65844c17
+d6f1ffff
+e5c7946a
+0c03ffff
+64a14081
+5857ffff
+cd41cad2
+16efffff
+ee8f948a
+e6dfffff
+de38d7e2
+e4bfffff
+8b9f8591
+f77fffff
+0c96a183
+0affffff
+88f931f4
+95ffffff
+955235a4
+23ffffff
+5c6c32a5
+97ffffff
+4a7a5c05
+cfffffff
+37e0de00
+1fffffff
+0d770f3c
+3fffffff
+8dfc2307
+7fffffff
+4e6ee408
+ffffffff
+998d1525
+ffffffff
+75ee935f
+ffffffff
+59cf4bb2
+ffffffff
+97933e6c
+ffffffff
+9687f28f
+ffffffff
+d2fe2e7e
+ffffffff
+b6d75e84
+ffffffff
+092936e8
+ffffffff
+784abebb
+ffffffff
+4f829b65
+ffffffff
+17b8b123
+ffffffff
+8b16bb0d
+ffffffff
+39be2172
+ffffffff
+91e42acb
+ffffffff
+975a8550
+ffffffff
+b432d4f7
+ffffffff
+b76d454d
+ffffffff
+cd9cb03a
+ffffffff
+eed7a24a
+ffffffff
+76b1fd3d
+ffffffff
+b3988b52
+ffffffff
+3c464110
+ffffffff
+9b01f7cc
+ffffffff
+5b331999
+ffffffff
+2d37de81
+ffffffff
+bf97e520
+ffffffff
+6df8ccf6
+ffffffff
+e08409f0
+ffffffff
+432ff218
+ffffffff
+03b1d74b
+ffffffff
+4b6ea010
+ffffffff
+bbe8f88d
+ffffffff
+2f8b9e9d
+66cc59ee
+41b2bb9a
+1ba9a6b5
+1d617a4d
+fae6f67d
+c3015fa0
+369580ff
+a8e61cb6
+4c8281a2
+3b6b6093
+e717a666
+02b653e5
+4d3b8462
+cc1e0438
+b8fe90a6
+67def006
+6e803472
+e94ae4a8
+c32c4da8
+91d6cedd
+a11f7657
+e4a7c5ba
+cad764c4
+1844ebd2
+31f3c57c
+2e67a854
+0a76f50a
+99d68912
+5ac51cc8
+6d2b6540
+53aaf3b7
+c3c4b8a1
+ae53c374
+226b5502
+186211cb
+ed48d09e
+2874799a
+2c2869b7
+2f3dc554
+25849de3
+e7b4b57e
+099565a3
+7b692cda
+cd872ab5
+af88e590
+80b68be6
+a2792e75
+b467fb8b
+f7e7a342
+e94fbd21
+91e4f834
+18972e45
+af6a3e68
+671c82fc
+b47053de
+8b142f97
+d508ff34
+18d6084e
+1690a1f7
+50dd1af1
+58fc0a18
+3b8f801d
+962e5835
+87951cb6
+88b48922
+e0303f46
+e0f48d2f
+7b1bda5e
+7fb2d83b
+31b0f86a
+fa2f0afd
+1cde8a08
+6b66ec95
+0bce1a9c
+79fe0c5f
+06a1096c
+2080f2ac
+03211cb3
+6776fd34
+01e48237
+1f36ddf8
+00b0fbce
+7f65d54d
+005516a9
+8fc0819e
+0021bf99
+f2fbc7f9
+001f99de
+ea7f7301
+000beec1
+2c42eeac
+00079dd3
+de17b009
+00035bc3
+6be1fcde
+0001db50
+1530959b
+0000c1f1
+b7e06d03
+00004632
+ca71067b
+00003cdc
+167cd62e
+00001ad8
+ec9a5dc8
+00000e5e
+fb7a3b3b
+00000456
+f1bae498
+00000216
+63522556
+0000014d
+b3257dda
+000000ad
+c196c5c2
+00000042
+b6d3e879
+00000032
+79a2ed17
+0000001e
+13f5bc90
+0000000d
+a111f5fb
+00000004
+d4652689
+00000003
+67ba7848
+00000001
+caa0a141
+00000000
+d42779f6
+47f439f3
+61eeac38
+73d58e1c
+4671120e
+36cdf8a1
+d26542ef
+1ce262d6
+b6125e0d
+f33335b6
+22dc73ac
+e5498256
+e1594dc5
+ebb9c596
+cdc02ece
+c12f694d
+aa785c62
+32d1464e
+24aa1735
+3dd1e044
+f517e383
+02e50777
+99edd4d2
+7b1ffc6a
+84c955f2
+83b852d7
+70c61509
+d69f6b16
+ba6bc77d
+b1b43d07
+14881edd
+41d812cd
+6111b4b6
+032fbce3
+92a38329
+9ffd6a18
+5a11cca6
+07bfc096
+8bcce7ce
+f6a00758
+bb01ea76
+128ae84a
+f6782942
+13284c79
+798c06ff
+5b8349ce
+a82cb2ce
+08fb09a0
+236eba20
+7349dbc4
+482ea761
+21af214a
+7219c1db
+0f7a0443
+bfbd7d15
+11b41900
+47bc7549
+ead81dcd
+3a782ebc
+9da9b14d
+4b1e943f
+fa285a0d
+6bba8d22
+e7a28cbd
+bd0840fc
+b45f51c3
+5bea8594
+8329c05b
+3a8137ea
+6be49ee7
+1891dd3d
+6361b9f8
+0bf8670e
+3fdf2348
+0711eb58
+952e1b8b
+028dd9f4
+62dc08d6
+011e7a61
+c5cefdd8
+00c793f6
+2577c1ec
+00736008
+a44f576a
+0034106a
+e286852c
+001a83b3
+1dd377bf
+00099a1f
+c4ff64de
+000700af
+02cdf2af
+0002f165
+1e34b3f1
+00016f3f
+03e0d681
+0000b80f
+45100358
+00004daa
+65bd9acb
+00002242
+0d650372
+00001aab
+0023b682
+00000a12
+d8b9b45c
+0000065b
+902a174f
+000003fd
+3acb6266
+00000191
+154cd2aa
+000000aa
+a9964aef
+00000079
+3bd03346
+00000026
+c7321cc0
+00000014
+30b17d0b
+0000000f
+d4ea65d0
+00000007
+9d95847e
+00000002
+cb008853
+00000001
+965eda32
+00000000
+c7fde805
+aa01e126
+7443f200
+3591db10
+dab0001e
+656224e9
+8901096d
+30d268bd
+dcf0c656
+d69f32e6
+b828fd34
+f38e735f
+2d79e311
+74bc1570
+1a5928f7
+b918b7fa
+6f6da856
+0282f24d
+0880b668
+b8b00cb6
+e9e678bb
+eb74f8bb
+9c23bdb8
+859b4c3f
+f83106c9
+0da5f55f
+0e22c1e0
+f044106f
+e41ba01b
+8e73758e
+8514f49d
+fb566e3e
+b3b2fa55
+63adcdbb
+7d61ce76
+7825d0f4
+81b4d2d8
+c5f0a710
+9bfa3293
+2407e26d
+e778555d
+d9e0e7fe
+4cae8b6c
+b5c06c9d
+dbc1f2b1
+d788d65b
+36c35dc6
+36015d9b
+a2465d2a
+255c09e0
+cf4c7d09
+9e49c4a1
+49aae370
+1ac24829
+2752aa64
+17550d1c
+40d0e5e8
+120ff957
+a0a1c6f0
+2f8d1335
+748ca591
+6056f5e8
+9fc745d1
+bd0070ae
+a97cbf85
+62a12347
+1fe84ebd
+c478ef2d
+af8957f9
+07155a89
+c165f0f1
+c2cc1d38
+efadea82
+95a6bea9
+f7fcc18c
+d216eea8
+f8d3e5f5
+fc9a02b1
+fc15b0f7
+0c20b9ee
+feac3217
+06aec150
+ff5ba80c
+37c4c6b9
+ff87984f
+a311d81e
+ffce1bbc
+62ebf954
+ffef1d76
+0320df72
+fff3ae62
+79a6551f
+fff81475
+d9716f2c
+fffce9a5
+1e4e0fad
+fffe5770
+e3d4dd27
+ffff4877
+b4c8839b
+ffffb0b3
+54084572
+ffffdd0f
+c099bc4c
+ffffe1e2
+7dddcc72
+fffff4e3
+6dc3ccee
+fffffb86
+d9adf5d6
+fffffdc4
+0d453cdf
+fffffec3
+cb293ebd
+ffffff3f
+6ed26006
+ffffffb1
+8347ddf5
+ffffffd6
+fc6c3192
+ffffffef
+7886e3eb
+fffffff4
+e1832ab6
+fffffffb
+596f5f89
+fffffffc
+ca11073d
+fffffffe
+dc17ae6e
+ffffffff
+a85ab567
+9408ad7d
+85d77c9b
+53a27ee1
+56df45de
+e356529c
+ea37dc21
+041bbaab
+31150919
+9267acb5
+91ed6c94
+12ea67e4
+4ec6f18c
+ef8c60c0
+484641f6
+2fb5a758
+12e91176
+65835bdf
+042d678a
+53e1e6bc
+b87ce2a6
+bbc9df37
+9651ee66
+9a592829
+7b8b7233
+725f3a8f
+a3b633ac
+5956b39d
+81ed75e8
+437cbc41
+a0fbc248
+4b43ad85
+5c37849b
+6c967b0e
+c5b3e01c
+0e24d9cc
+35a7efc1
+a6faba7b
+44115b05
+c86342c2
+72976012
+be5265f3
+e3356cc4
+85bf95c0
+fc7c6d0b
+af334e15
+fc6113a4
+31d4ff08
+985a9ef1
+eb6992d5
+fb37bec9
+7a3209fe
+0bd61d6d
+fbd2570d
+6f738905
+4a104e66
+afe08a14
+1dcacf74
+bd59213f
+52b42eff
+a6478a56
+e8d7a714
+b9e93d53
+754f9b96
+75697302
+ec325eec
+955d1ce8
+ccadb61f
+d7be0830
+1bd775c5
+e046ab61
+109ff475
+f14135a5
+090a96c9
+fba1a6cb
+2a71a2ad
+fc9e9033
+e5e290be
+fe238b6b
+1011eeb4
+ff7d8180
+458da5ef
+ff832e3f
+67a07b54
+ffc77cdc
+51c5b8b2
+ffe22746
+8b7b5378
+fff20599
+58fa6e1c
+fffbe2c6
+2c9f7296
+fffc39a2
+2daf94c1
+fffed06b
+6a013380
+ffff5ea2
+c5ec6148
+ffff8647
+99ef1857
+ffffc823
+dae98554
+ffffedb9
+3d061437
+fffff576
+280b11fd
+fffffadf
+a7298c66
+fffffd7f
+8c8a18b2
+fffffee4
+4d88450f
+ffffff11
+0b54aa22
+ffffff8b
+3d4806c2
+ffffffcd
+4d984bff
+ffffffe0
+acca7f0d
+fffffff5
+5ae6a228
+fffffffb
+bedc25e6
+fffffffc
+53e8eb43
+fffffffe
+cf84b683
+ffffffff
+03cc0f27
+5ae10604
+00000000
+3d32d01e
+00000000
+2de4eb20
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packh-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packh-01.reference_output
new file mode 100644
index 000000000..2375e105b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packh-01.reference_output
@@ -0,0 +1,1052 @@
+0000ffff
+00000000
+00000404
+00000000
+000000b6
+00000000
+00000039
+00000000
+0000007f
+00000000
+000000a3
+00000000
+0000003b
+00000000
+0000003a
+00000000
+00000038
+00000000
+000000f0
+00000000
+0000003a
+00000000
+000000d8
+00000000
+000000ef
+00000000
+00000000
+00000000
+000000ae
+00000000
+00000060
+00000000
+000000e6
+00000000
+000000df
+00000000
+00000049
+00000000
+0000001e
+00000000
+0000004e
+00000000
+000000d3
+00000000
+000000f5
+00000000
+00000017
+00000000
+000000d6
+00000000
+00000001
+00000000
+00000020
+00000000
+00000000
+00000000
+0000009f
+00000000
+00000059
+00000000
+000000c9
+00000000
+0000003e
+00000000
+000000fb
+00000000
+000000a7
+00000000
+0000009f
+00000000
+000000d7
+00000000
+00000047
+00000000
+000000c5
+00000000
+00000066
+00000000
+0000004b
+00000000
+00000098
+00000000
+000000e2
+00000000
+000000eb
+00000000
+000000ed
+00000000
+00000030
+00000000
+00000028
+00000000
+000000cd
+00000000
+00000092
+00000000
+00000050
+00000000
+000000b1
+00000000
+000000e8
+00000000
+000000ae
+00000000
+000000d9
+00000000
+00000055
+00000000
+000000d7
+00000000
+00000033
+00000000
+000000c9
+00000000
+00000056
+00000000
+0000809d
+00000000
+000040ae
+00000000
+0000e01d
+00000000
+000070fc
+00000000
+00007807
+00000000
+0000fce9
+00000000
+00005ec0
+00000000
+00006d6e
+00000000
+00003000
+00000000
+00007500
+00000000
+00007100
+00000000
+00006f00
+00000000
+0000ed00
+00000000
+0000ad00
+00000000
+0000c900
+00000000
+0000eb00
+00000000
+00002200
+00000000
+00005f00
+00000000
+00003f00
+00000000
+00008b00
+00000000
+00008d00
+00000000
+00006a00
+00000000
+0000f100
+00000000
+00008d00
+00000000
+00003f00
+00000000
+00008900
+00000000
+0000e700
+00000000
+0000f700
+00000000
+00008e00
+00000000
+0000b300
+00000000
+0000b200
+00000000
+0000c800
+00000000
+00000600
+00000000
+00007400
+00000000
+00006100
+00000000
+00008000
+00000000
+00008800
+00000000
+00006500
+00000000
+0000e200
+00000000
+00002800
+00000000
+00004900
+00000000
+0000b000
+00000000
+00007100
+00000000
+00008e00
+00000000
+0000b000
+00000000
+00001100
+00000000
+00005800
+00000000
+00005500
+00000000
+00005700
+00000000
+00007c00
+00000000
+0000f700
+00000000
+00001c00
+00000000
+00004800
+00000000
+0000e000
+00000000
+0000e800
+00000000
+0000ef00
+00000000
+00006000
+00000000
+00003d00
+00000000
+00007100
+00000000
+00001800
+00000000
+0000a700
+00000000
+0000d600
+00000000
+0000b100
+00000000
+00002700
+00000000
+00005d00
+00000000
+00000680
+00000000
+0000bc40
+00000000
+00002520
+00000000
+000024b0
+00000000
+0000abc8
+00000000
+00004134
+00000000
+000011e6
+00000000
+0000dbdf
+00000000
+00006237
+00000000
+0000e5bc
+00000000
+00008b81
+00000000
+0000a738
+00000000
+00008fee
+00000000
+00009fd7
+00000000
+0000bf3d
+00000000
+00007fa5
+00000000
+0000ff52
+00000000
+0000ffc2
+00000000
+0000ffd4
+00000000
+0000ff80
+00000000
+0000ffba
+00000000
+0000ff57
+00000000
+0000ff91
+00000000
+0000ffd0
+00000000
+0000ffff
+00000000
+0000ff02
+00000000
+0000ff75
+00000000
+0000ffb4
+00000000
+0000ff02
+00000000
+0000ffad
+00000000
+0000ff10
+00000000
+0000ffc0
+00000000
+0000ff4d
+00000000
+0000ff52
+00000000
+0000ff39
+00000000
+0000ffa4
+00000000
+0000ffad
+00000000
+0000ff48
+00000000
+0000ffca
+00000000
+0000ff47
+00000000
+0000ff79
+00000000
+0000ff21
+00000000
+0000ff0c
+00000000
+0000ff76
+00000000
+0000ffe3
+00000000
+0000ff5c
+00000000
+0000ffa3
+00000000
+0000ff83
+00000000
+0000ff70
+00000000
+0000ffcc
+00000000
+0000fffa
+00000000
+0000ffba
+00000000
+0000fff9
+00000000
+0000ffbc
+00000000
+0000ffce
+00000000
+0000ff6b
+00000000
+0000ffed
+00000000
+0000ff09
+00000000
+0000ff42
+00000000
+0000ff09
+00000000
+0000ffbe
+00000000
+0000ffb9
+00000000
+0000ff0b
+00000000
+0000ffb4
+00000000
+0000ff9c
+00000000
+0000ff04
+00000000
+0000ff54
+00000000
+0000ff6b
+00000000
+0000ffb5
+00000000
+0000ffde
+00000000
+0000ff80
+00000000
+0000ffbb
+00000000
+0000ffb3
+00000000
+000042e0
+00000000
+0000a7cd
+00000000
+00006d7b
+00000000
+000061a7
+00000000
+000075cf
+00000000
+0000a25f
+00000000
+00005e3f
+00000000
+0000727f
+00000000
+000025ff
+00000000
+00000eff
+00000000
+000087ff
+00000000
+000014ff
+00000000
+0000baff
+00000000
+0000a2ff
+00000000
+000091ff
+00000000
+0000c3ff
+00000000
+000017ff
+00000000
+00006aff
+00000000
+000081ff
+00000000
+0000d2ff
+00000000
+00008aff
+00000000
+0000e2ff
+00000000
+000091ff
+00000000
+000083ff
+00000000
+0000f4ff
+00000000
+0000a4ff
+00000000
+0000a5ff
+00000000
+000005ff
+00000000
+000000ff
+00000000
+00003cff
+00000000
+000007ff
+00000000
+000008ff
+00000000
+000025ff
+00000000
+00005fff
+00000000
+0000b2ff
+00000000
+00006cff
+00000000
+00008fff
+00000000
+00007eff
+00000000
+000084ff
+00000000
+0000e8ff
+00000000
+0000bbff
+00000000
+000065ff
+00000000
+000023ff
+00000000
+00000dff
+00000000
+000072ff
+00000000
+0000cbff
+00000000
+000050ff
+00000000
+0000f7ff
+00000000
+00004dff
+00000000
+00003aff
+00000000
+00004aff
+00000000
+00003dff
+00000000
+000052ff
+00000000
+000010ff
+00000000
+0000ccff
+00000000
+000099ff
+00000000
+000081ff
+00000000
+000020ff
+00000000
+0000f6ff
+00000000
+0000f0ff
+00000000
+000018ff
+00000000
+00004bff
+00000000
+000010ff
+00000000
+00008dff
+00000000
+00009dff
+00000000
+00009aee
+00000000
+00004db5
+00000000
+0000a07d
+00000000
+0000b6ff
+00000000
+000093a2
+00000000
+0000e566
+00000000
+00003862
+00000000
+000006a6
+00000000
+0000a872
+00000000
+0000dda8
+00000000
+0000ba57
+00000000
+0000d2c4
+00000000
+0000547c
+00000000
+0000120a
+00000000
+000040c8
+00000000
+0000a1b7
+00000000
+00000274
+00000000
+00009ecb
+00000000
+0000b79a
+00000000
+0000e354
+00000000
+0000a37e
+00000000
+0000b5da
+00000000
+0000e690
+00000000
+00008b75
+00000000
+00002142
+00000000
+00004534
+00000000
+0000fc68
+00000000
+000097de
+00000000
+00004e34
+00000000
+0000f1f7
+00000000
+00001d18
+00000000
+0000b635
+00000000
+00004622
+00000000
+00005e2f
+00000000
+00006a3b
+00000000
+000008fd
+00000000
+00009c95
+00000000
+00006c5f
+00000000
+0000b3ac
+00000000
+00003734
+00000000
+0000cef8
+00000000
+0000a94d
+00000000
+0000999e
+00000000
+0000def9
+00000000
+0000c101
+00000000
+0000d3ac
+00000000
+0000c309
+00000000
+000050de
+00000000
+0000f19b
+00000000
+00003203
+00000000
+0000dc7b
+00000000
+0000d82e
+00000000
+00005ec8
+00000000
+0000563b
+00000000
+00001698
+00000000
+00004d56
+00000000
+0000adda
+00000000
+000042c2
+00000000
+00003279
+00000000
+00001e17
+00000000
+00000d90
+00000000
+000004fb
+00000000
+00000389
+00000000
+00000148
+00000000
+00000041
+00000000
+0000f3f6
+00000000
+00001c38
+00000000
+0000a10e
+00000000
+0000d6ef
+00000000
+0000b60d
+00000000
+000056ac
+00000000
+000096c5
+00000000
+00004dce
+00000000
+00004e62
+00000000
+00004435
+00000000
+00007783
+00000000
+00006ad2
+00000000
+0000d7f2
+00000000
+00001609
+00000000
+0000077d
+00000000
+0000cddd
+00000000
+0000e3b6
+00000000
+00001829
+00000000
+000096a6
+00000000
+000058ce
+00000000
+00004a76
+00000000
+00007942
+00000000
+0000ceff
+00000000
+0000a0ce
+00000000
+0000c420
+00000000
+00004a61
+00000000
+000043db
+00000000
+00000015
+00000000
+0000cd49
+00000000
+00004dbc
+00000000
+00000d3f
+00000000
+0000bd22
+00000000
+0000c3fc
+00000000
+00005b94
+00000000
+0000e7ea
+00000000
+0000f83d
+00000000
+0000480e
+00000000
+00008b58
+00000000
+0000d6f4
+00000000
+0000d861
+00000000
+0000ecf6
+00000000
+00006a08
+00000000
+00002c6a
+00000000
+0000bfb3
+00000000
+0000de1f
+00000000
+0000afaf
+00000000
+0000f165
+00000000
+0000813f
+00000000
+0000580f
+00000000
+0000cbaa
+00000000
+00007242
+00000000
+000082ab
+00000000
+00005c12
+00000000
+00004f5b
+00000000
+000066fd
+00000000
+0000aa91
+00000000
+0000efaa
+00000000
+00004679
+00000000
+0000c026
+00000000
+00000b14
+00000000
+0000d00f
+00000000
+00007e07
+00000000
+00005302
+00000000
+00003201
+00000000
+00000500
+00000000
+00000026
+00000000
+00001e10
+00000000
+00006de9
+00000000
+000056bd
+00000000
+000034e6
+00000000
+0000115f
+00000000
+0000f770
+00000000
+000056fa
+00000000
+0000684d
+00000000
+0000bbb6
+00000000
+0000b8bb
+00000000
+0000c93f
+00000000
+0000e05f
+00000000
+00001b6f
+00000000
+00009d8e
+00000000
+0000553e
+00000000
+000076bb
+00000000
+0000d8f4
+00000000
+00009310
+00000000
+00005d6d
+00000000
+00006cfe
+00000000
+0000b19d
+00000000
+0000c65b
+00000000
+00002a9b
+00000000
+000009e0
+00000000
+000070a1
+00000000
+00006429
+00000000
+0000e81c
+00000000
+0000f057
+00000000
+00009135
+00000000
+0000d1e8
+00000000
+000085ae
+00000000
+0000bd47
+00000000
+0000f92d
+00000000
+0000f189
+00000000
+00008238
+00000000
+00008ca9
+00000000
+0000f5a8
+00000000
+0000f7b1
+00000000
+000017ee
+00000000
+00000c50
+00000000
+00004fb9
+00000000
+0000bc1e
+00000000
+00007654
+00000000
+00006272
+00000000
+0000751f
+00000000
+0000a52c
+00000000
+000070ad
+00000000
+00007727
+00000000
+0000b39b
+00000000
+00000f72
+00000000
+0000e24c
+00000000
+0000e372
+00000000
+000086ee
+00000000
+0000c4d6
+00000000
+0000c3df
+00000000
+00003fbd
+00000000
+0000b106
+00000000
+0000d6f5
+00000000
+0000ef92
+00000000
+0000f4eb
+00000000
+0000fbb6
+00000000
+0000fc89
+00000000
+0000fe3d
+00000000
+0000ff6e
+00000000
+00007d67
+00000000
+0000e19b
+00000000
+00009cde
+00000000
+0000ab21
+00000000
+0000b519
+00000000
+0000e494
+00000000
+0000c08c
+00000000
+000058f6
+00000000
+0000df76
+00000000
+0000bc8a
+00000000
+000037a6
+00000000
+00002966
+00000000
+00008f33
+00000000
+00009dac
+00000000
+000041e8
+00000000
+00008548
+00000000
+00000e9b
+00000000
+0000cc1c
+00000000
+00007bc1
+00000000
+0000c205
+00000000
+0000f312
+00000000
+0000c0c4
+00000000
+0000150b
+00000000
+000008a4
+00000000
+0000d5f1
+00000000
+0000fec9
+00000000
+00000d6d
+00000000
+00006605
+00000000
+00007414
+00000000
+0000ff3f
+00000000
+00001456
+00000000
+00009653
+00000000
+0000ec02
+00000000
+00001fe8
+00000000
+0000c530
+00000000
+00007561
+00000000
+0000c9a5
+00000000
+0000adcb
+00000000
+0000be33
+00000000
+0000b46b
+00000000
+0000ef80
+00000000
+0000543f
+00000000
+0000b2dc
+00000000
+00007846
+00000000
+00001c99
+00000000
+000096c6
+00000000
+0000c1a2
+00000000
+0000806b
+00000000
+000048a2
+00000000
+00005747
+00000000
+00005423
+00000000
+000037b9
+00000000
+0000fd76
+00000000
+000066df
+00000000
+0000b27f
+00000000
+00000fe4
+00000000
+00002211
+00000000
+0000c28b
+00000000
+0000ffcd
+00000000
+00000de0
+00000000
+000028f5
+00000000
+0000e6fb
+00000000
+000043fc
+00000000
+000083fe
+00000000
+000027ff
+00000000
+00000004
+00000000
+000000d8
+00000000
+00000047
+00000000
+00000085
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packu-01.reference_output
new file mode 100644
index 000000000..105e64990
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packu-01.reference_output
@@ -0,0 +1,1044 @@
+ffffffff
+ffffffff
+00000000
+00000000
+6f061d6d
+80000000
+d2eeeb1c
+40000000
+485246bf
+a0000000
+d50bd94a
+30000000
+88627494
+38000000
+2405b307
+4c000000
+b1410cba
+82000000
+de81bcad
+69000000
+bf28804a
+cc800000
+fd8bf412
+19400000
+063bf2da
+20a00000
+811d9484
+5c500000
+8cb7ed4f
+cd280000
+666fafe7
+eb240000
+fdb7038b
+cfb60000
+a4e23852
+118f0000
+718e177d
+3b0b8000
+42bea775
+3da84000
+e91ede43
+a742a000
+d2039372
+a3def000
+e8dec4b7
+3af37800
+eed7c61c
+4d64cc00
+4eab740b
+f37b4e00
+2466b460
+efe74900
+4256f18f
+e0776780
+8533dc75
+fa56aa40
+ca355a09
+60c9f220
+22fed7db
+af36f110
+b6de8bcf
+03339908
+b9fbd369
+5c67c8fc
+324c464b
+c706e0c2
+70fd0c20
+efe091e3
+755cd0bf
+cb7cdda3
+a31e74cf
+51885e99
+300d9b71
+87503d9d
+cb0acb58
+1ac7983c
+fd5324a4
+1857bc0a
+a46ee1f1
+b9545b91
+4bff93c1
+ffe1759c
+e3ac0343
+d12c4a6d
+75bd36c7
+4978c517
+ea894c29
+ec557c3c
+46b7549d
+7fab9b08
+7e107814
+af8fda61
+57e9f6c2
+707df5a4
+f3c9fbed
+924d5d8c
+1078e539
+200dc762
+57b0d4c1
+415dc3e7
+9812a134
+448e60ef
+d367d9f1
+ad881be6
+1f8b62c2
+d3262066
+ab4a4d5c
+955964c5
+5cbaf664
+0b66a666
+d497855d
+610ea259
+97db1001
+c19961dd
+d63ef4de
+4c414415
+1baf44cf
+fc44172c
+eab762a9
+985875b0
+9b90f7ca
+fcd87651
+cbd297d6
+443a809e
+da53e667
+b914351d
+77a061ba
+922ec2bf
+a6c87383
+0e1db424
+33439fc4
+7f8c74b1
+00000000
+1a323609
+80000000
+ed4eced7
+40000000
+29cb52af
+20000000
+0ae5de17
+d0000000
+b725f591
+58000000
+d5f381d6
+fc000000
+56ffe58d
+42000000
+699492c9
+77000000
+25f013ba
+65800000
+48659245
+46c00000
+491f1b5a
+56e00000
+8b57454a
+56b00000
+2b9c75b6
+47380000
+045abe77
+35440000
+a9cc49b7
+09320000
+75cdcd80
+cd550000
+b2b64c4b
+fd428000
+6eb5568b
+8e8a4000
+5dd1ee29
+1370a000
+f19c9fda
+1408b000
+74fb05dc
+e87af800
+9f7c62bb
+dba90400
+5d98418d
+01d61e00
+b21e137c
+6e905700
+afc08ace
+2e84d280
+52d700ac
+c70a28c0
+94a7a5ea
+baa4f320
+4fe6a6f6
+5c106a30
+cadb5bec
+230b9f88
+cc381e10
+8d60807c
+903636cf
+2d47691a
+fae216dc
+fabf0a7b
+6aeb7dbd
+11b6621f
+6f6e71b7
+486e4b47
+440d8382
+60e99d0e
+b1b0d8fe
+f547af48
+855efa74
+9254a04d
+0bc66a8a
+adf58064
+29828207
+01dae235
+80904b4c
+b1ff9d60
+27a16894
+179fafe7
+fbdb4de8
+fbcf7628
+805c2f63
+e9fd4b63
+577f8847
+42dc4354
+f29c5831
+ed4764dd
+2e9115b6
+51b0f5ab
+2ae568ba
+a544ade7
+db04a838
+925c46cb
+5e4945ed
+1ae589fb
+096ebec4
+1d2acd14
+387be8b8
+9c9d5a52
+0b21bbba
+2b20055d
+073465b8
+ae39ed63
+409bd305
+d7f893c3
+b0ab577a
+19b3bff3
+42f5d75e
+f09825a4
+f7ab62a8
+01555a45
+8a88c067
+532e2cc5
+f8a88518
+fb7523b0
+8248f803
+382cc710
+331b2fb3
+4c52cfc2
+e7edd867
+3dcbe162
+fa60dbd6
+fe4544f6
+7b87a9e2
+44dcda6a
+248174e5
+33bfb0e8
+7af0702b
+dedbf20a
+ef6855ed
+07020244
+b93ac7ee
+a3a30485
+cc31d1dc
+0368a583
+ef900fb8
+a0fa6a24
+7d572379
+1606f8cc
+f5858bcc
+81294a71
+ea7bd402
+9ca99acf
+b95bf2e9
+0440ea57
+097ceae8
+6c456bfc
+67212b9d
+64ad8cd4
+9da9065d
+757e5228
+bd7a5054
+c6592aad
+6cb1be29
+7fb1ac68
+6f3b6fa6
+06e1dd67
+249808d0
+b8f66a4f
+1a5b9ccd
+c8738f37
+f4ee2270
+66a4e1f8
+8e2b5c7e
+6673663c
+355695e6
+7de7f426
+f4f31a2b
+f17dc31d
+28f20e42
+1b607a8d
+5415a043
+04ef0623
+590c01c4
+853ed27f
+004fb0b2
+eb9a5398
+03eb3f6c
+d183808a
+e30aa425
+1ff934cb
+d756c0f0
+3bbc81ce
+b5bb3b24
+8b898000
+e52fb081
+1ab5ffe4
+710733fe
+19a55fa9
+cee6c948
+c0a83d81
+1e903ad2
+292268c6
+a6e915bd
+36370fcc
+be4349e3
+e820ba0f
+3ea485f7
+4e0aa561
+c680322f
+2c9aaa4c
+9ef4ce9f
+1c8073cf
+83653ebf
+cc11f70e
+6ffd7d7f
+0c9dc3ec
+365ee0ff
+8df80a8d
+1ce551ff
+e05474e1
+a10263ff
+4b6ae0ab
+4cc607ff
+884a2af8
+00d36fff
+1475d76c
+7b40dfff
+729d8fd2
+6a0f3fff
+c407e2a9
+1fe47fff
+5697ebd5
+dbeeffff
+69f35da3
+9269ffff
+9230a15a
+93fbffff
+e057776c
+1ab7ffff
+b9e861c8
+222fffff
+17c5da8e
+489fffff
+b888d020
+5a3fffff
+ee8eb1b1
+ea7fffff
+0341ea23
+82ffffff
+6d5c2871
+b1ffffff
+9bae401e
+c3ffffff
+9241b7ed
+87ffffff
+3e610134
+8fffffff
+39c88ec0
+9fffffff
+a67ce511
+bfffffff
+24b6b671
+7fffffff
+6dae4547
+ffffffff
+0168ef24
+220746cc
+30d2ec9f
+2dc04d35
+c42a14b6
+b6cf3de4
+27b2bdda
+8964663c
+2815a915
+7bea8a85
+fe0022c2
+da80ddef
+424f6311
+54fad640
+4d0957fb
+86bddb7c
+448bfe11
+c8ea69a8
+67dfca77
+633f9e36
+c312e040
+1c029006
+9f440f98
+b36964f8
+5569dab7
+a09c74e3
+03fd3b8c
+ddc89919
+0d5574b4
+07c8adbb
+8ba43677
+42c1be6c
+231d058c
+4cace191
+8c0f5cbf
+0d4c58ab
+b7e7669e
+9edfcc1b
+4399ec2a
+d24f0724
+7a9ac0a7
+5f249e4d
+0143ac65
+ae7c7ae4
+e31f9713
+bd5a3c08
+cdbd527d
+529d62b6
+59dde331
+4ba49966
+e05e8c5f
+fd670591
+19835a0d
+7dabb700
+636a75e3
+088b3e9e
+280088db
+4ed62428
+4a18738a
+1ca7bd1f
+fdd2cb40
+63c2504c
+c61b1fbf
+30bff192
+0bacfc76
+ebda5a4f
+65cb60bd
+1635b51a
+a4053173
+6ce859bb
+3e87b427
+499006c8
+6cc30f6f
+3c5b3eee
+25784f5f
+d95fd86a
+27b23dbf
+e91014a0
+d5a2037f
+01769a3c
+e81fdcff
+85a300e0
+ff7745ff
+1f1baf6a
+708903ff
+86ce51bd
+a4be27ff
+b1f5d853
+31602fff
+2ad60725
+ba4a1fff
+5761a866
+7f103fff
+09e4d1f4
+f8a77fff
+9a7ef9e4
+da88ffff
+a827f5a3
+2449ffff
+59c05bb9
+6c9bffff
+de14bff2
+6e27ffff
+63c2a48f
+31cfffff
+5dcf019d
+215fffff
+90bb3480
+433fffff
+47b7097b
+857fffff
+40d90a1e
+acffffff
+4b1634e1
+6dffffff
+fcb627af
+3bffffff
+abb4da1c
+67ffffff
+41b79d35
+2fffffff
+d38cadcd
+dfffffff
+fe339eca
+bfffffff
+07ac5fed
+7fffffff
+2ff7c0fc
+ffffffff
+a6ea1c0d
+8138093c
+f192d0d7
+bd21a956
+5d8a9ea9
+932d823f
+2537437f
+b3852a64
+17f8388b
+567b159a
+0de1b952
+9fbfcb0a
+07571fe6
+7805ec94
+037adfd3
+2f5031f8
+01f2bae5
+c3e60e90
+00c42276
+421d9b0a
+007fb916
+f088bed0
+0037193e
+03f26964
+00172f2a
+9ad8e8b1
+000fcb68
+d8219c9d
+00070446
+6e19ce13
+0003db77
+6410ff87
+00013ef0
+764a44b4
+0000ac0b
+946c61bc
+000067a5
+fd846420
+000028a1
+1d6d2a93
+00001bf9
+9199165c
+00000f99
+1b2e2cd7
+0000044e
+d53c269b
+00000213
+c21668aa
+00000112
+5c7fb02d
+000000a4
+aeb0a94c
+00000075
+cc81f272
+0000002d
+2041c033
+00000011
+f0f1d8db
+00000008
+426e6ddf
+00000006
+e715dfe5
+00000002
+db54e659
+00000001
+a3729599
+00000000
+6fd08d91
+00000000
+1ad9c6d8
+00000000
+05d54cb2
+00000000
+9e2e5be5
+00000000
+866534cd
+00000000
+56f55245
+00000000
+44eb31e4
+00000000
+7db4d3b5
+00000000
+3372969f
+00000000
+a38d0f39
+00000000
+b06670aa
+00000000
+23f7d227
+00000000
+887aae6a
+00000000
+106607dc
+00000000
+c4aaf35a
+00000000
+0981abb6
+00000000
+db14a009
+00000000
+eea93b6f
+00000000
+fa342b15
+00000000
+b7b8b1a0
+00000000
+3473f51f
+00000000
+57d53e43
+00000000
+2141c6d1
+00000000
+e7ff25b9
+00000000
+28c0d4ae
+00000000
+0942c3fb
+00000000
+418bfbb0
+00000000
+af3aeaa3
+00000000
+1d849e2b
+00000000
+44339c10
+00000000
+746fe5b9
+00000000
+9064dbd9
+00000000
+880f73bb
+9211a8d8
+60301309
+520235bc
+2cfcc396
+d4b59c05
+1b4c0859
+735dc327
+086b6a04
+faf8dfcd
+06720c54
+d945bbf3
+02d51bff
+51054839
+01554174
+ea0a668a
+00a746a4
+a2592b9d
+005a6296
+53b3b0ff
+00260fdd
+5e320f4a
+00159ecb
+05b4d756
+000dc63d
+07a04e64
+00066900
+8a8f7aef
+0002b3db
+94b953ed
+0001bc44
+e13a0996
+0000f1b2
+9bdeb398
+00006766
+a98a372e
+0000239d
+dd0c8b94
+00001fa0
+ea3d9be7
+00000c1f
+13446df8
+000006e3
+7b73ccf8
+000002fa
+b372c56b
+0000012b
+ec7038c9
+000000aa
+fb019df4
+0000004a
+1799e728
+00000028
+0beddb07
+00000015
+44e9e4a5
+0000000e
+ea3a0683
+00000006
+9d42f670
+00000002
+119b4fe5
+00000001
+98b20411
+00000000
+64409ddb
+00000000
+f6724ba0
+00000000
+0c228266
+00000000
+e1d7300f
+00000000
+b9b338eb
+00000000
+a2f7647a
+00000000
+12ca3f70
+00000000
+9c3ecb54
+00000000
+36971e1b
+00000000
+93b3a3d9
+00000000
+050684bf
+00000000
+65151c40
+00000000
+21870f0b
+00000000
+0f552c94
+00000000
+2274ea18
+00000000
+f6cdb2f8
+00000000
+563e9bed
+00000000
+6b77730f
+00000000
+78511608
+00000000
+36a80bdf
+00000000
+4a789cb3
+00000000
+c42b7170
+00000000
+834c687a
+00000000
+b53302fc
+00000000
+15c1d2df
+00000000
+a3ea284d
+00000000
+76c468ae
+00000000
+e12b2b8f
+00000000
+8743feb6
+00000000
+a66b0d38
+00000000
+2fa91425
+00000000
+309d6b79
+00000000
+7734d7c1
+2bb9daa6
+2dc86f6d
+f01528ec
+b2de7072
+74a8eaec
+dabfc6d7
+fcc1650f
+e3ff5ec4
+61d4c262
+f7fe676e
+bee2ee6e
+fbde6f8e
+6d80feee
+fd5d359f
+efb5b593
+feb171e3
+ee412da7
+ff4f4d10
+09322235
+ffa80c91
+c9763989
+ffdb1391
+0c64d280
+ffe25182
+ac79fc27
+fff0ffc4
+513ee651
+fff8e49c
+612faf5e
+fffcd94d
+36334245
+fffee5ce
+2a9cc14f
+ffff34a3
+279ee973
+ffffb7e9
+2dd60261
+ffffc1b6
+071c80a0
+ffffeb07
+76b4a3dd
+fffff54d
+1d95cdb0
+fffff905
+6b3d9c59
+fffffcc0
+891b8273
+fffffe5b
+b68a272a
+ffffff0f
+ce80f7b1
+ffffff8d
+897d9fc5
+ffffffdf
+75f32b50
+ffffffee
+239853f9
+fffffff3
+08d6920b
+fffffffa
+94038f33
+fffffffc
+a9632e3d
+fffffffe
+1141b67f
+ffffffff
+faa97965
+ffffffff
+d6ac851f
+ffffffff
+07f5e51d
+ffffffff
+9875bad1
+ffffffff
+339863c4
+ffffffff
+c988a7cc
+ffffffff
+5bc1c366
+ffffffff
+132a7176
+ffffffff
+498db88f
+ffffffff
+c313bc1f
+ffffffff
+b1834066
+ffffffff
+aa467bbe
+ffffffff
+9b9aaad1
+ffffffff
+e4367cca
+ffffffff
+3c2c0e92
+ffffffff
+b264d045
+ffffffff
+6baeea37
+ffffffff
+e0f003e9
+ffffffff
+f69b0ae6
+ffffffff
+29ade05f
+ffffffff
+13e6d903
+ffffffff
+0af2ee97
+ffffffff
+2a5dc0a0
+ffffffff
+e6a4d5ca
+ffffffff
+a422af66
+ffffffff
+755961a9
+ffffffff
+9aaacd63
+ffffffff
+9c1f741f
+ffffffff
+5902a9db
+ffffffff
+1694bd33
+ffffffff
+dd4ec4d8
+ffffffff
+ef677106
+ffffffff
+313971c0
+0cd5d8e2
+aec15274
+dec85b0d
+d9157bee
+93017690
+e9907c4b
+647981b7
+f1ccaecf
+fbdf8f97
+fab2993a
+f37e27a3
+fc6f9f6b
+0da64fcf
+fe11d383
+3da82c98
+ff0d9d60
+9c3d087c
+ffbe66b1
+a6c5e214
+ffd1f3aa
+d6220b4f
+ffeb78cc
+fe0a9c6c
+fff6f2fc
+da70525a
+fffa3d4f
+b9fef1d6
+fffd1160
+67913217
+fffeb3be
+81aa70ac
+ffff2dd5
+c2680192
+ffffae62
+5916d281
+ffffc752
+3322358c
+ffffe41c
+a08b84f3
+fffff595
+8e368ce0
+fffff9e2
+b8f4169f
+fffffc47
+ffec35fe
+fffffe96
+6d3f408b
+ffffff3f
+c96efdc4
+ffffffa4
+242a809b
+ffffffc5
+f65e7737
+ffffffe9
+e380a176
+fffffff1
+f65cf3f3
+fffffffb
+9e7e1fc3
+fffffffd
+85fcd601
+fffffffe
+6c5e1578
+ffffffff
+72745307
+ffffffff
+7c2c966d
+ffffffff
+9bb4752d
+ffffffff
+0cf25923
+ffffffff
+df3c45b4
+ffffffff
+8f0846a2
+ffffffff
+66b072b9
+ffffffff
+2a933ad3
+ffffffff
+8525e8a8
+ffffffff
+9535971c
+ffffffff
+3e1c8521
+ffffffff
+b66b3284
+ffffffff
+53fbff6c
+ffffffff
+c70afc92
+ffffffff
+dd68f201
+ffffffff
+7213516d
+ffffffff
+18bb28e9
+ffffffff
+265039f6
+ffffffff
+14b91c79
+ffffffff
+0973e89c
+ffffffff
+d798c9cf
+ffffffff
+95a4d257
+ffffffff
+735c076b
+ffffffff
+894deab4
+ffffffff
+953b00b0
+ffffffff
+f829d29f
+ffffffff
+a96ec2b3
+ffffffff
+432779ee
+ffffffff
+61b0ee09
+ffffffff
+ff1e5bef
+ffffffff
+137a9777
+ffffffff
+2904cdef
+ffffffff
+34c2da80
+5ba2c7dd
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packuw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packuw-01.reference_output
new file mode 100644
index 000000000..063e4e3aa
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packuw-01.reference_output
@@ -0,0 +1,1052 @@
+ffffffff
+ffffffff
+5ae15ae1
+00000000
+0000c386
+00000000
+00002af4
+00000000
+00002502
+00000000
+0000392e
+00000000
+000080e4
+00000000
+0000cec7
+00000000
+00005d00
+00000000
+00000b81
+00000000
+000083e2
+00000000
+000046e4
+00000000
+0000242d
+00000000
+0000d8d8
+00000000
+0000c1f3
+00000000
+0000d770
+00000000
+00000581
+00000000
+0000d8bc
+00000000
+0000e812
+00000000
+00003d32
+00000000
+00002037
+00000000
+00008744
+00000000
+0000875e
+00000000
+000017d8
+00000000
+000087f9
+00000000
+00000d42
+00000000
+00002de4
+00000000
+0000d630
+00000000
+00000000
+00000000
+00004e7b
+00000000
+00000000
+00000000
+0000c8cd
+00000000
+0000c062
+00000000
+00006449
+00000000
+80004f63
+ffffffff
+c0001f3c
+ffffffff
+20003bb3
+00000000
+70002bed
+00000000
+e8007c49
+ffffffff
+2400a855
+00000000
+3a002450
+00000000
+fd006656
+ffffffff
+02809929
+00000000
+4d40ff60
+00000000
+10a093c2
+00000000
+9890a1c1
+ffffffff
+a8f8408b
+ffffffff
+db8caa8d
+ffffffff
+8c625c96
+ffffffff
+526b7c28
+00000000
+282856f6
+00000000
+3aaf5710
+00000000
+ba453a81
+ffffffff
+54c322fe
+00000000
+9d41fcd2
+ffffffff
+29458b08
+00000000
+b6c0072f
+ffffffff
+91100e72
+ffffffff
+98df3b50
+ffffffff
+3f6ad6cb
+00000000
+8f82f66f
+ffffffff
+48b4aeb5
+00000000
+12916373
+00000000
+33ec4b1d
+00000000
+323e0196
+00000000
+af5b8947
+ffffffff
+e92a0000
+ffffffff
+4bed0000
+00000000
+32060000
+00000000
+4ef40000
+00000000
+d2360000
+ffffffff
+34800000
+00000000
+43600000
+00000000
+60e00000
+00000000
+522a0000
+00000000
+994a0000
+ffffffff
+5d620000
+00000000
+cd070000
+ffffffff
+4ea40000
+00000000
+bb750000
+ffffffff
+709e0000
+00000000
+3ff70000
+00000000
+e7160000
+ffffffff
+b03f0000
+ffffffff
+5c3d0000
+00000000
+18cc0000
+00000000
+575d0000
+00000000
+7ce10000
+00000000
+6f9f0000
+00000000
+4f830000
+00000000
+244d0000
+00000000
+5b130000
+00000000
+64e70000
+00000000
+305e0000
+00000000
+61250000
+00000000
+07e80000
+00000000
+62910000
+00000000
+58f40000
+00000000
+0a090000
+00000000
+33448000
+00000000
+e2edc000
+ffffffff
+00f16000
+00000000
+48f7f000
+00000000
+df889800
+ffffffff
+bd23ec00
+ffffffff
+86f97600
+ffffffff
+80eb8b00
+ffffffff
+1db6fb80
+00000000
+02352c40
+00000000
+cd26c220
+ffffffff
+01b57b70
+00000000
+5d3b0cc8
+00000000
+fd1096fc
+ffffffff
+f570dde6
+ffffffff
+7592d357
+00000000
+461647f9
+00000000
+8ccaf9c7
+ffffffff
+6d5f7952
+00000000
+2ded1ce9
+00000000
+1d24e301
+00000000
+ddbaac86
+ffffffff
+a9e1de16
+ffffffff
+152906bf
+00000000
+62730e07
+00000000
+6c57d295
+00000000
+a97b6ec1
+ffffffff
+d19ef0f1
+ffffffff
+56f5f0f5
+00000000
+253292d9
+00000000
+5fef058f
+00000000
+598b797d
+00000000
+77270aab
+00000000
+b3aa8f64
+ffffffff
+3d561d19
+00000000
+b5ff7d3a
+ffffffff
+14d58228
+00000000
+f81a963a
+ffffffff
+dd93740e
+ffffffff
+66eedfe4
+00000000
+8652af69
+ffffffff
+09fcb2fe
+00000000
+6409e10e
+00000000
+d92f914a
+ffffffff
+30d0e881
+00000000
+e6370ae9
+ffffffff
+f8dd0b72
+ffffffff
+be5f303c
+ffffffff
+70c2832c
+00000000
+d5810c99
+ffffffff
+14933e0a
+00000000
+8d376dd5
+ffffffff
+cc6f1f89
+ffffffff
+bddf6d64
+ffffffff
+5cbf3161
+00000000
+3e7f6fb0
+00000000
+b4ffa1d0
+ffffffff
+71ff6be0
+00000000
+b3ffdb0b
+ffffffff
+57ff5d11
+00000000
+2fff7a44
+00000000
+9fff9354
+ffffffff
+3fff9949
+00000000
+7fff4e2e
+00000000
+fffff719
+ffffffff
+ffff15a0
+ffffffff
+ffffb733
+ffffffff
+ffff6aed
+ffffffff
+ffff6d2d
+ffffffff
+ffffbffb
+ffffffff
+ffff27b0
+ffffffff
+ffff14a7
+ffffffff
+ffff2f6a
+ffffffff
+ffff1121
+ffffffff
+fffff96e
+ffffffff
+ffff8fbf
+ffffffff
+ffff2552
+ffffffff
+ffff0f99
+ffffffff
+ffffb68c
+ffffffff
+ffff13e5
+ffffffff
+ffff47cd
+ffffffff
+ffff8364
+ffffffff
+ffffd091
+ffffffff
+ffff7642
+ffffffff
+ffff2017
+ffffffff
+ffff9738
+ffffffff
+ffff5843
+ffffffff
+ffff25fb
+ffffffff
+ffffbd94
+ffffffff
+fffffe18
+ffffffff
+ffff386e
+ffffffff
+ffff0274
+ffffffff
+ffff180c
+ffffffff
+ffff41e5
+ffffffff
+ffff275b
+ffffffff
+ffffae5f
+ffffffff
+ffffb0f9
+ffffffff
+96c01a56
+ffffffff
+8033d4d6
+ffffffff
+602531a3
+00000000
+f54142ee
+ffffffff
+cd096a88
+ffffffff
+f3d1efef
+ffffffff
+46b8883e
+00000000
+00f0733f
+00000000
+269e63dd
+00000000
+ff034ef7
+ffffffff
+0a71eb18
+00000000
+b74d2919
+ffffffff
+cf1effe7
+ffffffff
+4572ba18
+00000000
+ee845f67
+ffffffff
+4c40f63c
+00000000
+65849d02
+00000000
+e5c7d6f1
+ffffffff
+64a10c03
+00000000
+cd415857
+ffffffff
+ee8f16ef
+ffffffff
+de38e6df
+ffffffff
+8b9fe4bf
+ffffffff
+0c96f77f
+00000000
+88f90aff
+ffffffff
+955295ff
+ffffffff
+5c6c23ff
+00000000
+4a7a97ff
+00000000
+37e0cfff
+00000000
+0d771fff
+00000000
+8dfc3fff
+ffffffff
+4e6e7fff
+00000000
+998dffff
+ffffffff
+75eeffff
+00000000
+59cfffff
+00000000
+9793ffff
+ffffffff
+9687ffff
+ffffffff
+d2feffff
+ffffffff
+b6d7ffff
+ffffffff
+0929ffff
+00000000
+784affff
+00000000
+4f82ffff
+00000000
+17b8ffff
+00000000
+8b16ffff
+ffffffff
+39beffff
+00000000
+91e4ffff
+ffffffff
+975affff
+ffffffff
+b432ffff
+ffffffff
+b76dffff
+ffffffff
+cd9cffff
+ffffffff
+eed7ffff
+ffffffff
+76b1ffff
+00000000
+b398ffff
+ffffffff
+3c46ffff
+00000000
+9b01ffff
+ffffffff
+5b33ffff
+00000000
+2d37ffff
+00000000
+bf97ffff
+ffffffff
+6df8ffff
+00000000
+e084ffff
+ffffffff
+432fffff
+00000000
+03b1ffff
+00000000
+4b6effff
+00000000
+bbe8ffff
+ffffffff
+2f8bffff
+00000000
+41b266cc
+00000000
+1d611ba9
+00000000
+c301fae6
+ffffffff
+a8e63695
+ffffffff
+3b6b4c82
+00000000
+02b6e717
+00000000
+cc1e4d3b
+ffffffff
+67deb8fe
+00000000
+e94a6e80
+ffffffff
+91d6c32c
+ffffffff
+e4a7a11f
+ffffffff
+1844cad7
+00000000
+2e6731f3
+00000000
+99d60a76
+ffffffff
+6d2b5ac5
+00000000
+c3c453aa
+ffffffff
+226bae53
+00000000
+ed481862
+ffffffff
+2c282874
+00000000
+25842f3d
+00000000
+0995e7b4
+00000000
+cd877b69
+ffffffff
+80b6af88
+ffffffff
+b467a279
+ffffffff
+e94ff7e7
+ffffffff
+189791e4
+00000000
+671caf6a
+00000000
+8b14b470
+ffffffff
+18d6d508
+00000000
+50dd1690
+00000000
+3b8f58fc
+00000000
+8795962e
+ffffffff
+e03088b4
+ffffffff
+7b1be0f4
+00000000
+31b07fb2
+00000000
+1cdefa2f
+00000000
+0bce6b66
+00000000
+06a179fe
+00000000
+03212080
+00000000
+01e46776
+00000000
+00b01f36
+00000000
+00557f65
+00000000
+00218fc0
+00000000
+001ff2fb
+00000000
+000bea7f
+00000000
+00072c42
+00000000
+0003de17
+00000000
+00016be1
+00000000
+00001530
+00000000
+0000b7e0
+00000000
+0000ca71
+00000000
+0000167c
+00000000
+0000ec9a
+00000000
+0000fb7a
+00000000
+0000f1ba
+00000000
+00006352
+00000000
+0000b325
+00000000
+0000c196
+00000000
+0000b6d3
+00000000
+000079a2
+00000000
+000013f5
+00000000
+0000a111
+00000000
+0000d465
+00000000
+000067ba
+00000000
+0000caa0
+00000000
+47f4d427
+00000000
+73d561ee
+00000000
+36cd4671
+00000000
+1ce2d265
+00000000
+f333b612
+ffffffff
+e54922dc
+ffffffff
+ebb9e159
+ffffffff
+c12fcdc0
+ffffffff
+32d1aa78
+00000000
+3dd124aa
+00000000
+02e5f517
+00000000
+7b1f99ed
+00000000
+83b884c9
+ffffffff
+d69f70c6
+ffffffff
+b1b4ba6b
+ffffffff
+41d81488
+00000000
+032f6111
+00000000
+9ffd92a3
+ffffffff
+07bf5a11
+00000000
+f6a08bcc
+ffffffff
+128abb01
+00000000
+1328f678
+00000000
+5b83798c
+00000000
+08fba82c
+00000000
+7349236e
+00000000
+21af482e
+00000000
+0f7a7219
+00000000
+11b4bfbd
+00000000
+ead847bc
+ffffffff
+9da93a78
+ffffffff
+fa284b1e
+ffffffff
+e7a26bba
+ffffffff
+b45fbd08
+ffffffff
+83295bea
+ffffffff
+6be43a81
+00000000
+63611891
+00000000
+3fdf0bf8
+00000000
+952e0711
+ffffffff
+62dc028d
+00000000
+c5ce011e
+ffffffff
+257700c7
+00000000
+a44f0073
+ffffffff
+e2860034
+ffffffff
+1dd3001a
+00000000
+c4ff0009
+ffffffff
+02cd0007
+00000000
+1e340002
+00000000
+03e00001
+00000000
+45100000
+00000000
+65bd0000
+00000000
+0d650000
+00000000
+00230000
+00000000
+d8b90000
+ffffffff
+902a0000
+ffffffff
+3acb0000
+00000000
+154c0000
+00000000
+a9960000
+ffffffff
+3bd00000
+00000000
+c7320000
+ffffffff
+30b10000
+00000000
+d4ea0000
+ffffffff
+9d950000
+ffffffff
+cb000000
+ffffffff
+965e0000
+ffffffff
+c7fd0000
+ffffffff
+7443aa01
+00000000
+dab03591
+ffffffff
+89016562
+ffffffff
+dcf030d2
+ffffffff
+b828d69f
+ffffffff
+2d79f38e
+00000000
+1a5974bc
+00000000
+6f6db918
+00000000
+08800282
+00000000
+e9e6b8b0
+ffffffff
+9c23eb74
+ffffffff
+f831859b
+ffffffff
+0e220da5
+00000000
+e41bf044
+ffffffff
+85148e73
+ffffffff
+b3b2fb56
+ffffffff
+7d6163ad
+00000000
+81b47825
+ffffffff
+9bfac5f0
+ffffffff
+e7782407
+ffffffff
+4caed9e0
+00000000
+dbc1b5c0
+ffffffff
+36c3d788
+00000000
+a2463601
+ffffffff
+cf4c255c
+ffffffff
+49aa9e49
+00000000
+27521ac2
+00000000
+40d01755
+00000000
+a0a1120f
+ffffffff
+748c2f8d
+00000000
+9fc76056
+ffffffff
+a97cbd00
+ffffffff
+1fe862a1
+00000000
+af89c478
+ffffffff
+c1650715
+ffffffff
+efadc2cc
+ffffffff
+f7fc95a6
+ffffffff
+f8d3d216
+ffffffff
+fc15fc9a
+ffffffff
+feac0c20
+ffffffff
+ff5b06ae
+ffffffff
+ff8737c4
+ffffffff
+ffcea311
+ffffffff
+ffef62eb
+ffffffff
+fff30320
+ffffffff
+fff879a6
+ffffffff
+fffcd971
+ffffffff
+fffe1e4e
+ffffffff
+ffffe3d4
+ffffffff
+ffffb4c8
+ffffffff
+ffff5408
+ffffffff
+ffffc099
+ffffffff
+ffff7ddd
+ffffffff
+ffff6dc3
+ffffffff
+ffffd9ad
+ffffffff
+ffff0d45
+ffffffff
+ffffcb29
+ffffffff
+ffff6ed2
+ffffffff
+ffff8347
+ffffffff
+fffffc6c
+ffffffff
+ffff7886
+ffffffff
+ffffe183
+ffffffff
+ffff596f
+ffffffff
+ffffca11
+ffffffff
+ffffdc17
+ffffffff
+9408a85a
+ffffffff
+53a285d7
+00000000
+e35656df
+ffffffff
+041bea37
+00000000
+92673115
+ffffffff
+12ea91ed
+00000000
+ef8c4ec6
+ffffffff
+2fb54846
+00000000
+658312e9
+00000000
+53e1042d
+00000000
+bbc9b87c
+ffffffff
+9a599651
+ffffffff
+725f7b8b
+00000000
+5956a3b6
+00000000
+437c81ed
+00000000
+4b43a0fb
+00000000
+6c965c37
+00000000
+0e24c5b3
+00000000
+a6fa35a7
+ffffffff
+c8634411
+ffffffff
+be527297
+ffffffff
+85bfe335
+ffffffff
+af33fc7c
+ffffffff
+31d4fc61
+00000000
+eb69985a
+ffffffff
+7a32fb37
+00000000
+fbd20bd6
+ffffffff
+4a106f73
+00000000
+1dcaafe0
+00000000
+52b4bd59
+00000000
+e8d7a647
+ffffffff
+754fb9e9
+00000000
+ec327569
+ffffffff
+ccad955d
+ffffffff
+1bd7d7be
+00000000
+109fe046
+00000000
+090af141
+00000000
+2a71fba1
+00000000
+e5e2fc9e
+ffffffff
+1011fe23
+00000000
+458dff7d
+00000000
+67a0ff83
+00000000
+51c5ffc7
+00000000
+8b7bffe2
+ffffffff
+58fafff2
+00000000
+2c9ffffb
+00000000
+2daffffc
+00000000
+6a01fffe
+00000000
+c5ecffff
+ffffffff
+99efffff
+ffffffff
+dae9ffff
+ffffffff
+3d06ffff
+00000000
+280bffff
+00000000
+a729ffff
+ffffffff
+8c8affff
+ffffffff
+4d88ffff
+00000000
+0b54ffff
+00000000
+3d48ffff
+00000000
+4d98ffff
+00000000
+accaffff
+ffffffff
+5ae6ffff
+00000000
+bedcffff
+ffffffff
+53e8ffff
+00000000
+cf84ffff
+ffffffff
+03ccffff
+00000000
+00005ae1
+00000000
+0000392e
+00000000
+0000ab72
+00000000
+0000d964
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packw-01.reference_output
new file mode 100644
index 000000000..bb5fa8083
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/packw-01.reference_output
@@ -0,0 +1,1052 @@
+ffffffff
+ffffffff
+06040604
+00000000
+00000000
+00000000
+00002d39
+00000000
+0000307f
+00000000
+00006fa3
+00000000
+0000d23b
+00000000
+0000313a
+00000000
+00003e38
+00000000
+00005ef0
+00000000
+0000ba3a
+00000000
+0000abd8
+00000000
+00008cef
+00000000
+0000dd47
+00000000
+00006fae
+00000000
+00004260
+00000000
+000060e6
+00000000
+0000a4df
+00000000
+00000000
+00000000
+0000d01e
+00000000
+0000e34e
+00000000
+000034d3
+00000000
+00009bf5
+00000000
+0000a217
+00000000
+000096d6
+00000000
+0000ea01
+00000000
+0000eb20
+00000000
+00008385
+00000000
+0000f99f
+00000000
+00007359
+00000000
+000029c9
+00000000
+0000f63e
+00000000
+000009fb
+00000000
+000018a7
+00000000
+0000879f
+00000000
+00001ad7
+00000000
+0000e347
+00000000
+0000cfc5
+00000000
+00006066
+00000000
+00002f4b
+00000000
+00007198
+00000000
+0000b0e2
+00000000
+0000dfeb
+00000000
+000036ed
+00000000
+00002130
+00000000
+0000c528
+00000000
+000097cd
+00000000
+0000c392
+00000000
+00002250
+00000000
+000090b1
+00000000
+800046e8
+ffffffff
+4000b7ae
+00000000
+20000bd9
+00000000
+7000b755
+00000000
+680020d7
+00000000
+44002833
+00000000
+06006ac9
+00000000
+7f004556
+00000000
+bd80c99d
+ffffffff
+4d40f3ae
+00000000
+64e0a51d
+00000000
+be7022fc
+ffffffff
+53785e07
+00000000
+d4fc37e9
+ffffffff
+7f5ef0c0
+00000000
+c16d6e6e
+ffffffff
+61300000
+00000000
+29750000
+00000000
+b4710000
+ffffffff
+3b6f0000
+00000000
+cded0000
+ffffffff
+c0ad0000
+ffffffff
+fec90000
+ffffffff
+11eb0000
+00000000
+e8220000
+ffffffff
+555f0000
+00000000
+953f0000
+ffffffff
+888b0000
+ffffffff
+788d0000
+00000000
+156a0000
+00000000
+60f10000
+00000000
+e48d0000
+ffffffff
+713f0000
+00000000
+f4890000
+ffffffff
+56e70000
+00000000
+d7f70000
+ffffffff
+258e0000
+00000000
+f4b30000
+ffffffff
+34b20000
+00000000
+2ec80000
+00000000
+92060000
+ffffffff
+04740000
+00000000
+79610000
+00000000
+3f800000
+00000000
+08880000
+00000000
+bf650000
+ffffffff
+f0e20000
+ffffffff
+53280000
+00000000
+50490000
+00000000
+cbb00000
+ffffffff
+89710000
+ffffffff
+f68e0000
+ffffffff
+1cb00000
+00000000
+0b110000
+00000000
+00580000
+00000000
+02550000
+00000000
+e5570000
+ffffffff
+027c0000
+00000000
+90f70000
+ffffffff
+ce1c0000
+ffffffff
+67480000
+00000000
+bce00000
+ffffffff
+32e80000
+00000000
+83ef0000
+ffffffff
+32600000
+00000000
+e73d8000
+ffffffff
+ec714000
+ffffffff
+cd18a000
+ffffffff
+b6a73000
+ffffffff
+1ed6e800
+00000000
+d0b1ac00
+ffffffff
+6e277a00
+00000000
+755d0d00
+00000000
+ed069180
+ffffffff
+44bc5440
+00000000
+cc253320
+ffffffff
+3224c6b0
+00000000
+47ab4bc8
+00000000
+9041be34
+ffffffff
+e9117fe6
+ffffffff
+88db76df
+ffffffff
+bd624e37
+ffffffff
+58e5b9bc
+00000000
+ac8bdf81
+ffffffff
+09a7ed38
+00000000
+348f3aee
+00000000
+1e9fb5d7
+00000000
+29bf023d
+00000000
+f97fc7a5
+ffffffff
+92ff8a52
+ffffffff
+3dff4fc2
+00000000
+2bff43d4
+00000000
+97ffad80
+ffffffff
+4fff30ba
+00000000
+1fff5557
+00000000
+3fffbb91
+00000000
+7fffa1d0
+00000000
+ffffbaff
+ffffffff
+ffffc902
+ffffffff
+ffffd875
+ffffffff
+ffff4cb4
+ffffffff
+ffff3d02
+ffffffff
+ffffe7ad
+ffffffff
+ffffb010
+ffffffff
+fffff1c0
+ffffffff
+ffff2d4d
+ffffffff
+ffff7552
+ffffffff
+ffffba39
+ffffffff
+ffff39a4
+ffffffff
+ffffc8ad
+ffffffff
+ffff7e48
+ffffffff
+ffff02ca
+ffffffff
+ffff7447
+ffffffff
+ffff2179
+ffffffff
+ffff3321
+ffffffff
+ffff640c
+ffffffff
+ffffe476
+ffffffff
+ffffb9e3
+ffffffff
+ffff6c5c
+ffffffff
+ffff12a3
+ffffffff
+ffffdd83
+ffffffff
+ffffa770
+ffffffff
+ffff54cc
+ffffffff
+ffffaffa
+ffffffff
+fffff9ba
+ffffffff
+fffffbf9
+ffffffff
+ffffd8bc
+ffffffff
+ffff8fce
+ffffffff
+ffffcf6b
+ffffffff
+ffff73ed
+ffffffff
+ffffa709
+ffffffff
+ffff7142
+ffffffff
+ffff7709
+ffffffff
+ffff6dbe
+ffffffff
+ffffbfb9
+ffffffff
+ffff990b
+ffffffff
+ffff16b4
+ffffffff
+ffff509c
+ffffffff
+ffff3d04
+ffffffff
+fffff954
+ffffffff
+ffff846b
+ffffffff
+ffff5db5
+ffffffff
+ffffa5de
+ffffffff
+ffffbf80
+ffffffff
+ffffdcbb
+ffffffff
+ffff4bb3
+ffffffff
+304232e0
+00000000
+ada786cd
+ffffffff
+666dcf7b
+00000000
+ab619aa7
+ffffffff
+e87577cf
+ffffffff
+07a2fc5f
+00000000
+8c5ead3f
+ffffffff
+a572597f
+ffffffff
+19252cff
+00000000
+170e3dff
+00000000
+008773ff
+00000000
+161417ff
+00000000
+c7ba8fff
+ffffffff
+88a25fff
+ffffffff
+a991bfff
+ffffffff
+06c37fff
+00000000
+4c17ffff
+00000000
+946affff
+ffffffff
+4081ffff
+00000000
+cad2ffff
+ffffffff
+948affff
+ffffffff
+d7e2ffff
+ffffffff
+8591ffff
+ffffffff
+a183ffff
+ffffffff
+31f4ffff
+00000000
+35a4ffff
+00000000
+32a5ffff
+00000000
+5c05ffff
+00000000
+de00ffff
+ffffffff
+0f3cffff
+00000000
+2307ffff
+00000000
+e408ffff
+ffffffff
+1525ffff
+00000000
+935fffff
+ffffffff
+4bb2ffff
+00000000
+3e6cffff
+00000000
+f28fffff
+ffffffff
+2e7effff
+00000000
+5e84ffff
+00000000
+36e8ffff
+00000000
+bebbffff
+ffffffff
+9b65ffff
+ffffffff
+b123ffff
+ffffffff
+bb0dffff
+ffffffff
+2172ffff
+00000000
+2acbffff
+00000000
+8550ffff
+ffffffff
+d4f7ffff
+ffffffff
+454dffff
+00000000
+b03affff
+ffffffff
+a24affff
+ffffffff
+fd3dffff
+ffffffff
+8b52ffff
+ffffffff
+4110ffff
+00000000
+f7ccffff
+ffffffff
+1999ffff
+00000000
+de81ffff
+ffffffff
+e520ffff
+ffffffff
+ccf6ffff
+ffffffff
+09f0ffff
+00000000
+f218ffff
+ffffffff
+d74bffff
+ffffffff
+a010ffff
+ffffffff
+f88dffff
+ffffffff
+9e9dffff
+ffffffff
+bb9a59ee
+ffffffff
+7a4da6b5
+00000000
+5fa0f67d
+00000000
+1cb680ff
+00000000
+609381a2
+00000000
+53e5a666
+00000000
+04388462
+00000000
+f00690a6
+ffffffff
+e4a83472
+ffffffff
+cedd4da8
+ffffffff
+c5ba7657
+ffffffff
+ebd264c4
+ffffffff
+a854c57c
+ffffffff
+8912f50a
+ffffffff
+65401cc8
+00000000
+b8a1f3b7
+ffffffff
+5502c374
+00000000
+d09e11cb
+ffffffff
+69b7799a
+00000000
+9de3c554
+ffffffff
+65a3b57e
+00000000
+2ab52cda
+00000000
+8be6e590
+ffffffff
+fb8b2e75
+ffffffff
+bd21a342
+ffffffff
+2e45f834
+00000000
+82fc3e68
+ffffffff
+2f9753de
+00000000
+084eff34
+00000000
+1af1a1f7
+00000000
+801d0a18
+ffffffff
+1cb65835
+00000000
+3f468922
+00000000
+da5e8d2f
+ffffffff
+f86ad83b
+ffffffff
+8a080afd
+ffffffff
+1a9cec95
+00000000
+096c0c5f
+00000000
+1cb3f2ac
+00000000
+8237fd34
+ffffffff
+fbceddf8
+ffffffff
+16a9d54d
+00000000
+bf99819e
+ffffffff
+99dec7f9
+ffffffff
+eec17301
+ffffffff
+9dd3eeac
+ffffffff
+5bc3b009
+00000000
+db50fcde
+ffffffff
+c1f1959b
+ffffffff
+46326d03
+00000000
+3cdc067b
+00000000
+1ad8d62e
+00000000
+0e5e5dc8
+00000000
+04563b3b
+00000000
+0216e498
+00000000
+014d2556
+00000000
+00ad7dda
+00000000
+0042c5c2
+00000000
+0032e879
+00000000
+001eed17
+00000000
+000dbc90
+00000000
+0004f5fb
+00000000
+00032689
+00000000
+00017848
+00000000
+0000a141
+00000000
+39f379f6
+00000000
+8e1cac38
+ffffffff
+f8a1120e
+ffffffff
+62d642ef
+00000000
+35b65e0d
+00000000
+825673ac
+ffffffff
+c5964dc5
+ffffffff
+694d2ece
+00000000
+464e5c62
+00000000
+e0441735
+ffffffff
+0777e383
+00000000
+fc6ad4d2
+ffffffff
+52d755f2
+00000000
+6b161509
+00000000
+3d07c77d
+00000000
+12cd1edd
+00000000
+bce3b4b6
+ffffffff
+6a188329
+00000000
+c096cca6
+ffffffff
+0758e7ce
+00000000
+e84aea76
+ffffffff
+4c792942
+00000000
+49ce06ff
+00000000
+09a0b2ce
+00000000
+dbc4ba20
+ffffffff
+214aa761
+00000000
+0443c1db
+00000000
+19007d15
+00000000
+1dcd7549
+00000000
+b14d2ebc
+ffffffff
+5a0d943f
+00000000
+8cbd8d22
+ffffffff
+51c340fc
+00000000
+c05b8594
+ffffffff
+9ee737ea
+ffffffff
+b9f8dd3d
+ffffffff
+2348670e
+00000000
+1b8beb58
+00000000
+08d6d9f4
+00000000
+fdd87a61
+ffffffff
+c1ec93f6
+ffffffff
+576a6008
+00000000
+852c106a
+ffffffff
+77bf83b3
+00000000
+64de9a1f
+00000000
+f2af00af
+ffffffff
+b3f1f165
+ffffffff
+d6816f3f
+ffffffff
+0358b80f
+00000000
+9acb4daa
+ffffffff
+03722242
+00000000
+b6821aab
+ffffffff
+b45c0a12
+ffffffff
+174f065b
+00000000
+626603fd
+00000000
+d2aa0191
+ffffffff
+4aef00aa
+00000000
+33460079
+00000000
+1cc00026
+00000000
+7d0b0014
+00000000
+65d0000f
+00000000
+847e0007
+ffffffff
+88530002
+ffffffff
+da320001
+ffffffff
+e8050000
+ffffffff
+f200e126
+ffffffff
+001edb10
+00000000
+096d24e9
+00000000
+c65668bd
+ffffffff
+fd3432e6
+ffffffff
+e311735f
+ffffffff
+28f71570
+00000000
+a856b7fa
+ffffffff
+b668f24d
+ffffffff
+78bb0cb6
+00000000
+bdb8f8bb
+ffffffff
+06c94c3f
+00000000
+c1e0f55f
+ffffffff
+a01b106f
+ffffffff
+f49d758e
+ffffffff
+fa556e3e
+ffffffff
+ce76cdbb
+ffffffff
+d2d8d0f4
+ffffffff
+3293a710
+00000000
+555de26d
+00000000
+8b6ce7fe
+ffffffff
+f2b16c9d
+ffffffff
+5dc6d65b
+00000000
+5d2a5d9b
+00000000
+7d0909e0
+00000000
+e370c4a1
+ffffffff
+aa644829
+ffffffff
+e5e80d1c
+ffffffff
+c6f0f957
+ffffffff
+a5911335
+ffffffff
+45d1f5e8
+00000000
+bf8570ae
+ffffffff
+4ebd2347
+00000000
+57f9ef2d
+00000000
+f0f15a89
+ffffffff
+ea821d38
+ffffffff
+c18cbea9
+ffffffff
+e5f5eea8
+ffffffff
+b0f702b1
+ffffffff
+3217b9ee
+00000000
+a80cc150
+ffffffff
+984fc6b9
+ffffffff
+1bbcd81e
+00000000
+1d76f954
+00000000
+ae62df72
+ffffffff
+1475551f
+00000000
+e9a56f2c
+ffffffff
+57700fad
+00000000
+4877dd27
+00000000
+b0b3839b
+ffffffff
+dd0f4572
+ffffffff
+e1e2bc4c
+ffffffff
+f4e3cc72
+ffffffff
+fb86ccee
+ffffffff
+fdc4f5d6
+ffffffff
+fec33cdf
+ffffffff
+ff3f3ebd
+ffffffff
+ffb16006
+ffffffff
+ffd6ddf5
+ffffffff
+ffef3192
+ffffffff
+fff4e3eb
+ffffffff
+fffb2ab6
+ffffffff
+fffc5f89
+ffffffff
+fffe073d
+ffffffff
+ffffae6e
+ffffffff
+ad7db567
+ffffffff
+7ee17c9b
+00000000
+529c45de
+00000000
+baabdc21
+ffffffff
+acb50919
+ffffffff
+67e46c94
+00000000
+60c0f18c
+00000000
+a75841f6
+ffffffff
+5bdf1176
+00000000
+e6bc678a
+ffffffff
+df37e2a6
+ffffffff
+2829ee66
+00000000
+3a8f7233
+00000000
+b39d33ac
+ffffffff
+bc4175e8
+ffffffff
+ad85c248
+ffffffff
+7b0e849b
+00000000
+d9cce01c
+ffffffff
+ba7befc1
+ffffffff
+42c25b05
+00000000
+65f36012
+00000000
+95c06cc4
+ffffffff
+4e156d0b
+00000000
+ff0813a4
+ffffffff
+92d59ef1
+ffffffff
+09febec9
+00000000
+570d1d6d
+00000000
+4e668905
+00000000
+cf748a14
+ffffffff
+2eff213f
+00000000
+a7148a56
+ffffffff
+9b963d53
+ffffffff
+5eec7302
+00000000
+b61f1ce8
+ffffffff
+75c50830
+00000000
+f475ab61
+ffffffff
+96c935a5
+ffffffff
+a2ada6cb
+ffffffff
+90be9033
+ffffffff
+eeb48b6b
+ffffffff
+a5ef8180
+ffffffff
+7b542e3f
+00000000
+b8b27cdc
+ffffffff
+53782746
+00000000
+6e1c0599
+00000000
+7296e2c6
+00000000
+94c139a2
+ffffffff
+3380d06b
+00000000
+61485ea2
+00000000
+18578647
+00000000
+8554c823
+ffffffff
+1437edb9
+00000000
+11fdf576
+00000000
+8c66fadf
+ffffffff
+18b2fd7f
+00000000
+450ffee4
+00000000
+aa22ff11
+ffffffff
+06c2ff8b
+00000000
+4bffffcd
+00000000
+7f0dffe0
+00000000
+a228fff5
+ffffffff
+25e6fffb
+00000000
+eb43fffc
+ffffffff
+b683fffe
+ffffffff
+0f27ffff
+00000000
+00000604
+00000000
+000071b6
+00000000
+0000abd8
+00000000
+0000dd49
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev.b-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev.b-01.reference_output
new file mode 100644
index 000000000..581800011
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev.b-01.reference_output
@@ -0,0 +1,520 @@
+ffffffff
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+01000000
+deadbeef
+02000000
+deadbeef
+04000000
+deadbeef
+0b000000
+deadbeef
+11000000
+deadbeef
+28000000
+deadbeef
+5c000000
+deadbeef
+8f000000
+deadbeef
+74010000
+deadbeef
+eb030000
+deadbeef
+a5070000
+deadbeef
+f50f0000
+deadbeef
+121f0000
+deadbeef
+ee210000
+deadbeef
+26520000
+deadbeef
+38d60000
+deadbeef
+372c0100
+deadbeef
+697e0200
+deadbeef
+b7930600
+deadbeef
+94200c00
+deadbeef
+46ad1b00
+deadbeef
+69343800
+deadbeef
+4fb46600
+deadbeef
+5375b800
+deadbeef
+9d3e3401
+deadbeef
+5180ec02
+deadbeef
+bfbf4406
+deadbeef
+34deff0c
+deadbeef
+24d0e51c
+deadbeef
+55e68137
+deadbeef
+0a053c5a
+deadbeef
+9ebe6efb
+deadbeef
+d0f0ed38
+deadbeef
+77eb4592
+deadbeef
+1d1065de
+deadbeef
+c64325e9
+deadbeef
+2fc4aef4
+deadbeef
+65ed04f8
+deadbeef
+4843ccfd
+deadbeef
+baf380fe
+deadbeef
+8c136dff
+deadbeef
+3caa96ff
+deadbeef
+3c62c2ff
+deadbeef
+be15ebff
+deadbeef
+845ef3ff
+deadbeef
+a60afaff
+deadbeef
+d980fdff
+deadbeef
+aef9feff
+deadbeef
+021bffff
+deadbeef
+a1b3ffff
+deadbeef
+ccdbffff
+deadbeef
+b4ecffff
+deadbeef
+8ef1ffff
+deadbeef
+b5faffff
+deadbeef
+44fdffff
+deadbeef
+fdfeffff
+deadbeef
+31ffffff
+deadbeef
+8dffffff
+deadbeef
+dfffffff
+deadbeef
+e3ffffff
+deadbeef
+f3ffffff
+deadbeef
+f8ffffff
+deadbeef
+fcffffff
+deadbeef
+feffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+782ccd4f
+deadbeef
+43708fa6
+deadbeef
+6fb34d9f
+deadbeef
+aa242a4f
+deadbeef
+68f2a828
+deadbeef
+a208c09a
+deadbeef
+e3323e0b
+deadbeef
+85c4af40
+deadbeef
+484d25a8
+deadbeef
+a6bd5933
+deadbeef
+5f1fb355
+deadbeef
+1e8a6890
+deadbeef
+97e02907
+deadbeef
+ac0d50aa
+deadbeef
+00c46dc1
+deadbeef
+1b97d268
+deadbeef
+af422278
+deadbeef
+464fb1d8
+deadbeef
+1b9d2dba
+deadbeef
+66015948
+deadbeef
+23d48e8e
+deadbeef
+885f5483
+deadbeef
+927fa18d
+deadbeef
+5cd346e6
+deadbeef
+0a6d80bf
+deadbeef
+adcc40bf
+deadbeef
+eb18badb
+deadbeef
+7fa7a5cd
+deadbeef
+ff66a651
+deadbeef
+e2acf5b8
+deadbeef
+aec8491c
+deadbeef
+9569520f
+deadbeef
+ff8f4454
+deadbeef
+c6571472
+deadbeef
+24a78a86
+deadbeef
+e895b277
+deadbeef
+1063a59d
+deadbeef
+602316f5
+deadbeef
+c0cd7ea8
+deadbeef
+80f75f9c
+deadbeef
+008dbe30
+deadbeef
+007ebd2b
+deadbeef
+00c47fed
+deadbeef
+00e868a1
+deadbeef
+00901116
+deadbeef
+00a021fe
+deadbeef
+00c0eee9
+deadbeef
+0080ba9d
+deadbeef
+0000e1ac
+deadbeef
+0000d616
+deadbeef
+0000f414
+deadbeef
+0000b802
+deadbeef
+0000f064
+deadbeef
+00002041
+deadbeef
+0000c029
+deadbeef
+0000802a
+deadbeef
+0000005f
+deadbeef
+000000c2
+deadbeef
+0000009c
+deadbeef
+000000c8
+deadbeef
+00000070
+deadbeef
+00000060
+deadbeef
+00000040
+deadbeef
+00000080
+deadbeef
+b4f52943
+deadbeef
+7920e2e0
+deadbeef
+624a6f74
+deadbeef
+7ceb67e6
+deadbeef
+5680cc81
+deadbeef
+7617428e
+deadbeef
+4f398875
+deadbeef
+73ad60ef
+deadbeef
+54690bd6
+deadbeef
+18dd1457
+deadbeef
+63110010
+deadbeef
+3817d0c8
+deadbeef
+99f7181a
+deadbeef
+fa93d7a5
+deadbeef
+896c1a30
+deadbeef
+648a6f1c
+deadbeef
+5b97a1aa
+deadbeef
+1149c6f3
+deadbeef
+15d651f6
+deadbeef
+8be6cadc
+deadbeef
+fe8416c4
+deadbeef
+90ce17b9
+deadbeef
+968d3b03
+deadbeef
+9cd615dc
+deadbeef
+14d0887f
+deadbeef
+1b28ab6e
+deadbeef
+a9254b1a
+deadbeef
+08c5ae9a
+deadbeef
+f6f99d19
+deadbeef
+315118cd
+deadbeef
+0a5ea486
+deadbeef
+a70f0cfe
+deadbeef
+baddedf3
+deadbeef
+b111a208
+deadbeef
+0ba7618a
+deadbeef
+47326040
+deadbeef
+8f904310
+deadbeef
+df2a55c4
+deadbeef
+bf403f89
+deadbeef
+7f944b05
+deadbeef
+fffef67a
+deadbeef
+ff89208b
+deadbeef
+ff53dbd0
+deadbeef
+ff77432d
+deadbeef
+ff2f79fa
+deadbeef
+ff5f4777
+deadbeef
+ff3ffe70
+deadbeef
+ff7f2c08
+deadbeef
+ffff7650
+deadbeef
+ffffcd54
+deadbeef
+ffffc321
+deadbeef
+ffff37b8
+deadbeef
+ffffcf0f
+deadbeef
+ffffdfc8
+deadbeef
+ffff3f8c
+deadbeef
+ffff7f22
+deadbeef
+ffffff1a
+deadbeef
+ffffff0d
+deadbeef
+ffffff63
+deadbeef
+ffffff17
+deadbeef
+ffffff4f
+deadbeef
+ffffff9f
+deadbeef
+ffffffbf
+deadbeef
+ffffff7f
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev8-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev8-01.reference_output
new file mode 100644
index 000000000..581800011
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev8-01.reference_output
@@ -0,0 +1,520 @@
+ffffffff
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+01000000
+deadbeef
+02000000
+deadbeef
+04000000
+deadbeef
+0b000000
+deadbeef
+11000000
+deadbeef
+28000000
+deadbeef
+5c000000
+deadbeef
+8f000000
+deadbeef
+74010000
+deadbeef
+eb030000
+deadbeef
+a5070000
+deadbeef
+f50f0000
+deadbeef
+121f0000
+deadbeef
+ee210000
+deadbeef
+26520000
+deadbeef
+38d60000
+deadbeef
+372c0100
+deadbeef
+697e0200
+deadbeef
+b7930600
+deadbeef
+94200c00
+deadbeef
+46ad1b00
+deadbeef
+69343800
+deadbeef
+4fb46600
+deadbeef
+5375b800
+deadbeef
+9d3e3401
+deadbeef
+5180ec02
+deadbeef
+bfbf4406
+deadbeef
+34deff0c
+deadbeef
+24d0e51c
+deadbeef
+55e68137
+deadbeef
+0a053c5a
+deadbeef
+9ebe6efb
+deadbeef
+d0f0ed38
+deadbeef
+77eb4592
+deadbeef
+1d1065de
+deadbeef
+c64325e9
+deadbeef
+2fc4aef4
+deadbeef
+65ed04f8
+deadbeef
+4843ccfd
+deadbeef
+baf380fe
+deadbeef
+8c136dff
+deadbeef
+3caa96ff
+deadbeef
+3c62c2ff
+deadbeef
+be15ebff
+deadbeef
+845ef3ff
+deadbeef
+a60afaff
+deadbeef
+d980fdff
+deadbeef
+aef9feff
+deadbeef
+021bffff
+deadbeef
+a1b3ffff
+deadbeef
+ccdbffff
+deadbeef
+b4ecffff
+deadbeef
+8ef1ffff
+deadbeef
+b5faffff
+deadbeef
+44fdffff
+deadbeef
+fdfeffff
+deadbeef
+31ffffff
+deadbeef
+8dffffff
+deadbeef
+dfffffff
+deadbeef
+e3ffffff
+deadbeef
+f3ffffff
+deadbeef
+f8ffffff
+deadbeef
+fcffffff
+deadbeef
+feffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+782ccd4f
+deadbeef
+43708fa6
+deadbeef
+6fb34d9f
+deadbeef
+aa242a4f
+deadbeef
+68f2a828
+deadbeef
+a208c09a
+deadbeef
+e3323e0b
+deadbeef
+85c4af40
+deadbeef
+484d25a8
+deadbeef
+a6bd5933
+deadbeef
+5f1fb355
+deadbeef
+1e8a6890
+deadbeef
+97e02907
+deadbeef
+ac0d50aa
+deadbeef
+00c46dc1
+deadbeef
+1b97d268
+deadbeef
+af422278
+deadbeef
+464fb1d8
+deadbeef
+1b9d2dba
+deadbeef
+66015948
+deadbeef
+23d48e8e
+deadbeef
+885f5483
+deadbeef
+927fa18d
+deadbeef
+5cd346e6
+deadbeef
+0a6d80bf
+deadbeef
+adcc40bf
+deadbeef
+eb18badb
+deadbeef
+7fa7a5cd
+deadbeef
+ff66a651
+deadbeef
+e2acf5b8
+deadbeef
+aec8491c
+deadbeef
+9569520f
+deadbeef
+ff8f4454
+deadbeef
+c6571472
+deadbeef
+24a78a86
+deadbeef
+e895b277
+deadbeef
+1063a59d
+deadbeef
+602316f5
+deadbeef
+c0cd7ea8
+deadbeef
+80f75f9c
+deadbeef
+008dbe30
+deadbeef
+007ebd2b
+deadbeef
+00c47fed
+deadbeef
+00e868a1
+deadbeef
+00901116
+deadbeef
+00a021fe
+deadbeef
+00c0eee9
+deadbeef
+0080ba9d
+deadbeef
+0000e1ac
+deadbeef
+0000d616
+deadbeef
+0000f414
+deadbeef
+0000b802
+deadbeef
+0000f064
+deadbeef
+00002041
+deadbeef
+0000c029
+deadbeef
+0000802a
+deadbeef
+0000005f
+deadbeef
+000000c2
+deadbeef
+0000009c
+deadbeef
+000000c8
+deadbeef
+00000070
+deadbeef
+00000060
+deadbeef
+00000040
+deadbeef
+00000080
+deadbeef
+b4f52943
+deadbeef
+7920e2e0
+deadbeef
+624a6f74
+deadbeef
+7ceb67e6
+deadbeef
+5680cc81
+deadbeef
+7617428e
+deadbeef
+4f398875
+deadbeef
+73ad60ef
+deadbeef
+54690bd6
+deadbeef
+18dd1457
+deadbeef
+63110010
+deadbeef
+3817d0c8
+deadbeef
+99f7181a
+deadbeef
+fa93d7a5
+deadbeef
+896c1a30
+deadbeef
+648a6f1c
+deadbeef
+5b97a1aa
+deadbeef
+1149c6f3
+deadbeef
+15d651f6
+deadbeef
+8be6cadc
+deadbeef
+fe8416c4
+deadbeef
+90ce17b9
+deadbeef
+968d3b03
+deadbeef
+9cd615dc
+deadbeef
+14d0887f
+deadbeef
+1b28ab6e
+deadbeef
+a9254b1a
+deadbeef
+08c5ae9a
+deadbeef
+f6f99d19
+deadbeef
+315118cd
+deadbeef
+0a5ea486
+deadbeef
+a70f0cfe
+deadbeef
+baddedf3
+deadbeef
+b111a208
+deadbeef
+0ba7618a
+deadbeef
+47326040
+deadbeef
+8f904310
+deadbeef
+df2a55c4
+deadbeef
+bf403f89
+deadbeef
+7f944b05
+deadbeef
+fffef67a
+deadbeef
+ff89208b
+deadbeef
+ff53dbd0
+deadbeef
+ff77432d
+deadbeef
+ff2f79fa
+deadbeef
+ff5f4777
+deadbeef
+ff3ffe70
+deadbeef
+ff7f2c08
+deadbeef
+ffff7650
+deadbeef
+ffffcd54
+deadbeef
+ffffc321
+deadbeef
+ffff37b8
+deadbeef
+ffffcf0f
+deadbeef
+ffffdfc8
+deadbeef
+ffff3f8c
+deadbeef
+ffff7f22
+deadbeef
+ffffff1a
+deadbeef
+ffffff0d
+deadbeef
+ffffff63
+deadbeef
+ffffff17
+deadbeef
+ffffff4f
+deadbeef
+ffffff9f
+deadbeef
+ffffffbf
+deadbeef
+ffffff7f
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev8.w-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev8.w-01.reference_output
new file mode 100644
index 000000000..581800011
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rev8.w-01.reference_output
@@ -0,0 +1,520 @@
+ffffffff
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+01000000
+deadbeef
+02000000
+deadbeef
+04000000
+deadbeef
+0b000000
+deadbeef
+11000000
+deadbeef
+28000000
+deadbeef
+5c000000
+deadbeef
+8f000000
+deadbeef
+74010000
+deadbeef
+eb030000
+deadbeef
+a5070000
+deadbeef
+f50f0000
+deadbeef
+121f0000
+deadbeef
+ee210000
+deadbeef
+26520000
+deadbeef
+38d60000
+deadbeef
+372c0100
+deadbeef
+697e0200
+deadbeef
+b7930600
+deadbeef
+94200c00
+deadbeef
+46ad1b00
+deadbeef
+69343800
+deadbeef
+4fb46600
+deadbeef
+5375b800
+deadbeef
+9d3e3401
+deadbeef
+5180ec02
+deadbeef
+bfbf4406
+deadbeef
+34deff0c
+deadbeef
+24d0e51c
+deadbeef
+55e68137
+deadbeef
+0a053c5a
+deadbeef
+9ebe6efb
+deadbeef
+d0f0ed38
+deadbeef
+77eb4592
+deadbeef
+1d1065de
+deadbeef
+c64325e9
+deadbeef
+2fc4aef4
+deadbeef
+65ed04f8
+deadbeef
+4843ccfd
+deadbeef
+baf380fe
+deadbeef
+8c136dff
+deadbeef
+3caa96ff
+deadbeef
+3c62c2ff
+deadbeef
+be15ebff
+deadbeef
+845ef3ff
+deadbeef
+a60afaff
+deadbeef
+d980fdff
+deadbeef
+aef9feff
+deadbeef
+021bffff
+deadbeef
+a1b3ffff
+deadbeef
+ccdbffff
+deadbeef
+b4ecffff
+deadbeef
+8ef1ffff
+deadbeef
+b5faffff
+deadbeef
+44fdffff
+deadbeef
+fdfeffff
+deadbeef
+31ffffff
+deadbeef
+8dffffff
+deadbeef
+dfffffff
+deadbeef
+e3ffffff
+deadbeef
+f3ffffff
+deadbeef
+f8ffffff
+deadbeef
+fcffffff
+deadbeef
+feffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+782ccd4f
+deadbeef
+43708fa6
+deadbeef
+6fb34d9f
+deadbeef
+aa242a4f
+deadbeef
+68f2a828
+deadbeef
+a208c09a
+deadbeef
+e3323e0b
+deadbeef
+85c4af40
+deadbeef
+484d25a8
+deadbeef
+a6bd5933
+deadbeef
+5f1fb355
+deadbeef
+1e8a6890
+deadbeef
+97e02907
+deadbeef
+ac0d50aa
+deadbeef
+00c46dc1
+deadbeef
+1b97d268
+deadbeef
+af422278
+deadbeef
+464fb1d8
+deadbeef
+1b9d2dba
+deadbeef
+66015948
+deadbeef
+23d48e8e
+deadbeef
+885f5483
+deadbeef
+927fa18d
+deadbeef
+5cd346e6
+deadbeef
+0a6d80bf
+deadbeef
+adcc40bf
+deadbeef
+eb18badb
+deadbeef
+7fa7a5cd
+deadbeef
+ff66a651
+deadbeef
+e2acf5b8
+deadbeef
+aec8491c
+deadbeef
+9569520f
+deadbeef
+ff8f4454
+deadbeef
+c6571472
+deadbeef
+24a78a86
+deadbeef
+e895b277
+deadbeef
+1063a59d
+deadbeef
+602316f5
+deadbeef
+c0cd7ea8
+deadbeef
+80f75f9c
+deadbeef
+008dbe30
+deadbeef
+007ebd2b
+deadbeef
+00c47fed
+deadbeef
+00e868a1
+deadbeef
+00901116
+deadbeef
+00a021fe
+deadbeef
+00c0eee9
+deadbeef
+0080ba9d
+deadbeef
+0000e1ac
+deadbeef
+0000d616
+deadbeef
+0000f414
+deadbeef
+0000b802
+deadbeef
+0000f064
+deadbeef
+00002041
+deadbeef
+0000c029
+deadbeef
+0000802a
+deadbeef
+0000005f
+deadbeef
+000000c2
+deadbeef
+0000009c
+deadbeef
+000000c8
+deadbeef
+00000070
+deadbeef
+00000060
+deadbeef
+00000040
+deadbeef
+00000080
+deadbeef
+b4f52943
+deadbeef
+7920e2e0
+deadbeef
+624a6f74
+deadbeef
+7ceb67e6
+deadbeef
+5680cc81
+deadbeef
+7617428e
+deadbeef
+4f398875
+deadbeef
+73ad60ef
+deadbeef
+54690bd6
+deadbeef
+18dd1457
+deadbeef
+63110010
+deadbeef
+3817d0c8
+deadbeef
+99f7181a
+deadbeef
+fa93d7a5
+deadbeef
+896c1a30
+deadbeef
+648a6f1c
+deadbeef
+5b97a1aa
+deadbeef
+1149c6f3
+deadbeef
+15d651f6
+deadbeef
+8be6cadc
+deadbeef
+fe8416c4
+deadbeef
+90ce17b9
+deadbeef
+968d3b03
+deadbeef
+9cd615dc
+deadbeef
+14d0887f
+deadbeef
+1b28ab6e
+deadbeef
+a9254b1a
+deadbeef
+08c5ae9a
+deadbeef
+f6f99d19
+deadbeef
+315118cd
+deadbeef
+0a5ea486
+deadbeef
+a70f0cfe
+deadbeef
+baddedf3
+deadbeef
+b111a208
+deadbeef
+0ba7618a
+deadbeef
+47326040
+deadbeef
+8f904310
+deadbeef
+df2a55c4
+deadbeef
+bf403f89
+deadbeef
+7f944b05
+deadbeef
+fffef67a
+deadbeef
+ff89208b
+deadbeef
+ff53dbd0
+deadbeef
+ff77432d
+deadbeef
+ff2f79fa
+deadbeef
+ff5f4777
+deadbeef
+ff3ffe70
+deadbeef
+ff7f2c08
+deadbeef
+ffff7650
+deadbeef
+ffffcd54
+deadbeef
+ffffc321
+deadbeef
+ffff37b8
+deadbeef
+ffffcf0f
+deadbeef
+ffffdfc8
+deadbeef
+ffff3f8c
+deadbeef
+ffff7f22
+deadbeef
+ffffff1a
+deadbeef
+ffffff0d
+deadbeef
+ffffff63
+deadbeef
+ffffff17
+deadbeef
+ffffff4f
+deadbeef
+ffffff9f
+deadbeef
+ffffffbf
+deadbeef
+ffffff7f
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rol-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rol-01.reference_output
new file mode 100644
index 000000000..62d256c9d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rol-01.reference_output
@@ -0,0 +1,1052 @@
+ffffffff
+ffffffff
+ae106045
+ba2c7dd5
+c38671b6
+6f061d6d
+2af42d39
+d2eeeb1c
+2502307f
+485246bf
+392e6fa3
+d50bd94a
+80e4d23b
+88627494
+cec7313a
+2405b307
+00000000
+00000000
+0b815ef0
+de81bcad
+83e2ba3a
+bf28804a
+46e4abd8
+fd8bf412
+242d8cef
+063bf2da
+d8d8dd47
+811d9484
+c1f36fae
+8cb7ed4f
+d7704260
+666fafe7
+058160e6
+fdb7038b
+d8bca4df
+a4e23852
+e812dd49
+718e177d
+3d32d01e
+42bea775
+2037e34e
+e91ede43
+874434d3
+d2039372
+875e9bf5
+e8dec4b7
+17d8a217
+eed7c61c
+00000000
+00000000
+0d42ea01
+2466b460
+2de4eb20
+4256f18f
+d6308385
+8533dc75
+ab72f99f
+ca355a09
+4e7b7359
+22fed7db
+d96429c9
+b6de8bcf
+c8cdf63e
+b9fbd369
+c06209fb
+324c464b
+644918a7
+70fd0c20
+4f63879f
+755cd0bf
+1f3c1ad7
+a31e74cf
+3bb3e347
+300d9b71
+2bedcfc5
+cb0acb58
+7c496066
+fd5324a4
+a8552f4b
+a46ee1f1
+24507198
+4bff93c1
+6656b0e2
+e3ac0343
+9929dfeb
+75bd36c7
+ff6036ed
+ea894c29
+93c22130
+46b7549d
+a1c1c528
+7e107814
+408b97cd
+57e9f6c2
+aa8dc392
+f3c9fbed
+5c962250
+1078e539
+7c2890b1
+57b0d4c1
+56f646e8
+9812a134
+5710b7ae
+d367d9f1
+3a810bd9
+1f8b62c2
+22feb755
+ab4a4d5c
+fcd220d7
+5cbaf664
+8b082833
+d497855d
+072f6ac9
+97db1001
+0e724556
+d63ef4de
+3b50c99d
+1baf44cf
+d6cbf3ae
+eab762a9
+9b90f7ca
+f66fa51d
+97d6aeb5
+22fccbd2
+6763735e
+07da53e6
+a4b1d37e
+977a061b
+29b21ce0
+c065bc30
+73f89128
+edcdc668
+00000000
+00000000
+00000000
+00100000
+00000000
+00008000
+00000000
+00001000
+00000000
+00001a00
+00000000
+00000b00
+000001f8
+00000000
+00000000
+00000210
+dc000000
+00000001
+32c00000
+00000000
+00000000
+23600000
+000002b7
+00000000
+00000ad6
+00000000
+e0000000
+0000011c
+00000000
+00006a88
+00000126
+40000000
+00000000
+66aa8000
+000001fa
+85000000
+45200000
+00000047
+00000000
+0009b850
+00000502
+2c000000
+c0000000
+000743d7
+10000000
+00036ea4
+00000001
+d61e0000
+0000001b
+a415c000
+28000000
+0002e84d
+8e145180
+00000001
+00000000
+baa4f320
+0000005c
+106a3000
+6173f100
+00000004
+358201f0
+00000002
+47691a00
+0000002d
+000001f5
+7e14f600
+621f8000
+000011b6
+968f8000
+000090dc
+0000183a
+67439800
+af48f000
+0000f547
+000124a9
+409b3000
+00adf580
+64ec0000
+00003b5c
+46aec000
+0058ffce
+b0458000
+7fb80000
+0179fafe
+14162000
+007de7bb
+0e9fd4b6
+3c220000
+70000042
+dc43547b
+ed4764dd
+0cc80000
+b0f5ab96
+fc000051
+56f3eef3
+000052a2
+925c46cb
+d3570000
+68ff3000
+035cb13f
+9a29f38e
+80003a55
+009c9d5a
+527952a0
+9002ae8e
+74980015
+002b8e7b
+58f8c07a
+2787590d
+5801aff1
+d9dff9ef
+0b3d000c
+1e1304b4
+80d7e1a0
+81e46000
+55569143
+5d295544
+0532e2cc
+6ea4760d
+d826641f
+82cc710f
+0f1c6b03
+967e1787
+aa5e4262
+25b37c68
+7b97c2c5
+ffcdfc8a
+89ec0b1e
+fa26e6d3
+53cbebb6
+cefec3a0
+2aad38dc
+db7e4151
+ec97379b
+cefc0838
+101220e8
+d18242be
+9d769c51
+1d7701b4
+52c1c114
+d07d3512
+4b1d5aeb
+3a07011e
+8b037c66
+eff263d2
+c094a538
+d7b4c529
+4e54cd67
+d97f27e1
+0220752b
+708721ea
+3622b5fe
+48a556c0
+3256c66a
+7440985d
+3abf2914
+8574aaab
+e32c9556
+05b95dc8
+bfd8d634
+981e50e8
+0370eeb3
+c1965d7f
+dc7b3527
+864ce481
+6439c79b
+1f056c3a
+b35270fc
+36eaa65a
+3339b31e
+0fc49e81
+3ef3fa13
+b6b273d6
+f8bee18e
+98b0d808
+0db03d46
+b7d878e0
+02778311
+d0e816a6
+c29f693f
+35f03aa9
+75cd29cc
+6d85dd1c
+e8c1c045
+ae889cd2
+0ffc9a65
+3d226456
+9dde40e7
+49aa3f24
+45c4c000
+4ca48165
+0d5afff2
+a7173a23
+8cd2afd4
+fb8c90bc
+e0541ec0
+0ad01990
+94913463
+5b99b206
+1b1b87e6
+b576f23b
+74105d07
+b696dcf1
+a70552b0
+5ffdb62e
+164d5526
+93d80951
+8e4039e7
+0a53eec1
+e608fb87
+17b553b8
+064ee1f6
+8890aa66
+46fc0546
+fcb757fd
+702a3a70
+c7dffcdd
+25b57055
+12a97dfc
+c425157c
+07ccec5e
+0a3aebb6
+5b4647e7
+394ec7e9
+89f2e7b5
+e203f154
+a3e6b9f6
+ab4bf5ea
+c1b25384
+b4f9aed1
+6848b8a1
+491850ad
+3b213b84
+f02bbbb6
+100bb6df
+5cf430e4
+4b9c5fdc
+8be2ed47
+2c21cc85
+dc446810
+92fd8b5a
+774758d8
+deca284e
+01a0f511
+ff0c1e82
+36ae1438
+1c377caa
+4dd7200f
+813a4235
+c920dbf6
+0c062eda
+9f30809a
+20f2d2ef
+1ce44760
+93addfc0
+533e7288
+d72fee5d
+925b5b38
+d87ca5d9
+b6d722a3
+6958cb80
+05a3bc90
+69764fea
+6b436698
+4296c634
+79ef7885
+4f657bb4
+85dd354e
+22ad510e
+f9e502b5
+f8008b0b
+bfbff17f
+d093d8c4
+620fab4f
+5fedccfd
+65fd3425
+917fc22c
+7ba59fe8
+cf7fd9f7
+f29dd3bd
+8c39ffe1
+89702075
+7ff9f440
+f9829191
+dfff9e3f
+fd55a76a
+0ff4ee32
+e8617ffc
+7ffe1aaa
+e968becf
+b1e3fffc
+5d21b3bf
+ff918e82
+c64e817f
+3d72ff5b
+c7fffe30
+1807ffff
+6fcecd3c
+fffd0e67
+b0a9615f
+bffffdea
+6b029c5b
+050eb197
+9b7ffffc
+ffffc63f
+2e27c97f
+bbfffffe
+6dea93ef
+3310afff
+fff59dde
+05e8c5f9
+5ffffffe
+306b41a4
+7fffffe3
+ffffffec
+6d4ebc72
+cfffffff
+280088db
+a1ffffff
+f4a18738
+fffffffe
+e965a01f
+ffffffc6
+1b1fbf7f
+759f8edf
+ffffffe1
+b2e5b05e
+ffffffff
+c5cfffff
+fffe9014
+7b427fff
+fffff3e8
+ffffb661
+87b7ffff
+ffffffff
+c95e13d7
+fffffff2
+7b23dbff
+a2037fff
+ffffffd5
+ffffffff
+ff40fee7
+eee8bfff
+ffffffff
+84481fff
+fffffffb
+fffff497
+c4ffffff
+bfffffff
+fffcc580
+fffffdd2
+50ffffff
+ffff7f10
+3fffffff
+ffffffff
+fffc53bf
+fffffb51
+1fffffff
+ffffffff
+fc9127ff
+fffffdb2
+6fffffff
+ffffffff
+edc4ffff
+fffcc73f
+ffffffff
+ffff215f
+ffffffff
+fffff433
+ffffffff
+ff0affff
+ffffffff
+ffffffff
+59ffffff
+6dffffff
+ffffffff
+ffffffff
+ffceffff
+ffffffff
+ffff67ff
+ff2fffff
+ffffffff
+fffffeff
+ffffffff
+ffffbfff
+ffffffff
+ffffefff
+ffffffff
+ffffffff
+ffffffff
+ba04e024
+f19b3167
+34d6b7a4
+352ac375
+932d823f
+fae6f67d
+990da560
+3fece14a
+0d12b3d8
+acd26414
+f7f9615c
+e2f4ccd3
+944d3b84
+627805ec
+3fa4298b
+d40c7e2e
+e60e906e
+803472c3
+0843b361
+586589b5
+42847dd9
+5fc222fb
+93100fc9
+a5932b5d
+57c9ad8e
+8b131f3c
+d42b6086
+727429db
+5ac51cc8
+6e19ce13
+c821ff0e
+a755e76e
+b94f0dd1
+d92912d2
+e51b186f
+06188472
+10143a3c
+cd7ec232
+eb695499
+79ee2aa0
+8cc8b2e7
+3da5abf4
+9aef6d25
+9b4365c5
+4f09a6eb
+e2396435
+c973ae10
+b3455513
+b8ff605b
+efcf4684
+3c9f0695
+d6152992
+2af6a3e6
+8cc81f27
+ef1020e0
+19da3829
+3fcd3c3c
+7636f542
+dbbe2d21
+43ee84dc
+1ce2bbfc
+ab1f8143
+96658b96
+0d76d539
+2d2248a8
+dca56662
+dbf42364
+783d234b
+671b61fe
+cb60ec6b
+2f0afd05
+d54cb2fa
+59e2e5be
+56b66ec9
+534cd79f
+e0c5f866
+92290407
+9562b7aa
+f233bb7e
+9a227598
+b77e1f6d
+34ed47cd
+e52d3efe
+cbaa9a66
+3d471a1e
+731f8103
+6c199c2a
+bcbef1fe
+d4fee602
+47efa44f
+756443d5
+73516217
+f0bd8048
+83303ee6
+fcdec4aa
+f35a6be1
+576c2a61
+2b361303
+8026df81
+b40f6c52
+beea93b6
+fca71067
+2efa342b
+15167cd6
+2dee2c68
+3b269772
+cecd1cfd
+47fede8e
+2615f54f
+90fc6eb9
+44aac428
+38da2c6a
+e4b73664
+afbb5cff
+065b1708
+a30352bb
+0feedb4f
+a1e4250b
+d062feec
+1e68bb45
+b79215e7
+5d54627e
+111f5fb1
+d849e2ba
+a329344a
+219ce086
+cf74f090
+e8dfcb72
+caa0a141
+9064dbd9
+9ddea13b
+cfb4407b
+86030130
+961eeac3
+59f9872c
+8ce2241c
+bbc6d302
+16749950
+812d8497
+83421ada
+eb019c83
+1508b71c
+7140b546
+fff85653
+05d9c02a
+a82e99b8
+17188029
+d1a92a9e
+4aa17350
+05a62962
+eefa8bf1
+c1801307
+567b2e67
+b7534800
+f90006e3
+1ec264aa
+4240019a
+401c3185
+35e3be80
+0159eddd
+03dba000
+37888291
+00078d93
+088da5b0
+29000067
+6692a383
+29800008
+e7568473
+ce00001f
+a08bcce7
+07a9d800
+00307eec
+c7ecf052
+8400000d
+01bfc000
+00be9e63
+0000012b
+a82cb2ce
+36eba200
+00000aa2
+ba9d8400
+00012920
+90ce0ed8
+00000143
+bfbd7d15
+00000015
+8ea92000
+0001c8f7
+05d78000
+0000c74f
+d287e000
+00004963
+2d7751a4
+40000000
+e84207e0
+00000005
+a0000000
+02df542c
+0000001d
+409bf500
+001891dd
+3d000000
+f8670e00
+0000000b
+8f5ac000
+00000038
+7d000000
+0000a376
+61000000
+00011e7a
+0000000c
+793f6000
+00000001
+cd802000
+00000003
+4106a000
+000d41d9
+80000000
+c0000000
+00026687
+00000003
+80578000
+00000005
+e2ca0000
+0002de7e
+00000000
+0f000000
+000000b8
+026d5000
+00000000
+00000000
+89080000
+00006aac
+00000000
+20000000
+000000a1
+032d8000
+00000000
+00000000
+0000ff40
+00000000
+00064400
+00000000
+00550000
+00001e40
+00000000
+00000026
+00000000
+0000a000
+00000000
+000f0000
+00000000
+00000001
+c0000000
+00100000
+00000000
+00000000
+00040000
+00000000
+00000000
+aa01e126
+2bb9daa6
+3c054a3b
+0d6476c4
+1d5d8cac
+449d2e95
+2f7f3059
+43cc349a
+262d69f3
+2e661d4c
+e6bf7dc5
+dcdde71c
+773a5e0a
+b836c07f
+febbed6d
+64ee462d
+412da702
+82f24dee
+adc58065
+b0499111
+89eb74f8
+bbc97639
+36987e18
+c9a5010b
+ac79fc27
+0da5f55f
+7a89f732
+8f822083
+cc25f5eb
+d1ce6eb1
+c7c6c668
+48bf6acd
+53d8eb73
+6ecaa730
+f4279ee9
+737825d0
+38816eb0
+130e2f85
+a0e39014
+0480fc4d
+4a3ddd9e
+0e7fe76b
+9b616b80
+d93a3b2b
+e23596da
+cf671675
+6e09ccd8
+05766e24
+b813c16d
+144e544a
+f7b19e49
+c4a1ce80
+97d9fc51
+ac248298
+f32b5017
+550d1c75
+53f9120f
+f9572398
+266a11ad
+24165f1a
+ebd12807
+1e66c0ad
+a00e15d5
+2c65c7b7
+ec542468
+e22836cf
+cb88f1de
+5bf552f2
+0a3e0e2a
+b513ad59
+0b3074e0
+1fd79477
+6bea9987
+5bad195a
+789a42dd
+d506730c
+e67e4d01
+58e4c453
+f72de0e1
+b306105c
+ec150132
+a717606a
+635ca4c6
+dc479be2
+fa311d81
+ec313bc1
+1998bafe
+552c60d0
+a919eef8
+0c837dca
+5a2f34ca
+a3f37355
+86cf995b
+2e2de59c
+0e921e4e
+0fad3c2c
+22f1ea6e
+93d93268
+51bda644
+1cdb5d77
+22b97078
+01f4aa04
+da6c2b9b
+0266f133
+4d6f02fb
+eeee6391
+70f33b84
+f9b640db
+9adf5d60
+af2ee97d
+6a29e6f9
+52ee0500
+65949f5e
+f3526ae5
+5eccdda4
+c00d4845
+7d5d5658
+6a60d1f7
+66b1fe36
+18c94d55
+41f7886e
+3eb9c1f7
+df0c1955
+b2c8154e
+3596f5f8
+91694bd3
+328441cf
+7753b136
+6e0bd737
+77b3b883
+150b56ac
+e6272e38
+5d82a4e9
+0baef937
+ed9157be
+e56df45d
+83e25f51
+bee10f4c
+d9e622a1
+233e3995
+ab2993a9
+1ed6c94f
+4ec6f18c
+fc6f9f6b
+f6fe11d3
+83484641
+7f86ceb0
+097488bb
+1042d678
+affbe66b
+d55c3e71
+537fe8f9
+d6f1992c
+a3dccdff
+b919fffb
+797e3dc5
+9fff47a9
+f476c675
+03daebd1
+fffa22c1
+1f78491f
+ffd677d4
+e126ffff
+cb75570d
+3e01cfff
+fae62c5b
+91ad3f7e
+0ffffe3a
+10456c17
+ffff9071
+acab94bb
+0097ffff
+e3356cc4
+fffff9e2
+a17fffff
+88ff8f8d
+6113a4ff
+fffe96fc
+de3fffff
+e7f30b53
+3ecdefb2
+7fffffe9
+c3adbfff
+fff8a17a
+fffffa5b
+dce2417f
+ff1afe08
+a14fffff
+deac909f
+fffffffd
+a56fffff
+ffda6478
+54ffffff
+ffae7a4f
+fffff756
+97302fff
+7fffffff
+caae8e74
+f7c1061f
+fffffffa
+fffc08d5
+6c3fffff
+826b4bff
+ffffffe2
+ffffff74
+34d97fff
+ff27a40c
+ffffffff
+ffffe238
+b6bfffff
+ffffffbe
+c0c07fff
+e3ffffff
+fffff832
+ffffff1d
+f373ffff
+ffffe227
+46ffffff
+9fffffff
+ffff2059
+b1bfffff
+fffffef8
+fff87345
+ffffffff
+fffed06b
+ffffffff
+ff5ea2ff
+ffffffff
+23ffffff
+ffffffc3
+823fffff
+fffffffc
+fffffff6
+dcffffff
+fffffeae
+dfffffff
+ffffffff
+fffeb7ff
+ffffffff
+f5ffffff
+ff727fff
+ffffffff
+ffffffff
+fffffc47
+fffffe2f
+ffffffff
+ffffffe6
+ffffffff
+fffc1fff
+ffffffff
+ffffffff
+fffff5ff
+ffffffff
+fffffeff
+ffffffe7
+ffffffff
+fffffff7
+ffffffff
+ffffffff
+ffffffff
+5ae10604
+5ba2c7dd
+cec7313a
+2405b307
+5d003e38
+b1410cba
+87f996d6
+4eab740b
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rolw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rolw-01.reference_output
new file mode 100644
index 000000000..f796fc875
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rolw-01.reference_output
@@ -0,0 +1,1052 @@
+ffffffff
+ffffffff
+ae106045
+ffffffff
+c38671b6
+ffffffff
+2af42d39
+00000000
+2502307f
+00000000
+392e6fa3
+00000000
+80e4d23b
+ffffffff
+cec7313a
+ffffffff
+5d003e38
+00000000
+0b815ef0
+00000000
+83e2ba3a
+ffffffff
+00000000
+00000000
+242d8cef
+00000000
+d8d8dd47
+ffffffff
+c1f36fae
+ffffffff
+d7704260
+ffffffff
+058160e6
+00000000
+d8bca4df
+ffffffff
+e812dd49
+ffffffff
+3d32d01e
+00000000
+2037e34e
+00000000
+874434d3
+ffffffff
+875e9bf5
+ffffffff
+00000000
+00000000
+87f996d6
+ffffffff
+0d42ea01
+00000000
+2de4eb20
+00000000
+d6308385
+ffffffff
+ab72f99f
+ffffffff
+4e7b7359
+00000000
+d96429c9
+ffffffff
+c8cdf63e
+ffffffff
+c06209fb
+ffffffff
+644918a7
+00000000
+4f63879f
+00000000
+1f3c1ad7
+00000000
+3bb3e347
+00000000
+2bedcfc5
+00000000
+7c496066
+00000000
+a8552f4b
+ffffffff
+24507198
+00000000
+6656b0e2
+00000000
+9929dfeb
+ffffffff
+ff6036ed
+ffffffff
+93c22130
+ffffffff
+a1c1c528
+ffffffff
+408b97cd
+00000000
+aa8dc392
+ffffffff
+5c962250
+00000000
+7c2890b1
+00000000
+56f646e8
+00000000
+5710b7ae
+00000000
+3a810bd9
+00000000
+22feb755
+00000000
+fcd220d7
+ffffffff
+8b082833
+ffffffff
+072f6ac9
+00000000
+0e724556
+00000000
+3b50c99d
+00000000
+d6cbf3ae
+ffffffff
+f66fa51d
+ffffffff
+22fcaeb5
+00000000
+0763735e
+00000000
+94b1d37e
+ffffffff
+0065bc30
+00000000
+edcdd128
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00008000
+00000000
+00018000
+00000000
+00001800
+00000000
+0000f000
+00000000
+00013000
+00000000
+00ec0000
+00000000
+000ec000
+00000000
+00458000
+00000000
+0fb80000
+00000000
+00162000
+00000000
+0c220000
+00000000
+7000007b
+00000000
+0cc80000
+00000000
+fc000096
+ffffffff
+00006ef3
+00000000
+d3570000
+ffffffff
+08ff3000
+00000000
+8001f38e
+ffffffff
+007952a0
+00000000
+7498000e
+00000000
+0038c07a
+00000000
+5801590d
+00000000
+0b3d006f
+00000000
+00d7e1a0
+00000000
+81e46003
+ffffffff
+0d295544
+00000000
+d826640d
+ffffffff
+0f1c6b0f
+00000000
+aa5e4787
+ffffffff
+25b37c69
+00000000
+ffcc0b1e
+ffffffff
+fbcbebb6
+ffffffff
+2aad38dc
+00000000
+ec973791
+ffffffff
+cefc08e8
+ffffffff
+9d769c3e
+ffffffff
+1d774114
+00000000
+cb1d5aeb
+ffffffff
+ba07011e
+ffffffff
+eff263d2
+ffffffff
+57b4c529
+00000000
+597f27e1
+00000000
+708721ea
+00000000
+48a556c0
+00000000
+7440985d
+00000000
+8574aaab
+ffffffff
+85b95dc8
+ffffffff
+181e50e8
+00000000
+c1965d7f
+ffffffff
+064ce481
+00000000
+9f056c3a
+ffffffff
+36eaa65a
+00000000
+0fc49e81
+00000000
+b6b273d6
+ffffffff
+18b0d808
+00000000
+37d878e0
+00000000
+d0e816a6
+ffffffff
+35f03aa9
+00000000
+ed85dd1c
+ffffffff
+2e889cd2
+00000000
+bd226456
+ffffffff
+49aa3f24
+00000000
+4ca48165
+00000000
+a7173a23
+ffffffff
+fb8c90bc
+ffffffff
+8ad01990
+ffffffff
+5b99b206
+00000000
+3576f23b
+00000000
+b696dcf1
+ffffffff
+5ffdb62e
+00000000
+93d80951
+ffffffff
+8a53eec1
+ffffffff
+17b553b8
+00000000
+0890aa66
+00000000
+7cb757fd
+00000000
+47dffcdd
+00000000
+92a97dfc
+ffffffff
+07ccec5e
+00000000
+5b4647e7
+00000000
+89f2e7b5
+ffffffff
+a3e6b9f6
+ffffffff
+c1b25384
+ffffffff
+6848b8a1
+00000000
+bb213b84
+ffffffff
+100bb6df
+00000000
+cb9c5fdc
+ffffffff
+ac21cc85
+ffffffff
+12fd8b5a
+00000000
+5eca284e
+00000000
+7f0c1e82
+00000000
+1c377caa
+00000000
+813a4235
+ffffffff
+8c062eda
+ffffffff
+20f2d2ef
+00000000
+13addfc0
+00000000
+d72fee5d
+ffffffff
+d87ca5d9
+ffffffff
+6958cb80
+00000000
+6b4366ea
+00000000
+79ef6634
+00000000
+85dd354e
+ffffffff
+f9ed510e
+ffffffff
+bfbff17f
+ffffffff
+e20fab4f
+ffffffff
+65fdccfd
+00000000
+7ba59fec
+00000000
+cf7fd3bd
+ffffffff
+8c39fff5
+ffffffff
+7ff29191
+00000000
+ffff9e3f
+ffffffff
+e8617ffe
+ffffffff
+7ffebecf
+00000000
+b1e3ffff
+ffffffff
+ffce817f
+ffffffff
+c7ffff5b
+ffffffff
+1807fffe
+00000000
+fffd615f
+ffffffff
+bffffc5b
+ffffffff
+9b7fffff
+ffffffff
+ffffc97f
+ffffffff
+bbffffff
+ffffffff
+fff0afff
+ffffffff
+5ffffff9
+00000000
+7fffffe4
+00000000
+fffffff2
+ffffffff
+cfffffff
+ffffffff
+f1ffffff
+ffffffff
+ffffff9f
+ffffffff
+ffffff7f
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+b99b3167
+ffffffff
+34d6a375
+00000000
+fae6f67d
+ffffffff
+3fcda560
+00000000
+0d126414
+00000000
+e2f4ccdc
+ffffffff
+624d3b84
+00000000
+3fa429ae
+00000000
+8034726e
+ffffffff
+186589b5
+00000000
+5e847dd9
+00000000
+93132b5d
+ffffffff
+57c31f3c
+00000000
+d42829db
+ffffffff
+5ac51cc8
+00000000
+a755e76e
+ffffffff
+b94f0dd2
+ffffffff
+c6188472
+ffffffff
+cd143a3c
+ffffffff
+79ee2aa1
+00000000
+3da5abf7
+00000000
+9b4f6d25
+ffffffff
+e239642b
+ffffffff
+c973ad13
+ffffffff
+efcf4685
+ffffffff
+3c9f0692
+00000000
+8af6a3e6
+ffffffff
+ef5a3829
+ffffffff
+3fcd3542
+00000000
+43ee2d21
+00000000
+0b1f8143
+00000000
+0d658b96
+00000000
+2d2248a2
+00000000
+f83d234b
+ffffffff
+cb60edfe
+ffffffff
+2f0afdfa
+00000000
+56b66ec9
+00000000
+e0c5f79f
+ffffffff
+95610407
+ffffffff
+9a33bb7e
+ffffffff
+b77e07cd
+ffffffff
+cbaa9afe
+ffffffff
+3d1f8103
+00000000
+7cbef1fe
+00000000
+d4fee603
+ffffffff
+75616217
+00000000
+f0bd804e
+ffffffff
+fcde6be1
+ffffffff
+2b362a61
+00000000
+b40edf81
+ffffffff
+bca71067
+ffffffff
+2e167cd6
+00000000
+3b269772
+00000000
+cefede8e
+ffffffff
+263c6eb9
+00000000
+44aacc6a
+00000000
+afbb5664
+ffffffff
+065b170b
+00000000
+a1e6db4f
+ffffffff
+de68bb45
+ffffffff
+b792027e
+ffffffff
+111f5fba
+00000000
+a329344e
+ffffffff
+cf74f090
+ffffffff
+caa0a141
+ffffffff
+cfb6a13b
+ffffffff
+861eeac3
+ffffffff
+8ce2241c
+ffffffff
+bbf49950
+ffffffff
+836d8497
+ffffffff
+eb08b71c
+ffffffff
+71785653
+00000000
+05d9d9b8
+00000000
+1718aa9e
+00000000
+4aa17352
+00000000
+c1fa8bf1
+ffffffff
+b7534a67
+ffffffff
+f94264aa
+ffffffff
+425c3185
+00000000
+35e3bedd
+00000000
+03dba291
+00000000
+088da5b3
+00000000
+2992a383
+00000000
+29968473
+00000000
+ce8bcce7
+ffffffff
+07a9daec
+00000000
+85ecf052
+ffffffff
+01bfde63
+00000000
+a82cb2ce
+ffffffff
+36eba202
+00000000
+ba9d8520
+ffffffff
+90ce0edb
+ffffffff
+bfbd7d15
+ffffffff
+8ea928f7
+ffffffff
+05d7874f
+00000000
+d287e963
+ffffffff
+4d7751a4
+00000000
+e84207e5
+ffffffff
+a2df542c
+ffffffff
+409bf51d
+00000000
+3d1891dd
+00000000
+f8670e0b
+ffffffff
+8f5ac038
+ffffffff
+7d00a376
+00000000
+61011e7a
+00000000
+793f600c
+00000000
+cd802001
+ffffffff
+4106a003
+00000000
+800d41d9
+ffffffff
+c0026687
+ffffffff
+80578003
+ffffffff
+e2ca0005
+ffffffff
+0002de7e
+00000000
+0f0000b8
+00000000
+026d5000
+00000000
+89080000
+ffffffff
+00006aac
+00000000
+200000a1
+00000000
+032d8000
+00000000
+0000ff40
+00000000
+00064400
+00000000
+00550000
+00000000
+00001e40
+00000000
+00000026
+00000000
+0000a000
+00000000
+000f0000
+00000000
+c0000001
+ffffffff
+00100000
+00000000
+00040000
+00000000
+00000000
+00000000
+aa01e126
+ffffffff
+0d6476c4
+00000000
+449d2cac
+00000000
+2f4c349a
+00000000
+2e6d69f3
+00000000
+e6bfe71c
+ffffffff
+b83a5e0a
+ffffffff
+feae462d
+ffffffff
+82f24d02
+ffffffff
+b5c58065
+ffffffff
+bbeb74f8
+ffffffff
+36987f0b
+00000000
+0da5f55f
+00000000
+7f822083
+00000000
+d1ce6eb1
+ffffffff
+c7df6acd
+ffffffff
+6ed8eb73
+00000000
+f47825d0
+ffffffff
+38862f85
+00000000
+a480fc4d
+ffffffff
+0e7fed9e
+00000000
+d93b6b80
+ffffffff
+e23596f5
+ffffffff
+05766cd8
+00000000
+b813c04a
+ffffffff
+c4a19e49
+ffffffff
+ac248291
+ffffffff
+550d1c17
+00000000
+f957120f
+ffffffff
+266a5f1a
+00000000
+ebd0c0ad
+ffffffff
+a00e15d7
+ffffffff
+ec542468
+ffffffff
+5b88f1de
+00000000
+b5120e2a
+ffffffff
+0b3074e3
+00000000
+6bea995a
+00000000
+d51a42dd
+ffffffff
+58fe4d01
+00000000
+f706105c
+ffffffff
+ec15006a
+ffffffff
+635c9be2
+00000000
+ea311d81
+ffffffff
+5518bafe
+00000000
+0c837dc8
+00000000
+a3ef34ca
+ffffffff
+2e2de59b
+00000000
+0fad1e4e
+00000000
+93f1ea6e
+ffffffff
+1cdda644
+00000000
+22b92a04
+00000000
+0266f133
+00000000
+eeee6393
+ffffffff
+70f33b9b
+00000000
+9adf5d6d
+ffffffff
+6a29e6f8
+00000000
+e5949f5e
+ffffffff
+c00cdda4
+ffffffff
+7d60d1f7
+00000000
+18c97e36
+00000000
+3eb7886e
+00000000
+b70c1955
+ffffffff
+9596f5f8
+ffffffff
+728441cf
+00000000
+6e0bd737
+00000000
+f50b56ac
+ffffffff
+0baef937
+00000000
+e56df45d
+ffffffff
+bee10f51
+ffffffff
+232622a1
+00000000
+1ed6c949
+00000000
+4ec6f18c
+00000000
+f6484641
+ffffffff
+097488bb
+00000000
+a042d678
+ffffffff
+535c3e71
+00000000
+a3dccd2c
+ffffffff
+b919bdc5
+ffffffff
+9476c675
+ffffffff
+03daebd1
+00000000
+1f784914
+00000000
+e126d70d
+ffffffff
+3e01cc5b
+00000000
+09ad3f7e
+00000000
+10456c15
+00000000
+009394bb
+00000000
+e3356cc4
+ffffffff
+a17f8f8d
+ffffffff
+6113a4fc
+00000000
+de330b53
+ffffffff
+7ecdefb2
+00000000
+c3ada17a
+ffffffff
+dce2415b
+ffffffff
+a14afe08
+ffffffff
+deac909f
+ffffffff
+a56a6478
+ffffffff
+54ee7a4f
+00000000
+97302756
+ffffffff
+4aae8e74
+00000000
+f7c1061a
+ffffffff
+6c3c08d5
+00000000
+826b4be2
+ffffffff
+34d97f74
+00000000
+ff27a40c
+ffffffff
+b6bfe238
+ffffffff
+c0c07fbe
+ffffffff
+e3fff832
+ffffffff
+f373ff1d
+ffffffff
+46ffe227
+00000000
+9fff2059
+ffffffff
+b1bffef8
+ffffffff
+fff87345
+ffffffff
+fffed06b
+ffffffff
+ff5ea2ff
+ffffffff
+23ffffc3
+00000000
+823ffffc
+ffffffff
+dcfffff6
+ffffffff
+dffffeae
+ffffffff
+fffeb7ff
+ffffffff
+f5ffffff
+ffffffff
+ff727fff
+ffffffff
+fffffc47
+ffffffff
+fffffe2f
+ffffffff
+ffffffe6
+ffffffff
+fffc1fff
+ffffffff
+fffff5ff
+ffffffff
+fffffeff
+ffffffff
+ffffffe7
+ffffffff
+fffffff7
+ffffffff
+ffffffff
+ffffffff
+5ae10604
+00000000
+46e4abd8
+00000000
+e812dd49
+ffffffff
+17d8a217
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/ror-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/ror-01.reference_output
new file mode 100644
index 000000000..b63dbc46f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/ror-01.reference_output
@@ -0,0 +1,1052 @@
+ffffffff
+ffffffff
+d5ae1060
+45ba2c7d
+00000000
+00000000
+2af42d39
+d2eeeb1c
+2502307f
+485246bf
+392e6fa3
+d50bd94a
+80e4d23b
+88627494
+cec7313a
+2405b307
+5d003e38
+b1410cba
+0b815ef0
+de81bcad
+83e2ba3a
+bf28804a
+46e4abd8
+fd8bf412
+242d8cef
+063bf2da
+d8d8dd47
+811d9484
+c1f36fae
+8cb7ed4f
+d7704260
+666fafe7
+058160e6
+fdb7038b
+d8bca4df
+a4e23852
+e812dd49
+718e177d
+3d32d01e
+42bea775
+2037e34e
+e91ede43
+00000000
+00000000
+875e9bf5
+e8dec4b7
+17d8a217
+eed7c61c
+87f996d6
+4eab740b
+0d42ea01
+2466b460
+2de4eb20
+4256f18f
+d6308385
+8533dc75
+ab72f99f
+ca355a09
+4e7b7359
+22fed7db
+d96429c9
+b6de8bcf
+c8cdf63e
+b9fbd369
+c06209fb
+324c464b
+644918a7
+70fd0c20
+4f63879f
+755cd0bf
+1f3c1ad7
+a31e74cf
+3bb3e347
+300d9b71
+2bedcfc5
+cb0acb58
+7c496066
+fd5324a4
+a8552f4b
+a46ee1f1
+24507198
+4bff93c1
+6656b0e2
+e3ac0343
+9929dfeb
+75bd36c7
+ff6036ed
+ea894c29
+93c22130
+46b7549d
+a1c1c528
+7e107814
+408b97cd
+57e9f6c2
+aa8dc392
+f3c9fbed
+5c962250
+1078e539
+7c2890b1
+57b0d4c1
+56f646e8
+9812a134
+5710b7ae
+d367d9f1
+3a810bd9
+1f8b62c2
+22feb755
+ab4a4d5c
+fcd220d7
+5cbaf664
+8b082833
+d497855d
+072f6ac9
+97db1001
+0e724556
+d63ef4de
+3b50c99d
+1baf44cf
+d6cbf3ae
+eab762a9
+9b90f7ca
+f66fa51d
+22fccbd2
+97d6aeb5
+735e07da
+53e66763
+b1d37e97
+7a061ba4
+9b21ce0c
+065bc302
+73719a1c
+fe244a3b
+00000000
+00000000
+00000400
+00000000
+00002000
+00000000
+00004000
+00000000
+00068000
+00000000
+0002c000
+00000000
+00000000
+007e0000
+00084000
+00000000
+1dc00000
+00000000
+cb000000
+00000000
+00000000
+8d800000
+00000000
+000adc00
+00000000
+0002b580
+0011ce00
+00000000
+00001aa2
+00000000
+00000000
+00004990
+00000001
+9aaa0000
+00000000
+007ea140
+011d1480
+00000000
+00000026
+e1400000
+c0000000
+00005022
+00001d0f
+5f000000
+000036ea
+41000000
+00000000
+0001d61e
+00000000
+01ba415c
+000002e8
+4d280000
+63851460
+00000000
+00000000
+baa4f320
+30000000
+005c106a
+01185cfc
+40000000
+2358201f
+00000000
+002d4769
+1a000000
+3d800000
+007d5f85
+000011b6
+621f8000
+00002437
+25a3e000
+74398000
+000183a6
+0000f547
+af48f000
+5026cc00
+0000492a
+f58064ec
+000000ad
+d711abb0
+0000000e
+ff3ac116
+00000163
+b8000001
+79fafe7f
+800001f7
+9eec5058
+9fd4b63c
+2200000e
+547b7000
+0042dc43
+ed4764dd
+0cc80000
+0051b0f5
+ab96fc00
+00014a89
+5bcfbbcc
+925c46cb
+d3570000
+3fcc0000
+d72c4fda
+a0000e95
+668a7ce3
+9d5a5279
+52a0009c
+0056400a
+ba39d260
+e7b58f8c
+07a002b8
+56006bfc
+49e1d643
+0033677f
+e7bc2cf4
+84c12d20
+35f86807
+14381e46
+00055569
+29554405
+32e2cc5d
+07dba91d
+83760999
+0382cc71
+0f0f1c6b
+79098a59
+f85e1ea9
+496cdf1a
+1ee5f0b1
+a27b02c7
+bff37f22
+9b9b4d4f
+2faedbe8
+ccefec3a
+02aad38d
+e6f6df90
+547b25cd
+4883a33b
+f020e040
+71474609
+0afa75da
+4b070450
+75dc06d1
+41f4d449
+2c756baf
+e81c047a
+2c0df198
+bfc98f4b
+025294e3
+5ed314a5
+3953359f
+65fc9f84
+0881d4af
+c21c87a8
+d88ad7f9
+22955b00
+c95b19a9
+d1026174
+eafca451
+15d2aaaf
+8cb2555a
+16e57722
+ff6358d0
+607943a0
+0dc3bace
+065975ff
+71ecd49f
+19339205
+90e71e6e
+7c15b0ea
+cd49c3f0
+dbaa9968
+cce6cc78
+3f127a04
+fbcfe84c
+dac9cf5b
+e2fb863a
+62c36020
+36c0f51a
+df61e380
+09de0c46
+43a05a9b
+0a7da4ff
+d7c0eaa5
+d734a730
+b6177473
+a3070115
+ba227348
+3ff26996
+f489915a
+7779039c
+26a8fc91
+17130001
+32920594
+356bffc9
+9c5ce88e
+334abf52
+ee3242f3
+81507b03
+2b406642
+5244d18c
+6e66c818
+6c6e1f99
+d5dbc8ed
+d041741e
+da5b73c6
+9c154ac2
+7ff6d8b8
+59355499
+4f602546
+3900e79e
+294fbb07
+9823ee1c
+5ed54ee0
+193b87d8
+2242a999
+1bf0151a
+f2dd5ff5
+c0a8e9c3
+1f7ff374
+96d5c157
+4aa5f7f3
+109455f0
+1f33b178
+28ebaed8
+6d191f9c
+e53b1fa5
+27cb9ed7
+880fc552
+8f9ae7da
+ad2fd7aa
+06c94e12
+d3e6bb47
+a122e285
+246142b5
+ec84ee13
+c0aeeed8
+402edb7d
+73d0c390
+2e717f72
+2f8bb51d
+b0873217
+7111a040
+4bf62d69
+dd1d6362
+7b28a138
+0683d447
+fc307a08
+dab850e3
+70ddf2a9
+375c803c
+04e908d7
+24836fda
+3018bb6a
+7cc20268
+83cb4bbc
+73911d80
+4eb77f01
+4cf9ca22
+5cbfb976
+496d6ce3
+61f29766
+db5c8a8f
+06958cb8
+005a3bc9
+9a61a5d9
+3fa9ad0d
+7bde2150
+a5b18d1e
+93d95eed
+21774d53
+43be7940
+ad48ab54
+ff8008b0
+bbfbff17
+093d8c46
+20fab4fd
+d65fd342
+55fedccf
+fa245ff0
+8b1ee967
+29dd3bdc
+f7fd9f7f
+81d630e7
+ff8625c0
+40f98291
+917ff9f4
+f9e3ffd5
+5a76adff
+c0ff4ee3
+2e8617ff
+ba5a2fb3
+dfff86aa
+fec78fff
+f17486ce
+3a0b193a
+05fffe46
+ffe303d7
+2ff5bc7f
+0601ffff
+dbf3b34f
+7b0a9615
+ffffd0e6
+29c5bbff
+ffdea6b0
+c050eb19
+79b7ffff
+cb89f25f
+fffff18f
+beefffff
+f9b7aa4f
+fffff59d
+de3310af
+fe05e8c5
+f95fffff
+f8cc1ad0
+691fffff
+1cbfffff
+fb1b53af
+cfffffff
+280088db
+fffffff4
+a18738a1
+807fffff
+fffba596
+bf7fffff
+ffc61b1f
+f85d67e3
+b7ffffff
+cb96c17b
+fffffffe
+ffffe901
+4c5cffff
+fff3e87b
+427fffff
+1edfffff
+fffed986
+fffffffc
+95e13d7f
+ffffffff
+f27b23db
+ffd5a203
+7fffffff
+fffffffd
+03fb9fff
+fffbba2f
+ffffffff
+ee11207f
+ffffffff
+3fffffff
+fffd25f1
+ffffcc58
+0bffffff
+ffffffff
+fff74943
+3fffffff
+ffff7f10
+fffffff1
+4effffff
+ffffffff
+fffed447
+ffffffc9
+127fffff
+ffffffff
+ffdb26ff
+fffffffb
+713fffff
+ffffffff
+ffffcc73
+ffffffff
+ffff215f
+ffffffff
+fff433ff
+bfffffff
+ffffffc2
+ffffffff
+d67fffff
+6dffffff
+ffffffff
+fffffcef
+ffffffff
+ffff67ff
+ffffffff
+ffffffff
+ffffff2f
+ffffffff
+fffbffff
+ffffffff
+ffffbfff
+ffffffff
+fffbffff
+ffffffff
+ffffffff
+4e024f19
+b3167ba0
+4ab0dd4d
+35ade90d
+932d823f
+fae6f67d
+5603fece
+14a990da
+62b34990
+50344acf
+34fdfe58
+5738bd33
+3b846278
+05ec944d
+e2e3fa42
+98bd40c7
+72c3e60e
+906e8034
+10ecd856
+19626d42
+47dd95fc
+222fb428
+9a5932b5
+d93100fc
+8e8b131f
+3c57c9ad
+6727429d
+bd42b608
+5ac51cc8
+6e19ce13
+b2087fc3
+a9d579db
+2b94f0dd
+1d92912d
+51b186f0
+6188472e
+e8f335fb
+08c84050
+83ada552
+65e7b8aa
+d23322cb
+9cf696af
+4966d0d9
+7166bbdb
+4354f09a
+6ebe2396
+15544f25
+ceb842cd
+2e3fd816
+fbf3d1a1
+648f27c1
+a575854a
+f6a3e68c
+c81f272a
+83806768
+e0a7bc40
+636f5423
+fcd3c3c7
+50fba137
+36ef8b48
+38aeff2a
+c7e050c7
+b960d76d
+53996658
+6622d224
+8a8dca56
+bf423647
+83d234bd
+0ec6b671
+b61fecb6
+b2fa2f0a
+fd05d54c
+e2e5be56
+b66ec959
+c5f86653
+4cd79fe0
+1e558ade
+aa48a410
+edfa6889
+d663c8ce
+4ed47cdb
+77e1f6d3
+a699b94b
+4fbfb2ea
+c6879cc7
+e040cf51
+c199c2ab
+cbef1fe6
+f53fb980
+91fbe913
+55cd4588
+5dd5910f
+9bc2f601
+220cc0fb
+f35a6be1
+fcdec4aa
+4acd84c0
+d5db0a98
+1b40f6c5
+28026df8
+ea93b6fc
+a71067be
+342b1516
+7cd62efa
+dee2c683
+b2697722
+cfd47fed
+e8ececd1
+54f90fc6
+eb92615f
+368b1a91
+2ab10a0e
+eed73ff9
+2dcd992b
+b065b170
+8a30352b
+fa1e4250
+b0feedb4
+062feec1
+e68bb45d
+55189fad
+e48579d7
+ba111f5f
+b1d849e2
+1a8ca4d1
+28867382
+b3dd3c24
+3a37f2dc
+caa0a141
+9064dbd9
+ef3ed101
+ee777a84
+03013096
+1eeac386
+167e61cb
+23388907
+30216749
+950bbc6d
+49783421
+ada812d8
+c831508b
+71ceb019
+546fff85
+6537140b
+0ba66e01
+76700aaa
+1a92a9e1
+7188029d
+624aa173
+5005a629
+2fc70600
+4c1fbbea
+34800567
+b2e67b75
+1b8c7b09
+92abe400
+19a401c3
+18542400
+b774d78e
+fa000567
+e220a440
+f6e8000d
+c0001e36
+4c223696
+00676692
+a3832900
+008e7568
+47329800
+001fa08b
+cce7ce00
+07eec07a
+9d800003
+3c14a100
+000371fb
+0be9e630
+1bfc0000
+0000012b
+a82cb2ce
+a236eba2
+0000000a
+12920ba9
+d8400000
+0e43383b
+60000005
+bfbd7d15
+00000015
+00723de3
+aa480000
+0031d3c1
+75e00000
+001258f4
+a1f80000
+5dd46910
+0000000b
+17a1081f
+80000000
+0000000b
+7d50b280
+d4000000
+0075026f
+91dd3d00
+00000018
+000bf867
+0e000000
+0000e23d
+6b000000
+0000000a
+3767d000
+00000001
+1e7a6100
+3f600000
+00000c79
+02000000
+00001cd8
+06a00000
+00000341
+00350766
+00000000
+00000000
+0026687c
+015e0000
+0000000e
+78b28000
+00000001
+0000b79f
+80000000
+00000000
+00b80f00
+00000009
+b5400000
+08908000
+00000000
+000006aa
+c0000000
+00000000
+0000a120
+00000000
+0cb60000
+f4000000
+0000000f
+64400000
+00000000
+01540000
+00000000
+00000001
+e4000000
+00000026
+00000000
+00000000
+02800000
+00000000
+000f0000
+0000001c
+00000000
+00000000
+00004000
+00004000
+00000000
+00000000
+00000000
+aa01e126
+2bb9daa6
+c054a3b0
+d6476c43
+274ba547
+57632b11
+05943cc3
+49a2f7f3
+f32e661d
+4c262d69
+773779c7
+39afdf71
+782ae0db
+01fddce9
+d6d64ee4
+62dfebbe
+4dee412d
+a70282f2
+160196c1
+264446b7
+74f8bbc9
+763989eb
+4042cda6
+1f863269
+ac79fc27
+0da5f55f
+27dcca3e
+08820dea
+097d7af4
+739bac73
+9a122fda
+b371f1b1
+b736ecaa
+73053d8e
+9ee97378
+25d0f427
+c04c38be
+14e205ba
+38e40501
+203f1368
+7fe76b4a
+3ddd9e0e
+364e8eca
+e6d85ae0
+675e2359
+6dacf671
+66e246e0
+9ccd8057
+9512ae04
+f05b4513
+c4a1ce80
+f7b19e49
+9897d9fc
+51ac2482
+1c75f32b
+5017550d
+f9572398
+53f9120f
+490597c6
+899a846b
+c799b02b
+7af44a01
+ede80385
+754b1971
+15091a38
+8a0db3fb
+3c7796fd
+54bcb2e2
+ad44eb56
+428f838a
+70b3074e
+01fd7947
+ad195a6b
+ea99875b
+b775419c
+c31e2690
+34056393
+114f99f9
+8386cc18
+4173dcb7
+17606aec
+150132a7
+711e6f89
+8d72931b
+311d81ec
+313bc1fa
+afe552c6
+0d01998b
+aa919eef
+80c837dc
+32a8fcdc
+d5568bcd
+6721b3e6
+56cb8b79
+0fad3c2c
+0e921e4e
+a9ba4f64
+c9a08bc7
+10736d75
+dd46f699
+07d2a810
+8ae5c1e0
+3da6c2b9
+b0266f13
+4535bc0b
+efbbb98e
+0db70f33
+b84f9b64
+7d9adf5d
+60af2ee9
+01a8a79b
+e54bb814
+96527d7b
+cd49ab95
+30035211
+57b33769
+6586a60d
+1f77d5d5
+63253555
+9ac7f8d8
+6e3eb9c1
+f741f788
+306556cb
+20553b7c
+96f5f891
+694bd335
+28441cf7
+753b1363
+b82f5cdd
+decee20d
+42d5ab39
+89cb8e05
+d760a93a
+42ebbe4d
+9157bee5
+6df45ded
+843d320f
+897d46fb
+a848cf8e
+65767988
+4fab2993
+a91ed6c9
+4ec6f18c
+fc6f9f6b
+11d38348
+4641f6fe
+fe1b3ac0
+25d222ed
+42d678af
+fbe66b10
+f9c54dff
+a3e75570
+337ff5bc
+664b28f7
+e5f8f716
+e467ffed
+ffd1ea7d
+1db19d67
+40f6baf4
+7ffe88b0
+f507de12
+47fff59d
+b75570de
+126ffffc
+e62c5b3e
+01cffffa
+b4fdf83f
+fff8ea46
+110456c1
+7ffff907
+ec025fff
+feb2ae52
+e3356cc4
+fffff9e2
+ffe23fe3
+e3685fff
+96fc6113
+a4fffffe
+fff9fcc2
+d4f78fff
+ecdefb27
+fffffe93
+fe285eb0
+eb6fffff
+17ffffff
+a5bdce24
+08a14fff
+ffff1afe
+7ab2427f
+fffffff7
+ffffda64
+78a56fff
+fffffae7
+a4f54fff
+302fffff
+fff75697
+ffffffff
+2aba39d1
+febdf041
+87ffffff
+355b0fff
+ffffff02
+fff8a09a
+d2ffffff
+365fffff
+ffffdd0d
+f27a40cf
+ffffffff
+38b6bfff
+ffffffe2
+0301ffff
+fffffefb
+fffffff8
+32e3ffff
+df373fff
+fffffff1
+e22746ff
+ffffffff
+ffffffff
+ff20599f
+ffffffff
+ef8b1bff
+fffe1cd1
+7fffffff
+fffed06b
+ffffffff
+ffffff5e
+a2ffffff
+ffffffff
+ff0c8fff
+ffffffff
+fc823fff
+ffdb73ff
+ffffffff
+ffffabb7
+ffffffff
+7fffffff
+ffffffeb
+ff5fffff
+ffffffff
+ffffffff
+fdc9ffff
+7fffffff
+ffffffc4
+ffffffe2
+ffffffff
+ffffff9b
+ffffffff
+ffffffff
+ff07ffff
+f5ffffff
+ffffffff
+efffffff
+ffffffff
+ffffffff
+9fffffff
+ffffffff
+dfffffff
+ffffffff
+ffffffff
+5ae10604
+5ba2c7dd
+c38671b6
+6f061d6d
+3d32d01e
+42bea775
+874434d3
+d2039372
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rori-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rori-01.reference_output
new file mode 100644
index 000000000..a5072a9c1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rori-01.reference_output
@@ -0,0 +1,580 @@
+ffffffff
+ffffffff
+00000000
+00000000
+e9173332
+12af8f73
+1e1007e8
+bf65cc38
+e216dc58
+f45328fa
+6a56ae61
+7c67895e
+5abadf6f
+42825412
+9b077dc6
+2a2fb226
+00000000
+00000000
+20000000
+00000000
+00000000
+0000c000
+00000000
+60000000
+f0000000
+00000000
+00000000
+00000003
+00000044
+00000000
+00000000
+01f00000
+00000000
+00000350
+0000006f
+80000000
+00027600
+00000000
+00000000
+f1000000
+c8800000
+00000000
+02490000
+00000000
+005fc200
+00000000
+c0000000
+00001822
+000358c4
+00000000
+2f650000
+00000000
+00000000
+4ab42000
+001160cc
+00000000
+00000000
+b93df000
+8adb8000
+00000008
+00038603
+90000000
+5bf00000
+000006ae
+00000005
+21c11800
+0b9be488
+00000000
+0001cb57
+4e800000
+80000000
+03c8492e
+12dd7d8a
+00000000
+0d94a779
+00000000
+35ff31c0
+00000000
+4ad00000
+000459c7
+c86eeec0
+00000002
+00000271
+bfff7200
+c8000000
+1042fff7
+000000c1
+cd196e40
+40ac8040
+000003d7
+00108137
+a60e0000
+c603d000
+0003dac7
+00007add
+bad0b300
+0002a96c
+e5c0e400
+073dead8
+aa400000
+8c069000
+002de8a8
+000014f7
+a0d7bdb0
+fb00000d
+d8ab0bce
+400007d1
+d9a21930
+1e554100
+002fc18e
+29e7e800
+01f527cf
+48a1c0f2
+30000aab
+2a4b9ae5
+c000512f
+f25bc8d1
+00012790
+a880025c
+598ba52a
+a51cd1d4
+d2b5000f
+4c3405d0
+01d78730
+57394d80
+800a6697
+401d8266
+04c66778
+66388787
+8e358041
+a8f56531
+4b3f201e
+eb8053b7
+24fd306d
+663c772c
+58380369
+a2d78e58
+65570e86
+5009ba09
+6cdf188c
+e4544fa3
+fdfd223f
+248174e7
+61b339ff
+6df44dcd
+a6a797d7
+27c3726f
+2bf8620b
+2c7e01a1
+106b4676
+4ebc734d
+b4b62c6d
+0111b66f
+c1bc0050
+7a3e1aee
+1e78394f
+aa6d71b0
+c784a098
+8c363f7e
+9cddc811
+988c7299
+9610af0c
+6becb96c
+182ebdd2
+bb09c161
+626ce859
+7c7a4053
+175342f5
+4cf9bd26
+401b225e
+8bbb0b94
+b60c943f
+b30c3dc9
+08c0acfd
+e3b7e4ed
+9c8e8ff5
+92bc27a7
+de83047f
+a391b604
+c85ff805
+d4beb1bf
+fcc7eb77
+d91ef28e
+467dffea
+7b22fff7
+f1e7f862
+ffd475b5
+b6805da7
+fda04bff
+fd5a2038
+fffde12a
+faefc0ed
+7df40f7f
+ffa26cc4
+fda1d651
+387c67ff
+fffeee8d
+ca40c7ff
+a527ffff
+17b8b123
+ffee1120
+4d1f11ff
+6119ffff
+f6ddc74e
+f10b9735
+fffff9cd
+9160a9ff
+ffff264c
+9a6c802e
+ffffff4b
+fff2a824
+81cb3fff
+293fffff
+fb3a8d61
+febfffff
+fcf01bc9
+e20e3d95
+ffffffef
+e29d545b
+7fffffff
+a2a6dfff
+ffffdbb6
+ffff6929
+4e7affff
+fffc28cb
+594fffff
+69da8a2d
+ffffffff
+27003fff
+fffff40f
+ffffffb2
+b8af97ff
+fffffffe
+4892dfdf
+ffffffff
+fef0a5fe
+fffffc02
+3bbcffff
+ffffffed
+c5ae0fff
+00ffffff
+ffff5dcf
+5569ffff
+ffffff3c
+f6a34fff
+fffffffd
+07ffffff
+ffffe3a7
+f3603dff
+ffffffff
+ffffffd7
+c047ffff
+fff96f6d
+ffffffff
+f969bbff
+ffffffff
+ffffffad
+44ffffff
+ffffffff
+ffffb964
+e8e9ffff
+ffffffff
+ffffffff
+fffea0af
+fffffeba
+5fffffff
+ffffff97
+7fffffff
+cdffffff
+fffffffe
+237fffff
+ffffffff
+fffffee5
+ffffffff
+eeffffff
+ffffffff
+ffffffff
+ffffd0ff
+ffffffff
+93ffffff
+ffffffff
+e9ffffff
+ffffffff
+ffffffe3
+ffffffff
+fffffe7f
+ffffffff
+ffffdfff
+ffffffff
+ffffffff
+7e46b2e3
+649e6c7a
+d4ec05a3
+def7e905
+210e4338
+3b47f855
+0043e3ef
+511b4190
+fab60773
+7a8e81a0
+4ea17b38
+097d6c01
+b869135c
+fa285a0d
+8e55d12c
+7a50fe14
+072621bd
+aeea3485
+103f0f59
+5a4ecf42
+19e80319
+1bea8594
+13335f24
+f7406114
+ab3875cc
+0401e18b
+c39a019e
+0d3fd7ee
+8253cade
+a5755880
+6c6c8b9b
+338ec009
+00eeaa0b
+d11cea60
+aa006ad3
+2341263d
+2e828bbb
+a940aa00
+8cfeea8a
+bf4f0007
+048c7d40
+002eccd1
+c9ffc240
+00cb01d7
+ce1c0003
+79ce07f0
+00013716
+6adf17a4
+8a425947
+ee20000a
+ecfa0000
+18486a46
+72800007
+76009ce1
+00000411
+1b4b8f0e
+011102b1
+e4fd8000
+3d5feef1
+6ea00000
+46bcc000
+0041cd7c
+3fdda78e
+0000002b
+28000001
+d9144522
+fd74106a
+0000002d
+9bbe0000
+000080ee
+58470000
+000535a9
+0004fc3b
+66fb0000
+00000272
+8a6fd000
+000001ae
+9ca08c00
+00000330
+26687c00
+59be5600
+00000008
+0002274e
+a1900000
+0000241d
+e2ca0000
+454f2000
+000000d2
+dc000000
+000c7d37
+00000000
+00d31f34
+00000000
+bbb98800
+45824000
+00000034
+0001a02f
+80000000
+00294b16
+00000000
+0004a346
+c0000000
+90000000
+000044d0
+0000002e
+92d80000
+30000000
+00003a2c
+fd000000
+00000102
+00000029
+acc00000
+00000000
+00000a47
+00000008
+8a800000
+08000000
+0000008b
+00000000
+0006dc80
+60800000
+00000002
+00000072
+00000000
+00000000
+0001d400
+00000000
+a7000000
+00000000
+00079000
+000b0000
+00000000
+00000000
+e8000000
+30000000
+00000000
+00000000
+00000c00
+00000030
+00000000
+00000000
+00000100
+00000000
+00000000
+c7c6d0a3
+52c006ff
+673976ad
+220146a3
+4a53b9f8
+c2274662
+46413fc4
+8550136f
+a104e66e
+380a1764
+51545022
+8382f61b
+10d836f1
+5fc11426
+9f9e613c
+d9deac90
+0c06ed8b
+c2af3282
+77dfc2f2
+7a8c8439
+74f49ea9
+2beef078
+2623f478
+2471a0e3
+524901f2
+d2e60247
+557473a3
+f0833873
+ba90bb7f
+b5dd7149
+f4619e4b
+249fe03b
+0a7046ab
+61ff912f
+d43db43f
+ffca96c9
+09ad2fff
+5a5a48ca
+a63fa4ff
+f1a2adb3
+279855b3
+ffe0c1ba
+476fffda
+6ca22c13
+d2067fff
+c0769593
+4047bad7
+fffceb4c
+0a4bd153
+ffff21e9
+fffff5b9
+af1fe178
+ffff9fda
+b183815f
+c7fb0301
+ffffe250
+ffb5472b
+3cb0cfff
+7ffffec6
+9f0e4291
+dcfffffe
+8f54e77c
+245bda9b
+cffffff8
+6f4930c9
+ffffff85
+33ffffff
+ee62ecba
+3857e49f
+ffffff2e
+ffffdaa4
+45957fff
+ffffcba5
+5851cfff
+bfffffff
+375a3c80
+fffff892
+f52087ff
+ffffffff
+e7dafccc
+38e7efff
+ffffffdc
+38235dff
+ffffffa5
+ffffffe1
+09799aff
+ffff4e80
+b13fffff
+ffffff36
+fd4c5fff
+ec71ffff
+fffff8a3
+ffffa498
+f3ffffff
+ffff90b4
+11ffffff
+fff86143
+8fffffff
+8c9d0fff
+fffffffd
+fffffffe
+4d576fff
+33ffffff
+fffff8c6
+fffffbb9
+98ffffff
+fe12b0ff
+ffffffff
+ffffffff
+fffbaad7
+47ffffff
+fffffc19
+ffffffff
+ff90e4ff
+ffffca23
+ffffffff
+e2a0ffff
+ffffffff
+ffffffff
+ffffcb33
+ffffffff
+fd5a7fff
+bbffffff
+fffffff3
+7fffffff
+ffffff02
+ff2affff
+ffffffff
+ffffffff
+ffceffff
+ff1fffff
+ffffffff
+ffffffff
+ffffffc9
+ffffffcb
+ffffffff
+ffffffff
+ffff8fff
+fffffff7
+ffffffff
+ffffffff
+7fffffff
+61250888
+cadb5bec
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/roriw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/roriw-01.reference_output
new file mode 100644
index 000000000..5b6a95ecc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/roriw-01.reference_output
@@ -0,0 +1,572 @@
+ffffffff
+ffffffff
+12af8f73
+00000000
+bf6507e8
+ffffffff
+f4532858
+ffffffff
+89517c67
+ffffffff
+54124282
+00000000
+8bdf718a
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000010
+00000000
+20000000
+00000000
+00000004
+00000000
+00020000
+00000000
+000001c0
+00000000
+01e80000
+00000000
+00000066
+00000000
+00000072
+00000000
+00005480
+00000000
+00d20000
+00000000
+6000007b
+00000000
+bec00003
+ffffffff
+82000009
+ffffffff
+02a82000
+00000000
+0f3f4000
+00000000
+0003c8c0
+00000000
+0035cb80
+00000000
+01e46880
+00000000
+55440009
+00000000
+400134ad
+00000000
+03405d00
+00000000
+06536020
+00000000
+de100199
+ffffffff
+b000f1c6
+ffffffff
+e4062967
+ffffffff
+6deb8130
+00000000
+706e58b0
+00000000
+874032ab
+ffffffff
+8a013741
+ffffffff
+f22a27d3
+ffffffff
+4902e9ce
+00000000
+f5db7de5
+ffffffff
+963f00d0
+ffffffff
+d8cd36d2
+ffffffff
+00111b65
+00000000
+781aee1e
+00000000
+a098c784
+ffffffff
+8c363f7f
+ffffffff
+846394cc
+ffffffff
+0b2e5b06
+00000000
+859bb6ce
+ffffffff
+bd5f1cd0
+ffffffff
+f267cdf2
+ffffffff
+943eb60c
+ffffffff
+567e8460
+00000000
+a3fb6723
+ffffffff
+08ffbd06
+00000000
+7fd81321
+00000000
+d2fac6ff
+ffffffff
+bff9c8cf
+ffffffff
+9ec8bffc
+ffffffff
+b4fff80b
+ffffffff
+f6812fff
+ffffffff
+76ffffe0
+00000000
+fe81efff
+ffffffff
+3fffe3e3
+00000000
+7fffe40c
+00000000
+a527ffff
+ffffffff
+7fffffc4
+00000000
+c467ffff
+ffffffff
+fff9afff
+ffffffff
+fe54ffff
+ffffffff
+fff2efff
+ffffffff
+fffffacf
+ffffffff
+e4ffffff
+ffffffff
+f5ffffff
+ffffffff
+fffd7fff
+ffffffff
+ffffbfff
+ffffffff
+ffbfffff
+ffffffff
+fffffeff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+bdefcb47
+ffffffff
+0769c867
+00000000
+5043e3ef
+00000000
+bd5b03b9
+ffffffff
+4ea17b38
+00000000
+b869135c
+ffffffff
+87e963d2
+ffffffff
+839310de
+ffffffff
+84207e1e
+ffffffff
+85941bea
+ffffffff
+a1af927b
+ffffffff
+870eb980
+ffffffff
+dd8734af
+ffffffff
+ab1bd4ae
+ffffffff
+3b2e6cce
+00000000
+ea61d11c
+ffffffff
+63dab412
+00000000
+0abbba94
+00000000
+9ed5157e
+ffffffff
+82463ea0
+ffffffff
+f93ff84a
+ffffffff
+f0ce1c07
+ffffffff
+17a46adf
+00000000
+889651fb
+ffffffff
+8dd9f4d4
+ffffffff
+9c2e5013
+ffffffff
+1e1c3697
+00000000
+fb0563c9
+ffffffff
+abfbbc5b
+ffffffff
+f88d799a
+ffffffff
+7fbb4f1c
+00000000
+291148a2
+00000000
+fd74106a
+ffffffff
+74ddf007
+00000000
+52b08e6b
+00000000
+fbfc3b66
+ffffffff
+fd0728a6
+ffffffff
+08cae9ca
+00000000
+43f98133
+00000000
+166f9582
+00000000
+6489d3a8
+00000000
+ca241de2
+ffffffff
+49153c83
+00000000
+d37dc0c7
+ffffffff
+3e6801a6
+00000000
+31001777
+00000000
+688b0480
+00000000
+000d017c
+00000000
+00294b16
+00000000
+8009468d
+ffffffff
+26848002
+00000000
+6c001749
+00000000
+e8b0c000
+ffffffff
+102fd000
+00000000
+98000535
+ffffffff
+291c0000
+00000000
+50000111
+00000000
+04584000
+00000000
+db900000
+ffffffff
+004c1000
+00000000
+000001c8
+00000000
+1d400000
+00000000
+7000000a
+00000000
+1e400000
+00000000
+00001600
+00000000
+40000007
+00000000
+00018000
+00000000
+00c00000
+00000000
+0000000c
+00000000
+00100000
+00000000
+00000000
+00000000
+cc51a8d9
+ffffffff
+529dc312
+00000000
+8c827f9e
+ffffffff
+50827332
+00000000
+51545023
+00000000
+10d836f0
+00000000
+9213fbd5
+ffffffff
+bcb62f0a
+ffffffff
+2efbf85f
+00000000
+e0f057dd
+ffffffff
+64c47e8c
+00000000
+75249004
+00000000
+aaba39d1
+ffffffff
+37521769
+00000000
+206792c9
+00000000
+17046ab6
+00000000
+d43db43f
+ffffffff
+504d6946
+00000000
+3a63fa4b
+00000000
+13cc2ad9
+00000000
+04d1d88b
+00000000
+4f4819d6
+00000000
+2023dd6a
+00000000
+0a4bd153
+00000000
+c2f1de3f
+ffffffff
+c0af58c1
+ffffffff
+c7fb0300
+ffffffff
+c31cacf2
+ffffffff
+85223e1c
+ffffffff
+77cdc54e
+00000000
+62ded4de
+00000000
+6f4930c9
+00000000
+97467c5d
+ffffffff
+1c2bf24f
+00000000
+abf5222c
+ffffffff
+8e5d2ac2
+ffffffff
+79016eb4
+00000000
+042497a9
+00000000
+f3339f6b
+ffffffff
+871cfdfb
+ffffffff
+538235da
+00000000
+99ae1097
+ffffffff
+4fd3a02c
+00000000
+317cdbf5
+00000000
+a3ec71f8
+ffffffff
+7ff4931e
+00000000
+3ff21682
+00000000
+3fe1850e
+00000000
+f632743f
+ffffffff
+5dbff935
+00000000
+18c67fff
+00000000
+8fffbb99
+ffffffff
+ffc2561f
+ffffffff
+d56bfffd
+ffffffff
+e0ca3fff
+ffffffff
+0e4ffff9
+00000000
+ffffca23
+ffffffff
+ffe2a0ff
+ffffffff
+e599ffff
+ffffffff
+b4fffffa
+ffffffff
+ff9ddfff
+ffffffff
+fe04ffff
+ffffffff
+ffff2aff
+ffffffff
+9dffffff
+ffffffff
+ffff8fff
+ffffffff
+ffc9ffff
+ffffffff
+ffffffe5
+ffffffff
+fe3fffff
+ffffffff
+fffffffb
+ffffffff
+fffffffe
+ffffffff
+00000000
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rorw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rorw-01.reference_output
new file mode 100644
index 000000000..ddace7061
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/rorw-01.reference_output
@@ -0,0 +1,1052 @@
+ffffffff
+ffffffff
+45ae1060
+00000000
+c38671b6
+ffffffff
+2af42d39
+00000000
+2502307f
+00000000
+392e6fa3
+00000000
+80e4d23b
+ffffffff
+cec7313a
+ffffffff
+5d003e38
+00000000
+0b815ef0
+00000000
+83e2ba3a
+ffffffff
+46e4abd8
+00000000
+242d8cef
+00000000
+d8d8dd47
+ffffffff
+c1f36fae
+ffffffff
+d7704260
+ffffffff
+00000000
+00000000
+d8bca4df
+ffffffff
+e812dd49
+ffffffff
+3d32d01e
+00000000
+2037e34e
+00000000
+874434d3
+ffffffff
+875e9bf5
+ffffffff
+17d8a217
+00000000
+87f996d6
+ffffffff
+0d42ea01
+00000000
+2de4eb20
+00000000
+00000000
+00000000
+ab72f99f
+ffffffff
+4e7b7359
+00000000
+d96429c9
+ffffffff
+c8cdf63e
+ffffffff
+c06209fb
+ffffffff
+644918a7
+00000000
+4f63879f
+00000000
+1f3c1ad7
+00000000
+3bb3e347
+00000000
+2bedcfc5
+00000000
+7c496066
+00000000
+a8552f4b
+ffffffff
+24507198
+00000000
+6656b0e2
+00000000
+9929dfeb
+ffffffff
+ff6036ed
+ffffffff
+93c22130
+ffffffff
+a1c1c528
+ffffffff
+408b97cd
+00000000
+aa8dc392
+ffffffff
+5c962250
+00000000
+7c2890b1
+00000000
+56f646e8
+00000000
+5710b7ae
+00000000
+3a810bd9
+00000000
+22feb755
+00000000
+fcd220d7
+ffffffff
+8b082833
+ffffffff
+072f6ac9
+00000000
+0e724556
+00000000
+3b50c99d
+00000000
+d6cbf3ae
+ffffffff
+f66fa51d
+ffffffff
+22fcaeb5
+00000000
+735e0763
+00000000
+b1d37e94
+ffffffff
+065bc300
+00000000
+73744a3b
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00008000
+00000000
+00006000
+00000000
+00018000
+00000000
+0000f000
+00000000
+00004c00
+00000000
+000000ec
+00000000
+000003b0
+00000000
+00000116
+00000000
+b800000f
+ffffffff
+80000058
+ffffffff
+2200000c
+00000000
+007b7000
+00000000
+0cc80000
+00000000
+0096fc00
+00000000
+0001bbcc
+00000000
+d3570000
+ffffffff
+3fcc0002
+00000000
+a0007ce3
+ffffffff
+52a00079
+00000000
+0039d260
+00000000
+07a0038c
+00000000
+56005643
+00000000
+01bc2cf4
+00000000
+35f86800
+00000000
+00381e46
+00000000
+2955440d
+00000000
+03760999
+00000000
+0f0f1c6b
+00000000
+791e1ea9
+00000000
+496cdf1a
+00000000
+bff302c7
+ffffffff
+2faedbef
+00000000
+c2aad38d
+ffffffff
+e47b25cd
+ffffffff
+f023a33b
+ffffffff
+70fa75da
+00000000
+75dd0450
+00000000
+2c756baf
+00000000
+e81c047a
+ffffffff
+bfc98f4b
+ffffffff
+5ed314a5
+00000000
+65fc9f85
+00000000
+c21c87a9
+ffffffff
+22955b01
+00000000
+d1026175
+ffffffff
+15d2aaae
+00000000
+16e57722
+00000000
+607943a0
+00000000
+065975ff
+00000000
+19339204
+00000000
+7c15b0ea
+00000000
+dbaa9968
+ffffffff
+3f127a04
+00000000
+dac9cf5a
+ffffffff
+62c36020
+00000000
+df61e380
+ffffffff
+43a05a9b
+00000000
+d7c0eaa4
+ffffffff
+b6177473
+ffffffff
+ba227348
+ffffffff
+f489915a
+ffffffff
+26a8fc91
+00000000
+32920595
+00000000
+9c5ce88e
+ffffffff
+ee3242f3
+ffffffff
+2b406642
+00000000
+6e66c819
+00000000
+d5dbc8ec
+ffffffff
+da5b73c6
+ffffffff
+7ff6d8b9
+00000000
+4f602546
+00000000
+294fbb06
+00000000
+5ed54ee0
+00000000
+2242a998
+00000000
+f2dd5ff5
+ffffffff
+1f7ff375
+00000000
+4aa5f7f2
+00000000
+1f33b178
+00000000
+6d191f9d
+00000000
+27cb9ed6
+00000000
+8f9ae7da
+ffffffff
+06c94e13
+00000000
+a122e285
+ffffffff
+ec84ee12
+ffffffff
+402edb7c
+00000000
+2e717f73
+00000000
+b0873216
+ffffffff
+4bf62d68
+00000000
+7b28a139
+00000000
+fc307a09
+ffffffff
+70ddf2a8
+00000000
+04e908d6
+00000000
+3018bb6a
+00000000
+83cb4bbc
+ffffffff
+4eb77f00
+00000000
+5cbfb977
+00000000
+61f29767
+00000000
+06958cb8
+00000000
+9ba9ad0d
+ffffffff
+7bd98d1e
+00000000
+a1774d53
+ffffffff
+43be7b54
+00000000
+fbfbff17
+ffffffff
+20fab4fe
+00000000
+d65fdccf
+ffffffff
+fb1ee967
+ffffffff
+f7fd3bdc
+ffffffff
+ffd630e7
+ffffffff
+917ff291
+ffffffff
+f9e3ffff
+ffffffff
+ee8617ff
+ffffffff
+dfffafb3
+ffffffff
+fec78fff
+ffffffff
+05ffff3a
+00000000
+fff5bc7f
+ffffffff
+8601ffff
+ffffffff
+ffffd615
+ffffffff
+ffc5bbff
+ffffffff
+f9b7ffff
+ffffffff
+fffff25f
+ffffffff
+feefffff
+ffffffff
+fffff0af
+ffffffff
+f95fffff
+ffffffff
+f91fffff
+ffffffff
+fcbfffff
+ffffffff
+cfffffff
+ffffffff
+fffffff1
+ffffffff
+fe7fffff
+ffffffff
+ff7fffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+b3167b99
+ffffffff
+35a8dd4d
+00000000
+fae6f67d
+ffffffff
+5603fcda
+00000000
+50344990
+00000000
+3738bd33
+00000000
+3b84624d
+00000000
+9ae3fa42
+ffffffff
+726e8034
+00000000
+19626d46
+00000000
+47dd95e8
+00000000
+d93132b5
+ffffffff
+3c57c31f
+00000000
+bd42829d
+ffffffff
+5ac51cc8
+00000000
+a9d579db
+ffffffff
+2b94f0dd
+00000000
+6188472c
+00000000
+e8f33450
+ffffffff
+85e7b8aa
+ffffffff
+dcf696af
+ffffffff
+4966d3db
+00000000
+42be2396
+00000000
+ceb44f25
+ffffffff
+7bf3d1a1
+00000000
+a48f27c1
+ffffffff
+f6a3e68a
+ffffffff
+e0a7bd68
+ffffffff
+fcd35423
+ffffffff
+50fb8b48
+00000000
+c7e050c2
+ffffffff
+b960d658
+ffffffff
+8a22d224
+ffffffff
+83d234bf
+ffffffff
+0edfecb6
+00000000
+fdfa2f0a
+ffffffff
+b66ec956
+ffffffff
+c5f79fe0
+ffffffff
+1e558410
+00000000
+edfa68ce
+ffffffff
+77e07cdb
+00000000
+a6bfb2ea
+ffffffff
+e040cf47
+ffffffff
+cbef1fe7
+ffffffff
+f53fb980
+ffffffff
+5dd58588
+00000000
+3bc2f601
+00000000
+fcde6be1
+ffffffff
+4acd8a98
+00000000
+1b40edf8
+00000000
+a71067bc
+ffffffff
+7cd62e16
+00000000
+b2697723
+ffffffff
+e8ecefed
+ffffffff
+eb9263c6
+ffffffff
+2ab31a91
+00000000
+eed5992b
+ffffffff
+b065b170
+ffffffff
+fa1e6db4
+ffffffff
+e68bb45d
+ffffffff
+e4809fad
+ffffffff
+ba111f5f
+ffffffff
+3a8ca4d1
+00000000
+33dd3c24
+00000000
+caa0a141
+ffffffff
+ef3eda84
+ffffffff
+1eeac386
+00000000
+23388907
+00000000
+950bbf49
+ffffffff
+497836d8
+00000000
+71ceb08b
+00000000
+65371785
+00000000
+76766e01
+00000000
+718aa9e1
+00000000
+524aa173
+00000000
+2fc707ea
+00000000
+34a67b75
+00000000
+92abe509
+ffffffff
+185425c3
+00000000
+fb74d78e
+ffffffff
+f6e8a440
+ffffffff
+cc223696
+ffffffff
+a3832992
+ffffffff
+47329968
+00000000
+cce7ce8b
+ffffffff
+9daec07a
+ffffffff
+3c14a17b
+00000000
+1bfde630
+00000000
+a82cb2ce
+ffffffff
+0236eba2
+00000000
+d8520ba9
+ffffffff
+6e43383b
+00000000
+bfbd7d15
+ffffffff
+aa4a3de3
+ffffffff
+75e1d3c1
+00000000
+a1fa58f4
+ffffffff
+5dd46913
+00000000
+97a1081f
+ffffffff
+7d50b28b
+00000000
+d475026f
+ffffffff
+91dd3d18
+ffffffff
+0e0bf867
+00000000
+6b00e23d
+00000000
+3767d00a
+00000000
+1e7a6101
+00000000
+3f600c79
+00000000
+02001cd8
+00000000
+06a00341
+00000000
+00350766
+00000000
+0026687c
+00000000
+015e000e
+00000000
+78b28001
+00000000
+8000b79f
+ffffffff
+00b80f00
+00000000
+b5400009
+ffffffff
+08908000
+00000000
+c00006aa
+ffffffff
+0000a120
+00000000
+0cb60000
+00000000
+f400000f
+ffffffff
+64400000
+00000000
+01540000
+00000000
+e4000001
+ffffffff
+00000026
+00000000
+02800000
+00000000
+000f0000
+00000000
+0000001c
+00000000
+00004000
+00000000
+00004000
+00000000
+00000000
+00000000
+aa01e126
+ffffffff
+d6476c40
+ffffffff
+274b2b11
+00000000
+49a2f4c3
+00000000
+f32e6d69
+ffffffff
+39aff9c7
+00000000
+782ae0e9
+00000000
+62dfeae4
+00000000
+4d0282f2
+00000000
+160196d7
+00000000
+74f8bbeb
+00000000
+1fc2cda6
+00000000
+0da5f55f
+00000000
+08820dfe
+00000000
+739bac74
+00000000
+b371f7da
+ffffffff
+b736ed8e
+ffffffff
+25d0f478
+00000000
+14e218be
+00000000
+203f1369
+00000000
+7fed9e0e
+00000000
+364edae0
+00000000
+6f5e2359
+00000000
+66cd8057
+00000000
+f012ae04
+ffffffff
+c4a19e49
+ffffffff
+91ac2482
+ffffffff
+1c17550d
+00000000
+f957120f
+ffffffff
+899a97c6
+ffffffff
+7af4302b
+00000000
+75e80385
+00000000
+15091a3b
+00000000
+3c7796e2
+00000000
+ad44838a
+ffffffff
+30b3074e
+00000000
+ea995a6b
+ffffffff
+b7754690
+ffffffff
+340563f9
+00000000
+4173dc18
+00000000
+15006aec
+00000000
+8d726f89
+ffffffff
+311d81ea
+00000000
+afe5518b
+ffffffff
+80c837dc
+ffffffff
+32a8fbcd
+00000000
+66cb8b79
+00000000
+0fad1e4e
+00000000
+a9ba4fc7
+ffffffff
+10737699
+00000000
+8ae4a810
+ffffffff
+30266f13
+00000000
+4fbbb98e
+00000000
+b9b70f33
+ffffffff
+6d9adf5d
+00000000
+e1a8a79b
+ffffffff
+96527d7b
+ffffffff
+30033769
+00000000
+1f77d60d
+00000000
+6325f8d8
+00000000
+6e3eb788
+00000000
+306556dc
+00000000
+96f5f895
+ffffffff
+28441cf7
+00000000
+b82f5cdd
+ffffffff
+42d5ab3d
+00000000
+c2ebbe4d
+ffffffff
+6df45de5
+00000000
+843d46fb
+ffffffff
+a848c988
+ffffffff
+491ed6c9
+00000000
+4ec6f18c
+00000000
+4641f648
+00000000
+25d222ec
+00000000
+42d678a0
+00000000
+f9c54d70
+ffffffff
+334b28f7
+00000000
+e466f716
+ffffffff
+1db19d65
+00000000
+40f6baf4
+00000000
+4507de12
+00000000
+126d70de
+00000000
+01cc5b3e
+00000000
+b4fdf826
+ffffffff
+510456c1
+00000000
+ec024e52
+ffffffff
+e3356cc4
+ffffffff
+e3685fe3
+ffffffff
+a4fc6113
+ffffffff
+d4f78cc2
+ffffffff
+ecdefb27
+ffffffff
+eb685eb0
+ffffffff
+15bdce24
+00000000
+08a14afe
+00000000
+7ab2427f
+00000000
+78a56a64
+00000000
+a4f54ee7
+ffffffff
+30275697
+00000000
+2aba39d1
+00000000
+86bdf041
+ffffffff
+355b0f02
+00000000
+d2f8a09a
+ffffffff
+365fdd0d
+00000000
+f27a40cf
+ffffffff
+38b6bfe2
+00000000
+0301fefb
+00000000
+32e3fff8
+00000000
+df373ff1
+ffffffff
+e22746ff
+ffffffff
+ff20599f
+ffffffff
+ef8b1bff
+ffffffff
+7ffe1cd1
+00000000
+fffed06b
+ffffffff
+a2ffff5e
+ffffffff
+ff0c8fff
+ffffffff
+fc823fff
+ffffffff
+ffdb73ff
+ffffffff
+ffffabb7
+ffffffff
+7fffffeb
+00000000
+ff5fffff
+ffffffff
+fdc9ffff
+ffffffff
+7fffffc4
+00000000
+ffffffe2
+ffffffff
+ffffff9b
+ffffffff
+ff07ffff
+ffffffff
+f5ffffff
+ffffffff
+efffffff
+ffffffff
+9fffffff
+ffffffff
+dfffffff
+ffffffff
+ffffffff
+ffffffff
+5ae10604
+00000000
+cec7313a
+ffffffff
+058160e6
+00000000
+d6308385
+ffffffff
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-01.reference_output
new file mode 100644
index 000000000..7326a122d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-01.reference_output
@@ -0,0 +1,300 @@
+87c70ee9
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+00000000
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
+00000000
+deadbeef
+1fffffff
+deadbeef
+0effdfff
+deadbeef
+177fefff
+deadbeef
+1bbff7ff
+deadbeef
+1ddffbff
+deadbeef
+1eeffdff
+deadbeef
+1f77feff
+deadbeef
+1fbbff7f
+deadbeef
+1fddffbf
+deadbeef
+1feeffdf
+deadbeef
+1ff77fef
+deadbeef
+1ffbbff7
+deadbeef
+1ffddffb
+deadbeef
+1ffeeffd
+deadbeef
+1fff77fe
+deadbeef
+9fffbbff
+deadbeef
+5fffddff
+deadbeef
+3fffeeff
+deadbeef
+0ffff77f
+deadbeef
+17fffbbf
+deadbeef
+1bfffddf
+deadbeef
+1dfffeef
+deadbeef
+1effff77
+deadbeef
+1f7fffbb
+deadbeef
+1fbfffdd
+deadbeef
+1fdfffee
+deadbeef
+9feffff7
+deadbeef
+5ff7fffb
+deadbeef
+3ffbfffd
+deadbeef
+0ffdfffe
+deadbeef
+17feffff
+deadbeef
+1bff7fff
+deadbeef
+1dffbfff
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+02004000
+deadbeef
+939dab8b
+deadbeef
+a948bfa5
+deadbeef
+994bc4a4
+deadbeef
+4cd02353
+deadbeef
+b731081a
+deadbeef
+d4fc26a7
+deadbeef
+b4b54d93
+deadbeef
+c31b1d2e
+deadbeef
+e7f87002
+deadbeef
+4e6ae522
+deadbeef
+0fb0ebca
+deadbeef
+0e02b181
+deadbeef
+845823ff
+deadbeef
+c60e7ba1
+deadbeef
+add556da
+deadbeef
+9a8c5240
+deadbeef
+6ab9ad7d
+deadbeef
+37dfb743
+deadbeef
+0ccf43cc
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+11002000
+deadbeef
+08801000
+deadbeef
+04400800
+deadbeef
+02200400
+deadbeef
+01100200
+deadbeef
+00880100
+deadbeef
+00440080
+deadbeef
+00220040
+deadbeef
+00110020
+deadbeef
+00088010
+deadbeef
+00044008
+deadbeef
+00022004
+deadbeef
+00011002
+deadbeef
+00008801
+deadbeef
+80004400
+deadbeef
+40002200
+deadbeef
+20001100
+deadbeef
+10000880
+deadbeef
+08000440
+deadbeef
+04000220
+deadbeef
+02000110
+deadbeef
+01000088
+deadbeef
+00800044
+deadbeef
+00400022
+deadbeef
+00200011
+deadbeef
+80100008
+deadbeef
+40080004
+deadbeef
+20040002
+deadbeef
+10020001
+deadbeef
+08010000
+deadbeef
+04008000
+deadbeef
+1fffffff
+deadbeef
+1fffffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-rwp1.reference_output
new file mode 100644
index 000000000..2ca8175ea
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+f485adf7
+ffffffff
+8f0c849b
+6c023547
+8476d693
+6c023547
+8222d662
+ffffffff
+7ddd299d
+00000000
+0dd09a3f
+9c55496a
+592e7107
+00000000
+d4b79a73
+93fdcab8
+acf6b0ac
+4f0e7329
+e0ec1049
+ffffffff
+1ff24ba6
+a38b1ba1
+00e1a410
+a38b1ba1
+4919f7f2
+00000000
+b6e6080d
+ffffffff
+53074732
+6fef7bd6
+bf0a72a9
+ffffffff
+be28ce98
+5c74e45e
+85d9f49f
+f3461900
+52976c0c
+00000000
+fbf9aebf
+5cd2875e
+56913d4c
+a32d78a1
+dd2c1077
+ffffffff
+22d3ef88
+00000000
+d625f8df
+0c6725bc
+db5f0163
+ffffffff
+84cdc416
+5cd2875e
+1515b62e
+d5a6539a
+330318ec
+00000000
+d6f32892
+3d7c95f9
+1a0fcf81
+c2836a06
+f295a0ec
+ffffffff
+0d6a5f13
+00000000
+d6d5b6ce
+26575c5d
+eac4a801
+ffffffff
+d0b4d87f
+3d7c95f9
+b1a509ca
+bd7bb672
+c1254743
+ffffffff
+a8949bfc
+c2f9ebc8
+964e2340
+c2f9ebc8
+1b357dbd
+00000000
+e4ca8242
+ffffffff
+41c6b234
+bd83b67d
+cc364b53
+ffffffff
+35e82812
+3d061437
+c4490a21
+3441a740
+1989c242
+00000000
+b7c1fbe3
+4652f62d
+51b7c65e
+b9ad09d2
+4702032a
+00000000
+b8fdfcd5
+ffffffff
+18496d21
+b866479b
+1a71f96c
+00000000
+c8ba330d
+4652f62d
+ee915c98
+58d5d905
+7b29328e
+00000000
+cd42000a
+0b2e2669
+4994cd7b
+f4d1d996
+ccff6250
+ffffffff
+33009daf
+00000000
+0f65a0a0
+5f2a25d6
+29da7c8c
+00000000
+e045af10
+0b2e2669
+81fd5f28
+f909502b
+16f67124
+00000000
+690e53c9
+1011eeb4
+8007dd12
+efee114b
+c2445419
+ffffffff
+3dbbabe6
+00000000
+7dfda0b2
+f92aad54
+0368d028
+00000000
+8360f315
+1011eeb4
+f261884d
+c35a255f
+e7bb8e81
+ffffffff
+68b3c823
+8f03e503
+70f7b95d
+8f03e503
+5aa84464
+00000000
+a557bb9b
+ffffffff
+0c721591
+24a25aa0
+a6f2e585
+ffffffff
+35fb2c27
+70fc1afc
+121290f0
+bed9e518
+465a73bb
+00000000
+aa682d57
+72745307
+13cda113
+8d8bacf8
+4c1aeb93
+00000000
+b3e5146c
+ffffffff
+ea532d08
+3f220927
+c7dcf96f
+ffffffff
+b40f585b
+72745307
+d235139a
+6e5e995f
+6b047cd9
+00000000
+6d647b4b
+cebe24d9
+f99ff86d
+3141db26
+3adbbe9a
+00000000
+c5244165
+ffffffff
+dab51b9a
+6f9ee25f
+68057fe9
+00000000
+6e65877b
+cebe24d9
+d295e997
+7a9113e5
+4f926244
+00000000
+6630351b
+ab8534c1
+d65da8a0
+547acb3e
+314f3bd2
+00000000
+ceb0c42d
+ffffffff
+24da1627
+7c995be6
+cf5b3fde
+ffffffff
+f8fd973d
+ab8534c0
+e49adff7
+990c7a8f
+44a79767
+00000000
+e42c1394
+01fbbe93
+5f747b0c
+fe04416c
+0d93704a
+00000000
+f26c8fb5
+ffffffff
+e49cdff7
+9af382af
+c4a75b66
+ffffffff
+6532e059
+01fbbe93
+52135d56
+2de37f54
+71b3d994
+00000000
+2d845d0e
+74f5add5
+a3c87b65
+8b0a522a
+c1e7f768
+ffffffff
+3e180897
+00000000
+6a5c5e66
+ce0c8056
+d606a9e7
+ffffffff
+323e2e81
+74f5add5
+c3e3c21c
+d0bc9a3a
+d17c8f3f
+ffffffff
+ab61bcf5
+69ae119a
+85e2cc35
+69ae119a
+c8bafd66
+ffffffff
+37450299
+00000000
+341c25a0
+dd3f62c5
+4f83b1f8
+00000000
+c9a0e5c2
+9651ee65
+2dc51a2a
+072cdbff
+1769a200
+00000000
+5f2fe3f5
+9b11d383
+b7b9be0a
+64ee2c7c
+6c1ae953
+00000000
+93e516ac
+ffffffff
+adc99dd4
+374edbff
+db978bf3
+ffffffff
+23ddcde8
+9b11d383
+74bd2e93
+971acc3b
+63da02a0
+00000000
+808c503c
+93017690
+1ca9ad63
+6cfe896f
+aef4a1dc
+ffffffff
+510b5e23
+00000000
+7b41ceab
+971d313c
+2a346498
+00000000
+0d8ab734
+93017691
+f7f576a7
+2ab7ea92
+0cb8b9c4
+00000000
+275a610d
+c5d09b94
+d41d2736
+3a2f646b
+3ee62baf
+00000000
+c119d450
+ffffffff
+07fa8737
+b5380c9b
+cf3d6416
+ffffffff
+fb203cdf
+c5d09b93
+b287d885
+6d8e7a4d
+eb149800
+ffffffff
+dad49d70
+e728e41b
+ce3ffa8f
+e728e41b
+f8f8732b
+ffffffff
+07078cd4
+00000000
+b507e365
+8e307d8d
+25139eeb
+00000000
+56d3a45b
+18d71be4
+51704b2a
+a57f8862
+4c467daf
+00000000
+41034170
+2a5dc0a0
+f2bac320
+d5a23f5f
+ef7a114c
+ffffffff
+1085eeb3
+00000000
+697ab4d4
+b9800962
+08c8b9ad
+00000000
+160df68c
+2a5dc0a0
+9b07ed10
+afb2f00c
+c912d4b9
+ffffffff
+917ac4e2
+3d8ec31d
+a797efa4
+3d8ec31d
+a654fbce
+ffffffff
+59ab0431
+00000000
+1bd80da6
+303509d1
+4c253759
+00000000
+a48d47b4
+c2713ce2
+5ce4e7ad
+7a9113c2
+68ce0203
+00000000
+ed5b8a82
+9ea76f08
+7a6a777e
+615890f7
+6e66049b
+00000000
+9199fb64
+ffffffff
+5f06f7ad
+82ddebd3
+ecb584db
+ffffffff
+724b0d5c
+9ea76f08
+939e1ac3
+24eeb7cf
+13e41b8a
+00000000
+154adada
+132a7176
+f9513eaf
+ecd58e89
+0f737bfc
+00000000
+f08c8403
+ffffffff
+9bdf9ce3
+4aef382f
+3374aa52
+00000000
+3a236ba2
+132a7176
+f9da381e
+374b8630
+accf4d05
+ffffffff
+7ed9a3ad
+cc679c3b
+2de91157
+cc679c3b
+efb33b72
+ffffffff
+104cc48d
+00000000
+fde3c55e
+386c49b8
+53100059
+00000000
+2526ef01
+339863c5
+fdbc23ec
+fb24d57d
+ceb7c355
+ffffffff
+341eba30
+d277af9d
+0556869a
+d277af9d
+9506fc8b
+ffffffff
+6af90374
+00000000
+01bed3ee
+0434d582
+68cf27b5
+00000000
+6378a11a
+2d885063
+01be696c
+3edc9bee
+426fb190
+00000000
+4fede954
+b3e73cbb
+f27da73b
+4c18c344
+0065b336
+00000000
+ff9a4cc9
+ffffffff
+19be8a6c
+4122e410
+799faa36
+00000000
+872202fa
+b3e73cbb
+52df1cb0
+0e8b61f7
+add24918
+ffffffff
+ed02acff
+d2eccdf1
+bf2f1a18
+d2eccdf1
+e01d92bc
+ffffffff
+1fe26d43
+00000000
+52e0df3e
+50ab8607
+41364ee1
+00000000
+820734c8
+2d13320e
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-rwp2.reference_output
new file mode 100644
index 000000000..1f178b37f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig0-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+6958846a
+00000000
+7b89296c
+93fdcab8
+9ddd299d
+ffffffff
+7dc59a3a
+d2d6b877
+1dcda702
+00000000
+a749f9c5
+cf84b683
+e1d6c519
+ffffffff
+08ceac39
+854a9657
+d8060aec
+ffffffff
+53e8eb43
+137a9777
+b60a1844
+ffffffff
+ff1e5bef
+5c74e45e
+56e6080d
+00000000
+6b9f15c4
+dc338383
+40d5c674
+00000000
+9a6ab329
+5ae6a228
+ecb3e599
+ffffffff
+acca7f0d
+432779ee
+9103b02d
+ffffffff
+2cb7362c
+af949e5e
+90448384
+ffffffff
+a96ec2b3
+5cd2875e
+c2d3ef88
+ffffffff
+708cc1b6
+9d02fc90
+529d1d96
+00000000
+0b54aa22
+953b00b0
+6ff4bec5
+00000000
+3c53d0e3
+224c0601
+35ca12a9
+00000000
+f0e58650
+e8dac663
+de6947ff
+ffffffff
+e5f0307e
+3d7c95f9
+ed6a5f13
+ffffffff
+aaac3142
+8c8a18b2
+9c5074e1
+ffffffff
+6f9fb997
+785036de
+cd4913a6
+ffffffff
+a7298c66
+95a4d257
+bab2cb5e
+ffffffff
+d814d575
+807da245
+c5efc501
+ffffffff
+69b1dcbf
+3d061437
+04ca8242
+00000000
+08208d09
+7f216822
+305612b3
+00000000
+dae98554
+14b91c79
+d3bdd51a
+ffffffff
+c6880007
+c5ec6148
+175de1a2
+00000000
+6a013380
+7213516d
+41743e97
+00000000
+ae4839a1
+4652f62d
+58fdfcd5
+00000000
+9e044706
+85986adb
+0f3d27ef
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-01.reference_output
new file mode 100644
index 000000000..9c038c789
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-01.reference_output
@@ -0,0 +1,300 @@
+18d2a4a9
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+00000000
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+00000000
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
+001fafff
+deadbeef
+002fd7ff
+deadbeef
+0037ebff
+deadbeef
+003bf5ff
+deadbeef
+003dfaff
+deadbeef
+003efd7f
+deadbeef
+003f7ebf
+deadbeef
+003fbf5f
+deadbeef
+003fdfaf
+deadbeef
+003fefd7
+deadbeef
+003ff7eb
+deadbeef
+003ffbf5
+deadbeef
+003ffdfa
+deadbeef
+803ffefd
+deadbeef
+403fff7e
+deadbeef
+a03fffbf
+deadbeef
+503fffdf
+deadbeef
+283fffef
+deadbeef
+143ffff7
+deadbeef
+0a3ffffb
+deadbeef
+053ffffd
+deadbeef
+02bffffe
+deadbeef
+017fffff
+deadbeef
+009fffff
+deadbeef
+006fffff
+deadbeef
+0017ffff
+deadbeef
+002bffff
+deadbeef
+0035ffff
+deadbeef
+003affff
+deadbeef
+003d7fff
+deadbeef
+003ebfff
+deadbeef
+003f5fff
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+0000a000
+deadbeef
+48cd3135
+deadbeef
+41c09451
+deadbeef
+b10a70f6
+deadbeef
+557e7c6c
+deadbeef
+0b6b329a
+deadbeef
+95116065
+deadbeef
+2df24187
+deadbeef
+c4f43ceb
+deadbeef
+d6e1d9a0
+deadbeef
+4d2ba948
+deadbeef
+5fe2d4ab
+deadbeef
+95da2369
+deadbeef
+beeb6b90
+deadbeef
+18f30fdb
+deadbeef
+277e7afe
+deadbeef
+f1d7bde8
+deadbeef
+ac937b9a
+deadbeef
+748e7afc
+deadbeef
+9a2a2f54
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00205000
+deadbeef
+00102800
+deadbeef
+00081400
+deadbeef
+00040a00
+deadbeef
+00020500
+deadbeef
+00010280
+deadbeef
+00008140
+deadbeef
+000040a0
+deadbeef
+00002050
+deadbeef
+00001028
+deadbeef
+00000814
+deadbeef
+0000040a
+deadbeef
+00000205
+deadbeef
+80000102
+deadbeef
+40000081
+deadbeef
+a0000040
+deadbeef
+50000020
+deadbeef
+28000010
+deadbeef
+14000008
+deadbeef
+0a000004
+deadbeef
+05000002
+deadbeef
+02800001
+deadbeef
+01400000
+deadbeef
+00a00000
+deadbeef
+00500000
+deadbeef
+00280000
+deadbeef
+00140000
+deadbeef
+000a0000
+deadbeef
+00050000
+deadbeef
+00028000
+deadbeef
+00014000
+deadbeef
+003fffff
+deadbeef
+003fffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-rwp1.reference_output
new file mode 100644
index 000000000..98bfc93f2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+e7d27a48
+ffffffff
+9c5b5324
+6c023547
+8476d693
+6c023547
+b1baaf00
+ffffffff
+4e4550ff
+00000000
+0dd09a3f
+9c55496a
+5e5b1374
+00000000
+d9e43ce0
+93fdcab8
+acf6b0ac
+4f0e7329
+8e68fe49
+ffffffff
+7176a5a6
+a38b1ba1
+00e1a410
+a38b1ba1
+e68a3805
+ffffffff
+1975c7fa
+00000000
+53074732
+6fef7bd6
+4b6ba232
+00000000
+4a89fe21
+5c74e45f
+85d9f49f
+f3461900
+c4fd442a
+ffffffff
+6d938699
+a32d78a1
+56913d4c
+a32d78a1
+b91a05d5
+ffffffff
+46e5fa2a
+00000000
+d625f8df
+0c6725bc
+434198a8
+00000000
+ecb05b5b
+5cd2875e
+1515b62e
+d5a6539a
+6dd78d45
+00000000
+8827bd3b
+3d7c95f9
+1a0fcf81
+c2836a06
+1e362db5
+00000000
+e1c9d24a
+ffffffff
+d6d5b6ce
+26575c5d
+6d8b04dd
+00000000
+537b355b
+3d7c95fa
+b1a509ca
+bd7bb672
+25f067a4
+00000000
+4c41bb1b
+3d061437
+964e2340
+c2f9ebc8
+d5edca66
+ffffffff
+2a123599
+00000000
+41c6b234
+bd83b67d
+8f4cd977
+ffffffff
+f8feb636
+3d061436
+c4490a21
+3441a740
+a465c8ef
+ffffffff
+0a2df14e
+b9ad09d2
+51b7c65e
+b9ad09d2
+1bf08f1c
+00000000
+e40f70e3
+ffffffff
+18496d21
+b866479b
+9b32bd76
+ffffffff
+497af717
+4652f62d
+ee915c98
+58d5d905
+85e4cecd
+ffffffff
+338ffc49
+f4d1d996
+4994cd7b
+f4d1d996
+ff00a8cb
+ffffffff
+00ff5734
+00000000
+0f65a0a0
+5f2a25d6
+6447df36
+00000000
+1ab311ba
+0b2e266a
+81fd5f28
+f909502b
+04512f96
+00000000
+7ba90d7b
+1011eeb4
+8007dd12
+efee114b
+150b11f4
+00000000
+eaf4ee0b
+ffffffff
+7dfda0b2
+f92aad54
+64500e29
+00000000
+e4483116
+1011eeb4
+f261884d
+c35a255f
+f513df1e
+ffffffff
+7a1b99bc
+8f03e503
+70f7b95d
+8f03e503
+2b992b8b
+00000000
+d466d474
+ffffffff
+0c721591
+24a25aa0
+4879bb32
+00000000
+d78201d4
+70fc1afc
+121290f0
+bed9e518
+1a628fef
+00000000
+f650d103
+72745307
+13cda113
+8d8bacf8
+64af18f7
+00000000
+9b50e708
+ffffffff
+ea532d08
+3f220927
+f31ffca8
+ffffffff
+df525b94
+72745307
+d235139a
+6e5e995f
+2b8abe18
+00000000
+2deab98a
+cebe24d9
+f99ff86d
+3141db26
+03052402
+00000000
+fcfadbfd
+ffffffff
+dab51b9a
+6f9ee25f
+2e889b4a
+00000000
+34e8a2dc
+cebe24d9
+d295e997
+7a9113e5
+49cdb662
+00000000
+606fe13d
+ab8534c1
+d65da8a0
+547acb3e
+6171e68f
+00000000
+9e8e1970
+ffffffff
+24da1627
+7c995be6
+49de4073
+00000000
+738097d2
+ab8534c1
+e49adff7
+990c7a8f
+343c2869
+00000000
+94b7ac9a
+01fbbe93
+5f747b0c
+fe04416c
+b2f0794a
+ffffffff
+4d0f86b5
+00000000
+e49cdff7
+9af382af
+f43c29ea
+ffffffff
+94c7aedd
+01fbbe93
+52135d56
+2de37f54
+c515679c
+ffffffff
+9922e306
+8b0a522a
+a3c87b65
+8b0a522a
+32f69783
+00000000
+cd09687c
+ffffffff
+6a5c5e66
+ce0c8056
+a4e56f72
+ffffffff
+011cf40c
+74f5add5
+c3e3c21c
+d0bc9a3a
+997d017d
+ffffffff
+e36032b7
+69ae119a
+85e2cc35
+69ae119a
+3fbd0afe
+00000000
+c042f501
+ffffffff
+341c25a0
+dd3f62c5
+96691b84
+ffffffff
+10864f4e
+9651ee65
+2dc51a2a
+072cdbff
+2e5b221c
+00000000
+661d63e9
+9b11d383
+b7b9be0a
+64ee2c7c
+e8e9e344
+ffffffff
+17161cbb
+00000000
+adc99dd4
+374edbff
+fd7bb13a
+ffffffff
+45c1f32f
+9b11d383
+74bd2e93
+971acc3b
+3286fb82
+00000000
+d1d0a91e
+93017690
+1ca9ad63
+6cfe896f
+e31ac7aa
+ffffffff
+1ce53855
+00000000
+7b41ceab
+971d313c
+de9e02bb
+ffffffff
+c1f45557
+93017690
+f7f576a7
+2ab7ea92
+15baf859
+00000000
+3e582090
+c5d09b94
+d41d2736
+3a2f646b
+3748b7c4
+00000000
+c8b7483b
+ffffffff
+07fa8737
+b5380c9b
+137c9da3
+00000000
+3f5f766c
+c5d09b94
+b287d885
+6d8e7a4d
+177ecee5
+00000000
+26becb95
+18d71be4
+ce3ffa8f
+e728e41b
+02259126
+00000000
+fdda6ed9
+ffffffff
+b507e365
+8e307d8d
+0df32ddb
+00000000
+3fb3334b
+18d71be4
+51704b2a
+a57f8862
+2ce43e84
+00000000
+21a1025b
+2a5dc0a0
+f2bac320
+d5a23f5f
+39c8c9ba
+00000000
+c6373645
+ffffffff
+697ab4d4
+b9800962
+0ceae73f
+00000000
+1a30241e
+2a5dc0a0
+9b07ed10
+afb2f00c
+0b0c9f18
+00000000
+53648f43
+c2713ce2
+a797efa4
+3d8ec31d
+0a0f22c2
+00000000
+f5f0dd3d
+ffffffff
+1bd80da6
+303509d1
+07613894
+00000000
+5fc948ef
+c2713ce2
+5ce4e7ad
+7a9113c2
+ef343cd7
+ffffffff
+6aa1b456
+615890f7
+7a6a777e
+615890f7
+754e68e5
+00000000
+8ab1971a
+ffffffff
+5f06f7ad
+82ddebd3
+a534c5de
+ffffffff
+2aca4e5f
+9ea76f08
+939e1ac3
+24eeb7cf
+ce1d5c3a
+ffffffff
+c8b39d6a
+ecd58e89
+f9513eaf
+ecd58e89
+b8bc57cd
+ffffffff
+4743a832
+00000000
+9bdf9ce3
+4aef382f
+3dcb4973
+00000000
+447a0ac3
+132a7176
+f9da381e
+374b8630
+5b32d558
+00000000
+89243bf0
+339863c4
+2de91157
+cc679c3b
+aa8a090d
+ffffffff
+5575f6f2
+00000000
+fde3c55e
+386c49b8
+9a3bd9bc
+ffffffff
+6c52c864
+339863c4
+fdbc23ec
+fb24d57d
+95b48e61
+ffffffff
+6f1df704
+d277af9d
+0556869a
+d277af9d
+939f17a0
+ffffffff
+6c60e85f
+00000000
+01bed3ee
+0434d582
+b38aaf5c
+ffffffff
+ae3428c1
+2d885062
+01be696c
+3edc9bee
+f99bef72
+ffffffff
+f419b7b6
+4c18c344
+f27da73b
+4c18c344
+67461818
+00000000
+98b9e7e7
+ffffffff
+19be8a6c
+4122e410
+947de04a
+ffffffff
+a200390e
+b3e73cba
+52df1cb0
+0e8b61f7
+6dda94f3
+00000000
+2d0a7114
+2d13320e
+bf2f1a18
+d2eccdf1
+6e6083b4
+00000000
+919f7c4b
+ffffffff
+52e0df3e
+50ab8607
+746c5b1b
+00000000
+b53d4102
+2d13320e
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-rwp2.reference_output
new file mode 100644
index 000000000..7d2ddf8c9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sig1-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+56572ab7
+00000000
+7b89296c
+93fdcab8
+b18550ff
+ffffffff
+7dc59a3a
+d2d6b877
+7e45003c
+00000000
+a749f9c5
+cf84b683
+c3f3b533
+ffffffff
+08ceac39
+854a9657
+839996d5
+ffffffff
+53e8eb43
+137a9777
+68dd39b3
+00000000
+ff1e5bef
+5c74e45e
+e6b5c7fa
+ffffffff
+6b9f15c4
+dc338383
+68405f79
+00000000
+9a6ab329
+5ae6a228
+0fd764d4
+00000000
+acca7f0d
+432779ee
+704c5163
+00000000
+2cb7362c
+af949e5e
+7dd8be00
+00000000
+a96ec2b3
+5cd2875e
+b925fa2a
+ffffffff
+708cc1b6
+9d02fc90
+f8f1d567
+ffffffff
+0b54aa22
+953b00b0
+c05791ea
+ffffffff
+3c53d0e3
+224c0601
+9262ed57
+ffffffff
+f0e58650
+e8dac663
+73de5f0f
+00000000
+e5f0307e
+3d7c95f9
+1e09d24a
+00000000
+aaac3142
+8c8a18b2
+9ea3ab0f
+ffffffff
+6f9fb997
+785036de
+2be2bdd2
+00000000
+a7298c66
+95a4d257
+f7964d12
+ffffffff
+d814d575
+807da245
+f022523d
+ffffffff
+69b1dcbf
+3d061437
+d5d23599
+ffffffff
+08208d09
+7f216822
+5727ad37
+00000000
+dae98554
+14b91c79
+f2364c48
+ffffffff
+c6880007
+c5ec6148
+0032b995
+00000000
+6a013380
+7213516d
+bfaab80c
+ffffffff
+ae4839a1
+4652f62d
+1bcf70e3
+00000000
+9e044706
+85986adb
+ab441dd3
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-01.reference_output
new file mode 100644
index 000000000..c7e52f2b4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-01.reference_output
@@ -0,0 +1,300 @@
+4799c3e5
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+dffbfdff
+deadbeef
+effdfeff
+deadbeef
+f7feff7f
+deadbeef
+fbff7fbf
+deadbeef
+fdffbfdf
+deadbeef
+feffdfef
+deadbeef
+ff7feff7
+deadbeef
+ffbff7fb
+deadbeef
+ffdffbfd
+deadbeef
+ffeffdfe
+deadbeef
+7ff7feff
+deadbeef
+bffbff7f
+deadbeef
+dffdffbf
+deadbeef
+effeffdf
+deadbeef
+f7ff7fef
+deadbeef
+fbffbff7
+deadbeef
+fdffdffb
+deadbeef
+feffeffd
+deadbeef
+ff7ff7fe
+deadbeef
+7fbffbff
+deadbeef
+bfdffdff
+deadbeef
+dfeffeff
+deadbeef
+eff7ff7f
+deadbeef
+f7fbffbf
+deadbeef
+fbfdffdf
+deadbeef
+fdfeffef
+deadbeef
+feff7ff7
+deadbeef
+ff7fbffb
+deadbeef
+ffbfdffd
+deadbeef
+ffdfeffe
+deadbeef
+7feff7ff
+deadbeef
+bff7fbff
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+40080400
+deadbeef
+7d6edd03
+deadbeef
+77524e08
+deadbeef
+781c6e4c
+deadbeef
+18c5683c
+deadbeef
+f489e912
+deadbeef
+315e1351
+deadbeef
+6bcffcb7
+deadbeef
+a1770abd
+deadbeef
+b5a467d3
+deadbeef
+b1817121
+deadbeef
+d739557c
+deadbeef
+754a8c38
+deadbeef
+0066c1ab
+deadbeef
+1fd61299
+deadbeef
+86890c81
+deadbeef
+30a07e62
+deadbeef
+502a4d47
+deadbeef
+ca6f8fb5
+deadbeef
+d872ab8c
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+20040200
+deadbeef
+10020100
+deadbeef
+08010080
+deadbeef
+04008040
+deadbeef
+02004020
+deadbeef
+01002010
+deadbeef
+00801008
+deadbeef
+00400804
+deadbeef
+00200402
+deadbeef
+00100201
+deadbeef
+80080100
+deadbeef
+40040080
+deadbeef
+20020040
+deadbeef
+10010020
+deadbeef
+08008010
+deadbeef
+04004008
+deadbeef
+02002004
+deadbeef
+01001002
+deadbeef
+00800801
+deadbeef
+80400400
+deadbeef
+40200200
+deadbeef
+20100100
+deadbeef
+10080080
+deadbeef
+08040040
+deadbeef
+04020020
+deadbeef
+02010010
+deadbeef
+01008008
+deadbeef
+00804004
+deadbeef
+00402002
+deadbeef
+00201001
+deadbeef
+80100800
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-rwp1.reference_output
new file mode 100644
index 000000000..043c39c29
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+0eea27ba
+00000000
+75630ed6
+93fdcab8
+8476d693
+6c023547
+8edbd803
+ffffffff
+712427fc
+00000000
+0dd09a3f
+9c55496a
+50e4b43c
+00000000
+cc6ddda8
+93fdcab8
+acf6b0ac
+4f0e7329
+749a792d
+00000000
+8b8422c2
+5c74e45e
+00e1a410
+a38b1ba1
+a6282e0a
+ffffffff
+59d7d1f5
+00000000
+53074732
+6fef7bd6
+b04f80ba
+ffffffff
+af6ddca9
+5c74e45e
+85d9f49f
+f3461900
+22582dff
+00000000
+8b36ef4c
+5cd2875e
+56913d4c
+a32d78a1
+bb33ca80
+ffffffff
+44cc357f
+00000000
+d625f8df
+0c6725bc
+a494b040
+ffffffff
+4e0372f3
+5cd2875e
+1515b62e
+d5a6539a
+62ed7d72
+00000000
+871d4d0c
+3d7c95f9
+1a0fcf81
+c2836a06
+05b527f6
+00000000
+fa4ad809
+ffffffff
+d6d5b6ce
+26575c5d
+5518e045
+00000000
+3b0910c3
+3d7c95fa
+b1a509ca
+bd7bb672
+761be59c
+00000000
+1faa3923
+3d061437
+964e2340
+c2f9ebc8
+071a38f8
+00000000
+f8e5c707
+ffffffff
+41c6b234
+bd83b67d
+9b1b73bf
+ffffffff
+04cd507e
+3d061437
+c4490a21
+3441a740
+0434e7d1
+00000000
+aa7cde70
+4652f62d
+51b7c65e
+b9ad09d2
+7986056f
+00000000
+8679fa90
+ffffffff
+18496d21
+b866479b
+0aae1d62
+00000000
+b8f65703
+4652f62d
+ee915c98
+58d5d905
+9a114016
+ffffffff
+2c7a7292
+f4d1d996
+4994cd7b
+f4d1d996
+ea8a92de
+ffffffff
+15756d21
+00000000
+0f65a0a0
+5f2a25d6
+905b9338
+ffffffff
+46c6c5bc
+0b2e2669
+81fd5f28
+f909502b
+2c47fa27
+00000000
+53bfd8ca
+1011eeb4
+8007dd12
+efee114b
+57e1bd7a
+00000000
+a81e4285
+ffffffff
+7dfda0b2
+f92aad54
+6c6e4e36
+00000000
+ec667123
+1011eeb4
+f261884d
+c35a255f
+b8d6c6d6
+ffffffff
+37de8074
+8f03e503
+70f7b95d
+8f03e503
+48331c29
+00000000
+b7cce3d6
+ffffffff
+0c721591
+24a25aa0
+27c2a2c5
+00000000
+b6cae967
+70fc1afc
+121290f0
+bed9e518
+c947f4e0
+ffffffff
+2575aa0c
+8d8bacf8
+13cda113
+8d8bacf8
+faefba66
+ffffffff
+05104599
+00000000
+ea532d08
+3f220927
+1e67ba72
+00000000
+0a9a195e
+72745308
+d235139a
+6e5e995f
+fc15be06
+ffffffff
+fa75b994
+3141db26
+f99ff86d
+3141db26
+c2e98502
+ffffffff
+3d167afd
+00000000
+dab51b9a
+6f9ee25f
+be15f824
+ffffffff
+c475ffb6
+cebe24d8
+d295e997
+7a9113e5
+efbdb180
+ffffffff
+c61fe6df
+547acb3e
+d65da8a0
+547acb3e
+06335b9c
+00000000
+f9cca463
+ffffffff
+24da1627
+7c995be6
+10573fca
+00000000
+39f99729
+ab8534c1
+e49adff7
+990c7a8f
+6de64cb9
+00000000
+cd6dc84a
+01fbbe93
+5f747b0c
+fe04416c
+1e53d41d
+00000000
+e1ac2be2
+ffffffff
+e49cdff7
+9af382af
+75e7cc89
+00000000
+1673517c
+01fbbe94
+52135d56
+2de37f54
+33431e87
+00000000
+6f749a1d
+74f5add5
+a3c87b65
+8b0a522a
+92329615
+ffffffff
+6dcd69ea
+00000000
+6a5c5e66
+ce0c8056
+18dddcd2
+00000000
+7515616c
+74f5add5
+c3e3c21c
+d0bc9a3a
+af169c96
+ffffffff
+d50baf5c
+69ae119a
+85e2cc35
+69ae119a
+8be44a0c
+ffffffff
+741bb5f3
+00000000
+341c25a0
+dd3f62c5
+50902959
+00000000
+caad5d23
+9651ee65
+2dc51a2a
+072cdbff
+4e488015
+00000000
+060ec1e0
+9b11d383
+b7b9be0a
+64ee2c7c
+bb43f891
+ffffffff
+44bc076e
+00000000
+adc99dd4
+374edbff
+e3a05b8e
+ffffffff
+2be69d83
+9b11d383
+74bd2e93
+971acc3b
+5d0ea39f
+00000000
+be58f103
+93017690
+1ca9ad63
+6cfe896f
+0a870267
+00000000
+f578fd98
+ffffffff
+7b41ceab
+971d313c
+acb10449
+ffffffff
+900756e5
+93017690
+f7f576a7
+2ab7ea92
+9d187ddd
+ffffffff
+b6faa514
+3a2f646b
+d41d2736
+3a2f646b
+f82d3274
+ffffffff
+07d2cd8b
+00000000
+07fa8737
+b5380c9b
+125a4206
+00000000
+3e3d1acf
+c5d09b94
+b287d885
+6d8e7a4d
+b7ee74d5
+ffffffff
+862e71a5
+e728e41b
+ce3ffa8f
+e728e41b
+d81bb064
+ffffffff
+27e44f9b
+00000000
+b507e365
+8e307d8d
+69e1c632
+00000000
+9ba1cba2
+18d71be4
+51704b2a
+a57f8862
+0c22300d
+00000000
+01670cd2
+2a5dc0a0
+f2bac320
+d5a23f5f
+cea5a6d4
+ffffffff
+315a592b
+00000000
+697ab4d4
+b9800962
+562eb745
+00000000
+6373f424
+2a5dc0a0
+9b07ed10
+afb2f00c
+51f16117
+00000000
+0999714c
+c2713ce2
+a797efa4
+3d8ec31d
+0b7e55c8
+00000000
+f481aa37
+ffffffff
+1bd80da6
+303509d1
+8bf045c6
+ffffffff
+e4585621
+c2713ce1
+5ce4e7ad
+7a9113c2
+f9cd6bbf
+ffffffff
+7c58e33e
+615890f7
+7a6a777e
+615890f7
+8cb4b765
+ffffffff
+734b489a
+00000000
+5f06f7ad
+82ddebd3
+f175f0a0
+ffffffff
+770b7921
+9ea76f08
+939e1ac3
+24eeb7cf
+4a90140e
+00000000
+4c3ed55e
+132a7176
+f9513eaf
+ecd58e89
+4fd13ac7
+00000000
+b02ec538
+ffffffff
+9bdf9ce3
+4aef382f
+7f98b7ab
+00000000
+864778fb
+132a7176
+f9da381e
+374b8630
+16613b31
+00000000
+c477d599
+339863c4
+2de91157
+cc679c3b
+e58677aa
+ffffffff
+1a798855
+00000000
+fde3c55e
+386c49b8
+1a9a65be
+00000000
+ecb15466
+339863c4
+fdbc23ec
+fb24d57d
+d08756ec
+ffffffff
+2a2e2f89
+d277af9d
+0556869a
+d277af9d
+ef9fe307
+ffffffff
+10601cf8
+00000000
+01bed3ee
+0434d582
+e450010b
+ffffffff
+def97a70
+2d885062
+01be696c
+3edc9bee
+b2aa27ae
+ffffffff
+bf287f6a
+4c18c344
+f27da73b
+4c18c344
+33dc15ea
+00000000
+cc23ea15
+ffffffff
+19be8a6c
+4122e410
+af26df09
+ffffffff
+bca937cd
+b3e73cba
+52df1cb0
+0e8b61f7
+8d47909f
+ffffffff
+cd977578
+d2eccdf1
+bf2f1a18
+d2eccdf1
+43665d02
+00000000
+bc99a2fd
+ffffffff
+52e0df3e
+50ab8607
+ee365982
+ffffffff
+2f073f69
+2d13320e
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-rwp2.reference_output
new file mode 100644
index 000000000..60e9716be
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum0-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+7fce0046
+00000000
+7b89296c
+93fdcab8
+712427fc
+00000000
+7dc59a3a
+d2d6b877
+58ca6155
+00000000
+a749f9c5
+cf84b683
+801852a3
+ffffffff
+08ceac39
+854a9657
+194b0958
+00000000
+53e8eb43
+137a9777
+2d4da8d8
+00000000
+ff1e5bef
+5c74e45e
+59d7d1f5
+00000000
+6b9f15c4
+dc338383
+c8938827
+ffffffff
+9a6ab329
+5ae6a228
+551ad9f6
+00000000
+acca7f0d
+432779ee
+baa3cf23
+ffffffff
+2cb7362c
+af949e5e
+66941880
+00000000
+a96ec2b3
+5cd2875e
+44cc357f
+00000000
+708cc1b6
+9d02fc90
+a2966dc9
+ffffffff
+0b54aa22
+953b00b0
+816df800
+ffffffff
+3c53d0e3
+224c0601
+074e9a57
+00000000
+f0e58650
+e8dac663
+98a7a57b
+ffffffff
+e5f0307e
+3d7c95f9
+fa4ad809
+ffffffff
+aaac3142
+8c8a18b2
+907b539b
+ffffffff
+6f9fb997
+785036de
+69bacf26
+00000000
+a7298c66
+95a4d257
+6ccec0c9
+00000000
+d814d575
+807da245
+8efe229b
+ffffffff
+69b1dcbf
+3d061437
+f8e5c707
+ffffffff
+08208d09
+7f216822
+a8744666
+ffffffff
+dae98554
+14b91c79
+ba09e572
+ffffffff
+c6880007
+c5ec6148
+d19c2b5b
+ffffffff
+6a013380
+7213516d
+824d1d41
+ffffffff
+ae4839a1
+4652f62d
+8679fa90
+ffffffff
+9e044706
+85986adb
+8ea9fb9b
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-01.reference_output
new file mode 100644
index 000000000..31bfb75d1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-01.reference_output
@@ -0,0 +1,300 @@
+7bbbca92
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+fdefffbf
+deadbeef
+fef7ffdf
+deadbeef
+ff7bffef
+deadbeef
+ffbdfff7
+deadbeef
+ffdefffb
+deadbeef
+ffef7ffd
+deadbeef
+fff7bffe
+deadbeef
+7ffbdfff
+deadbeef
+bffdefff
+deadbeef
+dffef7ff
+deadbeef
+efff7bff
+deadbeef
+f7ffbdff
+deadbeef
+fbffdeff
+deadbeef
+fdffef7f
+deadbeef
+fefff7bf
+deadbeef
+ff7ffbdf
+deadbeef
+ffbffdef
+deadbeef
+ffdffef7
+deadbeef
+ffefff7b
+deadbeef
+fff7ffbd
+deadbeef
+fffbffde
+deadbeef
+7ffdffef
+deadbeef
+bffefff7
+deadbeef
+dfff7ffb
+deadbeef
+efffbffd
+deadbeef
+f7ffdffe
+deadbeef
+7bffefff
+deadbeef
+bdfff7ff
+deadbeef
+defffbff
+deadbeef
+ef7ffdff
+deadbeef
+f7bffeff
+deadbeef
+fbdfff7f
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+04200080
+deadbeef
+e42596b4
+deadbeef
+b905e605
+deadbeef
+4a7fcb7d
+deadbeef
+717ad44b
+deadbeef
+eeb93641
+deadbeef
+80d5bee4
+deadbeef
+252ab1e6
+deadbeef
+5f1f866d
+deadbeef
+da340807
+deadbeef
+672346d3
+deadbeef
+ef836ec6
+deadbeef
+1c4ac5f3
+deadbeef
+ea2343b0
+deadbeef
+7027dbe6
+deadbeef
+a250576c
+deadbeef
+ea01cd21
+deadbeef
+838da6de
+deadbeef
+915337db
+deadbeef
+b8124394
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+02100040
+deadbeef
+01080020
+deadbeef
+00840010
+deadbeef
+00420008
+deadbeef
+00210004
+deadbeef
+00108002
+deadbeef
+00084001
+deadbeef
+80042000
+deadbeef
+40021000
+deadbeef
+20010800
+deadbeef
+10008400
+deadbeef
+08004200
+deadbeef
+04002100
+deadbeef
+02001080
+deadbeef
+01000840
+deadbeef
+00800420
+deadbeef
+00400210
+deadbeef
+00200108
+deadbeef
+00100084
+deadbeef
+00080042
+deadbeef
+00040021
+deadbeef
+80020010
+deadbeef
+40010008
+deadbeef
+20008004
+deadbeef
+10004002
+deadbeef
+08002001
+deadbeef
+84001000
+deadbeef
+42000800
+deadbeef
+21000400
+deadbeef
+10800200
+deadbeef
+08400100
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-rwp1.reference_output
new file mode 100644
index 000000000..bdfc4ed37
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+2f76df59
+00000000
+54fff635
+93fdcab8
+8476d693
+6c023547
+a70a1c42
+ffffffff
+58f5e3bd
+00000000
+0dd09a3f
+9c55496a
+539be7fd
+00000000
+cf251169
+93fdcab8
+acf6b0ac
+4f0e7329
+dc7e1242
+ffffffff
+236049ad
+a38b1ba1
+00e1a410
+a38b1ba1
+b2d192a4
+ffffffff
+4d2e6d5b
+00000000
+53074732
+6fef7bd6
+aca5e4dd
+ffffffff
+abc440cc
+5c74e45e
+85d9f49f
+f3461900
+011d932e
+00000000
+a873519d
+5cd2875e
+56913d4c
+a32d78a1
+d04e30f9
+ffffffff
+2fb1cf06
+00000000
+d625f8df
+0c6725bc
+765e3cb7
+00000000
+1fccff6a
+5cd2875f
+1515b62e
+d5a6539a
+f74de364
+ffffffff
+12bdd31a
+c2836a06
+1a0fcf81
+c2836a06
+f3acbe4a
+ffffffff
+0c5341b5
+00000000
+d6d5b6ce
+26575c5d
+885aeb06
+ffffffff
+6e4b1b84
+3d7c95f9
+b1a509ca
+bd7bb672
+c11445de
+ffffffff
+a8a59961
+c2f9ebc8
+964e2340
+c2f9ebc8
+4d5a5102
+00000000
+b2a5aefd
+ffffffff
+41c6b234
+bd83b67d
+74d6383e
+00000000
+de8814fd
+3d061437
+c4490a21
+3441a740
+e7acbdeb
+ffffffff
+49e4844a
+b9ad09d2
+51b7c65e
+b9ad09d2
+696fc6c9
+00000000
+96903936
+ffffffff
+18496d21
+b866479b
+04f4bc15
+00000000
+b33cf5b6
+4652f62d
+ee915c98
+58d5d905
+b809db2e
+ffffffff
+0e62e9aa
+f4d1d996
+4994cd7b
+f4d1d996
+8829dc08
+ffffffff
+77d623f7
+00000000
+0f65a0a0
+5f2a25d6
+26ec2a31
+00000000
+dd575cb5
+0b2e2669
+81fd5f28
+f909502b
+b9b85e97
+ffffffff
+c6407c7a
+efee114b
+8007dd12
+efee114b
+ebbe96cf
+ffffffff
+14416930
+00000000
+7dfda0b2
+f92aad54
+21681008
+00000000
+a16032f5
+1011eeb4
+f261884d
+c35a255f
+0eb3ece9
+00000000
+81bbaa4b
+70fc1afc
+70f7b95d
+8f03e503
+25b16eaa
+00000000
+da4e9155
+ffffffff
+0c721591
+24a25aa0
+cf1a8e92
+ffffffff
+5e22d534
+70fc1afc
+121290f0
+bed9e518
+d7027018
+ffffffff
+3b302ef4
+8d8bacf8
+13cda113
+8d8bacf8
+88fdc6b9
+ffffffff
+77023946
+00000000
+ea532d08
+3f220927
+ab2282a4
+ffffffff
+9754e190
+72745307
+d235139a
+6e5e995f
+029b5f85
+00000000
+04fb5817
+cebe24d9
+f99ff86d
+3141db26
+75a57ae2
+00000000
+8a5a851d
+ffffffff
+dab51b9a
+6f9ee25f
+42bc4fa0
+00000000
+491c5732
+cebe24d9
+d295e997
+7a9113e5
+2744cef2
+00000000
+0ee699ad
+ab8534c1
+d65da8a0
+547acb3e
+b997ed7c
+ffffffff
+46681283
+00000000
+24da1627
+7c995be6
+357ce088
+00000000
+5f1f37e7
+ab8534c1
+e49adff7
+990c7a8f
+6c0103d6
+00000000
+cc8a8725
+01fbbe93
+5f747b0c
+fe04416c
+eacbb94c
+ffffffff
+153446b3
+00000000
+e49cdff7
+9af382af
+6f011b16
+00000000
+0f8ca009
+01fbbe94
+52135d56
+2de37f54
+fa2ca437
+ffffffff
+a61b20ad
+8b0a522a
+a3c87b65
+8b0a522a
+1e06ea33
+00000000
+e1f915cc
+ffffffff
+6a5c5e66
+ce0c8056
+7b4b09c7
+00000000
+d7828e61
+74f5add5
+c3e3c21c
+d0bc9a3a
+c176fd11
+ffffffff
+bb6bcedb
+69ae119a
+85e2cc35
+69ae119a
+a1c12dab
+ffffffff
+5e3ed254
+00000000
+341c25a0
+dd3f62c5
+3ac42308
+00000000
+b4e156d2
+9651ee65
+2dc51a2a
+072cdbff
+0f7fb9dd
+00000000
+4739f828
+9b11d383
+b7b9be0a
+64ee2c7c
+37571494
+00000000
+c8a8eb6b
+ffffffff
+adc99dd4
+374edbff
+0cec7512
+00000000
+5532b707
+9b11d383
+74bd2e93
+971acc3b
+c12b2aa5
+ffffffff
+227d7839
+6cfe896f
+1ca9ad63
+6cfe896f
+74c7820e
+00000000
+8b387df1
+ffffffff
+7b41ceab
+971d313c
+d8653abe
+ffffffff
+bbbb8d5a
+93017690
+f7f576a7
+2ab7ea92
+b19a788f
+ffffffff
+9a78a046
+3a2f646b
+d41d2736
+3a2f646b
+33196c52
+00000000
+cce693ad
+ffffffff
+07fa8737
+b5380c9b
+c7bc8ecf
+ffffffff
+f39f6798
+c5d09b93
+b287d885
+6d8e7a4d
+45900d40
+00000000
+74500830
+18d71be4
+ce3ffa8f
+e728e41b
+713c7ff2
+00000000
+8ec3800d
+ffffffff
+b507e365
+8e307d8d
+79930dab
+00000000
+ab53131b
+18d71be4
+51704b2a
+a57f8862
+742a7a0d
+00000000
+796f46d2
+2a5dc0a0
+f2bac320
+d5a23f5f
+bab52c2d
+ffffffff
+454ad3d2
+00000000
+697ab4d4
+b9800962
+7672afb1
+00000000
+83b7ec90
+2a5dc0a0
+9b07ed10
+afb2f00c
+6389f704
+00000000
+3be1e75f
+c2713ce2
+a797efa4
+3d8ec31d
+adfd7f10
+ffffffff
+520280ef
+00000000
+1bd80da6
+303509d1
+c0aac83a
+ffffffff
+1912d895
+c2713ce2
+5ce4e7ad
+7a9113c2
+32abd9ac
+00000000
+b73e512d
+9ea76f08
+7a6a777e
+615890f7
+231d5bae
+00000000
+dce2a451
+ffffffff
+5f06f7ad
+82ddebd3
+c3ac2daf
+ffffffff
+4941b630
+9ea76f08
+939e1ac3
+24eeb7cf
+99316a61
+ffffffff
+9f9fab31
+ecd58e89
+f9513eaf
+ecd58e89
+c2853921
+ffffffff
+3d7ac6de
+00000000
+9bdf9ce3
+4aef382f
+fdd2744d
+ffffffff
+0481359d
+132a7176
+f9da381e
+374b8630
+95245cdb
+ffffffff
+4732b273
+cc679c3b
+2de91157
+cc679c3b
+82dab2f1
+ffffffff
+7d254d0e
+00000000
+fde3c55e
+386c49b8
+21ca9c13
+00000000
+f3e18abb
+339863c4
+fdbc23ec
+fb24d57d
+1078b175
+00000000
+ead1c810
+2d885062
+0556869a
+d277af9d
+1016bdc8
+00000000
+efe94237
+ffffffff
+01bed3ee
+0434d582
+1aaf3b95
+00000000
+1558b4fa
+2d885063
+01be696c
+3edc9bee
+42b27868
+00000000
+4f3020ac
+b3e73cbb
+f27da73b
+4c18c344
+366424d1
+00000000
+c99bdb2e
+ffffffff
+19be8a6c
+4122e410
+22a0fbf4
+00000000
+302354b8
+b3e73cbb
+52df1cb0
+0e8b61f7
+38cf7fb8
+00000000
+781f9a5f
+2d13320e
+bf2f1a18
+d2eccdf1
+b66655d4
+ffffffff
+4999aa2b
+00000000
+52e0df3e
+50ab8607
+6eee404e
+00000000
+afbf2635
+2d13320e
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-rwp2.reference_output
new file mode 100644
index 000000000..108a3fa92
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha256sum1-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+77833ce4
+00000000
+7b89296c
+93fdcab8
+58f5e3bd
+00000000
+7dc59a3a
+d2d6b877
+4c75b3e5
+00000000
+a749f9c5
+cf84b683
+8ad52c0b
+ffffffff
+08ceac39
+854a9657
+04543fe1
+00000000
+53e8eb43
+137a9777
+91507f19
+ffffffff
+ff1e5bef
+5c74e45e
+4d2e6d5b
+00000000
+6b9f15c4
+dc338383
+66a9ed80
+00000000
+9a6ab329
+5ae6a228
+f6037357
+ffffffff
+acca7f0d
+432779ee
+b2393665
+ffffffff
+2cb7362c
+af949e5e
+2eac5c28
+00000000
+a96ec2b3
+5cd2875e
+2fb1cf06
+00000000
+708cc1b6
+9d02fc90
+a96cf9a6
+ffffffff
+0b54aa22
+953b00b0
+66392938
+00000000
+3c53d0e3
+224c0601
+b97eb4a7
+ffffffff
+f0e58650
+e8dac663
+fb1ea2d1
+ffffffff
+e5f0307e
+3d7c95f9
+0c5341b5
+00000000
+aaac3142
+8c8a18b2
+74e74416
+00000000
+6f9fb997
+785036de
+a08f46a6
+ffffffff
+a7298c66
+95a4d257
+828e7053
+ffffffff
+d814d575
+807da245
+73b1eb23
+00000000
+69b1dcbf
+3d061437
+b2a5aefd
+ffffffff
+08208d09
+7f216822
+954702a1
+ffffffff
+dae98554
+14b91c79
+8d325148
+ffffffff
+c6880007
+c5ec6148
+5be2f2e3
+00000000
+6a013380
+7213516d
+713c84dd
+00000000
+ae4839a1
+4652f62d
+96903936
+ffffffff
+9e044706
+85986adb
+f88852db
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-01.reference_output
new file mode 100644
index 000000000..2e23842f8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-01.reference_output
@@ -0,0 +1,300 @@
+47ca95f4
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+7fffffff
+deadbeef
+3fffffff
+deadbeef
+9fffffff
+deadbeef
+cfffffff
+deadbeef
+e7ffffff
+deadbeef
+f3ffffff
+deadbeef
+f9ffffff
+deadbeef
+7cffffff
+deadbeef
+be7fffff
+deadbeef
+df3fffff
+deadbeef
+ef9fffff
+deadbeef
+f7cfffff
+deadbeef
+fbe7ffff
+deadbeef
+fdf3ffff
+deadbeef
+fef9ffff
+deadbeef
+ff7cffff
+deadbeef
+ffbe7fff
+deadbeef
+ffdf3fff
+deadbeef
+ffef9fff
+deadbeef
+fff7cfff
+deadbeef
+fffbe7ff
+deadbeef
+fffdf3ff
+deadbeef
+fffef9ff
+deadbeef
+ffff7cff
+deadbeef
+ffffbe7f
+deadbeef
+ffffdf3f
+deadbeef
+ffffef9f
+deadbeef
+fffff7cf
+deadbeef
+fffffbe7
+deadbeef
+fffffdf3
+deadbeef
+fffffef9
+deadbeef
+ffffff7c
+deadbeef
+ffffffbe
+deadbeef
+ffffffdf
+deadbeef
+ffffffef
+deadbeef
+fffffff7
+deadbeef
+fffffffb
+deadbeef
+fffffffd
+deadbeef
+fffffffe
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+6aa6b917
+deadbeef
+c12d1d19
+deadbeef
+f5fdadd9
+deadbeef
+cda158a8
+deadbeef
+32cc9477
+deadbeef
+1d1ff87b
+deadbeef
+98c6ebc8
+deadbeef
+93bb6872
+deadbeef
+0e5d7fcc
+deadbeef
+6c358f6c
+deadbeef
+ba3ec29c
+deadbeef
+9e56421c
+deadbeef
+b5bdf6c8
+deadbeef
+8173288e
+deadbeef
+b2e37615
+deadbeef
+2603ce57
+deadbeef
+aa2f4efa
+deadbeef
+2cc1a620
+deadbeef
+d8c506f7
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+80000000
+deadbeef
+c0000000
+deadbeef
+60000000
+deadbeef
+30000000
+deadbeef
+18000000
+deadbeef
+0c000000
+deadbeef
+06000000
+deadbeef
+83000000
+deadbeef
+41800000
+deadbeef
+20c00000
+deadbeef
+10600000
+deadbeef
+08300000
+deadbeef
+04180000
+deadbeef
+020c0000
+deadbeef
+01060000
+deadbeef
+00830000
+deadbeef
+00418000
+deadbeef
+0020c000
+deadbeef
+00106000
+deadbeef
+00083000
+deadbeef
+00041800
+deadbeef
+00020c00
+deadbeef
+00010600
+deadbeef
+00008300
+deadbeef
+00004180
+deadbeef
+000020c0
+deadbeef
+00001060
+deadbeef
+00000830
+deadbeef
+00000418
+deadbeef
+0000020c
+deadbeef
+00000106
+deadbeef
+00000083
+deadbeef
+00000041
+deadbeef
+00000020
+deadbeef
+00000010
+deadbeef
+00000008
+deadbeef
+00000004
+deadbeef
+00000002
+deadbeef
+00000001
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-rwp1.reference_output
new file mode 100644
index 000000000..f0f3c9404
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+eedd7e35
+7379a5d8
+95545759
+e0846f60
+8476d693
+6c023547
+0ab7f032
+25b51cfc
+f5480fcd
+da4ae303
+0dd09a3f
+9c55496a
+b8fe3cb1
+f08e5b6e
+3487661d
+848c2627
+acf6b0ac
+4f0e7329
+ac8e4387
+8b562b01
+53901868
+d722cf5f
+00e1a410
+a38b1ba1
+6371f0e4
+402110fc
+9c8e0f1b
+bfdeef03
+53074732
+6fef7bd6
+5376aa50
+05478c67
+5295063f
+61bc70c6
+85d9f49f
+f3461900
+43629052
+67b6c6ab
+ea0c52e1
+3b6441f5
+56913d4c
+a32d78a1
+48b32de1
+1c73cbd9
+b74cd21e
+e38c3426
+d625f8df
+0c6725bc
+ae689266
+59273bb0
+57d75519
+b5f9c30f
+1515b62e
+d5a6539a
+a4b5e5cd
+45adc339
+4145d5b3
+78d156c0
+1a0fcf81
+c2836a06
+0729f790
+610630bd
+f8d6086f
+9ef9cf42
+d6d5b6ce
+26575c5d
+0d11a5bc
+dd4157ca
+f301d63a
+1abdedc3
+b1a509ca
+bd7bb672
+cf006bff
+957a57e3
+a6b1b740
+a87c43d4
+964e2340
+c2f9ebc8
+129dc3c5
+203bffd8
+ed623c3a
+dfc40027
+41c6b234
+bd83b67d
+272112cc
+6b075fe4
+90d2ef8b
+a80d741b
+c4490a21
+3441a740
+a3685e0e
+bb7c1149
+0d2067af
+fd2ee764
+51b7c65e
+b9ad09d2
+5e293b65
+031c73f3
+a1d6c49a
+fce38c0c
+18496d21
+b866479b
+210c6d27
+fcfb8905
+cf54a6c8
+434e7f32
+ee915c98
+58d5d905
+f97b1da9
+b48392e9
+4f102f2d
+bfadb480
+4994cd7b
+f4d1d996
+9e10dbea
+80759ea1
+61ef2415
+7f8a615e
+0f65a0a0
+5f2a25d6
+7da37eb1
+8f746c85
+340eb135
+9aa292ef
+81fd5f28
+f909502b
+bc7ca875
+558fb3e5
+c3848a98
+459e5d51
+8007dd12
+efee114b
+1c83e6ee
+64c73a96
+e37c1911
+9b38c569
+7dfda0b2
+f92aad54
+c278d6b8
+cf9e295d
+4270f9a5
+dfb01812
+f261884d
+c35a255f
+192666be
+ade8fcc0
+962e201c
+dd14e63c
+70f7b95d
+8f03e503
+bdeac465
+9b10f6ae
+42153b9a
+64ef0951
+0c721591
+24a25aa0
+e62d9cf6
+033ccbbf
+7535e398
+7438e6bc
+121290f0
+bed9e518
+213f7fc9
+aeaf98a3
+cd0d2125
+dcdbcba4
+13cda113
+8d8bacf8
+01d2866a
+d4534a89
+fe2d7995
+2bacb576
+ea532d08
+3f220927
+9d1763f3
+17d06288
+8949c2df
+8a44b590
+d235139a
+6e5e995f
+096cd6f9
+ad9daf04
+0f0cd16b
+63238bdd
+f99ff86d
+3141db26
+17c55c3e
+f5f32ffe
+e83aa3c1
+0a0cd001
+dab51b9a
+6f9ee25f
+0d3552e1
+ad7fd209
+13955a73
+7c3df6e2
+d295e997
+7a9113e5
+c73d4af1
+2ac73ac6
+ee9f1dae
+81420e07
+d65da8a0
+547acb3e
+285432a9
+8ac1eac2
+d7abcd56
+753e153d
+24da1627
+7c995be6
+38006529
+99c9061f
+61a2bc88
+454e3ae0
+e49adff7
+990c7a8f
+6260c09b
+3a2d29c8
+c2eb4468
+3bd6975b
+5f747b0c
+fe04416c
+9b5ba10b
+72002c75
+64a45ef4
+8dffd38a
+e49cdff7
+9af382af
+0263ca9b
+3bd6d5d0
+a2ef4f8e
+3dd29463
+52135d56
+2de37f54
+d5ff9b4c
+40879a2b
+89c81fd6
+347237fe
+a3c87b65
+8b0a522a
+2e00653f
+a11837e3
+d1ff9ac0
+5ee7c81c
+6a5c5e66
+ce0c8056
+cf90cbd1
+005455ab
+2bc8506b
+754a0381
+c3e3c21c
+d0bc9a3a
+2eb5c548
+752f88b3
+54a8f682
+e37e66d6
+85e2cc35
+69ae119a
+ed7f414e
+816dfaff
+1280beb1
+7e920500
+341c25a0
+dd3f62c5
+d55236be
+cff8f0c5
+4f6f6a88
+664adf2b
+2dc51a2a
+072cdbff
+9794c23b
+299f1893
+dfd283ce
+b28ecb10
+b7b9be0a
+64ee2c7c
+de0415c7
+38da244a
+21fbea38
+c725dbb5
+adc99dd4
+374edbff
+d612944c
+cffebe93
+1e58d641
+6b109217
+74bd2e93
+971acc3b
+f7c3503a
+59344949
+149502a6
+ca353fd9
+1ca9ad63
+6cfe896f
+3f712c46
+d5ca472c
+c08ed3b9
+2a35b8d3
+7b41ceab
+971d313c
+792d2506
+6137bfcd
+5c8377a2
+f439365e
+f7f576a7
+2ab7ea92
+cce2a4c8
+32242d76
+e7007c01
+f7f4b6e2
+d41d2736
+3a2f646b
+5672b4f2
+2b59c399
+a98d4b0d
+d4a63c66
+07fa8737
+b5380c9b
+2ef54c12
+ec434e58
+5ad824db
+b213e9ec
+b287d885
+6d8e7a4d
+0f94642b
+3371afa8
+3e54615b
+2ba6b44c
+ce3ffa8f
+e728e41b
+cb4dbd48
+7dbd0b21
+34b242b7
+8242f4de
+b507e365
+8e307d8d
+4c5cf997
+a38a6e40
+7e1cff07
+bc618a24
+51704b2a
+a57f8862
+8e4bb548
+795044a9
+830e8997
+530d8409
+f2bac320
+d5a23f5f
+194aaed5
+4baff9ee
+e6b5512a
+b4500611
+697ab4d4
+b9800962
+9206d5b7
+890a84aa
+9f4c1296
+b368454a
+9b07ed10
+afb2f00c
+582efebf
+4629af16
+0046eee4
+845893f4
+a797efa4
+3d8ec31d
+f5234fe2
+ba81f2cb
+0adcb01d
+457e0d34
+1bd80da6
+303509d1
+fec06ec5
+be4adbf2
+57287f20
+80bc18d5
+5ce4e7ad
+7a9113c2
+68975efe
+10c73ad5
+ed02d67f
+8e6055dd
+7a6a777e
+615890f7
+a4bb8526
+4e0fa1ca
+5b447ad9
+b1f05e35
+5f06f7ad
+82ddebd3
+da6270ce
+6de993d5
+5ff7f94f
+0c9102de
+939e1ac3
+24eeb7cf
+997baf4e
+511a683f
+9fd56e1e
+42301949
+f9513eaf
+ecd58e89
+66a36c14
+585fb9d7
+995c93eb
+a7a04628
+9bdf9ce3
+4aef382f
+bd43aed4
+46a8ad5f
+c3f27024
+59d31ed5
+f9da381e
+374b8630
+2de77247
+05fc1f92
+fff19cef
+36647c56
+2de91157
+cc679c3b
+db82b398
+b06766b9
+247d4c67
+4f989946
+fde3c55e
+386c49b8
+b7f7c6e0
+427e9006
+8a0eb588
+7616f3cb
+fdbc23ec
+fb24d57d
+78d8d592
+909f07c1
+8271acf7
+bd1757a3
+0556869a
+d277af9d
+25a4b8c6
+f24d4f3e
+da5b4739
+0db2b0c1
+01bed3ee
+0434d582
+86ddaa83
+ec1637bf
+818723e8
+199e8822
+01be696c
+3edc9bee
+32ddf60d
+732d285b
+3f5faec9
+c0ca14e0
+f27da73b
+4c18c344
+b4285574
+9dd848e7
+4bd7aa8b
+6227b718
+19be8a6c
+4122e410
+3cf586a8
+4c521524
+4a77df6c
+003951df
+52df1cb0
+0e8b61f7
+b098ef7d
+b7562d59
+f0480a9a
+9a451f57
+bf2f1a18
+d2eccdf1
+cd56fc22
+700153ae
+32a903dd
+8ffeac51
+52e0df3e
+50ab8607
+a0874efe
+16a43f89
+e15834e5
+43b77197
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-rwp2.reference_output
new file mode 100644
index 000000000..09ad2424d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig0-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+1b9571f8
+573346db
+7b89296c
+93fdcab8
+f5480fcd
+244ae303
+7dc59a3a
+d2d6b877
+276483b3
+521c27f3
+a749f9c5
+cf84b683
+574d26e8
+2392d69a
+08ceac39
+854a9657
+7d7e05e8
+fa2a9491
+53e8eb43
+137a9777
+30004c9c
+ca88c402
+ff1e5bef
+5c74e45e
+9c8e0f1b
+41deef03
+6b9f15c4
+dc338383
+30732bdc
+ab7d9545
+9a6ab329
+5ae6a228
+349be641
+849c7af2
+acca7f0d
+432779ee
+65906107
+ac56d57d
+2cb7362c
+af949e5e
+f42e424c
+7a3af28d
+a96ec2b3
+5cd2875e
+b74cd21e
+1d8c3426
+708cc1b6
+9d02fc90
+88d7f599
+f926794d
+0b54aa22
+953b00b0
+d5b7a8ef
+6922cd59
+3c53d0e3
+224c0601
+9d6d1c00
+7240d70a
+f0e58650
+e8dac663
+5c63eda2
+25540c7b
+e5f0307e
+3d7c95f9
+f8d6086f
+60f9cf42
+aaac3142
+8c8a18b2
+82a9ecf2
+05d09270
+6f9fb997
+785036de
+557f7c01
+2ba0eb34
+a7298c66
+95a4d257
+2b7dbca7
+2d6c845d
+d814d575
+807da245
+226257c5
+b4be57c4
+69b1dcbf
+3d061437
+ed623c3a
+21c40027
+08208d09
+7f216822
+62082713
+b611d7a9
+dae98554
+14b91c79
+671bf825
+5e614518
+c6880007
+c5ec6148
+ba0f9803
+e4b80407
+6a013380
+7213516d
+02be9a94
+b99f9d45
+ae4839a1
+4652f62d
+a1d6c49a
+02e38c0c
+9e044706
+85986adb
+a3a02f4a
+45429dd2
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-01.reference_output
new file mode 100644
index 000000000..c15d4a2ba
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-01.reference_output
@@ -0,0 +1,300 @@
+9377ea60
+deadbeef
+fffffffb
+deadbeef
+fffffffd
+deadbeef
+fffffffe
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+7fffffff
+deadbeef
+bfffffff
+deadbeef
+dfffffff
+deadbeef
+efffffff
+deadbeef
+f7ffffff
+deadbeef
+fbffffff
+deadbeef
+fdffffff
+deadbeef
+feffffff
+deadbeef
+ff7fffff
+deadbeef
+ffbfffff
+deadbeef
+ffdfffff
+deadbeef
+ffefffff
+deadbeef
+fff7ffff
+deadbeef
+00000000
+deadbeef
+bffdffff
+deadbeef
+dffeffff
+deadbeef
+efff7fff
+deadbeef
+f7ffbfff
+deadbeef
+fbffdfff
+deadbeef
+fdffefff
+deadbeef
+fefff7ff
+deadbeef
+ff7ffbff
+deadbeef
+7fbffdff
+deadbeef
+bfdffeff
+deadbeef
+dfefff7f
+deadbeef
+eff7ffbf
+deadbeef
+f7fbffdf
+deadbeef
+fbfdffef
+deadbeef
+fdfefff7
+deadbeef
+feff7ffb
+deadbeef
+ff7fbffd
+deadbeef
+ffbfdffe
+deadbeef
+ffdfefff
+deadbeef
+ffeff7ff
+deadbeef
+fff7fbff
+deadbeef
+fffbfdff
+deadbeef
+fffdfeff
+deadbeef
+fffeff7f
+deadbeef
+ffff7fbf
+deadbeef
+ffffbfdf
+deadbeef
+ffffdfef
+deadbeef
+ffffeff7
+deadbeef
+fffff7fb
+deadbeef
+fffffbfd
+deadbeef
+fffffdfe
+deadbeef
+fffffeff
+deadbeef
+ffffff7f
+deadbeef
+ffffffbf
+deadbeef
+ffffffdf
+deadbeef
+ffffffef
+deadbeef
+fffffff7
+deadbeef
+00000004
+deadbeef
+00000002
+deadbeef
+00000001
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+80000000
+deadbeef
+40000000
+deadbeef
+20000000
+deadbeef
+10000000
+deadbeef
+08000000
+deadbeef
+04000000
+deadbeef
+02000000
+deadbeef
+00000008
+deadbeef
+376426cd
+deadbeef
+8f93e17a
+deadbeef
+0bf6ba17
+deadbeef
+309c7a37
+deadbeef
+ce9a33cd
+deadbeef
+519fbeb1
+deadbeef
+3e47fdec
+deadbeef
+1c544101
+deadbeef
+a37a4913
+deadbeef
+81fb5a6e
+deadbeef
+44876213
+deadbeef
+f8cf163e
+deadbeef
+ff371c19
+deadbeef
+1d81f5c9
+deadbeef
+4358854e
+deadbeef
+1d5cb915
+deadbeef
+8d7db2fe
+deadbeef
+840a59d7
+deadbeef
+5c1cbaef
+deadbeef
+01000000
+deadbeef
+00800000
+deadbeef
+00400000
+deadbeef
+00200000
+deadbeef
+00100000
+deadbeef
+00080000
+deadbeef
+80040000
+deadbeef
+40020000
+deadbeef
+20010000
+deadbeef
+10008000
+deadbeef
+08004000
+deadbeef
+04002000
+deadbeef
+02001000
+deadbeef
+01000800
+deadbeef
+00800400
+deadbeef
+80400200
+deadbeef
+40200100
+deadbeef
+20100080
+deadbeef
+10080040
+deadbeef
+08040020
+deadbeef
+04020010
+deadbeef
+02010008
+deadbeef
+01008004
+deadbeef
+00804002
+deadbeef
+00402001
+deadbeef
+00201000
+deadbeef
+00100800
+deadbeef
+00080400
+deadbeef
+00040200
+deadbeef
+00020100
+deadbeef
+00010080
+deadbeef
+00008040
+deadbeef
+00004020
+deadbeef
+00002010
+deadbeef
+00001008
+deadbeef
+00000804
+deadbeef
+00000402
+deadbeef
+00000201
+deadbeef
+00000100
+deadbeef
+00000080
+deadbeef
+00000040
+deadbeef
+00000020
+deadbeef
+00000010
+deadbeef
+ffffffff
+deadbeef
+7ffbffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-rwp1.reference_output
new file mode 100644
index 000000000..c17e70d52
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+3f54c9a3
+140cf9ea
+44dde0cf
+87f13352
+8476d693
+6c023547
+7b0f9f4f
+bb73cf69
+84f060b0
+448c3096
+0dd09a3f
+9c55496a
+6f9ed22e
+f39cedff
+eb27fb9a
+879ab8b7
+acf6b0ac
+4f0e7329
+0f636a3e
+af5a2960
+f07d31d1
+f32ecd3e
+00e1a410
+a38b1ba1
+e07a8609
+2a54e517
+1f8579f6
+d5ab1ae8
+53074732
+6fef7bd6
+2e0ceeef
+96222ea0
+2d2b4ade
+f29712ff
+85d9f49f
+f3461900
+eff8d396
+a76e2e08
+46961125
+fbbca956
+56913d4c
+a32d78a1
+9ec78442
+3c4ee48d
+61387bbd
+c3b11b72
+d625f8df
+0c6725bc
+a6c0cbdf
+dc1350fc
+502f8e92
+38e5d85b
+1515b62e
+d5a6539a
+0a8aa50c
+18a1df2a
+ef7a9572
+25dd4ad3
+1a0fcf81
+c2836a06
+a5568071
+eee165c8
+5aa97f8e
+111e9a37
+d6d5b6ce
+26575c5d
+2a7d5a70
+84fa7b55
+106d8aee
+c277114f
+b1a509ca
+bd7bb672
+31208c46
+48110ae3
+589150f9
+75171ed4
+964e2340
+c2f9ebc8
+ad513042
+d0aca1b4
+52aecfbd
+2f535e4b
+41c6b234
+bd83b67d
+8dfd2355
+38ad2a83
+f7af0014
+75b33eba
+c4490a21
+3441a740
+15b16da8
+83981a13
+bbf95409
+c5caec3e
+51b7c65e
+b9ad09d2
+65c2a7da
+37452d80
+9a3d5825
+c8bad27f
+18496d21
+b866479b
+66d92fb0
+ec7792ca
+15216951
+32ca88f8
+ee915c98
+58d5d905
+d8101c62
+ec5e9451
+6e7b2ee6
+e770b238
+4994cd7b
+f4d1d996
+2eb2f1d8
+3cf2f54e
+d14d0e27
+c30d0ab1
+0f65a0a0
+5f2a25d6
+67aa526c
+4c398dc2
+1e1584f0
+5767b42c
+81fd5f28
+f909502b
+8be87c04
+604bbb3d
+f4105ee9
+705a5589
+8007dd12
+efee114b
+ec1787e3
+876d6fe4
+13e8781c
+7892901b
+7dfda0b2
+f92aad54
+ebb07caa
+7ea79f33
+6ba89f97
+8eb98de8
+f261884d
+c35a255f
+a86e3a03
+28d5fa01
+27667ca1
+5829e0fd
+70f7b95d
+8f03e503
+f6de7a17
+8d08966f
+092185e8
+72f76990
+0c721591
+24a25aa0
+a8f56551
+673278fe
+37fdabf3
+d82e93fb
+121290f0
+bed9e518
+cc7fcf84
+a62a588f
+204d9168
+d45e0b88
+13cda113
+8d8bacf8
+0bbd3c61
+da4938c2
+f442c39e
+25b6c73d
+ea532d08
+3f220927
+8c14d9bf
+9c4dc6ff
+784738ab
+0ec21a07
+d235139a
+6e5e995f
+3dcbb2db
+d13efd50
+3babb549
+1f80d989
+f99ff86d
+3141db26
+6c7d63bb
+75c67873
+93829c44
+8a39878c
+dab51b9a
+6f9ee25f
+7689f3eb
+de3a2484
+7ce9fb7d
+acf8495d
+d295e997
+7a9113e5
+2199a14f
+68503433
+083bf610
+c3d500f2
+d65da8a0
+547acb3e
+10d3e96b
+1793b855
+ef2c1694
+e86c47aa
+24da1627
+7c995be6
+953f1df8
+a7fc55cd
+bee17557
+53818a8e
+e49adff7
+990c7a8f
+94156850
+91f916b4
+349eeca3
+9002a827
+5f747b0c
+fe04416c
+c2f38265
+7cbb85a7
+3d0c7d9a
+83447a58
+e49cdff7
+9af382af
+eb217050
+4e09282b
+8bacf543
+5004e6bf
+52135d56
+2de37f54
+ae382d86
+0406b2e3
+f20fa91c
+70f31f36
+a3c87b65
+8b0a522a
+fe89aeb8
+5512097c
+01765147
+aaedf683
+6a5c5e66
+ce0c8056
+9b414f04
+f890e973
+f778d39e
+6d869748
+c3e3c21c
+d0bc9a3a
+6756c792
+fee5b9a9
+1d4bf458
+68b457cc
+85e2cc35
+69ae119a
+8732ba27
+155099a7
+78cd45d8
+eaaf6658
+341c25a0
+dd3f62c5
+5869fb13
+6e3bf005
+d2872edd
+048dde6a
+2dc51a2a
+072cdbff
+09e02080
+9a3f2c73
+41a66175
+012efff0
+b7b9be0a
+64ee2c7c
+8a9c805c
+112397c9
+75637fa3
+eedc6836
+adc99dd4
+374edbff
+4b843d6f
+8911627b
+93ca7f64
+242335fe
+74bd2e93
+971acc3b
+11bceeb1
+1f587808
+f2eabc2d
+8c590e98
+1ca9ad63
+6cfe896f
+88122e3b
+53ebdcc2
+77edd1c4
+ac14233d
+7b41ceab
+971d313c
+8dc4fd0e
+83608fc4
+711b4faa
+16620655
+f7f576a7
+2ab7ea92
+09263e1d
+fbc16e6b
+22c4e6d4
+3e11f5ff
+d41d2736
+3a2f646b
+e33437ae
+7575598a
+1ccbc851
+8a8aa675
+07fa8737
+b5380c9b
+5258b35e
+fbf2724d
+7e3b8c27
+c1c30de1
+b287d885
+6d8e7a4d
+6dbd6d19
+96d54635
+5c7d6869
+8e025dd1
+ce3ffa8f
+e728e41b
+02445252
+c58a7fab
+fdbbadad
+3a758054
+b507e365
+8e307d8d
+915ab201
+8fd79c5d
+c31ab771
+a8aeb841
+51704b2a
+a57f8862
+f3cbd257
+200ce99c
+fe8eee88
+0a51293c
+f2bac320
+d5a23f5f
+adf70c5d
+f62368b6
+5208f3a2
+09dc9749
+697ab4d4
+b9800962
+c35c0159
+987cdc06
+d0a13e38
+c2da9ca6
+9b07ed10
+afb2f00c
+b452e451
+828b5e52
+ec3af40a
+40fa62b0
+a797efa4
+3d8ec31d
+9242966d
+1174a450
+6dbd6992
+ee8b5baf
+1bd80da6
+303509d1
+3b952e7c
+80dc5ca9
+93fd3ed7
+434d998b
+5ce4e7ad
+7a9113c2
+cc2ce569
+4997750f
+49b96de8
+d7301a07
+7a6a777e
+615890f7
+1ca4fd63
+45ae29d3
+e35b029c
+ba51d62c
+5f06f7ad
+82ddebd3
+0831cd52
+ca11996e
+8dc755d3
+68b90876
+939e1ac3
+24eeb7cf
+74475c01
+e4be603e
+72e99d51
+f7941148
+f9513eaf
+ecd58e89
+5cbd8eaf
+42cadfef
+a3427150
+bd352010
+9bdf9ce3
+4aef382f
+87966a12
+a5ce14c1
+8e452b62
+b8f88637
+f9da381e
+374b8630
+7df0b72a
+fd82d976
+afe65982
+ce1abab2
+2de91157
+cc679c3b
+70784b46
+42278625
+8f87b4b9
+bdd879da
+fde3c55e
+386c49b8
+85deba58
+bb283bec
+57f5a900
+eec09fb1
+fdbc23ec
+fb24d57d
+80b8505f
+5eb7a7de
+7a11293a
+733ff7bc
+0556869a
+d277af9d
+ab52ce66
+4027f818
+54ad3199
+bfd807e7
+01bed3ee
+0434d582
+9f402408
+fbcbbfc0
+99e99d6d
+29541023
+01be696c
+3edc9bee
+268872f3
+3b322ac4
+2b0a2a37
+88d5167f
+f27da73b
+4c18c344
+984c5109
+d51110a9
+67b3aef6
+2aeeef56
+19be8a6c
+4122e410
+d110aa7c
+d95e2334
+de930340
+8d455fef
+52df1cb0
+0e8b61f7
+278d73a9
+97f723ec
+675d964e
+bae411e2
+bf2f1a18
+d2eccdf1
+a63a5b4b
+776ec6e7
+59c5a4b4
+88913918
+52e0df3e
+50ab8607
+fa8d90d2
+9ff95437
+3b5e76b9
+cd0c8646
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-rwp2.reference_output
new file mode 100644
index 000000000..ed8dae98d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sig1-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+bba4a913
+ac80c97c
+7b89296c
+93fdcab8
+84f060b0
+b88c3096
+7dc59a3a
+d2d6b877
+e4d52806
+26b9c300
+a749f9c5
+cf84b683
+a2029d20
+40231f37
+08ceac39
+854a9657
+489cba65
+fdc6a848
+53e8eb43
+137a9777
+10e613c8
+86f13388
+ff1e5bef
+5c74e45e
+1f8579f6
+29ab1ae8
+6b9f15c4
+dc338383
+2126bf02
+00544993
+9a6ab329
+5ae6a228
+a57920cb
+803ba090
+acca7f0d
+432779ee
+33dd040f
+57d6faf6
+2cb7362c
+af949e5e
+8ec0a82b
+98df357a
+a96ec2b3
+5cd2875e
+61387bbd
+3fb11b72
+708cc1b6
+9d02fc90
+9a3630a3
+72553cd1
+0b54aa22
+953b00b0
+fa9e02d6
+3ec8bb25
+3c53d0e3
+224c0601
+66afefd0
+68f56458
+f0e58650
+e8dac663
+5023da82
+f5bf451d
+e5f0307e
+3d7c95f9
+5aa97f8e
+ed1e9a37
+aaac3142
+8c8a18b2
+dcdd6f84
+e04abc66
+6f9fb997
+785036de
+03987fae
+34521922
+a7298c66
+95a4d257
+fd9a31e0
+9efcd340
+d814d575
+807da245
+638e43fb
+9b4254a8
+69b1dcbf
+3d061437
+52aecfbd
+d3535e4b
+08208d09
+7f216822
+e420ab7b
+e956eb54
+dae98554
+14b91c79
+13a8b7e8
+95308528
+c6880007
+c5ec6148
+9b7338ef
+2c74437e
+6a013380
+7213516d
+8f8c358d
+b722c86c
+ae4839a1
+4652f62d
+9a3d5825
+34bad27f
+9e044706
+85986adb
+93015ae8
+a635e7c4
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-01.reference_output
new file mode 100644
index 000000000..c59a6d5e9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-01.reference_output
@@ -0,0 +1,300 @@
+a1b97705
+deadbeef
+deffffff
+deadbeef
+ef7fffff
+deadbeef
+f7bfffff
+deadbeef
+fbdfffff
+deadbeef
+7defffff
+deadbeef
+00000000
+deadbeef
+df7bffff
+deadbeef
+00000000
+deadbeef
+f7deffff
+deadbeef
+fbef7fff
+deadbeef
+fdf7bfff
+deadbeef
+fefbdfff
+deadbeef
+ff7defff
+deadbeef
+ffbef7ff
+deadbeef
+ffdf7bff
+deadbeef
+ffefbdff
+deadbeef
+fff7deff
+deadbeef
+fffbef7f
+deadbeef
+fffdf7bf
+deadbeef
+fffefbdf
+deadbeef
+ffff7def
+deadbeef
+ffffbef7
+deadbeef
+ffffdf7b
+deadbeef
+ffffefbd
+deadbeef
+fffff7de
+deadbeef
+fffffbef
+deadbeef
+fffffdf7
+deadbeef
+fffffefb
+deadbeef
+ffffff7d
+deadbeef
+ffffffbe
+deadbeef
+ffffffdf
+deadbeef
+ffffffef
+deadbeef
+fffffff7
+deadbeef
+fffffffb
+deadbeef
+fffffffd
+deadbeef
+fffffffe
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+7fffffff
+deadbeef
+bfffffff
+deadbeef
+dfffffff
+deadbeef
+efffffff
+deadbeef
+f7ffffff
+deadbeef
+7bffffff
+deadbeef
+bdffffff
+deadbeef
+21000000
+deadbeef
+10800000
+deadbeef
+08400000
+deadbeef
+04200000
+deadbeef
+82100000
+deadbeef
+41080000
+deadbeef
+20840000
+deadbeef
+10420000
+deadbeef
+08210000
+deadbeef
+04108000
+deadbeef
+02084000
+deadbeef
+01042000
+deadbeef
+00821000
+deadbeef
+00410800
+deadbeef
+00208400
+deadbeef
+00104200
+deadbeef
+00082100
+deadbeef
+00041080
+deadbeef
+00020840
+deadbeef
+00010420
+deadbeef
+42000000
+deadbeef
+9744a800
+deadbeef
+54f7c10c
+deadbeef
+48d3bc1a
+deadbeef
+e31347e2
+deadbeef
+37751014
+deadbeef
+4d08ff8f
+deadbeef
+99f78a7d
+deadbeef
+fd4ed591
+deadbeef
+ff87917f
+deadbeef
+cd628435
+deadbeef
+eae976b1
+deadbeef
+495ae9a4
+deadbeef
+7a3cdd02
+deadbeef
+41cc1db9
+deadbeef
+1fc915fb
+deadbeef
+84d2ba06
+deadbeef
+d0ec6cee
+deadbeef
+e8a9019a
+deadbeef
+c7ff47bb
+deadbeef
+00008210
+deadbeef
+00004108
+deadbeef
+00002084
+deadbeef
+00001042
+deadbeef
+00000821
+deadbeef
+00000410
+deadbeef
+00000208
+deadbeef
+00000104
+deadbeef
+00000082
+deadbeef
+00000041
+deadbeef
+00000020
+deadbeef
+00000010
+deadbeef
+00000008
+deadbeef
+00000004
+deadbeef
+00000002
+deadbeef
+00000001
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+80000000
+deadbeef
+40000000
+deadbeef
+20000000
+deadbeef
+10000000
+deadbeef
+08000000
+deadbeef
+84000000
+deadbeef
+bef7ffff
+deadbeef
+efbdffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-rwp1.reference_output
new file mode 100644
index 000000000..40f013a8e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+2376b8f4
+f5459125
+58ff9198
+66b85b9d
+8476d693
+6c023547
+3dfbdd43
+2978313f
+c20422bc
+d687cec0
+0dd09a3f
+9c55496a
+5d796e68
+8a662442
+d90297d4
+1e63eefa
+acf6b0ac
+4f0e7329
+bbbab2b6
+f70f4b8e
+44a4e959
+ab7bafd0
+00e1a410
+a38b1ba1
+31146acf
+0c23eb46
+ceeb9530
+f3dc14b9
+53074732
+6fef7bd6
+01d3bd67
+0813ac64
+00f21956
+648890c3
+85d9f49f
+f3461900
+f7569a7a
+7de28731
+5e3858c9
+2130006f
+56913d4c
+a32d78a1
+835a8ecc
+7e1ab9e3
+7ca57133
+81e5461c
+d625f8df
+0c6725bc
+bb735ce9
+2e7ab836
+64e21f9c
+8b4d3f95
+1515b62e
+d5a6539a
+b2a7e1e0
+e034240a
+5757d19e
+dd48b1f3
+1a0fcf81
+c2836a06
+5b137c34
+2a4b1463
+a4ec83cb
+d5b4eb9c
+d6d5b6ce
+26575c5d
+70acbc72
+a343aa3c
+569cecf0
+e0c04036
+b1a509ca
+bd7bb672
+ed9f7ddb
+535a94ca
+842ea164
+6e5c80fd
+964e2340
+c2f9ebc8
+9ea535ac
+d05d209a
+615aca53
+2fa2df65
+41c6b234
+bd83b67d
+9e208d27
+b69902a2
+07d269e6
+f39f16da
+c4490a21
+3441a740
+4b629e92
+f40a728f
+e52aa733
+b25884a2
+51b7c65e
+b9ad09d2
+89c88542
+2bb2fbf0
+76377abd
+d44d040f
+18496d21
+b866479b
+ab0d24d8
+74b41b89
+59555e79
+bb0711b7
+ee915c98
+58d5d905
+abd94dad
+996cbc1a
+1db27f29
+92429a73
+4994cd7b
+f4d1d996
+47c04cb2
+27bacd7b
+b83fb34d
+d8453284
+0f65a0a0
+5f2a25d6
+a5d6805e
+d99da96c
+5c41b2e2
+e4cbcfd6
+81fd5f28
+f909502b
+ff254412
+a8a95ffb
+80dd66ff
+b8b8b14f
+8007dd12
+efee114b
+60c54cc8
+777c29d0
+9f3ab337
+8883d62f
+7dfda0b2
+f92aad54
+49122b48
+685e9842
+c90a4e35
+787086f6
+f261884d
+c35a255f
+def268e2
+656425df
+51fa2e40
+15983f23
+70f7b95d
+8f03e503
+28e0aebd
+d5a794fd
+d71f5142
+2a586b02
+0c721591
+24a25aa0
+2144781d
+8425385d
+b04cbebf
+f5215359
+121290f0
+bed9e518
+23559b0d
+15898e16
+cf67c5e1
+67fddd11
+13cda113
+8d8bacf8
+1cc333e6
+c80ee23e
+e33ccc19
+37f11dc1
+ea532d08
+3f220927
+ed965425
+1072bd9b
+d9c8b311
+82e710a3
+d235139a
+6e5e995f
+4aa28e98
+68781767
+4cc2890a
+a6c633be
+f99ff86d
+3141db26
+822f4710
+6a6b4738
+7dd0b8ef
+9594b8c7
+dab51b9a
+6f9ee25f
+56d6a0ae
+e2499577
+5d36a840
+b107ba50
+d295e997
+7a9113e5
+59405883
+965ec8c1
+70e20fdc
+3ddbfc00
+d65da8a0
+547acb3e
+121af4b4
+ade15b7c
+ede50b4b
+521ea483
+24da1627
+7c995be6
+584ada2c
+08de53d2
+81ed318b
+b4638893
+e49adff7
+990c7a8f
+99b6aea8
+af427d3b
+393d2a5b
+aeb9c3a8
+5f747b0c
+fe04416c
+c6390e1c
+382446fa
+39c6f1e3
+c7dbb905
+e49cdff7
+9af382af
+a6b12d50
+ef23f13b
+473cb243
+f11fafcf
+52135d56
+2de37f54
+f914ec6e
+9d15248d
+a52368f4
+e9e08958
+a3c87b65
+8b0a522a
+1971a284
+c1323877
+e68e5d7b
+3ecdc788
+6a5c5e66
+ce0c8056
+9ed73c73
+93864949
+fb0ec10d
+087bf71e
+c3e3c21c
+d0bc9a3a
+0647fc16
+fb4316ce
+7c5acfdc
+6d12f8ab
+85e2cc35
+69ae119a
+aa59c1ed
+ca5fb5c3
+55a63e12
+35a04a3c
+341c25a0
+dd3f62c5
+a5038a27
+86ad6b2e
+1f20bdf1
+1cff5994
+2dc51a2a
+072cdbff
+a708d0ba
+e97b6e1e
+ef4e914f
+726abd9d
+b7b9be0a
+64ee2c7c
+c310908c
+af1afc58
+3cef6f73
+50e503a7
+adc99dd4
+374edbff
+d15094b2
+c8b0290d
+1996d6a7
+63c1fc91
+74bd2e93
+971acc3b
+b3444521
+e014d8c0
+501217bd
+7315ae50
+1ca9ad63
+6cfe896f
+d20ec9b8
+d389ee34
+2df13647
+2c7611cb
+7b41ceab
+971d313c
+c33a65ea
+d23a1a8e
+a690b886
+653b911f
+f7f576a7
+2ab7ea92
+2f863c5e
+e745dd36
+0464e497
+229546a2
+d41d2736
+3a2f646b
+4009c16f
+637d00e0
+bff63e90
+9c82ff1f
+07fa8737
+b5380c9b
+d1a4ba8f
+885927b8
+fd879358
+4e29c34c
+b287d885
+6d8e7a4d
+895f26bc
+dfb971c6
+b89f23cc
+c76e6a22
+ce3ffa8f
+e728e41b
+948a2972
+27ec29a8
+6b75d68d
+d813d657
+b507e365
+8e307d8d
+4b97a743
+2655c147
+7d57acb3
+3f2cdd2b
+51704b2a
+a57f8862
+abed9b2d
+47fa40f6
+a6a8a7f2
+6da78056
+f2bac320
+d5a23f5f
+2ee03e56
+68e7f743
+d11fc1a9
+971808bc
+697ab4d4
+b9800962
+1f13946c
+c9271517
+2c58d14b
+f384d5b7
+9b07ed10
+afb2f00c
+f19cd92a
+8f892594
+a9f4c971
+4df81976
+a797efa4
+3d8ec31d
+9ff49c9b
+2bd42e75
+600b6364
+d42bd18a
+1bd80da6
+303509d1
+c33db576
+59416911
+1ba5c5d1
+1bb2a5f4
+5ce4e7ad
+7a9113c2
+ad405af2
+ddce8af3
+28d5d273
+4369e5fb
+7a6a777e
+615890f7
+711d9a6b
+96c93ed7
+8ee26594
+6936c128
+5f06f7ad
+82ddebd3
+166c7c16
+8110cadc
+9c020497
+1fb839e4
+939e1ac3
+24eeb7cf
+01990c65
+422116b7
+0737cd35
+510b67c1
+f9513eaf
+ecd58e89
+69b42020
+f8b50728
+964bdfdf
+074af8d7
+9bdf9ce3
+4aef382f
+badd9282
+04399635
+c18c53d2
+176407ab
+f9da381e
+374b8630
+c504158f
+c226bb94
+1712fb27
+f1bed850
+2de91157
+cc679c3b
+9af8eb84
+63b0830b
+6507147b
+9c4f7cf4
+fde3c55e
+386c49b8
+b4af5172
+90bf633e
+86c6401a
+c457c703
+fdbc23ec
+fb24d57d
+55722b2a
+5f564e73
+afdb524f
+72de1e11
+0556869a
+d277af9d
+a643fd68
+2e376506
+59bc0297
+d1c89af9
+01bed3ee
+0434d582
+1e4804eb
+9f81f7bc
+18f17e50
+cd0a481f
+01be696c
+3edc9bee
+3a03212c
+478a704a
+378179e8
+f46d4cf1
+f27da73b
+4c18c344
+64123518
+92a1e134
+9bedcae7
+6d5e1ecb
+19be8a6c
+4122e410
+dae4bdcd
+bdb4794b
+e8671691
+719bb606
+52df1cb0
+0e8b61f7
+8b09d1cb
+17e3b215
+cbd9342c
+3af0801b
+bf2f1a18
+d2eccdf1
+2bd235fc
+7e44393f
+d42dca03
+81bbc6c0
+52e0df3e
+50ab8607
+e233d6f8
+f4100594
+2304bcdf
+212337a3
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-rwp2.reference_output
new file mode 100644
index 000000000..3b16780f4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum0-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+e1729a48
+23c25fe5
+7b89296c
+93fdcab8
+c20422bc
+d687cec0
+7dc59a3a
+d2d6b877
+ec7b841a
+edd34e17
+a749f9c5
+cf84b683
+00354cf7
+9a0371de
+08ceac39
+854a9657
+46f155c9
+e0c8f5ce
+53e8eb43
+137a9777
+75512786
+04d35f37
+ff1e5bef
+5c74e45e
+ceeb9530
+f3dc14b9
+6b9f15c4
+dc338383
+7d8cbfd1
+65c1a717
+9a6ab329
+5ae6a228
+aa664747
+d1054b39
+acca7f0d
+432779ee
+78380e62
+baccfbe9
+2cb7362c
+af949e5e
+8bf3eb49
+fc07c12d
+a96ec2b3
+5cd2875e
+7ca57133
+81e5461c
+708cc1b6
+9d02fc90
+1a5573da
+340e3287
+0b54aa22
+953b00b0
+b3d4bd2d
+d78921f5
+3c53d0e3
+224c0601
+2a17f99f
+88515dab
+f0e58650
+e8dac663
+164b622b
+3580cf96
+e5f0307e
+3d7c95f9
+a4ec83cb
+d5b4eb9c
+aaac3142
+8c8a18b2
+ee9a1937
+653d401a
+6f9fb997
+785036de
+75e7c03c
+dec34861
+a7298c66
+95a4d257
+320f584b
+341cf668
+d814d575
+807da245
+8cc5b788
+7cf84baf
+69b1dcbf
+3d061437
+615aca53
+2fa2df65
+08208d09
+7f216822
+bf209af8
+4410b2cf
+dae98554
+14b91c79
+e696f2bb
+2b97e71e
+c6880007
+c5ec6148
+a036d41c
+c8af107d
+6a013380
+7213516d
+3d55e42f
+20477680
+ae4839a1
+4652f62d
+76377abd
+d44d040f
+9e044706
+85986adb
+f5eb87da
+b0f96927
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-01.reference_output
new file mode 100644
index 000000000..00bbcd242
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-01.reference_output
@@ -0,0 +1,300 @@
+141a8dae
+deadbeef
+ffbfffff
+deadbeef
+ffdfffff
+deadbeef
+ffefffff
+deadbeef
+00000000
+deadbeef
+fffbffff
+deadbeef
+fffdffff
+deadbeef
+fffeffff
+deadbeef
+ffff7fff
+deadbeef
+ffffbfff
+deadbeef
+ffffdfff
+deadbeef
+ffffefff
+deadbeef
+fffff7ff
+deadbeef
+fffffbff
+deadbeef
+fffffdff
+deadbeef
+7ffffeff
+deadbeef
+bfffff7f
+deadbeef
+dfffffbf
+deadbeef
+efffffdf
+deadbeef
+00000000
+deadbeef
+bbfffff7
+deadbeef
+ddfffffb
+deadbeef
+eefffffd
+deadbeef
+f77ffffe
+deadbeef
+fbbfffff
+deadbeef
+fddfffff
+deadbeef
+feefffff
+deadbeef
+ff77ffff
+deadbeef
+ffbbffff
+deadbeef
+ffddffff
+deadbeef
+ffeeffff
+deadbeef
+fff77fff
+deadbeef
+fffbbfff
+deadbeef
+fffddfff
+deadbeef
+fffeefff
+deadbeef
+ffff77ff
+deadbeef
+ffffbbff
+deadbeef
+ffffddff
+deadbeef
+ffffeeff
+deadbeef
+fffff77f
+deadbeef
+fffffbbf
+deadbeef
+fffffddf
+deadbeef
+fffffeef
+deadbeef
+ffffff77
+deadbeef
+ffffffbb
+deadbeef
+ffffffdd
+deadbeef
+ffffffee
+deadbeef
+fffffff7
+deadbeef
+fffffffb
+deadbeef
+fffffffd
+deadbeef
+fffffffe
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+7fffffff
+deadbeef
+bfffffff
+deadbeef
+dfffffff
+deadbeef
+efffffff
+deadbeef
+f7ffffff
+deadbeef
+fbffffff
+deadbeef
+fdffffff
+deadbeef
+feffffff
+deadbeef
+ff7fffff
+deadbeef
+00400000
+deadbeef
+00200000
+deadbeef
+00100000
+deadbeef
+00080000
+deadbeef
+00040000
+deadbeef
+00020000
+deadbeef
+00010000
+deadbeef
+00008000
+deadbeef
+00004000
+deadbeef
+00002000
+deadbeef
+00001000
+deadbeef
+00000800
+deadbeef
+00000400
+deadbeef
+00000200
+deadbeef
+80000100
+deadbeef
+40000080
+deadbeef
+20000040
+deadbeef
+10000020
+deadbeef
+88000010
+deadbeef
+44000008
+deadbeef
+00800000
+deadbeef
+48fe4258
+deadbeef
+613d75d3
+deadbeef
+66fb97ac
+deadbeef
+49a78013
+deadbeef
+988de817
+deadbeef
+caf50a29
+deadbeef
+f3596998
+deadbeef
+b3b562d4
+deadbeef
+cad7c752
+deadbeef
+acf5ad33
+deadbeef
+fa2624f7
+deadbeef
+ff0e3b36
+deadbeef
+b754c610
+deadbeef
+25534403
+deadbeef
+8e38fd58
+deadbeef
+95a1838e
+deadbeef
+c97259c6
+deadbeef
+9054f86d
+deadbeef
+64f95b6c
+deadbeef
+22000004
+deadbeef
+11000002
+deadbeef
+08800001
+deadbeef
+04400000
+deadbeef
+02200000
+deadbeef
+01100000
+deadbeef
+00880000
+deadbeef
+00440000
+deadbeef
+00220000
+deadbeef
+00110000
+deadbeef
+00088000
+deadbeef
+00044000
+deadbeef
+00022000
+deadbeef
+00011000
+deadbeef
+00008800
+deadbeef
+00004400
+deadbeef
+00002200
+deadbeef
+00001100
+deadbeef
+00000880
+deadbeef
+00000440
+deadbeef
+00000220
+deadbeef
+00000110
+deadbeef
+00000088
+deadbeef
+00000044
+deadbeef
+00000022
+deadbeef
+00000011
+deadbeef
+00000008
+deadbeef
+00000004
+deadbeef
+00000002
+deadbeef
+00000001
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+80000000
+deadbeef
+40000000
+deadbeef
+20000000
+deadbeef
+10000000
+deadbeef
+08000000
+deadbeef
+04000000
+deadbeef
+02000000
+deadbeef
+01000000
+deadbeef
+fff7ffff
+deadbeef
+77ffffef
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-rwp1.reference_output
new file mode 100644
index 000000000..3ca3a5ae3
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+a2e80810
+f4656f6c
+d961217c
+6798a5d4
+8476d693
+6c023547
+11f9f1dc
+4c2b5063
+ee060e23
+b3d4af9c
+0dd09a3f
+9c55496a
+683c9e92
+fb777e0d
+e3c5c7fe
+8f7548c5
+acf6b0ac
+4f0e7329
+064b5fde
+fa4c54a2
+f9550431
+a638b0fc
+00e1a410
+a38b1ba1
+a03d8633
+29c6d61c
+5fc279cc
+d63929e3
+53074732
+6fef7bd6
+a89b2f61
+262ca7e5
+a7b98b50
+82a18c44
+85d9f49f
+f3461900
+adbb951d
+2f1add33
+04d557ae
+73c85a6d
+56913d4c
+a32d78a1
+1afc995c
+eacaece0
+e50366a3
+1535131f
+d625f8df
+0c6725bc
+301a5e8c
+4320e079
+d989213f
+9ff367d7
+1515b62e
+d5a6539a
+cde4023a
+783a692b
+28143244
+4546fcd2
+1a0fcf81
+c2836a06
+b278af09
+ceea7d4a
+4d8750f6
+311582b5
+d6d5b6ce
+26575c5d
+c173054d
+98607a13
+a76335cb
+d5dd100d
+b1a509ca
+bd7bb672
+d108d726
+5c008834
+b8b90b99
+61069c03
+964e2340
+c2f9ebc8
+75b1005e
+e1981c48
+8a4effa1
+1e67e3b7
+41c6b234
+bd83b67d
+2e3496b0
+5aff3a37
+97e6736f
+98054e6e
+c4490a21
+3441a740
+e44900e5
+ca6eb893
+4a013944
+8c3c4ebe
+51b7c65e
+b9ad09d2
+4a610436
+01c5933c
+b59efbc9
+fe3a6cc3
+18496d21
+b866479b
+1f569414
+2242ab36
+cd9ecdb5
+6895a163
+ee915c98
+58d5d905
+5e7aab0d
+a7b03dcc
+e8119989
+ac9e1ba5
+4994cd7b
+f4d1d996
+adc6dcda
+cd95e415
+52392325
+326a1bea
+0f65a0a0
+5f2a25d6
+4e022b5d
+01aed9b2
+046d5de1
+0cdd001c
+81fd5f28
+f909502b
+80d86322
+3ea924c8
+ff2041cf
+2eb8ca7c
+8007dd12
+efee114b
+480b1716
+26cf07ad
+b7f4e8e9
+d930f852
+7dfda0b2
+f92aad54
+47787ddf
+40d9a430
+c770a0cc
+50eb92e4
+f261884d
+c35a255f
+3ac9980c
+ecdd4d7a
+b5c1deae
+9c215786
+70f7b95d
+8f03e503
+c38a9e11
+8a992413
+3c7561ee
+7566dbec
+0c721591
+24a25aa0
+34ba63f9
+8326e2ab
+c3c2aa9b
+f422fda7
+121290f0
+bed9e518
+9579203c
+6bf7dd99
+794b7ed0
+19838e9e
+13cda113
+8d8bacf8
+d1188e13
+9003339c
+2ee771ec
+6ffccc63
+ea532d08
+3f220927
+22c9c2dc
+ec97dad6
+0efc21c8
+5f0c2dde
+d235139a
+6e5e995f
+0e1f9315
+a5663864
+087f9487
+6bd81cbd
+f99ff86d
+3141db26
+2ccaf8f5
+8cd346ab
+d335070a
+732cb954
+dab51b9a
+6f9ee25f
+fcdf5308
+07627f11
+033f5a9a
+d620a3eb
+d295e997
+7a9113e5
+c0d3767b
+2ed17e14
+e9712124
+85544ad5
+d65da8a0
+547acb3e
+ce1ed184
+57c26a21
+31e12e7b
+a83d95de
+24da1627
+7c995be6
+2adf56f3
+2e064048
+5481ae52
+d98b7509
+e49adff7
+990c7a8f
+0f50ed70
+8fd1cf1d
+afdb6983
+8e2a718e
+5f747b0c
+fe04416c
+9395682c
+44df7dad
+6c6a97d3
+bb208252
+e49cdff7
+9af382af
+11d91295
+1fd1c31d
+b2649788
+21cd81b0
+52135d56
+2de37f54
+8992ad76
+0824355b
+d5a529ec
+7cd1988e
+a3c87b65
+8b0a522a
+6ee5a2fa
+e61eaad6
+911a5d05
+19e15529
+6a5c5e66
+ce0c8056
+122b35a6
+4537a59e
+6e62ba40
+ba2d5373
+c3e3c21c
+d0bc9a3a
+400de13a
+e595873c
+3a10d2f0
+73c46959
+85e2cc35
+69ae119a
+d8b861fb
+4e9a0db5
+27479e04
+b165f24a
+341c25a0
+dd3f62c5
+83cb02c6
+fd714da0
+fde83690
+93c33c05
+2dc51a2a
+072cdbff
+4c00ea08
+d1b47ff5
+0446abfd
+4aa5ac76
+b7b9be0a
+64ee2c7c
+3fdf841e
+a9f0d65c
+c0207be1
+560f29a3
+adc99dd4
+374edbff
+331afb39
+eff33426
+7b613d2e
+8b0507a9
+74bd2e93
+971acc3b
+ca2882bd
+ec50e73a
+297ed021
+7f5191aa
+1ca9ad63
+6cfe896f
+3651cac8
+695b3c13
+c9ae3537
+96a4c3ec
+7b41ceab
+971d313c
+dd757d4f
+d7391954
+c0cbcfeb
+6a3a8fe5
+f7f576a7
+2ab7ea92
+037a39dd
+ce4e9ac9
+2898e114
+0b9e015d
+d41d2736
+3a2f646b
+d3a8b2c1
+e0ff68a5
+2c574d3e
+1f00975a
+07fa8737
+b5380c9b
+aa904212
+f090c4ed
+d6731adb
+b6616081
+b287d885
+6d8e7a4d
+35136183
+b2edaeb6
+04d364f3
+aa3ab552
+ce3ffa8f
+e728e41b
+ee9a5f02
+197b7a94
+1165a0fd
+e684856b
+b507e365
+8e307d8d
+5b92a160
+b395d8bc
+8d52a6d0
+cc6cf4a0
+51704b2a
+a57f8862
+56c36e59
+0f488484
+5b865286
+25154424
+f2bac320
+d5a23f5f
+e2c2e75a
+13b23e81
+1d3d18a5
+ec4dc17e
+697ab4d4
+b9800962
+4d8dffb0
+cf53753a
+5ad33c8f
+f9b135da
+9b07ed10
+afb2f00c
+f46693a6
+494b16d1
+ac0e83fd
+8b3a2a33
+a797efa4
+3d8ec31d
+6eaf30db
+cbaa32af
+9150cf24
+3455cd50
+1bd80da6
+303509d1
+b6283312
+dd7ca0df
+0e90436d
+9fedddc2
+5ce4e7ad
+7a9113c2
+dd44ac23
+4670c693
+58d124a2
+d8d7a99b
+7a6a777e
+615890f7
+d8d09b7b
+3b9b280f
+272f6484
+c464d7f0
+5f06f7ad
+82ddebd3
+0378c52f
+8af2e8bb
+890e4db0
+299a57c3
+939e1ac3
+24eeb7cf
+135fddc4
+0a75958c
+15f11c94
+195fe4fa
+f9513eaf
+ecd58e89
+0e73f1d7
+f1e8e0fc
+f18c0e28
+0e171f03
+9bdf9ce3
+4aef382f
+5f10fe15
+837816c9
+65bfbf65
+96a2883f
+f9da381e
+374b8630
+f6547cdd
+7603bde0
+24429275
+459bde24
+2de91157
+cc679c3b
+3c044f10
+1c9c360f
+c3fbb0ef
+e363c9f0
+fde3c55e
+386c49b8
+9b91fed3
+38519e48
+6da8ed7b
+6bea020d
+fdbc23ec
+fb24d57d
+96d51bf5
+39b60c4b
+6c7c6290
+143e5c29
+0556869a
+d277af9d
+18fa6fd8
+754f5600
+e7059027
+8ab0a9ff
+01bed3ee
+0434d582
+946a9cfe
+3a434eb7
+8f141663
+67cb9f1a
+01be696c
+3edc9bee
+ff5ce8db
+c8eb2bf1
+f2deb01f
+7b0c174a
+f27da73b
+4c18c344
+a064f908
+575addb6
+5f9b06f7
+a8a52249
+19be8a6c
+4122e410
+1f64f1e7
+8326cb86
+2ce74aab
+370e0841
+52df1cb0
+0e8b61f7
+07a7da7b
+4e455601
+47773f9c
+6356640f
+bf2f1a18
+d2eccdf1
+08d3e511
+563ae885
+f72c1aee
+a9c5177a
+52e0df3e
+50ab8607
+66b4caf8
+489fa6eb
+a785b0df
+75b2d8f9
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-rwp2.reference_output
new file mode 100644
index 000000000..583573940
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sha512sum1-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+4cee0633
+47b1c0f0
+7b89296c
+93fdcab8
+ee060e23
+b3d4af9c
+7dc59a3a
+d2d6b877
+52a9433b
+35db1d22
+a749f9c5
+cf84b683
+1549b6ae
+d8b5e90f
+08ceac39
+854a9657
+e00b4442
+306c132e
+53e8eb43
+137a9777
+59892612
+2c757d41
+ff1e5bef
+5c74e45e
+5fc279cc
+d63929e3
+6b9f15c4
+dc338383
+0c836d5a
+53d78848
+9a6ab329
+5ae6a228
+b4853c61
+7422087a
+acca7f0d
+432779ee
+bf608ba7
+94a0396b
+2cb7362c
+af949e5e
+48b8f3be
+3a2fce2c
+a96ec2b3
+5cd2875e
+e50366a3
+1535131f
+708cc1b6
+9d02fc90
+962b5f6e
+7e8f952b
+0b54aa22
+953b00b0
+d3a6b207
+da075bf7
+3c53d0e3
+224c0601
+68159858
+b72a684b
+f0e58650
+e8dac663
+806352cc
+492feb9e
+e5f0307e
+3d7c95f9
+4d8750f6
+311582b5
+aaac3142
+8c8a18b2
+45a04517
+900fc712
+6f9fb997
+785036de
+1d720d82
+670ff088
+a7298c66
+95a4d257
+4e81a705
+7950673c
+d814d575
+807da245
+5b462887
+42676b83
+69b1dcbf
+3d061437
+8a4effa1
+1e67e3b7
+08208d09
+7f216822
+7e3f323e
+0663b30b
+dae98554
+14b91c79
+9cf34192
+48e82308
+c6880007
+c5ec6148
+9e93ddb2
+a47da2ca
+6a013380
+7213516d
+51d7fb2c
+3454d450
+ae4839a1
+4652f62d
+b59efbc9
+fe3a6cc3
+9e044706
+85986adb
+329a53a5
+6014b524
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-01.reference_output
new file mode 100644
index 000000000..1216d0f88
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-01.reference_output
@@ -0,0 +1,300 @@
+9945f84c
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+7ffefeff
+deadbeef
+bfff7f7f
+deadbeef
+dfffbfbf
+deadbeef
+efffdfdf
+deadbeef
+f7ffefef
+deadbeef
+fbfff7f7
+deadbeef
+fdfffbfb
+deadbeef
+fefffdfd
+deadbeef
+ff7ffefe
+deadbeef
+7fbfff7f
+deadbeef
+bfdfffbf
+deadbeef
+dfefffdf
+deadbeef
+eff7ffef
+deadbeef
+f7fbfff7
+deadbeef
+fbfdfffb
+deadbeef
+fdfefffd
+deadbeef
+feff7ffe
+deadbeef
+7f7fbfff
+deadbeef
+bfbfdfff
+deadbeef
+dfdfefff
+deadbeef
+efeff7ff
+deadbeef
+f7f7fbff
+deadbeef
+fbfbfdff
+deadbeef
+fdfdfeff
+deadbeef
+fefeff7f
+deadbeef
+ff7f7fbf
+deadbeef
+ffbfbfdf
+deadbeef
+ffdfdfef
+deadbeef
+ffefeff7
+deadbeef
+fff7f7fb
+deadbeef
+fffbfbfd
+deadbeef
+fffdfdfe
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00020201
+deadbeef
+d9217d2d
+deadbeef
+4de5f968
+deadbeef
+bda6e514
+deadbeef
+6decfd5c
+deadbeef
+bd986f74
+deadbeef
+47a2ae11
+deadbeef
+23c8dcdb
+deadbeef
+0b26483e
+deadbeef
+f64218e7
+deadbeef
+a43f58a9
+deadbeef
+f53972fd
+deadbeef
+78c5d629
+deadbeef
+efe34f0e
+deadbeef
+3cf49177
+deadbeef
+e4111619
+deadbeef
+5187e8eb
+deadbeef
+7d82c94f
+deadbeef
+b80b391f
+deadbeef
+3ecac1d1
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+80010100
+deadbeef
+40008080
+deadbeef
+20004040
+deadbeef
+10002020
+deadbeef
+08001010
+deadbeef
+04000808
+deadbeef
+02000404
+deadbeef
+01000202
+deadbeef
+00800101
+deadbeef
+80400080
+deadbeef
+40200040
+deadbeef
+20100020
+deadbeef
+10080010
+deadbeef
+08040008
+deadbeef
+04020004
+deadbeef
+02010002
+deadbeef
+01008001
+deadbeef
+80804000
+deadbeef
+40402000
+deadbeef
+20201000
+deadbeef
+10100800
+deadbeef
+08080400
+deadbeef
+04040200
+deadbeef
+02020100
+deadbeef
+01010080
+deadbeef
+00808040
+deadbeef
+00404020
+deadbeef
+00202010
+deadbeef
+00101008
+deadbeef
+00080804
+deadbeef
+00040402
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-rwp1.reference_output
new file mode 100644
index 000000000..0cb6b3d55
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+c602f5f0
+ffffffff
+bd8bdc9c
+6c023547
+8476d693
+6c023547
+c4fcf976
+ffffffff
+3b030689
+00000000
+0dd09a3f
+9c55496a
+989aff85
+ffffffff
+142428f1
+93fdcab8
+acf6b0ac
+4f0e7329
+20ceb018
+00000000
+dfd0ebf7
+5c74e45e
+00e1a410
+a38b1ba1
+8b8985d2
+ffffffff
+74767a2d
+00000000
+53074732
+6fef7bd6
+d3ed859a
+ffffffff
+d30be189
+5c74e45e
+85d9f49f
+f3461900
+df0fc027
+ffffffff
+76610294
+a32d78a1
+56913d4c
+a32d78a1
+0e7308c3
+00000000
+f18cf73c
+ffffffff
+d625f8df
+0c6725bc
+6c6beb38
+00000000
+15daadeb
+5cd2875f
+1515b62e
+d5a6539a
+5225c02f
+00000000
+b7d5f051
+3d7c95f9
+1a0fcf81
+c2836a06
+9a92f9aa
+ffffffff
+656d0655
+00000000
+d6d5b6ce
+26575c5d
+102586c8
+00000000
+f615b746
+3d7c95f9
+b1a509ca
+bd7bb672
+e823ffe3
+ffffffff
+8192235c
+c2f9ebc8
+964e2340
+c2f9ebc8
+4c898ef0
+00000000
+b376710f
+ffffffff
+41c6b234
+bd83b67d
+a8ca593a
+ffffffff
+127c35f9
+3d061437
+c4490a21
+3441a740
+421ec13b
+00000000
+ec56f89a
+4652f62d
+51b7c65e
+b9ad09d2
+b287d992
+ffffffff
+4d78266d
+00000000
+18496d21
+b866479b
+50d11f83
+00000000
+ff195924
+4652f62d
+ee915c98
+58d5d905
+7519b067
+00000000
+c37282e3
+0b2e2669
+4994cd7b
+f4d1d996
+faf8a8c1
+ffffffff
+0507573e
+00000000
+0f65a0a0
+5f2a25d6
+8564fe75
+ffffffff
+3bd030f9
+0b2e2669
+81fd5f28
+f909502b
+c5120dd1
+ffffffff
+baea2f3c
+efee114b
+8007dd12
+efee114b
+3598f81d
+00000000
+ca6707e2
+ffffffff
+7dfda0b2
+f92aad54
+c7d83fb2
+ffffffff
+47d0629f
+1011eeb4
+f261884d
+c35a255f
+21eaf76a
+00000000
+aee2b1c8
+70fc1afc
+70f7b95d
+8f03e503
+ed3fe253
+ffffffff
+12c01dac
+00000000
+0c721591
+24a25aa0
+c37b2f6d
+ffffffff
+5283760f
+70fc1afc
+121290f0
+bed9e518
+16d354f1
+00000000
+fae10a1d
+72745307
+13cda113
+8d8bacf8
+caa9a0af
+ffffffff
+35565f50
+00000000
+ea532d08
+3f220927
+1618e87a
+00000000
+024b4766
+72745308
+d235139a
+6e5e995f
+9f278254
+ffffffff
+994785c6
+3141db26
+f99ff86d
+3141db26
+36b4d0a1
+00000000
+c94b2f5e
+ffffffff
+dab51b9a
+6f9ee25f
+87b79b45
+ffffffff
+8e17a2d7
+cebe24d8
+d295e997
+7a9113e5
+2a696319
+00000000
+03cb3446
+ab8534c1
+d65da8a0
+547acb3e
+3c4d45b7
+00000000
+c3b2ba48
+ffffffff
+24da1627
+7c995be6
+bcb811da
+ffffffff
+e65a6939
+ab8534c0
+e49adff7
+990c7a8f
+6ecaf90b
+00000000
+ce417df8
+01fbbe93
+5f747b0c
+fe04416c
+419add5a
+00000000
+be6522a5
+ffffffff
+e49cdff7
+9af382af
+62ccf907
+00000000
+03587dfa
+01fbbe94
+52135d56
+2de37f54
+ce0555d4
+ffffffff
+9232d14e
+8b0a522a
+a3c87b65
+8b0a522a
+c5f5f7b2
+ffffffff
+3a0a084d
+00000000
+6a5c5e66
+ce0c8056
+6e2c460a
+00000000
+ca63caa4
+74f5add5
+c3e3c21c
+d0bc9a3a
+805e7c5c
+ffffffff
+fa434f96
+69ae119a
+85e2cc35
+69ae119a
+d811acfb
+ffffffff
+27ee5304
+00000000
+341c25a0
+dd3f62c5
+47170df0
+00000000
+c13441ba
+9651ee65
+2dc51a2a
+072cdbff
+93a515fb
+ffffffff
+dbe3540e
+64ee2c7c
+b7b9be0a
+64ee2c7c
+b8d0c416
+ffffffff
+472f3be9
+00000000
+adc99dd4
+374edbff
+055b6f1c
+00000000
+4da1b111
+9b11d383
+74bd2e93
+971acc3b
+53c6e100
+00000000
+b090b39c
+93017690
+1ca9ad63
+6cfe896f
+15355209
+00000000
+eacaadf6
+ffffffff
+7b41ceab
+971d313c
+658a6ede
+00000000
+48e0c17a
+93017691
+f7f576a7
+2ab7ea92
+f057d6a2
+ffffffff
+dbb50e6b
+3a2f646b
+d41d2736
+3a2f646b
+a03ee2a4
+ffffffff
+5fc11d5b
+00000000
+07fa8737
+b5380c9b
+fc9ae6cd
+ffffffff
+287dbf96
+c5d09b94
+b287d885
+6d8e7a4d
+0c3db6ef
+00000000
+3dfdb39f
+18d71be4
+ce3ffa8f
+e728e41b
+44d5796c
+00000000
+bb2a8693
+ffffffff
+b507e365
+8e307d8d
+7c0a4200
+00000000
+adca4770
+18d71be4
+51704b2a
+a57f8862
+27b2bd68
+00000000
+2af781b7
+2a5dc0a0
+f2bac320
+d5a23f5f
+017d67b0
+00000000
+fe82984f
+ffffffff
+697ab4d4
+b9800962
+f5bbcef3
+ffffffff
+03010bd2
+2a5dc0a0
+9b07ed10
+afb2f00c
+4efcfa29
+00000000
+1694ea72
+c2713ce2
+a797efa4
+3d8ec31d
+5701e9c4
+00000000
+a8fe163b
+ffffffff
+1bd80da6
+303509d1
+b08f7621
+ffffffff
+08f7867c
+c2713ce2
+5ce4e7ad
+7a9113c2
+5a7104dd
+00000000
+dfe48c5c
+9ea76f08
+7a6a777e
+615890f7
+40787f5e
+00000000
+bf8780a1
+ffffffff
+5f06f7ad
+82ddebd3
+bdb3131e
+ffffffff
+43489b9f
+9ea76f08
+939e1ac3
+24eeb7cf
+9a2cbad8
+ffffffff
+9c827b88
+ecd58e89
+f9513eaf
+ecd58e89
+267393ff
+00000000
+d98c6c00
+ffffffff
+9bdf9ce3
+4aef382f
+1d216c6b
+00000000
+23d02dbb
+132a7176
+f9da381e
+374b8630
+3d97f659
+00000000
+ef8118f1
+339863c4
+2de91157
+cc679c3b
+dd65e4de
+ffffffff
+229a1b21
+00000000
+fde3c55e
+386c49b8
+b0d48362
+ffffffff
+82eb720a
+339863c4
+fdbc23ec
+fb24d57d
+c222016f
+ffffffff
+388b780a
+d277af9d
+0556869a
+d277af9d
+a56fb83d
+ffffffff
+5a9047c2
+00000000
+01bed3ee
+0434d582
+dbc50c90
+ffffffff
+d66e85f5
+2d885062
+01be696c
+3edc9bee
+afb4b213
+ffffffff
+a236ead7
+4c18c344
+f27da73b
+4c18c344
+47443424
+00000000
+b8bbcbdb
+ffffffff
+19be8a6c
+4122e410
+70726122
+00000000
+7df4b9e6
+b3e73cbb
+52df1cb0
+0e8b61f7
+d586d9ab
+ffffffff
+95563c4c
+d2eccdf1
+bf2f1a18
+d2eccdf1
+d52a5538
+ffffffff
+2ad5aac7
+00000000
+52e0df3e
+50ab8607
+2d22065a
+00000000
+6df2ec41
+2d13320e
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-rwp2.reference_output
new file mode 100644
index 000000000..6bb86437b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p0-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+fd01f379
+ffffffff
+7b89296c
+93fdcab8
+3b030689
+00000000
+7dc59a3a
+d2d6b877
+c285154a
+ffffffff
+a749f9c5
+cf84b683
+c7313c18
+ffffffff
+08ceac39
+854a9657
+cde4cfb5
+ffffffff
+53e8eb43
+137a9777
+54b8ca35
+00000000
+ff1e5bef
+5c74e45e
+74767a2d
+00000000
+6b9f15c4
+dc338383
+7e3c4a2d
+00000000
+9a6ab329
+5ae6a228
+295fd4c8
+00000000
+acca7f0d
+432779ee
+c62f3dc0
+ffffffff
+2cb7362c
+af949e5e
+2e83371b
+00000000
+a96ec2b3
+5cd2875e
+f18cf73c
+ffffffff
+708cc1b6
+9d02fc90
+ea634c4e
+ffffffff
+0b54aa22
+953b00b0
+f644f89d
+ffffffff
+3c53d0e3
+224c0601
+3a346e3c
+00000000
+f0e58650
+e8dac663
+3748c67a
+00000000
+e5f0307e
+3d7c95f9
+656d0655
+00000000
+aaac3142
+8c8a18b2
+904be14f
+ffffffff
+6f9fb997
+785036de
+23c24877
+00000000
+a7298c66
+95a4d257
+ecfc0f7b
+ffffffff
+d814d575
+807da245
+5b558eec
+00000000
+69b1dcbf
+3d061437
+b376710f
+ffffffff
+08208d09
+7f216822
+53288f58
+00000000
+dae98554
+14b91c79
+034a9932
+00000000
+c6880007
+c5ec6148
+d687829a
+ffffffff
+6a013380
+7213516d
+0f66e756
+00000000
+ae4839a1
+4652f62d
+4d78266d
+00000000
+9e044706
+85986adb
+18877632
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-01.reference_output
new file mode 100644
index 000000000..36106f46b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-01.reference_output
@@ -0,0 +1,300 @@
+2691a37c
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+00000000
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
+7fbfbfff
+deadbeef
+bfdfdfff
+deadbeef
+dfefefff
+deadbeef
+eff7f7ff
+deadbeef
+f7fbfbff
+deadbeef
+fbfdfdff
+deadbeef
+fdfefeff
+deadbeef
+feff7f7f
+deadbeef
+ff7fbfbf
+deadbeef
+ffbfdfdf
+deadbeef
+ffdfefef
+deadbeef
+ffeff7f7
+deadbeef
+fff7fbfb
+deadbeef
+fffbfdfd
+deadbeef
+fffdfefe
+deadbeef
+7ffeff7f
+deadbeef
+bfff7fbf
+deadbeef
+dfffbfdf
+deadbeef
+efffdfef
+deadbeef
+f7ffeff7
+deadbeef
+fbfff7fb
+deadbeef
+fdfffbfd
+deadbeef
+fefffdfe
+deadbeef
+7f7ffeff
+deadbeef
+bfbfff7f
+deadbeef
+dfdfffbf
+deadbeef
+efefffdf
+deadbeef
+f7f7ffef
+deadbeef
+fbfbfff7
+deadbeef
+fdfdfffb
+deadbeef
+fefefffd
+deadbeef
+ff7f7ffe
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00808001
+deadbeef
+c1786071
+deadbeef
+d86c820f
+deadbeef
+90826890
+deadbeef
+2d25edc5
+deadbeef
+f4a74528
+deadbeef
+7237021d
+deadbeef
+59350989
+deadbeef
+949ecc9d
+deadbeef
+ef813217
+deadbeef
+707b6d0c
+deadbeef
+e2aa4249
+deadbeef
+61196a50
+deadbeef
+097695a7
+deadbeef
+1c93fa5b
+deadbeef
+8f03f583
+deadbeef
+82537a7e
+deadbeef
+0e2cf4af
+deadbeef
+584138b4
+deadbeef
+a9e2ed42
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+00000000
+deadbeef
+80404000
+deadbeef
+40202000
+deadbeef
+20101000
+deadbeef
+10080800
+deadbeef
+08040400
+deadbeef
+04020200
+deadbeef
+02010100
+deadbeef
+01008080
+deadbeef
+00804040
+deadbeef
+00402020
+deadbeef
+00201010
+deadbeef
+00100808
+deadbeef
+00080404
+deadbeef
+00040202
+deadbeef
+00020101
+deadbeef
+80010080
+deadbeef
+40008040
+deadbeef
+20004020
+deadbeef
+10002010
+deadbeef
+08001008
+deadbeef
+04000804
+deadbeef
+02000402
+deadbeef
+01000201
+deadbeef
+80800100
+deadbeef
+40400080
+deadbeef
+20200040
+deadbeef
+10100020
+deadbeef
+08080010
+deadbeef
+04040008
+deadbeef
+02020004
+deadbeef
+01010002
+deadbeef
+ffffffff
+deadbeef
+ffffffff
+deadbeef
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-rwp1.reference_output
new file mode 100644
index 000000000..d2a02542b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-rwp1.reference_output
@@ -0,0 +1,488 @@
+e9ce59bf
+9baab409
+1ae54a74
+00000000
+616c6318
+93fdcab8
+8476d693
+6c023547
+a6fd2fc3
+ffffffff
+5902d03c
+00000000
+0dd09a3f
+9c55496a
+5f49f49a
+00000000
+dad31e06
+93fdcab8
+acf6b0ac
+4f0e7329
+a2f69d8f
+ffffffff
+5de8c660
+a38b1ba1
+00e1a410
+a38b1ba1
+dae9d4b2
+ffffffff
+25162b4d
+00000000
+53074732
+6fef7bd6
+69b7ed12
+00000000
+68d64901
+5c74e45f
+85d9f49f
+f3461900
+3054da89
+00000000
+993a183a
+5cd2875e
+56913d4c
+a32d78a1
+6e1c5e9a
+00000000
+91e3a165
+ffffffff
+d625f8df
+0c6725bc
+45a10131
+00000000
+ef0fc3e4
+5cd2875e
+1515b62e
+d5a6539a
+d908367f
+ffffffff
+3cf80601
+c2836a06
+1a0fcf81
+c2836a06
+3d424561
+00000000
+c2bdba9e
+ffffffff
+d6d5b6ce
+26575c5d
+6ad9b77f
+00000000
+50c9e7fd
+3d7c95fa
+b1a509ca
+bd7bb672
+d018839c
+ffffffff
+b9a95f23
+c2f9ebc8
+964e2340
+c2f9ebc8
+27a54f76
+00000000
+d85ab089
+ffffffff
+41c6b234
+bd83b67d
+02fc718e
+00000000
+6cae4e4d
+3d061437
+c4490a21
+3441a740
+51bbcc80
+00000000
+fff3f521
+4652f62d
+51b7c65e
+b9ad09d2
+9db03566
+ffffffff
+624fca99
+00000000
+18496d21
+b866479b
+3e55c5b3
+00000000
+ec9dff54
+4652f62d
+ee915c98
+58d5d905
+0caa637e
+00000000
+bac151fa
+0b2e2669
+4994cd7b
+f4d1d996
+928da3d7
+ffffffff
+6d725c28
+00000000
+0f65a0a0
+5f2a25d6
+8f3215c2
+ffffffff
+459d4846
+0b2e2669
+81fd5f28
+f909502b
+ba29e179
+ffffffff
+c5d1c394
+efee114b
+8007dd12
+efee114b
+e7ce9eff
+ffffffff
+18316100
+00000000
+7dfda0b2
+f92aad54
+f49a609c
+ffffffff
+74928389
+1011eeb4
+f261884d
+c35a255f
+10be41b9
+00000000
+9fb6071b
+70fc1afc
+70f7b95d
+8f03e503
+02e17afa
+00000000
+fd1e8505
+ffffffff
+0c721591
+24a25aa0
+ce3caaa2
+ffffffff
+5d44f144
+70fc1afc
+121290f0
+bed9e518
+226390b1
+00000000
+ce51ce5d
+72745307
+13cda113
+8d8bacf8
+4acdce25
+00000000
+b53231da
+ffffffff
+ea532d08
+3f220927
+f8a271b7
+ffffffff
+e4d4d0a3
+72745307
+d235139a
+6e5e995f
+96916009
+ffffffff
+90f1679b
+3141db26
+f99ff86d
+3141db26
+3355cb5e
+00000000
+ccaa34a1
+ffffffff
+dab51b9a
+6f9ee25f
+9a152c4d
+ffffffff
+a07533df
+cebe24d8
+d295e997
+7a9113e5
+edb74a29
+ffffffff
+c4151d76
+547acb3e
+d65da8a0
+547acb3e
+5266ed5a
+00000000
+ad9912a5
+ffffffff
+24da1627
+7c995be6
+3c5be941
+00000000
+65fe40a0
+ab8534c1
+e49adff7
+990c7a8f
+709360d5
+00000000
+d018e426
+01fbbe93
+5f747b0c
+fe04416c
+e4ddee8b
+ffffffff
+1b221174
+00000000
+e49cdff7
+9af382af
+709563d6
+00000000
+1120e8c9
+01fbbe94
+52135d56
+2de37f54
+57917df1
+00000000
+0ba6f96b
+74f5add5
+a3c87b65
+8b0a522a
+2cab4ebc
+00000000
+d354b143
+ffffffff
+6a5c5e66
+ce0c8056
+765a4567
+00000000
+d291ca01
+74f5add5
+c3e3c21c
+d0bc9a3a
+2c8c520c
+00000000
+569161c6
+9651ee65
+85e2cc35
+69ae119a
+f93affa2
+ffffffff
+06c5005d
+00000000
+341c25a0
+dd3f62c5
+f6d631bc
+ffffffff
+70f36586
+9651ee65
+2dc51a2a
+072cdbff
+b5c6ee45
+ffffffff
+fd80afb0
+64ee2c7c
+b7b9be0a
+64ee2c7c
+6de73909
+00000000
+9218c6f6
+ffffffff
+adc99dd4
+374edbff
+89752ffe
+ffffffff
+d1bb71f3
+9b11d382
+74bd2e93
+971acc3b
+aa4eca5a
+ffffffff
+491898c6
+6cfe896f
+1ca9ad63
+6cfe896f
+7b9677e1
+00000000
+8469881e
+ffffffff
+7b41ceab
+971d313c
+c9a9d3ec
+ffffffff
+ad002688
+93017690
+f7f576a7
+2ab7ea92
+1f5d77e6
+00000000
+34bfaf2f
+c5d09b94
+d41d2736
+3a2f646b
+dcec43ab
+ffffffff
+2313bc54
+00000000
+07fa8737
+b5380c9b
+dfe2f989
+ffffffff
+0bc5d252
+c5d09b94
+b287d885
+6d8e7a4d
+1c1c422a
+00000000
+2ddc475a
+18d71be4
+ce3ffa8f
+e728e41b
+749f026d
+00000000
+8b60fd92
+ffffffff
+b507e365
+8e307d8d
+f66fba17
+ffffffff
+282fbf87
+18d71be4
+51704b2a
+a57f8862
+e1cddbb7
+ffffffff
+ec88e768
+d5a23f5f
+f2bac320
+d5a23f5f
+0353e71c
+00000000
+fcac18e3
+ffffffff
+697ab4d4
+b9800962
+59243d33
+00000000
+66697a12
+2a5dc0a0
+9b07ed10
+afb2f00c
+e5c22365
+ffffffff
+bdaa333e
+3d8ec31d
+a797efa4
+3d8ec31d
+82167798
+ffffffff
+7de98867
+00000000
+1bd80da6
+303509d1
+ce06ec4c
+ffffffff
+266efca7
+c2713ce2
+5ce4e7ad
+7a9113c2
+f99c3bac
+ffffffff
+7c09b32d
+615890f7
+7a6a777e
+615890f7
+fee87f70
+ffffffff
+0117808f
+00000000
+5f06f7ad
+82ddebd3
+f27fdb55
+ffffffff
+781563d6
+9ea76f08
+939e1ac3
+24eeb7cf
+ff361c01
+ffffffff
+f998dd51
+ecd58e89
+f9513eaf
+ecd58e89
+31fa6a98
+00000000
+ce059567
+ffffffff
+9bdf9ce3
+4aef382f
+2463bec2
+00000000
+2b128012
+132a7176
+f9da381e
+374b8630
+eaa9a9ef
+ffffffff
+38bf4747
+cc679c3b
+2de91157
+cc679c3b
+0ed4732b
+00000000
+f12b8cd4
+ffffffff
+fde3c55e
+386c49b8
+b0324a4d
+ffffffff
+824938f5
+339863c4
+fdbc23ec
+fb24d57d
+1a348323
+00000000
+e09dfa46
+2d885062
+0556869a
+d277af9d
+0b192f72
+00000000
+f4e6d08d
+ffffffff
+01bed3ee
+0434d582
+9f490c58
+ffffffff
+99f285bd
+2d885062
+01be696c
+3edc9bee
+8308b687
+ffffffff
+8e8aee43
+4c18c344
+f27da73b
+4c18c344
+bc1960d6
+ffffffff
+43e69f29
+00000000
+19be8a6c
+4122e410
+6a8459f6
+00000000
+7806b2ba
+b3e73cbb
+52df1cb0
+0e8b61f7
+84ae5a51
+ffffffff
+c47ebfb6
+d2eccdf1
+bf2f1a18
+d2eccdf1
+3e7cd202
+00000000
+c1832dfd
+ffffffff
+52e0df3e
+50ab8607
+a2568621
+ffffffff
+e3276c08
+2d13320d
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-rwp2.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-rwp2.reference_output
new file mode 100644
index 000000000..8a8dcc656
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm3p1-rwp2.reference_output
@@ -0,0 +1,112 @@
+924770d3
+08577eb1
+43e79a48
+00000000
+7b89296c
+93fdcab8
+5902d03c
+00000000
+7dc59a3a
+d2d6b877
+ade64615
+ffffffff
+a749f9c5
+cf84b683
+b9788e9d
+ffffffff
+08ceac39
+854a9657
+42564f08
+00000000
+53e8eb43
+137a9777
+87e0b6c2
+ffffffff
+ff1e5bef
+5c74e45e
+25162b4d
+00000000
+6b9f15c4
+dc338383
+0348ef81
+00000000
+9a6ab329
+5ae6a228
+57334b45
+00000000
+acca7f0d
+432779ee
+159acc57
+00000000
+2cb7362c
+af949e5e
+a1b77bec
+ffffffff
+a96ec2b3
+5cd2875e
+91e3a165
+ffffffff
+708cc1b6
+9d02fc90
+cb6fbf90
+ffffffff
+0b54aa22
+953b00b0
+4f4005dd
+00000000
+3c53d0e3
+224c0601
+a5bc6722
+ffffffff
+f0e58650
+e8dac663
+1bb58ce1
+00000000
+e5f0307e
+3d7c95f9
+c2bdba9e
+ffffffff
+aaac3142
+8c8a18b2
+1358320c
+00000000
+6f9fb997
+785036de
+78e3c184
+00000000
+a7298c66
+95a4d257
+52494b34
+00000000
+d814d575
+807da245
+08423315
+00000000
+69b1dcbf
+3d061437
+d85ab089
+ffffffff
+08208d09
+7f216822
+ca20195f
+ffffffff
+dae98554
+14b91c79
+b22e9ce2
+ffffffff
+c6880007
+c5ec6148
+c568a743
+ffffffff
+6a013380
+7213516d
+33f40619
+00000000
+ae4839a1
+4652f62d
+624fca99
+00000000
+9e044706
+85986adb
+3ec80a27
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ed-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ed-01.reference_output
new file mode 100644
index 000000000..152a36d41
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ed-01.reference_output
@@ -0,0 +1,564 @@
+3031cefc
+00000000
+96d167a5
+ffffffff
+8c898ebb
+ffffffff
+c9967a60
+ffffffff
+22aec608
+00000000
+e6bfeae8
+ffffffff
+3232f32b
+00000000
+04953bf1
+00000000
+ecde94d8
+ffffffff
+24a9cd7a
+00000000
+0adb9eb2
+00000000
+6464197d
+00000000
+fac3cd71
+ffffffff
+3b68e1f7
+00000000
+7101171e
+00000000
+00000000
+00000000
+4b4b09aa
+00000000
+8fac5730
+ffffffff
+fcc35ba8
+ffffffff
+9a40e0a5
+ffffffff
+79f9277c
+00000000
+390605c2
+00000000
+a1dd8081
+ffffffff
+4413ab47
+00000000
+1a1b8561
+00000000
+93dbd8b1
+ffffffff
+c2271d1c
+ffffffff
+d4321ed7
+ffffffff
+a4a52d73
+ffffffff
+ab45461b
+ffffffff
+8b7f0001
+ffffffff
+ac237baf
+ffffffff
+9796ed8c
+ffffffff
+537271d0
+00000000
+bf8bc4c5
+ffffffff
+802d5d83
+ffffffff
+1b1acb22
+00000000
+c2cac9e5
+ffffffff
+1ddb2a2b
+00000000
+0955b00a
+00000000
+7a7b891d
+00000000
+7ff8fb6e
+00000000
+2e34f2f3
+00000000
+52853f51
+00000000
+fcfd2f39
+ffffffff
+85cfccaf
+ffffffff
+722dbbba
+00000000
+428e2841
+00000000
+c1c06e49
+ffffffff
+651b189f
+00000000
+95493c3d
+ffffffff
+b9762fba
+ffffffff
+d3d2eddc
+ffffffff
+859695ce
+ffffffff
+0c4e9e9f
+00000000
+0eab790d
+00000000
+6b6af045
+00000000
+ab181b6a
+ffffffff
+6dbe0b0a
+00000000
+4c3ca84f
+00000000
+39386380
+00000000
+7ff4f75e
+00000000
+e6231110
+ffffffff
+d01410d3
+ffffffff
+fffedff6
+ffffffff
+9a24276f
+ffffffff
+a9453c3d
+ffffffff
+e41c28e7
+ffffffff
+454476e1
+00000000
+8acbc88c
+ffffffff
+92e2bcbd
+ffffffff
+a81470ab
+ffffffff
+8b8adc99
+ffffffff
+73a9aa13
+00000000
+90f8a0a1
+ffffffff
+8bda9988
+ffffffff
+b7b6d6ab
+ffffffff
+1d8c8f54
+00000000
+6ad57b7a
+00000000
+abddb2a8
+ffffffff
+f1f04a7d
+ffffffff
+403f3cbe
+00000000
+7d8e3332
+00000000
+b41c68b7
+ffffffff
+2d2c7897
+00000000
+057774cf
+00000000
+d47c1415
+ffffffff
+4042be43
+00000000
+b3b2beb3
+ffffffff
+aefffce8
+ffffffff
+e18dd4d5
+ffffffff
+0ad76509
+00000000
+0e0fd561
+00000000
+e6a3a0f0
+ffffffff
+805d6968
+ffffffff
+d86e02db
+ffffffff
+e0e16335
+ffffffff
+200e0d9f
+00000000
+3f048b8a
+00000000
+444cb847
+00000000
+c8c96c16
+ffffffff
+a8000305
+ffffffff
+8c012120
+ffffffff
+0b872008
+00000000
+acad6e6c
+ffffffff
+781714c6
+00000000
+e4dc9091
+ffffffff
+e6f8b6e5
+ffffffff
+9f9ea491
+ffffffff
+311e1d8a
+00000000
+46cc2e2f
+00000000
+7c538b7f
+00000000
+d3d2b8cd
+ffffffff
+432320c1
+00000000
+6a408a8b
+00000000
+3ac55f39
+00000000
+a9a8212a
+ffffffff
+6f5e5dac
+00000000
+ad645554
+ffffffff
+d10f42d2
+ffffffff
+29283285
+00000000
+f4151678
+ffffffff
+28ef5f5e
+00000000
+a91425aa
+ffffffff
+4c4d6fb9
+00000000
+a3040732
+ffffffff
+cbbfe0e1
+ffffffff
+2d3a832e
+00000000
+141576f4
+00000000
+92c7c4c4
+ffffffff
+89e0f9f8
+ffffffff
+43a67540
+00000000
+fdfc0867
+ffffffff
+79b5b641
+00000000
+7eb44647
+00000000
+507aa653
+00000000
+01002ca3
+00000000
+ae0c0f2b
+ffffffff
+9ecbdddc
+ffffffff
+0eea6c0d
+00000000
+6c6d7395
+00000000
+1dcdce55
+00000000
+0f24afae
+00000000
+793bc67a
+00000000
+2c2d6cc6
+00000000
+e2545737
+ffffffff
+bb5a6160
+ffffffff
+9c465a9f
+ffffffff
+8283c0c0
+ffffffff
+04e1e298
+00000000
+7d747574
+00000000
+a74893a4
+ffffffff
+4e4f3000
+00000000
+9d0003e4
+ffffffff
+b0925a5b
+ffffffff
+68bdad6b
+00000000
+f9f8db58
+ffffffff
+7c2b2822
+00000000
+30286c6d
+00000000
+77767574
+00000000
+2425a2f0
+00000000
+693b3823
+00000000
+54c9edec
+00000000
+3ca2ee3f
+00000000
+0d0cec93
+00000000
+b8828157
+ffffffff
+12e29c9d
+00000000
+e74cc7e4
+ffffffff
+fbfa48dd
+ffffffff
+f07477ed
+ffffffff
+12f28889
+00000000
+ef4bccec
+ffffffff
+6f6e686d
+00000000
+411f1c3b
+00000000
+69505d5c
+00000000
+f742d1f4
+ffffffff
+1f1e7b02
+00000000
+49e8ebc0
+00000000
+b1f72627
+ffffffff
+023b5901
+00000000
+eeef038f
+ffffffff
+38737016
+00000000
+506d6160
+00000000
+f0b61af3
+ffffffff
+bcbda644
+ffffffff
+ba8e8d6d
+ffffffff
+c4b32f2e
+ffffffff
+020d5701
+00000000
+9a9b28e8
+ffffffff
+2d9c9fe4
+00000000
+d4d35352
+ffffffff
+fa3c92f9
+ffffffff
+f6f73c9c
+ffffffff
+f47c7fd9
+ffffffff
+8ae03a3b
+ffffffff
+c237a5c1
+ffffffff
+969721e5
+ffffffff
+322a2955
+00000000
+7382bdbc
+00000000
+2a167029
+00000000
+4140ccc3
+00000000
+43e8ebe2
+00000000
+05397475
+00000000
+5dcdd85e
+00000000
+d0d1ac36
+ffffffff
+4bb5b6bb
+00000000
+e27ddbda
+ffffffff
+5b415e58
+00000000
+5a5b031f
+00000000
+11a8abf8
+00000000
+54091d1c
+00000000
+8e30fe8d
+ffffffff
+8c8db17f
+ffffffff
+2dd5d6c5
+00000000
+a9fa6f6e
+ffffffff
+40e29e43
+00000000
+3d3cbfbc
+00000000
+05a0a39c
+00000000
+04f9c5c4
+00000000
+05b78a06
+00000000
+eeef4d99
+ffffffff
+3a90939f
+00000000
+2b5a4544
+00000000
+f9874afa
+ffffffff
+a4a5d240
+ffffffff
+f26467a7
+ffffffff
+d87a9293
+ffffffff
+133a1910
+00000000
+1415fbdd
+00000000
+6023206e
+00000000
+24090100
+00000000
+7e7b297d
+00000000
+e3e21ed3
+ffffffff
+c1a3a04b
+ffffffff
+85369b9a
+ffffffff
+14e6da17
+00000000
+9c9dc771
+ffffffff
+03f5f6d3
+00000000
+76366465
+00000000
+2e656f2d
+00000000
+5554bbc8
+00000000
+b1cbc85b
+ffffffff
+b9da4342
+ffffffff
+9cce729f
+ffffffff
+6564b2f5
+00000000
+a186853a
+ffffffff
+0c415150
+00000000
+0e5b490d
+00000000
+b5b4b51e
+ffffffff
+e67c7f83
+ffffffff
+1d040100
+00000000
+019e8702
+00000000
+3e3f5175
+00000000
+b9cfcc63
+ffffffff
+8fe47f7e
+ffffffff
+8a70ee89
+ffffffff
+bbba3e93
+ffffffff
+dc1d1ed0
+ffffffff
+17060100
+00000000
+e9ae57ea
+ffffffff
+bbba3b92
+ffffffff
+c50506cd
+ffffffff
+1b4a5d5c
+00000000
+d5ba63d6
+ffffffff
+57561b42
+00000000
+1a1e1d0d
+00000000
+2796b9b8
+00000000
+e4f21ee7
+ffffffff
+abaa2180
+ffffffff
+01fdfef9
+00000000
+ed4ba2a3
+ffffffff
+4594d546
+00000000
+5c5dd08a
+00000000
+68dcdfb5
+00000000
+3ecbf5f4
+00000000
+84e06487
+ffffffff
+f0f591d8
+ffffffff
+74d5849e
+00000000
+de4ffdae
+ffffffff
+cf276629
+ffffffff
+3405c537
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ed-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ed-rwp1.reference_output
new file mode 100644
index 000000000..b2409420d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ed-rwp1.reference_output
@@ -0,0 +1,52 @@
+4591d4d6
+00000000
+68d4a091
+00000000
+055fc122
+00000000
+0348bb8c
+00000000
+65d2b9db
+00000000
+1eb7e4d0
+00000000
+461020b4
+00000000
+2094b1a4
+00000000
+e0d19134
+ffffffff
+61d2a158
+00000000
+a85e3a29
+ffffffff
+4702a286
+00000000
+4a7d716d
+00000000
+c022d77e
+ffffffff
+7a2fdfd2
+00000000
+cae8ca49
+ffffffff
+d12f7a1b
+ffffffff
+42be5d4e
+00000000
+d840701d
+ffffffff
+f848c5c4
+ffffffff
+586edf94
+00000000
+79c264f9
+00000000
+3eacc2da
+00000000
+30e75484
+00000000
+fb4c88b9
+ffffffff
+8f75a8a6
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ks-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ks-01.reference_output
new file mode 100644
index 000000000..e02983204
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ks-01.reference_output
@@ -0,0 +1,564 @@
+831b67cc
+ffffffff
+f6b00dd0
+ffffffff
+5977fccf
+00000000
+66b6595a
+00000000
+765a1017
+00000000
+b5726738
+ffffffff
+d7da59d6
+ffffffff
+a4300751
+ffffffff
+f77d94db
+ffffffff
+0da6e512
+00000000
+8c2f0ea0
+ffffffff
+9aa8e8ca
+ffffffff
+99e629b5
+ffffffff
+3b76c00e
+00000000
+9ab78bb6
+ffffffff
+bec082ef
+ffffffff
+a46ce102
+ffffffff
+13d04f04
+00000000
+616f949a
+00000000
+00000000
+00000000
+c9ca89e5
+ffffffff
+c13efae3
+ffffffff
+d0a11d77
+ffffffff
+e5952b3c
+ffffffff
+df71c185
+ffffffff
+b3faf0dc
+ffffffff
+e7c3d97f
+ffffffff
+629f3298
+00000000
+1b60922f
+00000000
+1b76e882
+00000000
+c98b557b
+ffffffff
+e98e05f4
+ffffffff
+f7f5f9ec
+ffffffff
+d3f2f5e0
+ffffffff
+d5bf5179
+ffffffff
+e89c2d70
+ffffffff
+b3f5ecca
+ffffffff
+e6ce6ce8
+ffffffff
+971fcd72
+ffffffff
+78b254cc
+00000000
+4f62df89
+00000000
+6f6af9aa
+00000000
+882c29f0
+ffffffff
+e6dd8728
+ffffffff
+4b728b2d
+00000000
+ada6ecc1
+ffffffff
+ac710576
+ffffffff
+6ad28cc4
+00000000
+c777a16d
+ffffffff
+9d22eedf
+ffffffff
+d895016e
+ffffffff
+f1a97720
+ffffffff
+63e3e7ec
+00000000
+cd9edfd5
+ffffffff
+b70eddc6
+ffffffff
+d1e4a95c
+ffffffff
+7f5bcbf1
+00000000
+6bdacf80
+00000000
+816e59ce
+ffffffff
+47a83c78
+00000000
+dbcd8560
+ffffffff
+5fd6c490
+00000000
+cfe7f552
+ffffffff
+4fb614f4
+00000000
+97d7d0de
+ffffffff
+6e72468e
+00000000
+eea9b15f
+ffffffff
+4ab41c70
+00000000
+73468375
+00000000
+8eee45ec
+ffffffff
+e1924dc7
+ffffffff
+54a214ec
+00000000
+ef4cc5dd
+ffffffff
+13cad2a4
+00000000
+e69089c3
+ffffffff
+c9c2d9c8
+ffffffff
+2b49c6d7
+00000000
+5586d78d
+00000000
+90692551
+ffffffff
+44cbdea4
+00000000
+67578349
+00000000
+bc224eff
+ffffffff
+9d7e41d7
+ffffffff
+58ac1c60
+00000000
+a3559c7b
+ffffffff
+cdfeb385
+ffffffff
+8ad4fdb1
+ffffffff
+20c1425c
+00000000
+df3ebcbf
+ffffffff
+ea9a3390
+ffffffff
+96e1d933
+ffffffff
+b68cd538
+ffffffff
+1b378fd5
+00000000
+f2163d96
+ffffffff
+ac815532
+ffffffff
+2cdb6ed4
+00000000
+172cdf61
+00000000
+9c5234a7
+ffffffff
+f43c71a1
+ffffffff
+2ccc4c10
+00000000
+73a9de6e
+00000000
+04ce38f9
+00000000
+be8dcd28
+ffffffff
+2aba848c
+00000000
+afb6cd6c
+ffffffff
+c44a249f
+ffffffff
+8ce469a1
+ffffffff
+2183fac8
+00000000
+0b2bafa5
+00000000
+8966a0b3
+ffffffff
+d644e5b8
+ffffffff
+b9dd5364
+ffffffff
+0725abb9
+00000000
+c3a2ad90
+ffffffff
+c668e1b9
+ffffffff
+af91c760
+ffffffff
+e3b2e022
+ffffffff
+af9e9b84
+ffffffff
+86acdd9a
+ffffffff
+0dd70efc
+00000000
+3f0bcb31
+00000000
+78fa05e9
+00000000
+c32bb90e
+ffffffff
+8adc1518
+ffffffff
+3b04e36d
+00000000
+331681c6
+00000000
+b9cb351f
+ffffffff
+82c13b54
+ffffffff
+978ae574
+ffffffff
+c6321bba
+ffffffff
+9e88d193
+ffffffff
+9588a510
+ffffffff
+f301dc0b
+ffffffff
+414e94eb
+00000000
+f67ccd92
+ffffffff
+11f57a6c
+00000000
+ef1adc2f
+ffffffff
+2aaa1dd8
+00000000
+819f290a
+ffffffff
+07bae8a8
+00000000
+ab15f571
+ffffffff
+55c69fed
+00000000
+c20cc595
+ffffffff
+10d93a64
+00000000
+c79bf06e
+ffffffff
+362217da
+00000000
+9fba8187
+ffffffff
+1be14660
+00000000
+838aa1c0
+ffffffff
+989ee10f
+ffffffff
+7e7c3d7c
+00000000
+79654bbc
+00000000
+ff775b30
+ffffffff
+e5ba6a37
+ffffffff
+1fb27961
+00000000
+6318bdf8
+00000000
+7b6e29d8
+00000000
+2096ff5f
+00000000
+5430b57c
+00000000
+77767574
+00000000
+f76c1fa0
+ffffffff
+21327b59
+00000000
+605591f4
+00000000
+e91ba210
+ffffffff
+93e13eef
+ffffffff
+540eea71
+00000000
+5112ed63
+00000000
+6b7f4f2c
+00000000
+cfea7f49
+ffffffff
+ec8af92b
+ffffffff
+57126967
+00000000
+ef7a4848
+ffffffff
+4bea6969
+00000000
+39a66e4b
+00000000
+6068a565
+00000000
+637441e4
+00000000
+a7656a7a
+ffffffff
+c1227531
+ffffffff
+0bb341fa
+00000000
+684e3960
+00000000
+03ee5003
+00000000
+143ed479
+00000000
+5851bddd
+00000000
+c22bb63c
+ffffffff
+5f4121a4
+00000000
+6efadf42
+00000000
+15c7f9cb
+00000000
+51710f98
+00000000
+5b546128
+00000000
+e516430d
+ffffffff
+17d775c4
+00000000
+da633e34
+ffffffff
+575b613c
+00000000
+d832c015
+ffffffff
+3e88114b
+00000000
+5f6035d0
+00000000
+73dc6921
+00000000
+566ece40
+00000000
+5172cd4b
+00000000
+c462146c
+ffffffff
+2fde0ccf
+00000000
+e34a5c1c
+ffffffff
+6c05a9c1
+00000000
+db08cce8
+ffffffff
+8b563aae
+ffffffff
+bbc65a3a
+ffffffff
+14e1a5d0
+00000000
+c74542a4
+ffffffff
+a7ce6603
+ffffffff
+f902561d
+ffffffff
+4855a1c2
+00000000
+cd7b3220
+ffffffff
+23dc38b3
+00000000
+c57e2241
+ffffffff
+75aabd2e
+00000000
+a451e2dc
+ffffffff
+3f2e7dbc
+00000000
+9dfa2d6b
+ffffffff
+2405d9bf
+00000000
+aa7db6d8
+ffffffff
+9bb4034d
+ffffffff
+9e16a060
+ffffffff
+392ab537
+00000000
+a16f8654
+ffffffff
+b72a47d0
+ffffffff
+a692a37a
+ffffffff
+47da312d
+00000000
+32363930
+00000000
+13ab55f9
+00000000
+6c4ea50d
+00000000
+2a254dad
+00000000
+250479ac
+00000000
+4fa8341f
+00000000
+496a2519
+00000000
+7d86a93d
+00000000
+b24de6c8
+ffffffff
+8bb75fc5
+ffffffff
+d3a63b5e
+ffffffff
+0f76252e
+00000000
+2f076764
+00000000
+a7356bb8
+ffffffff
+59622e1d
+00000000
+6fba2133
+00000000
+be55cec0
+ffffffff
+03b069b1
+00000000
+39de190f
+00000000
+160d7d9e
+00000000
+173c599c
+00000000
+5f0b48b6
+00000000
+823a8a54
+ffffffff
+181cd918
+00000000
+0b599fd8
+00000000
+3b933d51
+00000000
+61d61b2f
+00000000
+5a8c5507
+00000000
+9b2572f4
+ffffffff
+7793003f
+00000000
+d0728971
+ffffffff
+11169110
+00000000
+044dafd0
+00000000
+5317043a
+00000000
+cd4e156d
+ffffffff
+051a8d0e
+00000000
+1955bbcc
+00000000
+cf0c061a
+ffffffff
+0eaa890a
+00000000
+1d26890d
+00000000
+9477f268
+ffffffff
+0b0f1d20
+00000000
+f9c61a7b
+ffffffff
+73ef2599
+00000000
+154e9504
+00000000
+c71c6ed2
+ffffffff
+b4e2975b
+ffffffff
+1d3fa187
+00000000
+9f72e020
+ffffffff
+b9f4f3d0
+ffffffff
+3909b9cd
+00000000
+77b0f820
+00000000
+bb688d85
+ffffffff
+e289133c
+ffffffff
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ks-rwp1.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ks-rwp1.reference_output
new file mode 100644
index 000000000..3dc69aa11
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/sm4ks-rwp1.reference_output
@@ -0,0 +1,52 @@
+0c28109a
+00000000
+e6532c14
+ffffffff
+b7203110
+ffffffff
+3abb6c4c
+00000000
+2fd24baf
+00000000
+2cb5bc59
+00000000
+1492e616
+00000000
+249767d0
+00000000
+21fb1859
+00000000
+e3c2b8b5
+ffffffff
+e17be5cf
+ffffffff
+cb1a9046
+ffffffff
+281dabba
+00000000
+be8723c8
+ffffffff
+55727f88
+00000000
+331fa0cc
+00000000
+dc87fc62
+ffffffff
+c94a02d5
+ffffffff
+51210727
+00000000
+3eee27ce
+00000000
+d9983185
+ffffffff
+31362cdf
+00000000
+488943a2
+00000000
+f29331f2
+ffffffff
+8603e2ee
+ffffffff
+62004df6
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xnor-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xnor-01.reference_output
new file mode 100644
index 000000000..ddbb61224
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xnor-01.reference_output
@@ -0,0 +1,1052 @@
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+3c798e49
+10f9e292
+d50bd2c6
+6d1114e3
+dafdcf80
+17adb940
+c6d1905c
+1af426b5
+7f1b2dc4
+4f9d8b6b
+ffffffff
+b3ffffff
+a2ffc1c7
+ccbef345
+f47ea10f
+487e4352
+7c1d45c5
+40d77fb5
+b91b5427
+1b340bed
+dbd27310
+d9640d25
+00000000
+00000000
+3e0c9051
+be6012b0
+288fbd9f
+72b45018
+fa7e9f19
+cdfefc74
+27435b20
+4a92c7ad
+17ed22b6
+b57a6882
+c2cd2fe1
+80e9188a
+dfc81cb1
+b1a381bc
+78bbcb2c
+8e229c8d
+78a1640a
+2dd24348
+e8275de8
+5c4cf5e3
+78066929
+422fc5f4
+f2bd15fe
+347e029f
+d21b14df
+5dde69f0
+29cf7c7a
+809a89ca
+548d0660
+550357d6
+b1848ca6
+7237d934
+269bd636
+4a12ed38
+373209c1
+1a63e46a
+3f9df604
+0ab55976
+9bb6e758
+60e2623c
+309c7860
+41dff2e3
+20c3e528
+0d69d5a9
+e44c1cb8
+48a25913
+a412303a
+2e32ac9b
+6bb69f99
+1afb6751
+73aad0b4
+e2c5459f
+e1af8e67
+4be119a2
+64a94f1d
+cd7fb6d1
+64562014
+c33a0c2f
+4ddfc912
+f923cfea
+7c9ddecf
+c6e3306a
+c6ae3ad7
+2e605d8a
+178c6832
+d86bfc99
+8efe3c6d
+9e7b599e
+2f0bddaf
+cf8adda4
+d1bc6f4e
+e912e8d9
+81213917
+23633e24
+92400851
+81103de8
+7f3bd426
+3352bd5b
+89c238aa
+c1ecd666
+9e6cb728
+a823affd
+5db293cc
+4a66d8fb
+4e109336
+a9bd8e23
+609dc5a9
+65804f34
+5c708be2
+1814ac1c
+165e4111
+8d10e8e6
+86123e02
+98b77e64
+19fe6373
+7017e8b7
+8e1df280
+9cb82c85
+870e1cea
+1a715cfa
+cc577061
+572a3858
+d9e350fc
+b330148a
+16d59ecf
+e5cdc9f6
+b412d68a
+92b13128
+cdf94b8e
+9634ad50
+b10bc490
+d51a21e8
+2dc93212
+98da0a6e
+cb7f3f52
+720c7e29
+bc9f0136
+55001a72
+9f1fee14
+d46b6d36
+add517dd
+ad0fec45
+66b5aaa0
+d21a6dba
+a29d6ac0
+f020e4a5
+32f87774
+2248bab5
+b15b8772
+82d38a49
+448aea95
+bc9d4188
+8f619f0e
+6377b648
+c0081b72
+8300327f
+18e98ec0
+801cb3b4
+4fc00b76
+6c082974
+a3c2a918
+2ca451d6
+e7332808
+1d13c025
+a8a2da71
+9f0c4a23
+831e0b4c
+88f96544
+9060cb4d
+79ceba72
+b07cd137
+4c37f283
+dbb26df9
+3eaf2231
+a4ecfb8b
+83ac2dd3
+9b18869e
+ac5272d5
+cfa1c07f
+0abdaa29
+9edaf777
+6934ce23
+f817409a
+10cc7e67
+9d6e0f1d
+e2a9494c
+a70bacd7
+285a8039
+f5f6afb6
+6fab8839
+4cbb344f
+8127ec57
+dd12768e
+f39c373a
+9f0e0971
+2ea6ba0f
+4708e34f
+8fe6aac3
+b877f4ee
+666d3538
+aedcffa7
+7b88fd9c
+0f06fdaa
+7eb55686
+f4141aa8
+69a10a0b
+19c9fd83
+13bb1df0
+d18a6f08
+846ca6b4
+f0f931e3
+417d3cdb
+853a98b7
+4fbfe49a
+ae0c431f
+3c298e94
+9413cd17
+84aa62ee
+d7697c10
+81bffa20
+593acd9f
+33eafcd9
+fe1098c2
+ec74c8c0
+8af2538e
+daaeda53
+ebf292e7
+68431e17
+cefb7958
+d3eb9f1a
+01da0929
+115dc199
+8ec3834e
+98ac3b46
+8808ebd8
+a4b99752
+ec6987a2
+f8ccb8f3
+938b8379
+742265dd
+413def03
+54795622
+384500fa
+86c2244c
+de900b6b
+f4c8175c
+59fff39c
+5440e85a
+4814d18a
+3854c54b
+a59f6908
+7a3d12eb
+df0901fb
+9fa25170
+82730caa
+b6b03f3c
+c3311ea6
+ce4c5818
+dfb08cf5
+41c73a55
+373a1b60
+906d2aa6
+6902f19e
+130755c4
+91df54b7
+2252b6a2
+5662d47d
+1c7c8cff
+46f5c125
+94ad618c
+d6c4e752
+da0d97d9
+44fd8dc2
+f2c3ff40
+7af897d4
+f49bbf9e
+b79ac580
+06fb7576
+27ae80ba
+37fbfd83
+1321b557
+55176b7b
+0c507b91
+ef753c31
+719c21d0
+dd862a48
+0c11baff
+5d52097d
+26e7c902
+c36252b8
+d566d875
+17704279
+1f1d4cb4
+acda0c25
+2c193d02
+76eb11f2
+2f44e7ad
+267032a0
+9221b010
+b08a2531
+ae30f1c0
+a21cf818
+ead02d4d
+7a8e9d32
+e5e07552
+178e930b
+970bba39
+cd76db50
+f51139a4
+37500bc4
+aa44c8ad
+71f84515
+f3547e48
+9159cf7e
+594902ca
+944d33e5
+ce2e7447
+28bc691e
+f7192179
+21c7f8ac
+15a03321
+70348284
+b733640c
+778bb9d0
+6aede476
+297bc007
+6d2db9e3
+777568b1
+bffb6c5c
+4d919b2c
+27b012a3
+601ab28f
+14a7dd83
+5c13758e
+2f6aa770
+c53cdcec
+112154cc
+6ee2a48d
+f96eaffa
+bea9e8e1
+8fbff9ba
+f85318ab
+2552fbf9
+7766baf8
+0f99d8bc
+90caf76c
+b68c8fce
+e76d4fd2
+13e5cf6b
+241c62a9
+47cd73ed
+7286ebd5
+8364a709
+04655da3
+d0917142
+fe34a15a
+76427709
+051f776c
+20176dbe
+643861c8
+9738bfb9
+a0a5da8e
+5843990b
+1d48d020
+25fb16b4
+fb0eb1b1
+bd94509c
+7e41ea23
+fe183d04
+235c2871
+386ef954
+a7ae401e
+0274846b
+ea41b7ed
+180c5db5
+4e610134
+41e5a5de
+59c88ec0
+275bbf80
+e67ce511
+ae5fdcbb
+a4b6b671
+b0f94bb3
+6dae4547
+7369fd5d
+dc905617
+ab1ad495
+e2ed5e55
+ae7956e9
+8d1ad6ad
+4850ce39
+51292419
+587e6045
+ac00dc6f
+e3c10402
+db7f00d2
+3179de9e
+e94a4aae
+8c3003f2
+344b7378
+babcca25
+739e6846
+4e0bd50e
+fb1fabbe
+1e968c87
+20ef8fb9
+61abfe14
+d3d2949f
+cf06b7ba
+0a0a51ab
+009528a2
+21ca5d6a
+4e1ce991
+f56226f0
+458386c3
+369a77e4
+07794c17
+904e1be2
+ccc9946a
+7ebcfbeb
+975d4081
+d6c7557a
+6ae9cad2
+6e2914f1
+079f948a
+da41a115
+c718d7e2
+50c0297e
+90df8591
+a1ba54e4
+0416a183
+60dfcf34
+7df931f4
+ed8685a8
+ff5235a4
+e2c67631
+806c32a5
+9bd712f2
+227a5c05
+941eb482
+07e0de00
+9929530c
+ed770f3c
+a940316a
+4dfc2307
+61ef64f3
+ce6ee408
+095b11d2
+998d1525
+1f8959c6
+75ee935f
+8c012a58
+59cf4bb2
+37129737
+97933e6c
+88e84d10
+9687f28f
+af67ce7e
+d2fe2e7e
+03d868ca
+b6d75e84
+315dd6e0
+092936e8
+2b2b66bc
+784abebb
+924323e0
+4f829b65
+1f93156a
+17b8b123
+09b8adbd
+8b16bb0d
+eab40053
+39be2172
+e449d725
+91e42acb
+12d44866
+975a8550
+890b11f4
+b432d4f7
+9d2679e4
+b76d454d
+8d50f5a3
+cd9cb03a
+82765bb9
+eed7a24a
+4d70bff2
+76b1fd3d
+f21aa48f
+b3988b52
+93ff019d
+3c464110
+4e1b3480
+9b01f7cc
+fb77097b
+5b331999
+3a590a1e
+2d37de81
+181634e1
+bf97e520
+6eb627af
+6df8ccf6
+6fb4da1c
+e08409f0
+d9b79d35
+432ff218
+038cadcd
+03b1d74b
+de339eca
+4b6ea010
+47ac5fed
+bbe8f88d
+aff7c0fc
+2f8b9e9d
+a6ea1c0d
+d8811d8b
+8f552614
+f9372307
+1f54c800
+c6185622
+49e53ebf
+618c63b6
+5b82ed10
+88161ece
+a4655337
+1a5e0a7c
+67172b13
+7eda7fa5
+8480ccb8
+20df9f5f
+d15d74e2
+78352f25
+3cddd319
+ad057c8a
+bd9ddde3
+ba474c12
+0f405811
+2d6c70e9
+fc1ab9b1
+e06b92d7
+6528dc26
+6c5f83e7
+27d96724
+c8118677
+91e5ea9b
+6f91b4e9
+9bee3e88
+73c76989
+89b51740
+0ad53eaa
+6b93f9e6
+fba3efd2
+027bb37e
+f546a748
+e292ce95
+11de2f22
+6e66e63a
+4911f990
+e4d1d766
+d0c19189
+2ac3db77
+e9e12a01
+3de99647
+e157e19c
+a3804f76
+768c298e
+514f56c6
+3789436b
+337e0da0
+c09b83b6
+dfbe3fdd
+32210885
+0f0e272c
+b9b244f9
+bd919226
+9c8c75fa
+18ea2018
+ee44bb7c
+24ab19a7
+977b499b
+5c8d6a66
+6410a88e
+902f726e
+b1fddfae
+e5263927
+190e7f0a
+fa2ab34d
+9f5709f6
+61d1a41a
+80a0facc
+799acb32
+dc5e11e0
+a90aadba
+996d80fc
+bb14ce1b
+e079d9c9
+824b2c4a
+80cf3c1b
+cc8d6960
+701ec1f8
+5c72f0c6
+0d1ba1d8
+4f998f55
+158b623f
+dc082dd8
+d3ba8c80
+77855195
+21eb1435
+ef99f823
+941fd871
+3b550ca5
+eacfab95
+f67e5449
+481fd4ce
+24eb5ff6
+358ec558
+1156c490
+e9833309
+05cbd4ea
+1365ac69
+48474e5f
+0485c092
+cb8c0ae0
+0e451971
+a82ac1bc
+9caddbe4
+debe392e
+4cda8288
+1800da46
+3e693a7f
+d73f2b51
+492c17b4
+f6bd3c04
+865d12f6
+be74044f
+ec0a4362
+50c5155c
+5eee0a00
+e27b61d4
+2b9ad975
+bbcc63ef
+984587b6
+8b901a46
+355f5ebe
+6f9b2426
+6c2cbffa
+e5e1249c
+edc4dddb
+cdcdd94a
+8f431550
+07b6a06c
+3178dfc6
+97ee3481
+bade9444
+0d6c4a36
+386a0e05
+20c84858
+f51f77ac
+ac2fac39
+f310b87c
+14a0d801
+6756e5d3
+5d0192c6
+e684088e
+ac162d96
+080d1b0b
+a1ebff68
+1d0dd747
+fa5eb662
+f88ef8da
+f85277a6
+59a681e0
+7576ec10
+f4200585
+6b441fc9
+aaaff3ef
+1ec44a2d
+9dc1f7aa
+6421bdd5
+f2a116ce
+5675afb7
+a251f3cf
+22f357f6
+82931f69
+15c27bb8
+5674fdc3
+ecbb9e18
+1aaf9ac4
+848c35e4
+ddf0b0ce
+4c8d386e
+5f284491
+138fc61d
+afd89e1b
+04fe62a1
+967e79d4
+e866189d
+829c3a67
+f41224d0
+51f69bea
+bb161b4f
+529b977b
+15c5f972
+582e600e
+62bd0989
+4ec931cd
+ee64b018
+73e7fe60
+674dfbef
+f6a8eec0
+9bbf6224
+273cba30
+098db45f
+ae9a56f2
+f3dd7d99
+840f9b3a
+1e28cff0
+cbd8bbb9
+464cc714
+6dc00f2c
+5d089b85
+9fae2edd
+ed35c08f
+3b2f7846
+63c134ab
+da4fade5
+c968e1e4
+5bc3c89d
+6c4c5c26
+1d4d6ab9
+faf97b40
+e2360bf3
+9aeae3bf
+3b09013e
+de78f0f4
+fd350dff
+f0aad36b
+e1c9bd6b
+dd8b15e7
+fc1e4641
+09324d07
+baef44a8
+a9c16412
+9a42289e
+94888cf0
+f29adecf
+87aee9f7
+ffdc53d6
+c957f420
+274641b1
+b587634c
+6fd5eeeb
+3bd48e8f
+c5349e64
+7cb39785
+eab32cc4
+4accfd03
+5669b5ba
+ea3e2d20
+c42fccc0
+5c15d7b2
+38cde319
+893b9751
+cf4e82e0
+1ed4d470
+2b159a20
+78bc0149
+626a7b86
+5994f2c7
+34ff77ae
+d056ebda
+69a125cc
+cf629486
+380217fa
+88cb283e
+21bdecd9
+f98e4a34
+10de24f1
+bd34a761
+139cd27b
+51e8d3c4
+13dd5114
+e0c1c434
+9148302d
+69d55af3
+21086fb1
+bac37e1f
+911ac278
+6f22348e
+298ae053
+eefb3b8f
+f5fdbbda
+eef19f48
+aea98bf2
+0965d15b
+88a8bafc
+c952d5e7
+8255b509
+0c797cfd
+fc78cb40
+ac76fc1c
+eba04f8b
+5139fd32
+f4987eec
+612c89ec
+b71b6b94
+36325874
+e133fc32
+2a9c0a13
+066efdd3
+279ea165
+a1f56a7c
+2dd63c28
+3c8048cf
+071c9458
+6ab1936d
+76b4a96f
+91fe61d3
+1d95cb4a
+1eb47462
+6b3d9f66
+6bb8ff4e
+891b83d7
+15ef8b16
+b68a27da
+281cd82e
+ce80f7c3
+c26f1db2
+897d9fe5
+a87a170b
+75f32b41
+4d51c058
+239853f5
+a4fe495b
+08d6920e
+006e4fc6
+94038f30
+eb8330d4
+a9632e3c
+82b69205
+1141b67f
+940e472b
+faa97965
+398f5587
+d6ac851f
+d29e0845
+07f5e51d
+9da580da
+9875bad1
+d53af4a2
+339863c4
+ff704db9
+c988a7cc
+0d737406
+5bc1c366
+060a96a3
+132a7176
+37bca109
+498db88f
+a3203c5d
+c313bc1f
+62fb1bdd
+b1834066
+032c8eef
+aa467bbe
+79a1be95
+9b9aaad1
+d9727976
+e4367cca
+1e4fa722
+3c2c0e92
+e3d46aaf
+b264d045
+b4c8ccd7
+6baeea37
+54086782
+e0f003e9
+c099a251
+f69b0ae6
+7dddc76e
+29ade05f
+6dc3c897
+13e6d903
+d9adf7ed
+0af2ee97
+0d453de3
+2a5dc0a0
+cb293e7d
+e6a4d5ca
+6ed26048
+a422af66
+8347dddc
+755961a9
+fc6c3182
+9aaacd63
+7886e3e0
+9c1f741f
+e1832ab2
+5902a9db
+596f5f8a
+1694bd33
+ca11073c
+dd4ec4d8
+dc17ae6e
+ef677106
+c3ade7e5
+c21356dd
+298afd85
+8ff6f686
+4a76e8bd
+b5ebf281
+11d39975
+72160203
+5c8d5a53
+f5ecdea7
+7cf8f48f
+f6334166
+5eb56eb3
+0e362f5b
+980c1951
+3c4600e4
+8895b556
+9ccf6ae3
+a8337ec9
+a6847b5a
+fc4ac26e
+d60c071a
+f3f739b0
+fe1e1b5f
+f62bb743
+da795f59
+051f7fce
+b9fb3366
+3d6e3656
+6793dc88
+14479032
+81ab3ced
+cf5e006a
+c268d3b8
+3468c62f
+5916831c
+6ca2aa45
+33220d21
+738de638
+a08b9f10
+333afa1e
+8e36868a
+997506fb
+b8f41082
+acb0dce1
+ffec3646
+324a1353
+6d3f41e2
+8cccf3db
+c96efd04
+7efa48c8
+242a80c0
+0ffbb59f
+f65e770d
+da9c389c
+e380a160
+4dd5ba9f
+f65cf3fd
+1012f03f
+9e7e1fc7
+b16fd2bd
+85fcd603
+3359593a
+6c5e1579
+66a4d211
+72745307
+a60f5508
+7c2c966d
+3396820a
+9bb4752d
+0f26a0eb
+0cf25923
+07b45c93
+df3c45b4
+2e2ffb99
+8f0846a2
+e683ff72
+66b072b9
+11cd9a20
+2a933ad3
+450fdb90
+8525e8a8
+67dcaa94
+9535971c
+51fd3b91
+3e1c8521
+8b668bc1
+b66b3284
+58f7947a
+53fbff6c
+2c9b6faf
+c70afc92
+2dac529c
+dd68f201
+6a001c14
+7213516d
+c5ecc015
+18bb28e9
+99ef61ef
+265039f6
+dae9b288
+14b91c79
+3d060671
+0973e89c
+280b1b74
+d798c9cf
+a7298946
+95a4d257
+8c8a1a32
+735c076b
+4d884414
+894deab4
+0b54aacc
+953b00b0
+3d4806b6
+f829d29f
+4d984bcd
+a96ec2b3
+acca7f12
+432779ee
+5ae6a222
+61b0ee09
+bedc25e2
+ff1e5bef
+53e8eb40
+137a9777
+cf84b682
+2904cdef
+03cc0f27
+34c2da80
+a51ef9fb
+a45d3822
+3138cec5
+97fa4cf8
+7c1d45c5
+8c577fb5
+272722b8
+22b26b7b
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xperm.b-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xperm.b-01.reference_output
new file mode 100644
index 000000000..46ae2a6f8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xperm.b-01.reference_output
@@ -0,0 +1,1092 @@
+ff000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+000000db
+00000000
+00000000
+00005800
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fefefefe
+fefefefe
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000f6d5
+00000000
+00000000
+000000fc
+00000000
+00000000
+00000000
+00000000
+00000000
+04040404
+04040404
+b6b6b6b6
+00b6b6b6
+39393939
+00393939
+7f7f7f7f
+007f7f7f
+a3a3a3a3
+00a3a3a3
+3b3b3b3b
+003b3b3b
+3a3a3a3a
+003a3a3a
+38383838
+00383838
+00000000
+00000000
+3a3a3a3a
+00003a3a
+d8d8d8d8
+0000d8d8
+efefefef
+0000efef
+47474747
+00004747
+aeaeaeae
+0000aeae
+60606060
+00006060
+e6e6e6e6
+0000e6e6
+dfdfdfdf
+0000dfdf
+49494949
+00000049
+1e1e1e1e
+0000001e
+4e4e4e4e
+0000004e
+d3d3d3d3
+000000d3
+f5f5f5f5
+000000f5
+17171717
+00000017
+d6d6d6d6
+000000d6
+01010101
+00000001
+20202020
+00000000
+85858585
+00000000
+9f9f9f9f
+00000000
+59595959
+00000000
+c9c9c9c9
+d9000000
+3e3e3e3e
+00000000
+fbfbfbfb
+004c0000
+a7a7a7a7
+00000000
+009f9f9f
+00000000
+00d7d7d7
+00000000
+00474747
+00000000
+00c5c5c5
+00000000
+00666666
+00000000
+004b4b4b
+00000000
+00989898
+00000000
+00e2e2e2
+00000000
+2900ebeb
+00000000
+0000eded
+00000000
+00003030
+00000000
+00002828
+00000000
+0000cdcd
+00000000
+00009292
+00000000
+00005050
+00000000
+0000b1b1
+00000000
+000000e8
+00000000
+000000ae
+00000000
+000000d9
+00000000
+00000055
+00000000
+000000d7
+00000000
+00000033
+00000000
+0000dbc9
+00000000
+00000056
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00560000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000b000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000090
+00000000
+00008000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+23000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+000000ad
+00000000
+00000000
+00000000
+00000000
+00008000
+00000000
+40000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00e70000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+2b000000
+00000000
+000000ed
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000055
+00000000
+00000000
+00000000
+00000000
+0000006e
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+000000e4
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000ad00
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000f100
+00000000
+4d000000
+00000000
+6b000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+001a0000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+006e0000
+00000000
+00004b00
+00000000
+f9000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00010000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000fe00
+00000000
+00000000
+00000000
+7f000000
+00000000
+00000000
+00000000
+004e0000
+00000000
+0000ff00
+00180012
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0d000000
+0000a400
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00004300
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00008c00
+00000000
+000000ff
+00000075
+00000000
+000000ff
+00000000
+00000000
+00000000
+000000fd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00008700
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ff000000
+00000000
+0000ff00
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00003100
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000ff00
+00000000
+00000000
+00ff0000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ff000000
+00000000
+00000000
+bf000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00f60000
+00000000
+00000000
+00000000
+00000000
+00000000
+17000000
+9f000000
+00009400
+4d000000
+00000050
+90000000
+00000000
+72000000
+00000000
+a8000000
+00000000
+57000000
+00000000
+c4000000
+00000000
+7c000000
+00000000
+0ad89d00
+00000000
+c85a0000
+00000000
+b7f30000
+00000053
+74740000
+00000000
+cbcb0000
+00000000
+9a9a0000
+00000000
+54540000
+00000000
+7e7e0000
+00000000
+dadad700
+00000000
+90908800
+00000000
+75752e00
+00000000
+42424200
+00000000
+34343400
+00000000
+68686800
+00000000
+dedede00
+00000000
+34343400
+00000000
+f7f7f76e
+00000000
+181818fc
+00000000
+35353558
+00000000
+22222222
+00000000
+2f2f2f2f
+00000000
+3b3b3b3b
+00000000
+fdfdfdfd
+00000000
+95959595
+65000000
+5f5f5f5f
+20000000
+acacacac
+fd000000
+34343434
+f8000000
+f8f8f8f8
+4d000000
+4d4d4d4d
+9e000000
+9e9e9e9e
+f9000000
+f9f9f9f9
+01000000
+01010101
+ac880000
+acacacac
+09de0000
+09090909
+defc0000
+dededede
+9b9b0000
+9b9b9b9b
+03030000
+03030303
+7b7b0000
+7b7b7b7b
+2e2e0000
+2e2e2e2e
+c8c80000
+c8c8c8c8
+3b3b1f00
+3b3b3b3b
+9898ba00
+98989898
+56562500
+56565656
+dadada00
+dadadada
+c2c2c200
+c2c2c2c2
+79797900
+79797979
+17171700
+17171717
+90909000
+90909090
+fbfbfb2b
+fbfbfbfb
+898989d4
+89898989
+48484878
+48484848
+41414141
+41414141
+00000000
+00000000
+00000000
+00ee0000
+00000000
+000000c3
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+001b0000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+17000000
+00000000
+00000000
+9e000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+61000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00ba0000
+00000000
+00000000
+00002800
+00000000
+00000015
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000100
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+07000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ab000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00020000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000026
+00000000
+00001000
+00000000
+00240000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00006400
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000007
+00000000
+00000000
+00000000
+000000cd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00450000
+4b000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00008400
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000008a
+00000000
+00000000
+00000000
+000000ff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000039
+00d00000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00ff0000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000ff00
+00000000
+00000000
+00000000
+00001100
+0000ff00
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00ff0000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+f0f0f0f0
+00f0f0f0
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xperm.n-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xperm.n-01.reference_output
new file mode 100644
index 000000000..f29baecfd
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/references/xperm.n-01.reference_output
@@ -0,0 +1,1092 @@
+ffffffff
+ffffffff
+fdf6f5af
+01684ef4
+80080188
+8a1c2002
+b1b7f498
+b1176671
+fb8ef22d
+2bf24b78
+00000000
+00000000
+00000000
+00000000
+b0109003
+4d147391
+a8988e8e
+6f9bca4e
+19edfdc1
+16611c00
+130e16f5
+2ce5511f
+f8468cff
+ff4567f4
+d9ef9dfd
+ed6dd9eb
+66666666
+66666666
+ffa99147
+4ffef9e9
+3ec96a52
+9d95fe93
+6fcd666b
+db9d3d3f
+44120721
+b840f930
+f9f5f6bc
+6c5f451c
+4e7d488f
+d8bfef83
+79d93429
+34449553
+44444444
+44444444
+66666666
+d6666666
+99999999
+49999999
+ffffffff
+6fffffff
+33333333
+63333333
+bbbbbbbb
+d4bbbbbb
+aaaaaaaa
+75aaaaaa
+88888888
+ae888888
+00000000
+ba000000
+aaaaaaaa
+88aaaaaa
+88888888
+d1488888
+ffffffff
+cf2fffff
+77777777
+ddd77777
+eeeeeeee
+7bffeeee
+00000000
+6a200000
+66666666
+7f056666
+ffffffff
+dd2affff
+99999999
+d191d999
+eeeeeeee
+db752eee
+eeeeeeee
+e273eeee
+33333333
+3302d333
+55555555
+94e98755
+77777777
+8d787777
+66666666
+49879e66
+11111111
+42402611
+00000000
+2022d2f0
+55555555
+8c36cc05
+ffffffff
+bf50c99f
+99999999
+727e2559
+99999999
+9222cc9f
+eeeeeeee
+cb8cb9bb
+bbbbbbbb
+ccb02bc9
+77777777
+07072a01
+ffffffff
+cd4c5508
+e7777777
+3dff33cc
+37777777
+13b7e070
+25555555
+cba258ca
+d4666666
+64472364
+f5bbbbbb
+ef555ef4
+73888888
+44b925cf
+ea222222
+ae0c636a
+bf7bbbbb
+9c97d2e9
+080ddddd
+a966f939
+30400000
+9445950d
+14188888
+87471812
+6252dddd
+4d4e586b
+cfd92222
+e3dc8cd9
+98c20000
+200785c2
+20cd1111
+8b2b0977
+64644888
+66486889
+b99d0eee
+9611ad37
+6218b999
+80bab9aa
+feab2555
+5ff52eaf
+6b2dc477
+7fcc6ccc
+85808833
+b3345805
+17b99799
+bc007cdd
+d5560d66
+2e252257
+cfa14afd
+1f00939f
+fe62bbbe
+a9c9dc6e
+a9a56fbd
+909af661
+56959bac
+55276cdb
+0e607567
+e6035705
+3370ad70
+b7770767
+f0f60a96
+06cc7606
+f3493694
+83438796
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00200002
+00000000
+00000000
+0000d000
+00000000
+00500000
+0000fc00
+00ffc000
+00200020
+00000000
+00007000
+00700000
+00000006
+00000000
+0c000004
+00040000
+0e000000
+00000000
+0600000b
+00000000
+00000000
+00000700
+00050030
+00440000
+00009003
+00232300
+d000000c
+00000500
+800ff000
+0d800008
+0a0800e0
+0880ee00
+00007010
+10000170
+00000004
+001b0008
+0a80e0f0
+0e0a00ff
+0d0d0000
+0a00000a
+00000160
+10010006
+00090000
+7600070e
+0d000000
+00800024
+00700c00
+c0808078
+000a0b00
+0ba030b0
+00000000
+0a1606c0
+00389200
+bb080300
+007080d0
+70000008
+0a20000a
+29d00047
+0a070007
+0aa00b0b
+00006660
+01018068
+808674c0
+00067070
+006060e0
+9090ee60
+08ff07a0
+8005fff0
+59dd0a00
+0a4880d0
+8f000004
+0640400e
+56030000
+50300e0a
+00191008
+08d0b060
+09ab00ff
+1a9a0977
+000420f2
+804f0fc0
+df02d90d
+2cce330c
+0047b704
+405c7400
+c40667d0
+0dd00c6c
+5b00001b
+051f6bf5
+aed0705a
+4a06d707
+d5c00030
+527c7525
+9707a48e
+0f7a8a59
+4aaddaf0
+44fcd4c4
+9959d902
+0500555a
+02b20c51
+0139ce0d
+03810e33
+106e3e00
+ff93f090
+90398aa3
+ff90e9ad
+6a11bd19
+0bda0bb9
+f0526d54
+e109150e
+5a5550e0
+2e9d552e
+55c55945
+3b62553c
+0310f003
+2b18c661
+ccbc63cc
+f04f5ffc
+cfc5520f
+edbe6493
+3124cec2
+8fefefee
+04604fef
+76adaadd
+6dad7d47
+00e0bbae
+003707eb
+fb226ae6
+edfa66ed
+d01d2240
+04d22177
+03aa8847
+33e3a3a3
+e8623830
+308ee0a3
+a4dad02a
+9f395b92
+00c02cf1
+10c0cf66
+ff1187d8
+1ad42457
+ff6aca99
+9c699acc
+25004400
+25b04a47
+1e4f3666
+1e3d36f4
+add6d966
+dacd014a
+3a7a1777
+57e28a81
+6a505ccc
+a925265a
+78bbb777
+b7bab7cb
+d6303000
+1c6707e0
+8f6abbbb
+fa26466f
+7970cccc
+c9889902
+7afd6666
+868e0436
+c7466666
+4ddd3d6d
+77f77777
+797304df
+c77fffff
+7df7d147
+60711111
+6116a01b
+f4600000
+b20f0cf0
+d0888888
+dd08dddd
+65eeeeee
+27b57eba
+8bdddddd
+1b900ba0
+15111111
+f51d9414
+83333333
+8488c884
+08888888
+b5e88804
+01111111
+9ca9001a
+41111111
+599e5ae9
+cccccccc
+70892da1
+22222222
+859c2a62
+33333333
+06363c66
+eeeeeeee
+e8adfee6
+44444444
+ad13b994
+22222222
+4c2bac42
+11111111
+f17b1c71
+cccccccc
+4cc1111c
+00000000
+af6cc000
+88888888
+c8d22c88
+eeeeeeee
+4faf9aee
+44444444
+faafa844
+88888888
+994f5888
+11111111
+0d9c7111
+77777777
+6fe78777
+cccccccc
+6c451ccc
+55555555
+9e665555
+66666666
+a73a6666
+99999999
+579a9999
+eeeeeeee
+0777eeee
+bbbbbbbb
+dddbbbbb
+11111111
+8e811111
+bbbbbbbb
+409bbbbb
+eeeeeeee
+e12eeeee
+00000000
+30000000
+66666666
+20666666
+99999999
+ef999999
+99999999
+d0999999
+33333333
+43333333
+33333333
+c3333333
+aaaaaaaa
+eaaaaaaa
+22222222
+a2222222
+66666666
+66666666
+2a803062
+22016a88
+fd88cdcd
+6d2d6d8d
+1bfa1112
+11acc243
+2eeadb2a
+ad2e2292
+51f18568
+6a895958
+ff05fe2c
+022f00ef
+e8611f32
+3e4348ef
+ff4f7379
+b3500579
+c314f1cd
+b14e31e1
+66f3f4f7
+e336773e
+f0efff0e
+f2f34ffb
+0294f9f9
+01999998
+95f59fda
+afb9f758
+81bfccbf
+ffdc88f8
+dd474bbf
+f5544577
+c4cff647
+cf4f3b64
+d0c22df9
+2d5d3f8f
+cffdb16c
+f01fffc5
+c36f3fef
+97eb77f6
+997f9c9f
+9f74f5f7
+aa77af70
+e7ffaaf9
+41f54e1f
+c1e3ec1f
+391e3b1f
+91b7fff3
+fd772fdf
+7f7b7f57
+1153ff5f
+fe3f33aa
+5fffffcf
+e559ff5f
+f333ffaf
+28a552ff
+f595faff
+f337f3e3
+fc8f08ff
+f80ffffb
+f111f4f8
+f83171f4
+0df2fff3
+ff2ffff2
+f6f66fff
+ff1ccfbf
+776affff
+bfacfcf0
+ff55bff6
+ffff6ff0
+f75af33f
+f543f733
+2f2ffef7
+f22fff77
+6fff6ff6
+f3f0fccc
+7f25f5f5
+75f27fff
+3fbff7ff
+7bffffdf
+f7f7ff5f
+ffff73f2
+fffcd8dd
+ffcfff8f
+fffff4ff
+fff45ff5
+ff0f0fff
+ff90ff08
+f2ff22fb
+2fafbfff
+ff21ffff
+ff6fffff
+ffafffa1
+ffffffff
+ffffffff
+ffff1f7f
+7fffafff
+fff8ff8f
+fff8fff8
+ffffdfff
+94f9ffff
+ff9fffff
+cc9fffff
+9cfff66f
+ffff62f2
+ff7ffff6
+ffffffff
+fcf3fffc
+ffffffff
+ffffffff
+ffff4fff
+ffffffff
+ffffffff
+ff7ffff5
+fffffcff
+ffffffcf
+f6ffdfff
+6ffffff6
+ff3fff3f
+ffffffff
+7fffff6f
+ffffffff
+fff22fff
+ffffffff
+ffffffff
+dfffffff
+ffffffff
+fffffbff
+ffff7fff
+f77fff7f
+ffffffff
+ffffffff
+ce090039
+8e393e36
+b2bb1992
+a2695d95
+dfd7e92d
+6eff6ff9
+a436f526
+f3b48442
+81c1c298
+276a1981
+66c71af1
+6e1e69f7
+55682b84
+284c0708
+8b5f2668
+6a2031ff
+390e30e0
+2260446e
+0a13d211
+88c490a3
+0fea81be
+777a5d70
+c47736f4
+44cc4049
+5a1381f3
+ccc98e11
+992ad905
+aaa0a66a
+a1ccac58
+88811c55
+0f0af7fb
+777bf467
+33e45543
+44444a44
+462c6bb4
+bbbb8116
+94908262
+aaaa9049
+533d96dc
+44445219
+e55b7b6b
+eeeee955
+e277cc26
+aaaaa99b
+b02fb25f
+0000059e
+692ac6a6
+5555577e
+c275b734
+22222207
+3c498e4e
+4444449e
+fa612ec1
+888888e8
+3cd0323b
+eeeeeedd
+3bf54b80
+4444444b
+9766fd4f
+77777776
+0d5e5811
+8888888a
+995234e6
+55555553
+32828a48
+22222222
+e828ddff
+ffffffff
+d3cb18f6
+bbbbbbbb
+f5d52cd2
+dddddddd
+55ee9bee
+55555555
+f945fc95
+ffffffff
+cf2aa55f
+cccccccc
+43464df6
+44444444
+88d87d4d
+88888888
+dd664f69
+dddddddd
+ee190a33
+eeeeeeee
+99fbaa60
+99999999
+111d3370
+11111111
+ccc2677e
+cccccccc
+999b106b
+99999999
+eeedafee
+eeeeeeee
+bbbb1909
+bbbbbbbb
+3333076d
+33333333
+bbbb09a9
+bbbbbbbb
+eeee2b35
+eeeeeeee
+88888797
+88888888
+bbbbba7b
+bbbbbbbb
+88888491
+88888888
+66666524
+66666666
+aaaaaa5f
+aaaaaaaa
+22222265
+22222222
+999999e8
+99999999
+77777711
+77777777
+00000003
+00000000
+bbbbbbb1
+bbbbbbbb
+99999992
+99999999
+88888884
+88888888
+11111111
+11111111
+7d877b87
+b9ff3b0b
+6a3e9030
+ec8cae10
+16cf2630
+f1c79ce7
+ecb22242
+d464c42d
+05555166
+0a0460b6
+6dc543d2
+75cd0007
+211f55f1
+5c559f4f
+5ce0d705
+11e1dd41
+5ca68a80
+6c7ac4aa
+155305aa
+a1616500
+33013fff
+10e3307f
+99d0059e
+2e9d19e9
+d5cdc508
+28629049
+00000600
+09007900
+b7bbc0db
+dbbd6c00
+8d04de10
+0d1cd444
+6b40f00b
+bf00fbb2
+60002726
+76678930
+6520069a
+0060d291
+0bfee8c0
+0fe0a108
+7afc0f1c
+7e11b00f
+429380fe
+f0f20003
+80a0cf00
+00760890
+eb00e21e
+00aebb02
+2bea000e
+0002a00e
+760076e0
+6444047a
+b070b99c
+b00000b7
+110d1155
+dd010d0b
+000e4000
+007097e7
+00000b80
+008e0a3c
+004210f0
+3300e001
+060d1000
+010d2a22
+08000f04
+d88c0000
+085004e0
+0b55a004
+a0010003
+a07707aa
+8d830000
+0301ddd0
+60007680
+00066000
+01b05000
+0b007100
+29004002
+f900d004
+01000000
+0070001e
+3c000f00
+9000f0f0
+03307000
+06060600
+00000300
+a3a00400
+b0080000
+01b1b0a3
+09000900
+a100f0f0
+f0000000
+f0000007
+60f20f06
+11020060
+f60f0003
+00000f00
+000ffb00
+00b00000
+00000000
+000004a0
+20002202
+00044020
+bba1000a
+1000b000
+00000000
+00000000
+0b605000
+0060050b
+00000300
+00000000
+90000100
+00001100
+00000000
+a00a0000
+00090000
+00000000
+00002006
+00000000
+04010040
+01000000
+0000000f
+00000000
+00000000
+00007000
+00220000
+00000000
+00000000
+01000000
+00000000
+00000000
+a11e2166
+1b96a2ab
+18200010
+2b10303b
+ce9e9e5a
+aae785a6
+c1fd10d0
+c6ffdc12
+c2226d3f
+6d616d61
+3ef6e755
+beee3bee
+7ebe5e67
+68b81be6
+9e9b5319
+efbfbffb
+d77d2227
+ee2e244d
+9398b522
+0025623b
+868f3739
+cc73bf8b
+0043f548
+00cc930c
+fc5595cf
+aaafaa95
+146e6f6e
+5551145e
+e7836352
+666f2532
+464e3255
+33366536
+693bca63
+2222cd1c
+3fe59093
+2222e777
+6022a76a
+22226105
+72200001
+000078d2
+0436da94
+77777e0b
+9c591cc9
+11111bdc
+d7dd83d7
+66666ddb
+2d1601d2
+88888908
+abca2802
+bbbbbb0b
+9b77ec91
+cccccc18
+81c8ffa2
+88888878
+5cfc5550
+77777755
+37358227
+2222222f
+2db62803
+00000002
+3936650e
+99999993
+e3b32ad0
+aaaaaaa9
+411f11b4
+11111111
+9f567cf6
+ffffffff
+c871d9d8
+dddddddd
+705f75dd
+00000000
+99955a15
+99999999
+349e3131
+33333333
+c8b9a1cf
+cccccccc
+5b31b9e0
+55555555
+11a7160a
+11111111
+44f38f44
+44444444
+cc331bb3
+cccccccc
+bb1b5862
+bbbbbbbb
+aaadba3f
+aaaaaaaa
+9991167a
+99999999
+eee64cc7
+eeeeeeee
+333c411d
+33333333
+bbbb45ee
+bbbbbbbb
+6666ebe8
+66666666
+eeeeff2e
+eeeeeeee
+ffff646c
+ffffffff
+22222d9c
+22222222
+11111d3d
+11111111
+00000f2d
+00000000
+22222ad3
+22222222
+eeeeee3e
+eeeeeeee
+aaaaaaa0
+aaaaaaaa
+77777753
+77777777
+999999a9
+99999999
+99999996
+99999999
+5555555a
+55555555
+11111114
+11111111
+dddddddd
+dddddddd
+eeeeeeee
+eeeeeeee
+ca7013a3
+79353015
+d72c8ee9
+ce14d5bc
+94d6d5e5
+e4ed56ee
+17277cc7
+a7e4b27e
+c913eca1
+facfffc3
+9ca919ad
+f69ac996
+cfbfecfc
+c6fe6fff
+1fd43443
+41331183
+2e01e90f
+6d10601d
+26f8f46e
+64e2f78d
+ff1adfeb
+d8226fcf
+c85cecec
+ff68cb6b
+728f72cf
+f2738282
+b4b3334f
+34fffaf3
+d78d1dde
+186e75e8
+bbbc3fef
+e433a83e
+cfdc52bf
+f4c5b9d4
+cf03f6ff
+b615f021
+75f7c73c
+eeffea2f
+fc451bfb
+45cec1f5
+ff9029f6
+5f625ff2
+23ffe3f4
+f2f5c3ef
+cf66cf07
+ffff67ff
+1af1ff46
+cf1f146f
+ff833ef5
+f38ffffa
+ffbe9aff
+e7ef49af
+fffdd0df
+fbdf0010
+3f053fff
+f895f06f
+1fffffa0
+ffeff8f8
+51f91fff
+ffbf3ff2
+fdfafa57
+d4fff665
+be9ffff9
+9fef5ebe
+ff736fff
+73796727
+fffff5ef
+9fcff55f
+3ffddbfb
+fffedb8f
+61fff6e4
+1ffb4fba
+5f5ff1ff
+ff3f14f1
+6ffcf6ff
+ffbf1bf6
+f9f0f3ff
+ccf3f0ff
+6b66fff3
+bff88ff8
+d7fff7ff
+f717ffff
+ffffff83
+f828ff3f
+cdfcfffc
+7fdffccd
+ffffe2ff
+ffff27f2
+ffffff9f
+f0ffffff
+2ffff2ff
+ff6ffff2
+9ffffcfa
+fffff92a
+ffb6ddfb
+f06df6ff
+fffffaff
+afffefff
+ffff4fff
+6ff78fff
+ffffffff
+2fff2fff
+ef9fbfef
+9ffeffff
+5f6f77ff
+ffffffff
+ffafffff
+fffffaff
+ffff7ffd
+ffffffff
+ffffff4f
+ffffffff
+1fffffff
+ffff11f1
+ffffbfff
+ffffffff
+ffffffff
+ffffffff
+ffffff0f
+ffffffff
+ffffffff
+fff5ff5f
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffefffff
+66640428
+44da44a1
+99961173
+77f4f876
+a3be96a6
+425b2bd1
+89a243da
+0aa0a88a
+7f751225
+99a33735
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ds-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ds-01.S
new file mode 100644
index 000000000..1b573f563
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ds-01.S
@@ -0,0 +1,364 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the aes64ds instruction of the RISC-V extension for the aes64ds covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64ds)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64ds)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnd.*);def TEST_CASE_1=True;",aes64ds)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x6, rs2==x6, rd==x23, rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
+// opcode: aes64ds ; op1:x6; op2:x6; dest:x23; op1val:0x706050403020100; op2val:0x706050403020100
+TEST_RR_OP(aes64ds, x23, x6, x6, 0x0000000000000000, 0x706050403020100, 0x706050403020100, x1, 0, x5)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x8, rs2==x8, rd==x8, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64ds ; op1:x8; op2:x8; dest:x8; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
+TEST_RR_OP(aes64ds, x8, x8, x8, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x1, 8, x5)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x31, rs2==x7, rd==x17, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
+// opcode: aes64ds ; op1:x31; op2:x7; dest:x17; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
+TEST_RR_OP(aes64ds, x17, x31, x7, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x1, 16, x5)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x25, rs2==x2, rd==x25, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: aes64ds ; op1:x25; op2:x2; dest:x25; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
+TEST_RR_OP(aes64ds, x25, x25, x2, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x1, 24, x5)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x20, rs2==x4, rd==x4, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
+// opcode: aes64ds ; op1:x20; op2:x4; dest:x4; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
+TEST_RR_OP(aes64ds, x4, x20, x4, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x1, 32, x5)
+
+inst_5:
+// rs1==x29, rs2==x24, rd==x27, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
+// opcode: aes64ds ; op1:x29; op2:x24; dest:x27; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
+TEST_RR_OP(aes64ds, x27, x29, x24, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x1, 40, x5)
+
+inst_6:
+// rs1==x30, rs2==x15, rd==x11, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: aes64ds ; op1:x30; op2:x15; dest:x11; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(aes64ds, x11, x30, x15, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x1, 48, x5)
+
+inst_7:
+// rs1==x4, rs2==x26, rd==x16, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
+// opcode: aes64ds ; op1:x4; op2:x26; dest:x16; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
+TEST_RR_OP(aes64ds, x16, x4, x26, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x1, 56, x5)
+
+inst_8:
+// rs1==x9, rs2==x14, rd==x3, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
+// opcode: aes64ds ; op1:x9; op2:x14; dest:x3; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
+TEST_RR_OP(aes64ds, x3, x9, x14, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x1, 64, x5)
+
+inst_9:
+// rs1==x19, rs2==x12, rd==x15, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
+// opcode: aes64ds ; op1:x19; op2:x12; dest:x15; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
+TEST_RR_OP(aes64ds, x15, x19, x12, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x1, 72, x5)
+
+inst_10:
+// rs1==x26, rs2==x17, rd==x21, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: aes64ds ; op1:x26; op2:x17; dest:x21; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
+TEST_RR_OP(aes64ds, x21, x26, x17, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x1, 80, x5)
+
+inst_11:
+// rs1==x16, rs2==x13, rd==x19, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
+// opcode: aes64ds ; op1:x16; op2:x13; dest:x19; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
+TEST_RR_OP(aes64ds, x19, x16, x13, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x1, 88, x5)
+
+inst_12:
+// rs1==x3, rs2==x22, rd==x26, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
+// opcode: aes64ds ; op1:x3; op2:x22; dest:x26; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
+TEST_RR_OP(aes64ds, x26, x3, x22, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x1, 96, x5)
+
+inst_13:
+// rs1==x2, rs2==x3, rd==x18, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
+// opcode: aes64ds ; op1:x2; op2:x3; dest:x18; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
+TEST_RR_OP(aes64ds, x18, x2, x3, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x1, 104, x5)
+
+inst_14:
+// rs1==x27, rs2==x11, rd==x30, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
+// opcode: aes64ds ; op1:x27; op2:x11; dest:x30; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
+TEST_RR_OP(aes64ds, x30, x27, x11, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x1, 112, x3)
+
+inst_15:
+// rs1==x13, rs2==x29, rd==x12, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
+// opcode: aes64ds ; op1:x13; op2:x29; dest:x12; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
+TEST_RR_OP(aes64ds, x12, x13, x29, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x1, 120, x3)
+
+inst_16:
+// rs1==x23, rs2==x20, rd==x24, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
+// opcode: aes64ds ; op1:x23; op2:x20; dest:x24; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
+TEST_RR_OP(aes64ds, x24, x23, x20, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x1, 128, x3)
+
+inst_17:
+// rs1==x17, rs2==x28, rd==x2, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
+// opcode: aes64ds ; op1:x17; op2:x28; dest:x2; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
+TEST_RR_OP(aes64ds, x2, x17, x28, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x1, 136, x3)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_18:
+// rs1==x21, rs2==x5, rd==x20, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
+// opcode: aes64ds ; op1:x21; op2:x5; dest:x20; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
+TEST_RR_OP(aes64ds, x20, x21, x5, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x2, 0, x3)
+
+inst_19:
+// rs1==x24, rs2==x31, rd==x28, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
+// opcode: aes64ds ; op1:x24; op2:x31; dest:x28; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
+TEST_RR_OP(aes64ds, x28, x24, x31, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x2, 8, x3)
+
+inst_20:
+// rs1==x7, rs2==x19, rd==x9, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
+// opcode: aes64ds ; op1:x7; op2:x19; dest:x9; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
+TEST_RR_OP(aes64ds, x9, x7, x19, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x2, 16, x3)
+
+inst_21:
+// rs1==x1, rs2==x23, rd==x29, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0xf7f6f5f4f3f2f1f0
+// opcode: aes64ds ; op1:x1; op2:x23; dest:x29; op1val:0xfffefdfcfbfaf9f8; op2val:0xf7f6f5f4f3f2f1f0
+TEST_RR_OP(aes64ds, x29, x1, x23, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xf7f6f5f4f3f2f1f0, x2, 24, x3)
+
+inst_22:
+// rs1==x10, rs2==x9, rd==x31, rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
+// opcode: aes64ds ; op1:x10; op2:x9; dest:x31; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfffefdfcfbfaf9f8
+TEST_RR_OP(aes64ds, x31, x10, x9, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfffefdfcfbfaf9f8, x2, 32, x3)
+
+inst_23:
+// rs1==x12, rs2==x1, rd==x6, rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xe7e6e5e4e3e2e1e0
+// opcode: aes64ds ; op1:x12; op2:x1; dest:x6; op1val:0xefeeedecebeae9e8; op2val:0xe7e6e5e4e3e2e1e0
+TEST_RR_OP(aes64ds, x6, x12, x1, 0x0000000000000000, 0xefeeedecebeae9e8, 0xe7e6e5e4e3e2e1e0, x2, 40, x3)
+
+inst_24:
+// rs1==x11, rs2==x18, rd==x0, rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
+// opcode: aes64ds ; op1:x11; op2:x18; dest:x0; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
+TEST_RR_OP(aes64ds, x0, x11, x18, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x2, 48, x3)
+
+inst_25:
+// rs1==x0, rs2==x21, rd==x1, rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
+// opcode: aes64ds ; op1:x0; op2:x21; dest:x1; op1val:0x0; op2val:0xd7d6d5d4d3d2d1d0
+TEST_RR_OP(aes64ds, x1, x0, x21, 0x0000000000000000, 0x0, 0xd7d6d5d4d3d2d1d0, x2, 56, x3)
+
+inst_26:
+// rs1==x28, rs2==x27, rd==x22, rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdfdedddcdbdad9d8
+// opcode: aes64ds ; op1:x28; op2:x27; dest:x22; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdfdedddcdbdad9d8
+TEST_RR_OP(aes64ds, x22, x28, x27, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdfdedddcdbdad9d8, x2, 64, x3)
+
+inst_27:
+// rs1==x15, rs2==x10, rd==x13, rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
+// opcode: aes64ds ; op1:x15; op2:x10; dest:x13; op1val:0xcfcecdcccbcac9c8; op2val:0xc7c6c5c4c3c2c1c0
+TEST_RR_OP(aes64ds, x13, x15, x10, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xc7c6c5c4c3c2c1c0, x2, 72, x3)
+
+inst_28:
+// rs1==x14, rs2==x16, rd==x10, rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcfcecdcccbcac9c8
+// opcode: aes64ds ; op1:x14; op2:x16; dest:x10; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcfcecdcccbcac9c8
+TEST_RR_OP(aes64ds, x10, x14, x16, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcfcecdcccbcac9c8, x2, 80, x3)
+
+inst_29:
+// rs1==x5, rs2==x30, rd==x7, rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
+// opcode: aes64ds ; op1:x5; op2:x30; dest:x7; op1val:0xbfbebdbcbbbab9b8; op2val:0xb7b6b5b4b3b2b1b0
+TEST_RR_OP(aes64ds, x7, x5, x30, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xb7b6b5b4b3b2b1b0, x2, 88, x3)
+
+inst_30:
+// rs1==x22, rs2==x0, rd==x5, rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
+// opcode: aes64ds ; op1:x22; op2:x0; dest:x5; op1val:0xb7b6b5b4b3b2b1b0; op2val:0x0
+TEST_RR_OP(aes64ds, x5, x22, x0, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0x0, x2, 96, x3)
+
+inst_31:
+// rs1==x18, rs2==x25, rd==x14, rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xa7a6a5a4a3a2a1a0
+// opcode: aes64ds ; op1:x18; op2:x25; dest:x14; op1val:0xafaeadacabaaa9a8; op2val:0xa7a6a5a4a3a2a1a0
+TEST_RR_OP(aes64ds, x14, x18, x25, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa7a6a5a4a3a2a1a0, x2, 104, x3)
+
+inst_32:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xafaeadacabaaa9a8
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xafaeadacabaaa9a8
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xafaeadacabaaa9a8, x2, 112, x3)
+
+inst_33:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0x9796959493929190
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x9f9e9d9c9b9a9998; op2val:0x9796959493929190
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0x9796959493929190, x2, 120, x3)
+
+inst_34:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9f9e9d9c9b9a9998
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x9796959493929190; op2val:0x9f9e9d9c9b9a9998
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x9796959493929190, 0x9f9e9d9c9b9a9998, x2, 128, x3)
+
+inst_35:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x8786858483828180
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x8f8e8d8c8b8a8988; op2val:0x8786858483828180
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x8786858483828180, x2, 136, x3)
+
+inst_36:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8f8e8d8c8b8a8988
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x8786858483828180; op2val:0x8f8e8d8c8b8a8988
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x8786858483828180, 0x8f8e8d8c8b8a8988, x2, 144, x3)
+
+inst_37:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x7776757473727170
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x7f7e7d7c7b7a7978; op2val:0x7776757473727170
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x7776757473727170, x2, 152, x3)
+
+inst_38:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7f7e7d7c7b7a7978
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x7776757473727170; op2val:0x7f7e7d7c7b7a7978
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x7776757473727170, 0x7f7e7d7c7b7a7978, x2, 160, x3)
+
+inst_39:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x6766656463626160
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x6f6e6d6c6b6a6968; op2val:0x6766656463626160
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x6766656463626160, x2, 168, x3)
+
+inst_40:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6f6e6d6c6b6a6968
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x6766656463626160; op2val:0x6f6e6d6c6b6a6968
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x6766656463626160, 0x6f6e6d6c6b6a6968, x2, 176, x3)
+
+inst_41:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x5756555453525150
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x5f5e5d5c5b5a5958; op2val:0x5756555453525150
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x5756555453525150, x2, 184, x3)
+
+inst_42:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5f5e5d5c5b5a5958
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x5756555453525150; op2val:0x5f5e5d5c5b5a5958
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x5756555453525150, 0x5f5e5d5c5b5a5958, x2, 192, x3)
+
+inst_43:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x4746454443424140
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x4f4e4d4c4b4a4948; op2val:0x4746454443424140
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x4746454443424140, x2, 200, x3)
+
+inst_44:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4f4e4d4c4b4a4948
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x4746454443424140; op2val:0x4f4e4d4c4b4a4948
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x4746454443424140, 0x4f4e4d4c4b4a4948, x2, 208, x3)
+
+inst_45:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x3736353433323130
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x3f3e3d3c3b3a3938; op2val:0x3736353433323130
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x3736353433323130, x2, 216, x3)
+
+inst_46:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3f3e3d3c3b3a3938
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x3736353433323130; op2val:0x3f3e3d3c3b3a3938
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x3736353433323130, 0x3f3e3d3c3b3a3938, x2, 224, x3)
+
+inst_47:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x2726252423222120
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x2f2e2d2c2b2a2928; op2val:0x2726252423222120
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x2726252423222120, x2, 232, x3)
+
+inst_48:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2f2e2d2c2b2a2928
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x2726252423222120; op2val:0x2f2e2d2c2b2a2928
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x2726252423222120, 0x2f2e2d2c2b2a2928, x2, 240, x3)
+
+inst_49:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x1716151413121110
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x1f1e1d1c1b1a1918; op2val:0x1716151413121110
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x1716151413121110, x2, 248, x3)
+
+inst_50:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1f1e1d1c1b1a1918
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x1716151413121110; op2val:0x1f1e1d1c1b1a1918
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x1716151413121110, 0x1f1e1d1c1b1a1918, x2, 256, x3)
+
+inst_51:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x0706050403020100
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xf0e0d0c0b0a0908; op2val:0x706050403020100
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x706050403020100, x2, 264, x3)
+
+inst_52:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x706050403020100; op2val:0xf0e0d0c0b0a0908
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x706050403020100, 0xf0e0d0c0b0a0908, x2, 272, x3)
+
+inst_53:
+// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x2, 280, x3)
+
+inst_54:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x2, 288, x3)
+
+inst_55:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x2, 296, x3)
+
+inst_56:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
+// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbfbebdbcbbbab9b8
+TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbfbebdbcbbbab9b8, x2, 304, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 18*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 39*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ds-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ds-rwp1.S
new file mode 100644
index 000000000..652fdcad2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ds-rwp1.S
@@ -0,0 +1,389 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64ds)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64ds)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// 1st Instruction => rs1 = x1; rs2 = x2 | 2nd Instruction => rs1 = x2; rs2 = x1 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x1; op2:x2; dest1:x3; dest2:x4; dest3:x5; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x1, x1, x2;
+aes64ds x3, x1, x2;
+aes64ds x4, x2, x1;
+xor x5, x4, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x4,8);
+RVTEST_SIGUPD(x31,x5,16);
+
+inst_1:
+// 1st Instruction => rs1 = x2; rs2 = x3 | 2nd Instruction => rs1 = x3; rs2 = x2 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x2; op2:x3; dest1:x4; dest2:x5; dest3:x6; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x2, x2, x3;
+aes64ds x4, x2, x3;
+aes64ds x5, x3, x2;
+xor x6, x5, x3;
+RVTEST_SIGUPD(x31,x4,24);
+RVTEST_SIGUPD(x31,x5,32);
+RVTEST_SIGUPD(x31,x6,40);
+
+inst_2:
+// 1st Instruction => rs1 = x3; rs2 = x4 | 2nd Instruction => rs1 = x4; rs2 = x3 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x3; op2:x4; dest1:x5; dest2:x6; dest3:x7; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x3, x3, x4;
+aes64ds x5, x3, x4;
+aes64ds x6, x4, x3;
+xor x7, x6, x4;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+RVTEST_SIGUPD(x31,x7,64);
+
+inst_3:
+// 1st Instruction => rs1 = x4; rs2 = x5 | 2nd Instruction => rs1 = x5; rs2 = x4 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x4; op2:x5; dest1:x6; dest2:x7; dest3:x8; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x4, x4, x5;
+aes64ds x6, x4, x5;
+aes64ds x7, x5, x4;
+xor x8, x7, x5;
+RVTEST_SIGUPD(x31,x6,72);
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_4:
+// 1st Instruction => rs1 = x5; rs2 = x6 | 2nd Instruction => rs1 = x6; rs2 = x5 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x5; op2:x6; dest1:x7; dest2:x8; dest3:x9; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x5, x5, x6;
+aes64ds x7, x5, x6;
+aes64ds x8, x6, x5;
+xor x9, x8, x6;
+RVTEST_SIGUPD(x31,x7,96);
+RVTEST_SIGUPD(x31,x8,104);
+RVTEST_SIGUPD(x31,x9,112);
+
+inst_5:
+// 1st Instruction => rs1 = x6; rs2 = x7 | 2nd Instruction => rs1 = x7; rs2 = x6 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x6; op2:x7; dest1:x8; dest2:x9; dest3:x10; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x6, x6, x7;
+aes64ds x8, x6, x7;
+aes64ds x9, x7, x6;
+xor x10, x9, x7;
+RVTEST_SIGUPD(x31,x8,120);
+RVTEST_SIGUPD(x31,x9,128);
+RVTEST_SIGUPD(x31,x10,136);
+
+inst_6:
+// 1st Instruction => rs1 = x7; rs2 = x8 | 2nd Instruction => rs1 = x8; rs2 = x7 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x7; op2:x8; dest1:x9; dest2:x10; dest3:x11; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x7, x7, x8;
+aes64ds x9, x7, x8;
+aes64ds x10, x8, x7;
+xor x11, x10, x8;
+RVTEST_SIGUPD(x31,x9,144);
+RVTEST_SIGUPD(x31,x10,152);
+RVTEST_SIGUPD(x31,x11,160);
+
+inst_7:
+// 1st Instruction => rs1 = x8; rs2 = x9 | 2nd Instruction => rs1 = x9; rs2 = x8 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x8; op2:x9; dest1:x10; dest2:x11; dest3:x12; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x8, x8, x9;
+aes64ds x10, x8, x9;
+aes64ds x11, x9, x8;
+xor x12, x11, x9;
+RVTEST_SIGUPD(x31,x10,168);
+RVTEST_SIGUPD(x31,x11,176);
+RVTEST_SIGUPD(x31,x12,184);
+
+inst_8:
+// 1st Instruction => rs1 = x9; rs2 = x10 | 2nd Instruction => rs1 = x10; rs2 = x9 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x9; op2:x10; dest1:x11; dest2:x12; dest3:x13; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x9, x9, x10;
+aes64ds x11, x9, x10;
+aes64ds x12, x10, x9;
+xor x13, x12, x10;
+RVTEST_SIGUPD(x31,x11,192);
+RVTEST_SIGUPD(x31,x12,200);
+RVTEST_SIGUPD(x31,x13,208);
+
+inst_9:
+// 1st Instruction => rs1 = x10; rs2 = x11 | 2nd Instruction => rs1 = x11; rs2 = x10 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x10; op2:x11; dest1:x12; dest2:x13; dest3:x14; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x10, x10, x11;
+aes64ds x12, x10, x11;
+aes64ds x13, x11, x10;
+xor x14, x13, x11;
+RVTEST_SIGUPD(x31,x12,216);
+RVTEST_SIGUPD(x31,x13,224);
+RVTEST_SIGUPD(x31,x14,232);
+
+inst_10:
+// 1st Instruction => rs1 = x11; rs2 = x12 | 2nd Instruction => rs1 = x12; rs2 = x11 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x11; op2:x12; dest1:x13; dest2:x14; dest3:x15; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x11, x11, x12;
+aes64ds x13, x11, x12;
+aes64ds x14, x12, x11;
+xor x15, x14, x12;
+RVTEST_SIGUPD(x31,x13,240);
+RVTEST_SIGUPD(x31,x14,248);
+RVTEST_SIGUPD(x31,x15,256);
+
+inst_11:
+// 1st Instruction => rs1 = x12; rs2 = x13 | 2nd Instruction => rs1 = x13; rs2 = x12 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x12; op2:x13; dest1:x14; dest2:x15; dest3:x16; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x12, x12, x13;
+aes64ds x14, x12, x13;
+aes64ds x15, x13, x12;
+xor x16, x15, x13;
+RVTEST_SIGUPD(x31,x14,264);
+RVTEST_SIGUPD(x31,x15,272);
+RVTEST_SIGUPD(x31,x16,280);
+
+inst_12:
+// 1st Instruction => rs1 = x13; rs2 = x14 | 2nd Instruction => rs1 = x14; rs2 = x13 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x13; op2:x14; dest1:x15; dest2:x16; dest3:x17; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x13, x13, x14;
+aes64ds x15, x13, x14;
+aes64ds x16, x14, x13;
+xor x17, x16, x14;
+RVTEST_SIGUPD(x31,x15,288);
+RVTEST_SIGUPD(x31,x16,296);
+RVTEST_SIGUPD(x31,x17,304);
+
+inst_13:
+// 1st Instruction => rs1 = x14; rs2 = x15 | 2nd Instruction => rs1 = x15; rs2 = x14 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x14; op2:x15; dest1:x16; dest2:x17; dest3:x18; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x14, x14, x15;
+aes64ds x16, x14, x15;
+aes64ds x17, x15, x14;
+xor x18, x17, x15;
+RVTEST_SIGUPD(x31,x16,312);
+RVTEST_SIGUPD(x31,x17,320);
+RVTEST_SIGUPD(x31,x18,328);
+
+inst_14:
+// 1st Instruction => rs1 = x15; rs2 = x16 | 2nd Instruction => rs1 = x16; rs2 = x15 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x15; op2:x16; dest1:x17; dest2:x18; dest3:x19; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x15, x15, x16;
+aes64ds x17, x15, x16;
+aes64ds x18, x16, x15;
+xor x19, x18, x16;
+RVTEST_SIGUPD(x31,x17,336);
+RVTEST_SIGUPD(x31,x18,344);
+RVTEST_SIGUPD(x31,x19,352);
+
+inst_15:
+// 1st Instruction => rs1 = x16; rs2 = x17 | 2nd Instruction => rs1 = x17; rs2 = x16 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x16; op2:x17; dest1:x18; dest2:x19; dest3:x20; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x16, x16, x17;
+aes64ds x18, x16, x17;
+aes64ds x19, x17, x16;
+xor x20, x19, x17;
+RVTEST_SIGUPD(x31,x18,360);
+RVTEST_SIGUPD(x31,x19,368);
+RVTEST_SIGUPD(x31,x20,376);
+
+inst_16:
+// 1st Instruction => rs1 = x17; rs2 = x18 | 2nd Instruction => rs1 = x18; rs2 = x17 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x17; op2:x18; dest1:x19; dest2:x20; dest3:x21; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x17, x17, x18;
+aes64ds x19, x17, x18;
+aes64ds x20, x18, x17;
+xor x21, x20, x18;
+RVTEST_SIGUPD(x31,x19,384);
+RVTEST_SIGUPD(x31,x20,392);
+RVTEST_SIGUPD(x31,x21,400);
+
+inst_17:
+// 1st Instruction => rs1 = x18; rs2 = x19 | 2nd Instruction => rs1 = x19; rs2 = x18 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x18; op2:x19; dest1:x20; dest2:x21; dest3:x22; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x18, x18, x19;
+aes64ds x20, x18, x19;
+aes64ds x21, x19, x18;
+xor x22, x21, x19;
+RVTEST_SIGUPD(x31,x20,408);
+RVTEST_SIGUPD(x31,x21,416);
+RVTEST_SIGUPD(x31,x22,424);
+
+inst_18:
+// 1st Instruction => rs1 = x19; rs2 = x20 | 2nd Instruction => rs1 = x20; rs2 = x19 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x19; op2:x20; dest1:x21; dest2:x22; dest3:x23; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x19, x19, x20;
+aes64ds x21, x19, x20;
+aes64ds x22, x20, x19;
+xor x23, x22, x20;
+RVTEST_SIGUPD(x31,x21,432);
+RVTEST_SIGUPD(x31,x22,440);
+RVTEST_SIGUPD(x31,x23,448);
+
+inst_19:
+// 1st Instruction => rs1 = x20; rs2 = x21 | 2nd Instruction => rs1 = x21; rs2 = x20 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x20; op2:x21; dest1:x22; dest2:x23; dest3:x24; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x20, x20, x21;
+aes64ds x22, x20, x21;
+aes64ds x23, x21, x20;
+xor x24, x23, x21;
+RVTEST_SIGUPD(x31,x22,456);
+RVTEST_SIGUPD(x31,x23,464);
+RVTEST_SIGUPD(x31,x24,472);
+
+inst_20:
+// 1st Instruction => rs1 = x21; rs2 = x22 | 2nd Instruction => rs1 = x22; rs2 = x21 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x21; op2:x22; dest1:x23; dest2:x24; dest3:x25; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x21, x21, x22;
+aes64ds x23, x21, x22;
+aes64ds x24, x22, x21;
+xor x25, x24, x22;
+RVTEST_SIGUPD(x31,x23,480);
+RVTEST_SIGUPD(x31,x24,488);
+RVTEST_SIGUPD(x31,x25,496);
+
+inst_21:
+// 1st Instruction => rs1 = x22; rs2 = x23 | 2nd Instruction => rs1 = x23; rs2 = x22 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x22; op2:x23; dest1:x24; dest2:x25; dest3:x26; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x22, x22, x23;
+aes64ds x24, x22, x23;
+aes64ds x25, x23, x22;
+xor x26, x25, x23;
+RVTEST_SIGUPD(x31,x24,504);
+RVTEST_SIGUPD(x31,x25,512);
+RVTEST_SIGUPD(x31,x26,520);
+
+inst_22:
+// 1st Instruction => rs1 = x23; rs2 = x24 | 2nd Instruction => rs1 = x24; rs2 = x23 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x23; op2:x24; dest1:x25; dest2:x26; dest3:x27; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x23, x23, x24;
+aes64ds x25, x23, x24;
+aes64ds x26, x24, x23;
+xor x27, x26, x24;
+RVTEST_SIGUPD(x31,x25,528);
+RVTEST_SIGUPD(x31,x26,536);
+RVTEST_SIGUPD(x31,x27,544);
+
+inst_23:
+// 1st Instruction => rs1 = x24; rs2 = x25 | 2nd Instruction => rs1 = x25; rs2 = x24 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x24; op2:x25; dest1:x26; dest2:x27; dest3:x28; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x24, x24, x25;
+aes64ds x26, x24, x25;
+aes64ds x27, x25, x24;
+xor x28, x27, x25;
+RVTEST_SIGUPD(x31,x26,552);
+RVTEST_SIGUPD(x31,x27,560);
+RVTEST_SIGUPD(x31,x28,568);
+
+inst_24:
+// 1st Instruction => rs1 = x25; rs2 = x26 | 2nd Instruction => rs1 = x26; rs2 = x25 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x25; op2:x26; dest1:x27; dest2:x28; dest3:x29; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x25, x25, x26;
+aes64ds x27, x25, x26;
+aes64ds x28, x26, x25;
+xor x29, x28, x26;
+RVTEST_SIGUPD(x31,x27,576);
+RVTEST_SIGUPD(x31,x28,584);
+RVTEST_SIGUPD(x31,x29,592);
+
+inst_25:
+// 1st Instruction => rs1 = x26; rs2 = x27 | 2nd Instruction => rs1 = x27; rs2 = x26 | Result of xor goes into aes64ds & vice versa
+// opcode: aes64ds; op1:x26; op2:x27; dest1:x28; dest2:x29; dest3:x30; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x26, x26, x27;
+aes64ds x28, x26, x27;
+aes64ds x29, x27, x26;
+xor x30, x29, x27;
+RVTEST_SIGUPD(x31,x28,600);
+RVTEST_SIGUPD(x31,x29,608);
+RVTEST_SIGUPD(x31,x30,616);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 78*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64dsm-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64dsm-01.S
new file mode 100644
index 000000000..d01a79487
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64dsm-01.S
@@ -0,0 +1,364 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the aes64dsm instruction of the RISC-V extension for the aes64dsm covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64dsm)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64dsm)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnd.*);def TEST_CASE_1=True;",aes64dsm)
+
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x5, rs2==x5, rd==x11, rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
+// opcode: aes64dsm ; op1:x5; op2:x5; dest:x11; op1val:0x706050403020100; op2val:0x706050403020100
+TEST_RR_OP(aes64dsm, x11, x5, x5, 0x0000000000000000, 0x706050403020100, 0x706050403020100, x3, 0, x1)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x9, rs2==x9, rd==x9, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64dsm ; op1:x9; op2:x9; dest:x9; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
+TEST_RR_OP(aes64dsm, x9, x9, x9, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x3, 8, x1)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x20, rs2==x11, rd==x15, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
+// opcode: aes64dsm ; op1:x20; op2:x11; dest:x15; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
+TEST_RR_OP(aes64dsm, x15, x20, x11, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x3, 16, x1)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x7, rs2==x15, rd==x7, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: aes64dsm ; op1:x7; op2:x15; dest:x7; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
+TEST_RR_OP(aes64dsm, x7, x7, x15, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x3, 24, x1)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x2, rs2==x21, rd==x21, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
+// opcode: aes64dsm ; op1:x2; op2:x21; dest:x21; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
+TEST_RR_OP(aes64dsm, x21, x2, x21, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x3, 32, x1)
+
+inst_5:
+// rs1==x4, rs2==x31, rd==x5, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
+// opcode: aes64dsm ; op1:x4; op2:x31; dest:x5; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
+TEST_RR_OP(aes64dsm, x5, x4, x31, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x3, 40, x1)
+
+inst_6:
+// rs1==x0, rs2==x13, rd==x23, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: aes64dsm ; op1:x0; op2:x13; dest:x23; op1val:0x0; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(aes64dsm, x23, x0, x13, 0x0000000000000000, 0x0, 0x1aa1beebefb902cb, x3, 48, x1)
+
+inst_7:
+// rs1==x21, rs2==x20, rd==x31, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
+// opcode: aes64dsm ; op1:x21; op2:x20; dest:x31; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
+TEST_RR_OP(aes64dsm, x31, x21, x20, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x3, 56, x1)
+
+inst_8:
+// rs1==x27, rs2==x24, rd==x22, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
+// opcode: aes64dsm ; op1:x27; op2:x24; dest:x22; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
+TEST_RR_OP(aes64dsm, x22, x27, x24, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x3, 64, x1)
+
+inst_9:
+// rs1==x19, rs2==x26, rd==x12, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
+// opcode: aes64dsm ; op1:x19; op2:x26; dest:x12; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
+TEST_RR_OP(aes64dsm, x12, x19, x26, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x3, 72, x1)
+
+inst_10:
+// rs1==x24, rs2==x27, rd==x13, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: aes64dsm ; op1:x24; op2:x27; dest:x13; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
+TEST_RR_OP(aes64dsm, x13, x24, x27, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x3, 80, x1)
+
+inst_11:
+// rs1==x13, rs2==x17, rd==x0, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
+// opcode: aes64dsm ; op1:x13; op2:x17; dest:x0; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
+TEST_RR_OP(aes64dsm, x0, x13, x17, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x3, 88, x1)
+
+inst_12:
+// rs1==x28, rs2==x10, rd==x30, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
+// opcode: aes64dsm ; op1:x28; op2:x10; dest:x30; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
+TEST_RR_OP(aes64dsm, x30, x28, x10, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x3, 96, x1)
+
+inst_13:
+// rs1==x14, rs2==x6, rd==x25, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
+// opcode: aes64dsm ; op1:x14; op2:x6; dest:x25; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
+TEST_RR_OP(aes64dsm, x25, x14, x6, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x3, 104, x1)
+
+inst_14:
+// rs1==x18, rs2==x2, rd==x24, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
+// opcode: aes64dsm ; op1:x18; op2:x2; dest:x24; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
+TEST_RR_OP(aes64dsm, x24, x18, x2, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x3, 112, x1)
+
+inst_15:
+// rs1==x10, rs2==x29, rd==x2, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
+// opcode: aes64dsm ; op1:x10; op2:x29; dest:x2; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
+TEST_RR_OP(aes64dsm, x2, x10, x29, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x3, 120, x1)
+
+inst_16:
+// rs1==x15, rs2==x19, rd==x4, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
+// opcode: aes64dsm ; op1:x15; op2:x19; dest:x4; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
+TEST_RR_OP(aes64dsm, x4, x15, x19, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x3, 128, x5)
+
+inst_17:
+// rs1==x12, rs2==x18, rd==x6, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
+// opcode: aes64dsm ; op1:x12; op2:x18; dest:x6; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
+TEST_RR_OP(aes64dsm, x6, x12, x18, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x3, 136, x5)
+
+inst_18:
+// rs1==x1, rs2==x8, rd==x20, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
+// opcode: aes64dsm ; op1:x1; op2:x8; dest:x20; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
+TEST_RR_OP(aes64dsm, x20, x1, x8, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x3, 144, x5)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_19:
+// rs1==x11, rs2==x22, rd==x3, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
+// opcode: aes64dsm ; op1:x11; op2:x22; dest:x3; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
+TEST_RR_OP(aes64dsm, x3, x11, x22, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x2, 0, x5)
+
+inst_20:
+// rs1==x17, rs2==x28, rd==x1, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
+// opcode: aes64dsm ; op1:x17; op2:x28; dest:x1; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
+TEST_RR_OP(aes64dsm, x1, x17, x28, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x2, 8, x5)
+
+inst_21:
+// rs1==x23, rs2==x12, rd==x29, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0xf7f6f5f4f3f2f1f0
+// opcode: aes64dsm ; op1:x23; op2:x12; dest:x29; op1val:0xfffefdfcfbfaf9f8; op2val:0xf7f6f5f4f3f2f1f0
+TEST_RR_OP(aes64dsm, x29, x23, x12, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xf7f6f5f4f3f2f1f0, x2, 16, x5)
+
+inst_22:
+// rs1==x22, rs2==x30, rd==x16, rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
+// opcode: aes64dsm ; op1:x22; op2:x30; dest:x16; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfffefdfcfbfaf9f8
+TEST_RR_OP(aes64dsm, x16, x22, x30, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfffefdfcfbfaf9f8, x2, 24, x5)
+
+inst_23:
+// rs1==x6, rs2==x16, rd==x26, rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xe7e6e5e4e3e2e1e0
+// opcode: aes64dsm ; op1:x6; op2:x16; dest:x26; op1val:0xefeeedecebeae9e8; op2val:0xe7e6e5e4e3e2e1e0
+TEST_RR_OP(aes64dsm, x26, x6, x16, 0x0000000000000000, 0xefeeedecebeae9e8, 0xe7e6e5e4e3e2e1e0, x2, 32, x5)
+
+inst_24:
+// rs1==x25, rs2==x7, rd==x19, rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
+// opcode: aes64dsm ; op1:x25; op2:x7; dest:x19; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
+TEST_RR_OP(aes64dsm, x19, x25, x7, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x2, 40, x5)
+
+inst_25:
+// rs1==x29, rs2==x4, rd==x28, rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
+// opcode: aes64dsm ; op1:x29; op2:x4; dest:x28; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
+TEST_RR_OP(aes64dsm, x28, x29, x4, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x2, 48, x5)
+
+inst_26:
+// rs1==x26, rs2==x23, rd==x17, rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdfdedddcdbdad9d8
+// opcode: aes64dsm ; op1:x26; op2:x23; dest:x17; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdfdedddcdbdad9d8
+TEST_RR_OP(aes64dsm, x17, x26, x23, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdfdedddcdbdad9d8, x2, 56, x5)
+
+inst_27:
+// rs1==x30, rs2==x3, rd==x8, rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
+// opcode: aes64dsm ; op1:x30; op2:x3; dest:x8; op1val:0xcfcecdcccbcac9c8; op2val:0xc7c6c5c4c3c2c1c0
+TEST_RR_OP(aes64dsm, x8, x30, x3, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xc7c6c5c4c3c2c1c0, x2, 64, x5)
+
+inst_28:
+// rs1==x8, rs2==x25, rd==x27, rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcfcecdcccbcac9c8
+// opcode: aes64dsm ; op1:x8; op2:x25; dest:x27; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcfcecdcccbcac9c8
+TEST_RR_OP(aes64dsm, x27, x8, x25, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcfcecdcccbcac9c8, x2, 72, x5)
+
+inst_29:
+// rs1==x31, rs2==x0, rd==x18, rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
+// opcode: aes64dsm ; op1:x31; op2:x0; dest:x18; op1val:0xbfbebdbcbbbab9b8; op2val:0x0
+TEST_RR_OP(aes64dsm, x18, x31, x0, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0x0, x2, 80, x5)
+
+inst_30:
+// rs1==x16, rs2==x14, rd==x10, rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
+// opcode: aes64dsm ; op1:x16; op2:x14; dest:x10; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbfbebdbcbbbab9b8
+TEST_RR_OP(aes64dsm, x10, x16, x14, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbfbebdbcbbbab9b8, x2, 88, x5)
+
+inst_31:
+// rs1==x3, rs2==x1, rd==x14, rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xa7a6a5a4a3a2a1a0
+// opcode: aes64dsm ; op1:x3; op2:x1; dest:x14; op1val:0xafaeadacabaaa9a8; op2val:0xa7a6a5a4a3a2a1a0
+TEST_RR_OP(aes64dsm, x14, x3, x1, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa7a6a5a4a3a2a1a0, x2, 96, x5)
+
+inst_32:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xafaeadacabaaa9a8
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xafaeadacabaaa9a8
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xafaeadacabaaa9a8, x2, 104, x5)
+
+inst_33:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0x9796959493929190
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x9f9e9d9c9b9a9998; op2val:0x9796959493929190
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0x9796959493929190, x2, 112, x5)
+
+inst_34:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9f9e9d9c9b9a9998
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x9796959493929190; op2val:0x9f9e9d9c9b9a9998
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x9796959493929190, 0x9f9e9d9c9b9a9998, x2, 120, x5)
+
+inst_35:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x8786858483828180
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x8f8e8d8c8b8a8988; op2val:0x8786858483828180
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x8786858483828180, x2, 128, x5)
+
+inst_36:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8f8e8d8c8b8a8988
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x8786858483828180; op2val:0x8f8e8d8c8b8a8988
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x8786858483828180, 0x8f8e8d8c8b8a8988, x2, 136, x5)
+
+inst_37:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x7776757473727170
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x7f7e7d7c7b7a7978; op2val:0x7776757473727170
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x7776757473727170, x2, 144, x5)
+
+inst_38:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7f7e7d7c7b7a7978
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x7776757473727170; op2val:0x7f7e7d7c7b7a7978
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x7776757473727170, 0x7f7e7d7c7b7a7978, x2, 152, x5)
+
+inst_39:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x6766656463626160
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x6f6e6d6c6b6a6968; op2val:0x6766656463626160
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x6766656463626160, x2, 160, x5)
+
+inst_40:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6f6e6d6c6b6a6968
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x6766656463626160; op2val:0x6f6e6d6c6b6a6968
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x6766656463626160, 0x6f6e6d6c6b6a6968, x2, 168, x5)
+
+inst_41:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x5756555453525150
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x5f5e5d5c5b5a5958; op2val:0x5756555453525150
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x5756555453525150, x2, 176, x5)
+
+inst_42:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5f5e5d5c5b5a5958
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x5756555453525150; op2val:0x5f5e5d5c5b5a5958
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x5756555453525150, 0x5f5e5d5c5b5a5958, x2, 184, x5)
+
+inst_43:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x4746454443424140
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x4f4e4d4c4b4a4948; op2val:0x4746454443424140
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x4746454443424140, x2, 192, x5)
+
+inst_44:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4f4e4d4c4b4a4948
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x4746454443424140; op2val:0x4f4e4d4c4b4a4948
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x4746454443424140, 0x4f4e4d4c4b4a4948, x2, 200, x5)
+
+inst_45:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x3736353433323130
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x3f3e3d3c3b3a3938; op2val:0x3736353433323130
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x3736353433323130, x2, 208, x5)
+
+inst_46:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3f3e3d3c3b3a3938
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x3736353433323130; op2val:0x3f3e3d3c3b3a3938
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x3736353433323130, 0x3f3e3d3c3b3a3938, x2, 216, x5)
+
+inst_47:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x2726252423222120
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x2f2e2d2c2b2a2928; op2val:0x2726252423222120
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x2726252423222120, x2, 224, x5)
+
+inst_48:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2f2e2d2c2b2a2928
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x2726252423222120; op2val:0x2f2e2d2c2b2a2928
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x2726252423222120, 0x2f2e2d2c2b2a2928, x2, 232, x5)
+
+inst_49:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x1716151413121110
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x1f1e1d1c1b1a1918; op2val:0x1716151413121110
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x1716151413121110, x2, 240, x5)
+
+inst_50:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1f1e1d1c1b1a1918
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x1716151413121110; op2val:0x1f1e1d1c1b1a1918
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x1716151413121110, 0x1f1e1d1c1b1a1918, x2, 248, x5)
+
+inst_51:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x0706050403020100
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0xf0e0d0c0b0a0908; op2val:0x706050403020100
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x706050403020100, x2, 256, x5)
+
+inst_52:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x706050403020100; op2val:0xf0e0d0c0b0a0908
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x706050403020100, 0xf0e0d0c0b0a0908, x2, 264, x5)
+
+inst_53:
+// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x2, 272, x5)
+
+inst_54:
+// rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x2, 280, x5)
+
+inst_55:
+// rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x2, 288, x5)
+
+inst_56:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
+// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0xbfbebdbcbbbab9b8; op2val:0xb7b6b5b4b3b2b1b0
+TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xb7b6b5b4b3b2b1b0, x2, 296, x5)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x3_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 38*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64dsm-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64dsm-rwp1.S
new file mode 100644
index 000000000..9895fdffb
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64dsm-rwp1.S
@@ -0,0 +1,389 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64dsm)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64dsm)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// 1st Instruction => rs1 = x1; rs2 = x2 | 2nd Instruction => rs1 = x2; rs2 = x1 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x1; op2:x2; dest1:x3; dest2:x4; dest3:x5; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x1, x1, x2;
+aes64dsm x3, x1, x2;
+aes64dsm x4, x2, x1;
+xor x5, x4, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x4,8);
+RVTEST_SIGUPD(x31,x5,16);
+
+inst_1:
+// 1st Instruction => rs1 = x2; rs2 = x3 | 2nd Instruction => rs1 = x3; rs2 = x2 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x2; op2:x3; dest1:x4; dest2:x5; dest3:x6; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x2, x2, x3;
+aes64dsm x4, x2, x3;
+aes64dsm x5, x3, x2;
+xor x6, x5, x3;
+RVTEST_SIGUPD(x31,x4,24);
+RVTEST_SIGUPD(x31,x5,32);
+RVTEST_SIGUPD(x31,x6,40);
+
+inst_2:
+// 1st Instruction => rs1 = x3; rs2 = x4 | 2nd Instruction => rs1 = x4; rs2 = x3 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x3; op2:x4; dest1:x5; dest2:x6; dest3:x7; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x3, x3, x4;
+aes64dsm x5, x3, x4;
+aes64dsm x6, x4, x3;
+xor x7, x6, x4;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+RVTEST_SIGUPD(x31,x7,64);
+
+inst_3:
+// 1st Instruction => rs1 = x4; rs2 = x5 | 2nd Instruction => rs1 = x5; rs2 = x4 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x4; op2:x5; dest1:x6; dest2:x7; dest3:x8; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x4, x4, x5;
+aes64dsm x6, x4, x5;
+aes64dsm x7, x5, x4;
+xor x8, x7, x5;
+RVTEST_SIGUPD(x31,x6,72);
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_4:
+// 1st Instruction => rs1 = x5; rs2 = x6 | 2nd Instruction => rs1 = x6; rs2 = x5 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x5; op2:x6; dest1:x7; dest2:x8; dest3:x9; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x5, x5, x6;
+aes64dsm x7, x5, x6;
+aes64dsm x8, x6, x5;
+xor x9, x8, x6;
+RVTEST_SIGUPD(x31,x7,96);
+RVTEST_SIGUPD(x31,x8,104);
+RVTEST_SIGUPD(x31,x9,112);
+
+inst_5:
+// 1st Instruction => rs1 = x6; rs2 = x7 | 2nd Instruction => rs1 = x7; rs2 = x6 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x6; op2:x7; dest1:x8; dest2:x9; dest3:x10; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x6, x6, x7;
+aes64dsm x8, x6, x7;
+aes64dsm x9, x7, x6;
+xor x10, x9, x7;
+RVTEST_SIGUPD(x31,x8,120);
+RVTEST_SIGUPD(x31,x9,128);
+RVTEST_SIGUPD(x31,x10,136);
+
+inst_6:
+// 1st Instruction => rs1 = x7; rs2 = x8 | 2nd Instruction => rs1 = x8; rs2 = x7 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x7; op2:x8; dest1:x9; dest2:x10; dest3:x11; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x7, x7, x8;
+aes64dsm x9, x7, x8;
+aes64dsm x10, x8, x7;
+xor x11, x10, x8;
+RVTEST_SIGUPD(x31,x9,144);
+RVTEST_SIGUPD(x31,x10,152);
+RVTEST_SIGUPD(x31,x11,160);
+
+inst_7:
+// 1st Instruction => rs1 = x8; rs2 = x9 | 2nd Instruction => rs1 = x9; rs2 = x8 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x8; op2:x9; dest1:x10; dest2:x11; dest3:x12; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x8, x8, x9;
+aes64dsm x10, x8, x9;
+aes64dsm x11, x9, x8;
+xor x12, x11, x9;
+RVTEST_SIGUPD(x31,x10,168);
+RVTEST_SIGUPD(x31,x11,176);
+RVTEST_SIGUPD(x31,x12,184);
+
+inst_8:
+// 1st Instruction => rs1 = x9; rs2 = x10 | 2nd Instruction => rs1 = x10; rs2 = x9 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x9; op2:x10; dest1:x11; dest2:x12; dest3:x13; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x9, x9, x10;
+aes64dsm x11, x9, x10;
+aes64dsm x12, x10, x9;
+xor x13, x12, x10;
+RVTEST_SIGUPD(x31,x11,192);
+RVTEST_SIGUPD(x31,x12,200);
+RVTEST_SIGUPD(x31,x13,208);
+
+inst_9:
+// 1st Instruction => rs1 = x10; rs2 = x11 | 2nd Instruction => rs1 = x11; rs2 = x10 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x10; op2:x11; dest1:x12; dest2:x13; dest3:x14; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x10, x10, x11;
+aes64dsm x12, x10, x11;
+aes64dsm x13, x11, x10;
+xor x14, x13, x11;
+RVTEST_SIGUPD(x31,x12,216);
+RVTEST_SIGUPD(x31,x13,224);
+RVTEST_SIGUPD(x31,x14,232);
+
+inst_10:
+// 1st Instruction => rs1 = x11; rs2 = x12 | 2nd Instruction => rs1 = x12; rs2 = x11 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x11; op2:x12; dest1:x13; dest2:x14; dest3:x15; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x11, x11, x12;
+aes64dsm x13, x11, x12;
+aes64dsm x14, x12, x11;
+xor x15, x14, x12;
+RVTEST_SIGUPD(x31,x13,240);
+RVTEST_SIGUPD(x31,x14,248);
+RVTEST_SIGUPD(x31,x15,256);
+
+inst_11:
+// 1st Instruction => rs1 = x12; rs2 = x13 | 2nd Instruction => rs1 = x13; rs2 = x12 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x12; op2:x13; dest1:x14; dest2:x15; dest3:x16; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x12, x12, x13;
+aes64dsm x14, x12, x13;
+aes64dsm x15, x13, x12;
+xor x16, x15, x13;
+RVTEST_SIGUPD(x31,x14,264);
+RVTEST_SIGUPD(x31,x15,272);
+RVTEST_SIGUPD(x31,x16,280);
+
+inst_12:
+// 1st Instruction => rs1 = x13; rs2 = x14 | 2nd Instruction => rs1 = x14; rs2 = x13 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x13; op2:x14; dest1:x15; dest2:x16; dest3:x17; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x13, x13, x14;
+aes64dsm x15, x13, x14;
+aes64dsm x16, x14, x13;
+xor x17, x16, x14;
+RVTEST_SIGUPD(x31,x15,288);
+RVTEST_SIGUPD(x31,x16,296);
+RVTEST_SIGUPD(x31,x17,304);
+
+inst_13:
+// 1st Instruction => rs1 = x14; rs2 = x15 | 2nd Instruction => rs1 = x15; rs2 = x14 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x14; op2:x15; dest1:x16; dest2:x17; dest3:x18; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x14, x14, x15;
+aes64dsm x16, x14, x15;
+aes64dsm x17, x15, x14;
+xor x18, x17, x15;
+RVTEST_SIGUPD(x31,x16,312);
+RVTEST_SIGUPD(x31,x17,320);
+RVTEST_SIGUPD(x31,x18,328);
+
+inst_14:
+// 1st Instruction => rs1 = x15; rs2 = x16 | 2nd Instruction => rs1 = x16; rs2 = x15 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x15; op2:x16; dest1:x17; dest2:x18; dest3:x19; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x15, x15, x16;
+aes64dsm x17, x15, x16;
+aes64dsm x18, x16, x15;
+xor x19, x18, x16;
+RVTEST_SIGUPD(x31,x17,336);
+RVTEST_SIGUPD(x31,x18,344);
+RVTEST_SIGUPD(x31,x19,352);
+
+inst_15:
+// 1st Instruction => rs1 = x16; rs2 = x17 | 2nd Instruction => rs1 = x17; rs2 = x16 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x16; op2:x17; dest1:x18; dest2:x19; dest3:x20; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x16, x16, x17;
+aes64dsm x18, x16, x17;
+aes64dsm x19, x17, x16;
+xor x20, x19, x17;
+RVTEST_SIGUPD(x31,x18,360);
+RVTEST_SIGUPD(x31,x19,368);
+RVTEST_SIGUPD(x31,x20,376);
+
+inst_16:
+// 1st Instruction => rs1 = x17; rs2 = x18 | 2nd Instruction => rs1 = x18; rs2 = x17 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x17; op2:x18; dest1:x19; dest2:x20; dest3:x21; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x17, x17, x18;
+aes64dsm x19, x17, x18;
+aes64dsm x20, x18, x17;
+xor x21, x20, x18;
+RVTEST_SIGUPD(x31,x19,384);
+RVTEST_SIGUPD(x31,x20,392);
+RVTEST_SIGUPD(x31,x21,400);
+
+inst_17:
+// 1st Instruction => rs1 = x18; rs2 = x19 | 2nd Instruction => rs1 = x19; rs2 = x18 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x18; op2:x19; dest1:x20; dest2:x21; dest3:x22; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x18, x18, x19;
+aes64dsm x20, x18, x19;
+aes64dsm x21, x19, x18;
+xor x22, x21, x19;
+RVTEST_SIGUPD(x31,x20,408);
+RVTEST_SIGUPD(x31,x21,416);
+RVTEST_SIGUPD(x31,x22,424);
+
+inst_18:
+// 1st Instruction => rs1 = x19; rs2 = x20 | 2nd Instruction => rs1 = x20; rs2 = x19 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x19; op2:x20; dest1:x21; dest2:x22; dest3:x23; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x19, x19, x20;
+aes64dsm x21, x19, x20;
+aes64dsm x22, x20, x19;
+xor x23, x22, x20;
+RVTEST_SIGUPD(x31,x21,432);
+RVTEST_SIGUPD(x31,x22,440);
+RVTEST_SIGUPD(x31,x23,448);
+
+inst_19:
+// 1st Instruction => rs1 = x20; rs2 = x21 | 2nd Instruction => rs1 = x21; rs2 = x20 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x20; op2:x21; dest1:x22; dest2:x23; dest3:x24; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x20, x20, x21;
+aes64dsm x22, x20, x21;
+aes64dsm x23, x21, x20;
+xor x24, x23, x21;
+RVTEST_SIGUPD(x31,x22,456);
+RVTEST_SIGUPD(x31,x23,464);
+RVTEST_SIGUPD(x31,x24,472);
+
+inst_20:
+// 1st Instruction => rs1 = x21; rs2 = x22 | 2nd Instruction => rs1 = x22; rs2 = x21 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x21; op2:x22; dest1:x23; dest2:x24; dest3:x25; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x21, x21, x22;
+aes64dsm x23, x21, x22;
+aes64dsm x24, x22, x21;
+xor x25, x24, x22;
+RVTEST_SIGUPD(x31,x23,480);
+RVTEST_SIGUPD(x31,x24,488);
+RVTEST_SIGUPD(x31,x25,496);
+
+inst_21:
+// 1st Instruction => rs1 = x22; rs2 = x23 | 2nd Instruction => rs1 = x23; rs2 = x22 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x22; op2:x23; dest1:x24; dest2:x25; dest3:x26; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x22, x22, x23;
+aes64dsm x24, x22, x23;
+aes64dsm x25, x23, x22;
+xor x26, x25, x23;
+RVTEST_SIGUPD(x31,x24,504);
+RVTEST_SIGUPD(x31,x25,512);
+RVTEST_SIGUPD(x31,x26,520);
+
+inst_22:
+// 1st Instruction => rs1 = x23; rs2 = x24 | 2nd Instruction => rs1 = x24; rs2 = x23 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x23; op2:x24; dest1:x25; dest2:x26; dest3:x27; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x23, x23, x24;
+aes64dsm x25, x23, x24;
+aes64dsm x26, x24, x23;
+xor x27, x26, x24;
+RVTEST_SIGUPD(x31,x25,528);
+RVTEST_SIGUPD(x31,x26,536);
+RVTEST_SIGUPD(x31,x27,544);
+
+inst_23:
+// 1st Instruction => rs1 = x24; rs2 = x25 | 2nd Instruction => rs1 = x25; rs2 = x24 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x24; op2:x25; dest1:x26; dest2:x27; dest3:x28; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x24, x24, x25;
+aes64dsm x26, x24, x25;
+aes64dsm x27, x25, x24;
+xor x28, x27, x25;
+RVTEST_SIGUPD(x31,x26,552);
+RVTEST_SIGUPD(x31,x27,560);
+RVTEST_SIGUPD(x31,x28,568);
+
+inst_24:
+// 1st Instruction => rs1 = x25; rs2 = x26 | 2nd Instruction => rs1 = x26; rs2 = x25 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x25; op2:x26; dest1:x27; dest2:x28; dest3:x29; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x25, x25, x26;
+aes64dsm x27, x25, x26;
+aes64dsm x28, x26, x25;
+xor x29, x28, x26;
+RVTEST_SIGUPD(x31,x27,576);
+RVTEST_SIGUPD(x31,x28,584);
+RVTEST_SIGUPD(x31,x29,592);
+
+inst_25:
+// 1st Instruction => rs1 = x26; rs2 = x27 | 2nd Instruction => rs1 = x27; rs2 = x26 | Result of xor goes into aes64dsm & vice versa
+// opcode: aes64dsm; op1:x26; op2:x27; dest1:x28; dest2:x29; dest3:x30; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x26, x26, x27;
+aes64dsm x28, x26, x27;
+aes64dsm x29, x27, x26;
+xor x30, x29, x27;
+RVTEST_SIGUPD(x31,x28,600);
+RVTEST_SIGUPD(x31,x29,608);
+RVTEST_SIGUPD(x31,x30,616);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 78*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64es-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64es-01.S
new file mode 100644
index 000000000..e870378f8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64es-01.S
@@ -0,0 +1,364 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the aes64es instruction of the RISC-V extension for the aes64es covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64es)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64es)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKne.*);def TEST_CASE_1=True;",aes64es)
+
+RVTEST_SIGBASE( x6,signature_x6_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x8, rs2==x8, rd==x7, rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
+// opcode: aes64es ; op1:x8; op2:x8; dest:x7; op1val:0x706050403020100; op2val:0x706050403020100
+TEST_RR_OP(aes64es, x7, x8, x8, 0x0000000000000000, 0x706050403020100, 0x706050403020100, x6, 0, x2)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x19, rs2==x19, rd==x19, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64es ; op1:x19; op2:x19; dest:x19; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
+TEST_RR_OP(aes64es, x19, x19, x19, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x6, 8, x2)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x10, rs2==x20, rd==x26, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
+// opcode: aes64es ; op1:x10; op2:x20; dest:x26; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
+TEST_RR_OP(aes64es, x26, x10, x20, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x6, 16, x2)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x13, rs2==x7, rd==x13, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: aes64es ; op1:x13; op2:x7; dest:x13; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
+TEST_RR_OP(aes64es, x13, x13, x7, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x6, 24, x2)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x29, rs2==x14, rd==x14, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
+// opcode: aes64es ; op1:x29; op2:x14; dest:x14; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
+TEST_RR_OP(aes64es, x14, x29, x14, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x6, 32, x2)
+
+inst_5:
+// rs1==x15, rs2==x22, rd==x1, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
+// opcode: aes64es ; op1:x15; op2:x22; dest:x1; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
+TEST_RR_OP(aes64es, x1, x15, x22, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x6, 40, x2)
+
+inst_6:
+// rs1==x30, rs2==x13, rd==x21, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: aes64es ; op1:x30; op2:x13; dest:x21; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(aes64es, x21, x30, x13, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x6, 48, x2)
+
+inst_7:
+// rs1==x11, rs2==x9, rd==x20, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
+// opcode: aes64es ; op1:x11; op2:x9; dest:x20; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
+TEST_RR_OP(aes64es, x20, x11, x9, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x6, 56, x2)
+
+inst_8:
+// rs1==x20, rs2==x12, rd==x17, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
+// opcode: aes64es ; op1:x20; op2:x12; dest:x17; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
+TEST_RR_OP(aes64es, x17, x20, x12, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x6, 64, x2)
+
+inst_9:
+// rs1==x31, rs2==x29, rd==x8, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
+// opcode: aes64es ; op1:x31; op2:x29; dest:x8; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
+TEST_RR_OP(aes64es, x8, x31, x29, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x6, 72, x2)
+
+inst_10:
+// rs1==x0, rs2==x15, rd==x23, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: aes64es ; op1:x0; op2:x15; dest:x23; op1val:0x0; op2val:0x53a66ed1dc80d916
+TEST_RR_OP(aes64es, x23, x0, x15, 0x0000000000000000, 0x0, 0x53a66ed1dc80d916, x6, 80, x2)
+
+inst_11:
+// rs1==x9, rs2==x16, rd==x12, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
+// opcode: aes64es ; op1:x9; op2:x16; dest:x12; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
+TEST_RR_OP(aes64es, x12, x9, x16, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x6, 88, x2)
+
+inst_12:
+// rs1==x17, rs2==x28, rd==x5, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
+// opcode: aes64es ; op1:x17; op2:x28; dest:x5; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
+TEST_RR_OP(aes64es, x5, x17, x28, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x6, 96, x2)
+
+inst_13:
+// rs1==x18, rs2==x1, rd==x4, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
+// opcode: aes64es ; op1:x18; op2:x1; dest:x4; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
+TEST_RR_OP(aes64es, x4, x18, x1, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x6, 104, x2)
+
+inst_14:
+// rs1==x25, rs2==x4, rd==x31, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
+// opcode: aes64es ; op1:x25; op2:x4; dest:x31; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
+TEST_RR_OP(aes64es, x31, x25, x4, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x6, 112, x2)
+
+inst_15:
+// rs1==x7, rs2==x17, rd==x10, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
+// opcode: aes64es ; op1:x7; op2:x17; dest:x10; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
+TEST_RR_OP(aes64es, x10, x7, x17, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x6, 120, x2)
+
+inst_16:
+// rs1==x28, rs2==x23, rd==x9, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
+// opcode: aes64es ; op1:x28; op2:x23; dest:x9; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
+TEST_RR_OP(aes64es, x9, x28, x23, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x6, 128, x2)
+
+inst_17:
+// rs1==x23, rs2==x3, rd==x28, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
+// opcode: aes64es ; op1:x23; op2:x3; dest:x28; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
+TEST_RR_OP(aes64es, x28, x23, x3, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x6, 136, x2)
+
+inst_18:
+// rs1==x12, rs2==x18, rd==x2, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
+// opcode: aes64es ; op1:x12; op2:x18; dest:x2; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
+TEST_RR_OP(aes64es, x2, x12, x18, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x6, 144, x8)
+RVTEST_SIGBASE( x7,signature_x7_0)
+
+inst_19:
+// rs1==x26, rs2==x10, rd==x29, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
+// opcode: aes64es ; op1:x26; op2:x10; dest:x29; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
+TEST_RR_OP(aes64es, x29, x26, x10, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x7, 0, x8)
+
+inst_20:
+// rs1==x24, rs2==x27, rd==x22, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
+// opcode: aes64es ; op1:x24; op2:x27; dest:x22; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
+TEST_RR_OP(aes64es, x22, x24, x27, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x7, 8, x8)
+
+inst_21:
+// rs1==x27, rs2==x31, rd==x3, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0xf7f6f5f4f3f2f1f0
+// opcode: aes64es ; op1:x27; op2:x31; dest:x3; op1val:0xfffefdfcfbfaf9f8; op2val:0xf7f6f5f4f3f2f1f0
+TEST_RR_OP(aes64es, x3, x27, x31, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xf7f6f5f4f3f2f1f0, x7, 16, x8)
+
+inst_22:
+// rs1==x1, rs2==x2, rd==x24, rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
+// opcode: aes64es ; op1:x1; op2:x2; dest:x24; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfffefdfcfbfaf9f8
+TEST_RR_OP(aes64es, x24, x1, x2, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfffefdfcfbfaf9f8, x7, 24, x8)
+
+inst_23:
+// rs1==x22, rs2==x26, rd==x16, rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xe7e6e5e4e3e2e1e0
+// opcode: aes64es ; op1:x22; op2:x26; dest:x16; op1val:0xefeeedecebeae9e8; op2val:0xe7e6e5e4e3e2e1e0
+TEST_RR_OP(aes64es, x16, x22, x26, 0x0000000000000000, 0xefeeedecebeae9e8, 0xe7e6e5e4e3e2e1e0, x7, 32, x8)
+
+inst_24:
+// rs1==x3, rs2==x21, rd==x15, rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
+// opcode: aes64es ; op1:x3; op2:x21; dest:x15; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
+TEST_RR_OP(aes64es, x15, x3, x21, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x7, 40, x8)
+
+inst_25:
+// rs1==x14, rs2==x6, rd==x0, rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
+// opcode: aes64es ; op1:x14; op2:x6; dest:x0; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
+TEST_RR_OP(aes64es, x0, x14, x6, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x7, 48, x8)
+
+inst_26:
+// rs1==x5, rs2==x24, rd==x6, rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdfdedddcdbdad9d8
+// opcode: aes64es ; op1:x5; op2:x24; dest:x6; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdfdedddcdbdad9d8
+TEST_RR_OP(aes64es, x6, x5, x24, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdfdedddcdbdad9d8, x7, 56, x8)
+
+inst_27:
+// rs1==x16, rs2==x0, rd==x18, rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
+// opcode: aes64es ; op1:x16; op2:x0; dest:x18; op1val:0xcfcecdcccbcac9c8; op2val:0x0
+TEST_RR_OP(aes64es, x18, x16, x0, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0x0, x7, 64, x8)
+
+inst_28:
+// rs1==x2, rs2==x25, rd==x30, rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcfcecdcccbcac9c8
+// opcode: aes64es ; op1:x2; op2:x25; dest:x30; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcfcecdcccbcac9c8
+TEST_RR_OP(aes64es, x30, x2, x25, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcfcecdcccbcac9c8, x7, 72, x8)
+
+inst_29:
+// rs1==x4, rs2==x30, rd==x11, rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
+// opcode: aes64es ; op1:x4; op2:x30; dest:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xb7b6b5b4b3b2b1b0
+TEST_RR_OP(aes64es, x11, x4, x30, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xb7b6b5b4b3b2b1b0, x7, 80, x8)
+
+inst_30:
+// rs1==x6, rs2==x11, rd==x25, rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
+// opcode: aes64es ; op1:x6; op2:x11; dest:x25; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbfbebdbcbbbab9b8
+TEST_RR_OP(aes64es, x25, x6, x11, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbfbebdbcbbbab9b8, x7, 88, x8)
+
+inst_31:
+// rs1==x21, rs2==x5, rd==x27, rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xa7a6a5a4a3a2a1a0
+// opcode: aes64es ; op1:x21; op2:x5; dest:x27; op1val:0xafaeadacabaaa9a8; op2val:0xa7a6a5a4a3a2a1a0
+TEST_RR_OP(aes64es, x27, x21, x5, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa7a6a5a4a3a2a1a0, x7, 96, x8)
+
+inst_32:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xafaeadacabaaa9a8
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xafaeadacabaaa9a8
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xafaeadacabaaa9a8, x7, 104, x8)
+
+inst_33:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0x9796959493929190
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x9f9e9d9c9b9a9998; op2val:0x9796959493929190
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0x9796959493929190, x7, 112, x8)
+
+inst_34:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9f9e9d9c9b9a9998
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x9796959493929190; op2val:0x9f9e9d9c9b9a9998
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x9796959493929190, 0x9f9e9d9c9b9a9998, x7, 120, x8)
+
+inst_35:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x8786858483828180
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x8f8e8d8c8b8a8988; op2val:0x8786858483828180
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x8786858483828180, x7, 128, x8)
+
+inst_36:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8f8e8d8c8b8a8988
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x8786858483828180; op2val:0x8f8e8d8c8b8a8988
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x8786858483828180, 0x8f8e8d8c8b8a8988, x7, 136, x8)
+
+inst_37:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x7776757473727170
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x7f7e7d7c7b7a7978; op2val:0x7776757473727170
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x7776757473727170, x7, 144, x8)
+
+inst_38:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7f7e7d7c7b7a7978
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x7776757473727170; op2val:0x7f7e7d7c7b7a7978
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x7776757473727170, 0x7f7e7d7c7b7a7978, x7, 152, x8)
+
+inst_39:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x6766656463626160
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x6f6e6d6c6b6a6968; op2val:0x6766656463626160
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x6766656463626160, x7, 160, x8)
+
+inst_40:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6f6e6d6c6b6a6968
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x6766656463626160; op2val:0x6f6e6d6c6b6a6968
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x6766656463626160, 0x6f6e6d6c6b6a6968, x7, 168, x8)
+
+inst_41:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x5756555453525150
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x5f5e5d5c5b5a5958; op2val:0x5756555453525150
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x5756555453525150, x7, 176, x8)
+
+inst_42:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5f5e5d5c5b5a5958
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x5756555453525150; op2val:0x5f5e5d5c5b5a5958
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x5756555453525150, 0x5f5e5d5c5b5a5958, x7, 184, x8)
+
+inst_43:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x4746454443424140
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x4f4e4d4c4b4a4948; op2val:0x4746454443424140
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x4746454443424140, x7, 192, x8)
+
+inst_44:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4f4e4d4c4b4a4948
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x4746454443424140; op2val:0x4f4e4d4c4b4a4948
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x4746454443424140, 0x4f4e4d4c4b4a4948, x7, 200, x8)
+
+inst_45:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x3736353433323130
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x3f3e3d3c3b3a3938; op2val:0x3736353433323130
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x3736353433323130, x7, 208, x8)
+
+inst_46:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3f3e3d3c3b3a3938
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x3736353433323130; op2val:0x3f3e3d3c3b3a3938
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x3736353433323130, 0x3f3e3d3c3b3a3938, x7, 216, x8)
+
+inst_47:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x2726252423222120
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x2f2e2d2c2b2a2928; op2val:0x2726252423222120
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x2726252423222120, x7, 224, x8)
+
+inst_48:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2f2e2d2c2b2a2928
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x2726252423222120; op2val:0x2f2e2d2c2b2a2928
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x2726252423222120, 0x2f2e2d2c2b2a2928, x7, 232, x8)
+
+inst_49:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x1716151413121110
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x1f1e1d1c1b1a1918; op2val:0x1716151413121110
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x1716151413121110, x7, 240, x8)
+
+inst_50:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1f1e1d1c1b1a1918
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x1716151413121110; op2val:0x1f1e1d1c1b1a1918
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x1716151413121110, 0x1f1e1d1c1b1a1918, x7, 248, x8)
+
+inst_51:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x0706050403020100
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0xf0e0d0c0b0a0908; op2val:0x706050403020100
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x706050403020100, x7, 256, x8)
+
+inst_52:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x706050403020100; op2val:0xf0e0d0c0b0a0908
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x706050403020100, 0xf0e0d0c0b0a0908, x7, 264, x8)
+
+inst_53:
+// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x7, 272, x8)
+
+inst_54:
+// rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x7, 280, x8)
+
+inst_55:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x7, 288, x8)
+
+inst_56:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
+// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0xcfcecdcccbcac9c8; op2val:0xc7c6c5c4c3c2c1c0
+TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xc7c6c5c4c3c2c1c0, x7, 296, x8)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x6_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+
+signature_x7_0:
+ .fill 38*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64es-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64es-rwp1.S
new file mode 100644
index 000000000..135f6a5e5
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64es-rwp1.S
@@ -0,0 +1,389 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64es)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64es)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// 1st Instruction => rs1 = x1; rs2 = x2 | 2nd Instruction => rs1 = x2; rs2 = x1 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x1; op2:x2; dest1:x3; dest2:x4; dest3:x5; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x1, x1, x2;
+aes64es x3, x1, x2;
+aes64es x4, x2, x1;
+xor x5, x4, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x4,8);
+RVTEST_SIGUPD(x31,x5,16);
+
+inst_1:
+// 1st Instruction => rs1 = x2; rs2 = x3 | 2nd Instruction => rs1 = x3; rs2 = x2 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x2; op2:x3; dest1:x4; dest2:x5; dest3:x6; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x2, x2, x3;
+aes64es x4, x2, x3;
+aes64es x5, x3, x2;
+xor x6, x5, x3;
+RVTEST_SIGUPD(x31,x4,24);
+RVTEST_SIGUPD(x31,x5,32);
+RVTEST_SIGUPD(x31,x6,40);
+
+inst_2:
+// 1st Instruction => rs1 = x3; rs2 = x4 | 2nd Instruction => rs1 = x4; rs2 = x3 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x3; op2:x4; dest1:x5; dest2:x6; dest3:x7; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x3, x3, x4;
+aes64es x5, x3, x4;
+aes64es x6, x4, x3;
+xor x7, x6, x4;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+RVTEST_SIGUPD(x31,x7,64);
+
+inst_3:
+// 1st Instruction => rs1 = x4; rs2 = x5 | 2nd Instruction => rs1 = x5; rs2 = x4 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x4; op2:x5; dest1:x6; dest2:x7; dest3:x8; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x4, x4, x5;
+aes64es x6, x4, x5;
+aes64es x7, x5, x4;
+xor x8, x7, x5;
+RVTEST_SIGUPD(x31,x6,72);
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_4:
+// 1st Instruction => rs1 = x5; rs2 = x6 | 2nd Instruction => rs1 = x6; rs2 = x5 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x5; op2:x6; dest1:x7; dest2:x8; dest3:x9; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x5, x5, x6;
+aes64es x7, x5, x6;
+aes64es x8, x6, x5;
+xor x9, x8, x6;
+RVTEST_SIGUPD(x31,x7,96);
+RVTEST_SIGUPD(x31,x8,104);
+RVTEST_SIGUPD(x31,x9,112);
+
+inst_5:
+// 1st Instruction => rs1 = x6; rs2 = x7 | 2nd Instruction => rs1 = x7; rs2 = x6 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x6; op2:x7; dest1:x8; dest2:x9; dest3:x10; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x6, x6, x7;
+aes64es x8, x6, x7;
+aes64es x9, x7, x6;
+xor x10, x9, x7;
+RVTEST_SIGUPD(x31,x8,120);
+RVTEST_SIGUPD(x31,x9,128);
+RVTEST_SIGUPD(x31,x10,136);
+
+inst_6:
+// 1st Instruction => rs1 = x7; rs2 = x8 | 2nd Instruction => rs1 = x8; rs2 = x7 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x7; op2:x8; dest1:x9; dest2:x10; dest3:x11; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x7, x7, x8;
+aes64es x9, x7, x8;
+aes64es x10, x8, x7;
+xor x11, x10, x8;
+RVTEST_SIGUPD(x31,x9,144);
+RVTEST_SIGUPD(x31,x10,152);
+RVTEST_SIGUPD(x31,x11,160);
+
+inst_7:
+// 1st Instruction => rs1 = x8; rs2 = x9 | 2nd Instruction => rs1 = x9; rs2 = x8 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x8; op2:x9; dest1:x10; dest2:x11; dest3:x12; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x8, x8, x9;
+aes64es x10, x8, x9;
+aes64es x11, x9, x8;
+xor x12, x11, x9;
+RVTEST_SIGUPD(x31,x10,168);
+RVTEST_SIGUPD(x31,x11,176);
+RVTEST_SIGUPD(x31,x12,184);
+
+inst_8:
+// 1st Instruction => rs1 = x9; rs2 = x10 | 2nd Instruction => rs1 = x10; rs2 = x9 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x9; op2:x10; dest1:x11; dest2:x12; dest3:x13; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x9, x9, x10;
+aes64es x11, x9, x10;
+aes64es x12, x10, x9;
+xor x13, x12, x10;
+RVTEST_SIGUPD(x31,x11,192);
+RVTEST_SIGUPD(x31,x12,200);
+RVTEST_SIGUPD(x31,x13,208);
+
+inst_9:
+// 1st Instruction => rs1 = x10; rs2 = x11 | 2nd Instruction => rs1 = x11; rs2 = x10 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x10; op2:x11; dest1:x12; dest2:x13; dest3:x14; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x10, x10, x11;
+aes64es x12, x10, x11;
+aes64es x13, x11, x10;
+xor x14, x13, x11;
+RVTEST_SIGUPD(x31,x12,216);
+RVTEST_SIGUPD(x31,x13,224);
+RVTEST_SIGUPD(x31,x14,232);
+
+inst_10:
+// 1st Instruction => rs1 = x11; rs2 = x12 | 2nd Instruction => rs1 = x12; rs2 = x11 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x11; op2:x12; dest1:x13; dest2:x14; dest3:x15; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x11, x11, x12;
+aes64es x13, x11, x12;
+aes64es x14, x12, x11;
+xor x15, x14, x12;
+RVTEST_SIGUPD(x31,x13,240);
+RVTEST_SIGUPD(x31,x14,248);
+RVTEST_SIGUPD(x31,x15,256);
+
+inst_11:
+// 1st Instruction => rs1 = x12; rs2 = x13 | 2nd Instruction => rs1 = x13; rs2 = x12 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x12; op2:x13; dest1:x14; dest2:x15; dest3:x16; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x12, x12, x13;
+aes64es x14, x12, x13;
+aes64es x15, x13, x12;
+xor x16, x15, x13;
+RVTEST_SIGUPD(x31,x14,264);
+RVTEST_SIGUPD(x31,x15,272);
+RVTEST_SIGUPD(x31,x16,280);
+
+inst_12:
+// 1st Instruction => rs1 = x13; rs2 = x14 | 2nd Instruction => rs1 = x14; rs2 = x13 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x13; op2:x14; dest1:x15; dest2:x16; dest3:x17; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x13, x13, x14;
+aes64es x15, x13, x14;
+aes64es x16, x14, x13;
+xor x17, x16, x14;
+RVTEST_SIGUPD(x31,x15,288);
+RVTEST_SIGUPD(x31,x16,296);
+RVTEST_SIGUPD(x31,x17,304);
+
+inst_13:
+// 1st Instruction => rs1 = x14; rs2 = x15 | 2nd Instruction => rs1 = x15; rs2 = x14 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x14; op2:x15; dest1:x16; dest2:x17; dest3:x18; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x14, x14, x15;
+aes64es x16, x14, x15;
+aes64es x17, x15, x14;
+xor x18, x17, x15;
+RVTEST_SIGUPD(x31,x16,312);
+RVTEST_SIGUPD(x31,x17,320);
+RVTEST_SIGUPD(x31,x18,328);
+
+inst_14:
+// 1st Instruction => rs1 = x15; rs2 = x16 | 2nd Instruction => rs1 = x16; rs2 = x15 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x15; op2:x16; dest1:x17; dest2:x18; dest3:x19; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x15, x15, x16;
+aes64es x17, x15, x16;
+aes64es x18, x16, x15;
+xor x19, x18, x16;
+RVTEST_SIGUPD(x31,x17,336);
+RVTEST_SIGUPD(x31,x18,344);
+RVTEST_SIGUPD(x31,x19,352);
+
+inst_15:
+// 1st Instruction => rs1 = x16; rs2 = x17 | 2nd Instruction => rs1 = x17; rs2 = x16 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x16; op2:x17; dest1:x18; dest2:x19; dest3:x20; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x16, x16, x17;
+aes64es x18, x16, x17;
+aes64es x19, x17, x16;
+xor x20, x19, x17;
+RVTEST_SIGUPD(x31,x18,360);
+RVTEST_SIGUPD(x31,x19,368);
+RVTEST_SIGUPD(x31,x20,376);
+
+inst_16:
+// 1st Instruction => rs1 = x17; rs2 = x18 | 2nd Instruction => rs1 = x18; rs2 = x17 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x17; op2:x18; dest1:x19; dest2:x20; dest3:x21; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x17, x17, x18;
+aes64es x19, x17, x18;
+aes64es x20, x18, x17;
+xor x21, x20, x18;
+RVTEST_SIGUPD(x31,x19,384);
+RVTEST_SIGUPD(x31,x20,392);
+RVTEST_SIGUPD(x31,x21,400);
+
+inst_17:
+// 1st Instruction => rs1 = x18; rs2 = x19 | 2nd Instruction => rs1 = x19; rs2 = x18 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x18; op2:x19; dest1:x20; dest2:x21; dest3:x22; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x18, x18, x19;
+aes64es x20, x18, x19;
+aes64es x21, x19, x18;
+xor x22, x21, x19;
+RVTEST_SIGUPD(x31,x20,408);
+RVTEST_SIGUPD(x31,x21,416);
+RVTEST_SIGUPD(x31,x22,424);
+
+inst_18:
+// 1st Instruction => rs1 = x19; rs2 = x20 | 2nd Instruction => rs1 = x20; rs2 = x19 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x19; op2:x20; dest1:x21; dest2:x22; dest3:x23; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x19, x19, x20;
+aes64es x21, x19, x20;
+aes64es x22, x20, x19;
+xor x23, x22, x20;
+RVTEST_SIGUPD(x31,x21,432);
+RVTEST_SIGUPD(x31,x22,440);
+RVTEST_SIGUPD(x31,x23,448);
+
+inst_19:
+// 1st Instruction => rs1 = x20; rs2 = x21 | 2nd Instruction => rs1 = x21; rs2 = x20 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x20; op2:x21; dest1:x22; dest2:x23; dest3:x24; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x20, x20, x21;
+aes64es x22, x20, x21;
+aes64es x23, x21, x20;
+xor x24, x23, x21;
+RVTEST_SIGUPD(x31,x22,456);
+RVTEST_SIGUPD(x31,x23,464);
+RVTEST_SIGUPD(x31,x24,472);
+
+inst_20:
+// 1st Instruction => rs1 = x21; rs2 = x22 | 2nd Instruction => rs1 = x22; rs2 = x21 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x21; op2:x22; dest1:x23; dest2:x24; dest3:x25; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x21, x21, x22;
+aes64es x23, x21, x22;
+aes64es x24, x22, x21;
+xor x25, x24, x22;
+RVTEST_SIGUPD(x31,x23,480);
+RVTEST_SIGUPD(x31,x24,488);
+RVTEST_SIGUPD(x31,x25,496);
+
+inst_21:
+// 1st Instruction => rs1 = x22; rs2 = x23 | 2nd Instruction => rs1 = x23; rs2 = x22 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x22; op2:x23; dest1:x24; dest2:x25; dest3:x26; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x22, x22, x23;
+aes64es x24, x22, x23;
+aes64es x25, x23, x22;
+xor x26, x25, x23;
+RVTEST_SIGUPD(x31,x24,504);
+RVTEST_SIGUPD(x31,x25,512);
+RVTEST_SIGUPD(x31,x26,520);
+
+inst_22:
+// 1st Instruction => rs1 = x23; rs2 = x24 | 2nd Instruction => rs1 = x24; rs2 = x23 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x23; op2:x24; dest1:x25; dest2:x26; dest3:x27; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x23, x23, x24;
+aes64es x25, x23, x24;
+aes64es x26, x24, x23;
+xor x27, x26, x24;
+RVTEST_SIGUPD(x31,x25,528);
+RVTEST_SIGUPD(x31,x26,536);
+RVTEST_SIGUPD(x31,x27,544);
+
+inst_23:
+// 1st Instruction => rs1 = x24; rs2 = x25 | 2nd Instruction => rs1 = x25; rs2 = x24 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x24; op2:x25; dest1:x26; dest2:x27; dest3:x28; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x24, x24, x25;
+aes64es x26, x24, x25;
+aes64es x27, x25, x24;
+xor x28, x27, x25;
+RVTEST_SIGUPD(x31,x26,552);
+RVTEST_SIGUPD(x31,x27,560);
+RVTEST_SIGUPD(x31,x28,568);
+
+inst_24:
+// 1st Instruction => rs1 = x25; rs2 = x26 | 2nd Instruction => rs1 = x26; rs2 = x25 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x25; op2:x26; dest1:x27; dest2:x28; dest3:x29; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x25, x25, x26;
+aes64es x27, x25, x26;
+aes64es x28, x26, x25;
+xor x29, x28, x26;
+RVTEST_SIGUPD(x31,x27,576);
+RVTEST_SIGUPD(x31,x28,584);
+RVTEST_SIGUPD(x31,x29,592);
+
+inst_25:
+// 1st Instruction => rs1 = x26; rs2 = x27 | 2nd Instruction => rs1 = x27; rs2 = x26 | Result of xor goes into aes64es & vice versa
+// opcode: aes64es; op1:x26; op2:x27; dest1:x28; dest2:x29; dest3:x30; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x26, x26, x27;
+aes64es x28, x26, x27;
+aes64es x29, x27, x26;
+xor x30, x29, x27;
+RVTEST_SIGUPD(x31,x28,600);
+RVTEST_SIGUPD(x31,x29,608);
+RVTEST_SIGUPD(x31,x30,616);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 78*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64esm-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64esm-01.S
new file mode 100644
index 000000000..b623390e8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64esm-01.S
@@ -0,0 +1,364 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the aes64esm instruction of the RISC-V extension for the aes64esm covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64esm)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64esm)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKne.*);def TEST_CASE_1=True;",aes64esm)
+
+RVTEST_SIGBASE( x10,signature_x10_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x18, rs2==x18, rd==x29, rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
+// opcode: aes64esm ; op1:x18; op2:x18; dest:x29; op1val:0x706050403020100; op2val:0x706050403020100
+TEST_RR_OP(aes64esm, x29, x18, x18, 0x0000000000000000, 0x706050403020100, 0x706050403020100, x10, 0, x4)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x9, rs2==x9, rd==x9, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64esm ; op1:x9; op2:x9; dest:x9; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
+TEST_RR_OP(aes64esm, x9, x9, x9, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x10, 8, x4)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x21, rs2==x19, rd==x7, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
+// opcode: aes64esm ; op1:x21; op2:x19; dest:x7; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
+TEST_RR_OP(aes64esm, x7, x21, x19, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x10, 16, x4)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x22, rs2==x7, rd==x22, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: aes64esm ; op1:x22; op2:x7; dest:x22; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
+TEST_RR_OP(aes64esm, x22, x22, x7, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x10, 24, x4)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x0, rs2==x26, rd==x26, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
+// opcode: aes64esm ; op1:x0; op2:x26; dest:x26; op1val:0x0; op2val:0x1826a804284fe16c
+TEST_RR_OP(aes64esm, x26, x0, x26, 0x0000000000000000, 0x0, 0x1826a804284fe16c, x10, 32, x4)
+
+inst_5:
+// rs1==x12, rs2==x11, rd==x24, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
+// opcode: aes64esm ; op1:x12; op2:x11; dest:x24; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
+TEST_RR_OP(aes64esm, x24, x12, x11, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x10, 40, x4)
+
+inst_6:
+// rs1==x23, rs2==x3, rd==x6, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: aes64esm ; op1:x23; op2:x3; dest:x6; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(aes64esm, x6, x23, x3, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x10, 48, x4)
+
+inst_7:
+// rs1==x3, rs2==x14, rd==x0, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
+// opcode: aes64esm ; op1:x3; op2:x14; dest:x0; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
+TEST_RR_OP(aes64esm, x0, x3, x14, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x10, 56, x4)
+
+inst_8:
+// rs1==x11, rs2==x20, rd==x1, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
+// opcode: aes64esm ; op1:x11; op2:x20; dest:x1; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
+TEST_RR_OP(aes64esm, x1, x11, x20, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x10, 64, x4)
+
+inst_9:
+// rs1==x5, rs2==x30, rd==x23, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
+// opcode: aes64esm ; op1:x5; op2:x30; dest:x23; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
+TEST_RR_OP(aes64esm, x23, x5, x30, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x10, 72, x4)
+
+inst_10:
+// rs1==x19, rs2==x12, rd==x27, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: aes64esm ; op1:x19; op2:x12; dest:x27; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
+TEST_RR_OP(aes64esm, x27, x19, x12, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x10, 80, x4)
+
+inst_11:
+// rs1==x29, rs2==x21, rd==x19, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
+// opcode: aes64esm ; op1:x29; op2:x21; dest:x19; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
+TEST_RR_OP(aes64esm, x19, x29, x21, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x10, 88, x4)
+
+inst_12:
+// rs1==x24, rs2==x27, rd==x21, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
+// opcode: aes64esm ; op1:x24; op2:x27; dest:x21; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
+TEST_RR_OP(aes64esm, x21, x24, x27, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x10, 96, x4)
+
+inst_13:
+// rs1==x8, rs2==x2, rd==x20, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
+// opcode: aes64esm ; op1:x8; op2:x2; dest:x20; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
+TEST_RR_OP(aes64esm, x20, x8, x2, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x10, 104, x4)
+
+inst_14:
+// rs1==x14, rs2==x1, rd==x15, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
+// opcode: aes64esm ; op1:x14; op2:x1; dest:x15; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
+TEST_RR_OP(aes64esm, x15, x14, x1, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x10, 112, x4)
+
+inst_15:
+// rs1==x25, rs2==x6, rd==x8, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
+// opcode: aes64esm ; op1:x25; op2:x6; dest:x8; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
+TEST_RR_OP(aes64esm, x8, x25, x6, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x10, 120, x4)
+
+inst_16:
+// rs1==x6, rs2==x22, rd==x28, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
+// opcode: aes64esm ; op1:x6; op2:x22; dest:x28; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
+TEST_RR_OP(aes64esm, x28, x6, x22, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x10, 128, x4)
+
+inst_17:
+// rs1==x31, rs2==x17, rd==x14, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
+// opcode: aes64esm ; op1:x31; op2:x17; dest:x14; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
+TEST_RR_OP(aes64esm, x14, x31, x17, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x10, 136, x4)
+
+inst_18:
+// rs1==x15, rs2==x8, rd==x4, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
+// opcode: aes64esm ; op1:x15; op2:x8; dest:x4; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
+TEST_RR_OP(aes64esm, x4, x15, x8, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x10, 144, x9)
+RVTEST_SIGBASE( x6,signature_x6_0)
+
+inst_19:
+// rs1==x30, rs2==x13, rd==x12, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
+// opcode: aes64esm ; op1:x30; op2:x13; dest:x12; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
+TEST_RR_OP(aes64esm, x12, x30, x13, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x6, 0, x9)
+
+inst_20:
+// rs1==x1, rs2==x23, rd==x18, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
+// opcode: aes64esm ; op1:x1; op2:x23; dest:x18; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
+TEST_RR_OP(aes64esm, x18, x1, x23, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x6, 8, x9)
+
+inst_21:
+// rs1==x10, rs2==x28, rd==x31, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0xf7f6f5f4f3f2f1f0
+// opcode: aes64esm ; op1:x10; op2:x28; dest:x31; op1val:0xfffefdfcfbfaf9f8; op2val:0xf7f6f5f4f3f2f1f0
+TEST_RR_OP(aes64esm, x31, x10, x28, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xf7f6f5f4f3f2f1f0, x6, 16, x9)
+
+inst_22:
+// rs1==x4, rs2==x0, rd==x30, rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
+// opcode: aes64esm ; op1:x4; op2:x0; dest:x30; op1val:0xf7f6f5f4f3f2f1f0; op2val:0x0
+TEST_RR_OP(aes64esm, x30, x4, x0, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0x0, x6, 24, x9)
+
+inst_23:
+// rs1==x2, rs2==x5, rd==x3, rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xe7e6e5e4e3e2e1e0
+// opcode: aes64esm ; op1:x2; op2:x5; dest:x3; op1val:0xefeeedecebeae9e8; op2val:0xe7e6e5e4e3e2e1e0
+TEST_RR_OP(aes64esm, x3, x2, x5, 0x0000000000000000, 0xefeeedecebeae9e8, 0xe7e6e5e4e3e2e1e0, x6, 32, x9)
+
+inst_24:
+// rs1==x16, rs2==x15, rd==x5, rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
+// opcode: aes64esm ; op1:x16; op2:x15; dest:x5; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
+TEST_RR_OP(aes64esm, x5, x16, x15, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x6, 40, x9)
+
+inst_25:
+// rs1==x20, rs2==x31, rd==x25, rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
+// opcode: aes64esm ; op1:x20; op2:x31; dest:x25; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
+TEST_RR_OP(aes64esm, x25, x20, x31, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x6, 48, x9)
+
+inst_26:
+// rs1==x7, rs2==x25, rd==x13, rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdfdedddcdbdad9d8
+// opcode: aes64esm ; op1:x7; op2:x25; dest:x13; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdfdedddcdbdad9d8
+TEST_RR_OP(aes64esm, x13, x7, x25, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdfdedddcdbdad9d8, x6, 56, x9)
+
+inst_27:
+// rs1==x13, rs2==x4, rd==x2, rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
+// opcode: aes64esm ; op1:x13; op2:x4; dest:x2; op1val:0xcfcecdcccbcac9c8; op2val:0xc7c6c5c4c3c2c1c0
+TEST_RR_OP(aes64esm, x2, x13, x4, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xc7c6c5c4c3c2c1c0, x6, 64, x9)
+
+inst_28:
+// rs1==x28, rs2==x10, rd==x11, rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcfcecdcccbcac9c8
+// opcode: aes64esm ; op1:x28; op2:x10; dest:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcfcecdcccbcac9c8
+TEST_RR_OP(aes64esm, x11, x28, x10, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcfcecdcccbcac9c8, x6, 72, x9)
+
+inst_29:
+// rs1==x17, rs2==x29, rd==x10, rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
+// opcode: aes64esm ; op1:x17; op2:x29; dest:x10; op1val:0xbfbebdbcbbbab9b8; op2val:0xb7b6b5b4b3b2b1b0
+TEST_RR_OP(aes64esm, x10, x17, x29, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xb7b6b5b4b3b2b1b0, x6, 80, x9)
+
+inst_30:
+// rs1==x27, rs2==x24, rd==x17, rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
+// opcode: aes64esm ; op1:x27; op2:x24; dest:x17; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbfbebdbcbbbab9b8
+TEST_RR_OP(aes64esm, x17, x27, x24, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbfbebdbcbbbab9b8, x6, 88, x9)
+
+inst_31:
+// rs1==x26, rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xa7a6a5a4a3a2a1a0
+// opcode: aes64esm ; op1:x26; op2:x17; dest:x2; op1val:0xafaeadacabaaa9a8; op2val:0xa7a6a5a4a3a2a1a0
+TEST_RR_OP(aes64esm, x2, x26, x17, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa7a6a5a4a3a2a1a0, x6, 96, x9)
+
+inst_32:
+// rs2==x16, rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xafaeadacabaaa9a8
+// opcode: aes64esm ; op1:x23; op2:x16; dest:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xafaeadacabaaa9a8
+TEST_RR_OP(aes64esm, x11, x23, x16, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xafaeadacabaaa9a8, x6, 104, x9)
+
+inst_33:
+// rd==x16, rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0x9796959493929190
+// opcode: aes64esm ; op1:x25; op2:x19; dest:x16; op1val:0x9f9e9d9c9b9a9998; op2val:0x9796959493929190
+TEST_RR_OP(aes64esm, x16, x25, x19, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0x9796959493929190, x6, 112, x9)
+
+inst_34:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9f9e9d9c9b9a9998
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x9796959493929190; op2val:0x9f9e9d9c9b9a9998
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x9796959493929190, 0x9f9e9d9c9b9a9998, x6, 120, x9)
+
+inst_35:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x8786858483828180
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x8f8e8d8c8b8a8988; op2val:0x8786858483828180
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x8786858483828180, x6, 128, x9)
+
+inst_36:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8f8e8d8c8b8a8988
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x8786858483828180; op2val:0x8f8e8d8c8b8a8988
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x8786858483828180, 0x8f8e8d8c8b8a8988, x6, 136, x9)
+
+inst_37:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x7776757473727170
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x7f7e7d7c7b7a7978; op2val:0x7776757473727170
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x7776757473727170, x6, 144, x9)
+
+inst_38:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7f7e7d7c7b7a7978
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x7776757473727170; op2val:0x7f7e7d7c7b7a7978
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x7776757473727170, 0x7f7e7d7c7b7a7978, x6, 152, x9)
+
+inst_39:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x6766656463626160
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x6f6e6d6c6b6a6968; op2val:0x6766656463626160
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x6766656463626160, x6, 160, x9)
+
+inst_40:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6f6e6d6c6b6a6968
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x6766656463626160; op2val:0x6f6e6d6c6b6a6968
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x6766656463626160, 0x6f6e6d6c6b6a6968, x6, 168, x9)
+
+inst_41:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x5756555453525150
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x5f5e5d5c5b5a5958; op2val:0x5756555453525150
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x5756555453525150, x6, 176, x9)
+
+inst_42:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5f5e5d5c5b5a5958
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x5756555453525150; op2val:0x5f5e5d5c5b5a5958
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x5756555453525150, 0x5f5e5d5c5b5a5958, x6, 184, x9)
+
+inst_43:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x4746454443424140
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x4f4e4d4c4b4a4948; op2val:0x4746454443424140
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x4746454443424140, x6, 192, x9)
+
+inst_44:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4f4e4d4c4b4a4948
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x4746454443424140; op2val:0x4f4e4d4c4b4a4948
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x4746454443424140, 0x4f4e4d4c4b4a4948, x6, 200, x9)
+
+inst_45:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x3736353433323130
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x3f3e3d3c3b3a3938; op2val:0x3736353433323130
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x3736353433323130, x6, 208, x9)
+
+inst_46:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3f3e3d3c3b3a3938
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x3736353433323130; op2val:0x3f3e3d3c3b3a3938
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x3736353433323130, 0x3f3e3d3c3b3a3938, x6, 216, x9)
+
+inst_47:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x2726252423222120
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x2f2e2d2c2b2a2928; op2val:0x2726252423222120
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x2726252423222120, x6, 224, x9)
+
+inst_48:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2f2e2d2c2b2a2928
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x2726252423222120; op2val:0x2f2e2d2c2b2a2928
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x2726252423222120, 0x2f2e2d2c2b2a2928, x6, 232, x9)
+
+inst_49:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x1716151413121110
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x1f1e1d1c1b1a1918; op2val:0x1716151413121110
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x1716151413121110, x6, 240, x9)
+
+inst_50:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1f1e1d1c1b1a1918
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x1716151413121110; op2val:0x1f1e1d1c1b1a1918
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x1716151413121110, 0x1f1e1d1c1b1a1918, x6, 248, x9)
+
+inst_51:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x0706050403020100
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0xf0e0d0c0b0a0908; op2val:0x706050403020100
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x706050403020100, x6, 256, x9)
+
+inst_52:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x706050403020100; op2val:0xf0e0d0c0b0a0908
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x706050403020100, 0xf0e0d0c0b0a0908, x6, 264, x9)
+
+inst_53:
+// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x6, 272, x9)
+
+inst_54:
+// rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x6, 280, x9)
+
+inst_55:
+// rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x6, 288, x9)
+
+inst_56:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
+// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfffefdfcfbfaf9f8
+TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfffefdfcfbfaf9f8, x6, 296, x9)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x10_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x10_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_0:
+ .fill 38*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64esm-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64esm-rwp1.S
new file mode 100644
index 000000000..1f01ceffc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64esm-rwp1.S
@@ -0,0 +1,389 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64esm)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64esm)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// 1st Instruction => rs1 = x1; rs2 = x2 | 2nd Instruction => rs1 = x2; rs2 = x1 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x1; op2:x2; dest1:x3; dest2:x4; dest3:x5; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x1, x1, x2;
+aes64esm x3, x1, x2;
+aes64esm x4, x2, x1;
+xor x5, x4, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x4,8);
+RVTEST_SIGUPD(x31,x5,16);
+
+inst_1:
+// 1st Instruction => rs1 = x2; rs2 = x3 | 2nd Instruction => rs1 = x3; rs2 = x2 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x2; op2:x3; dest1:x4; dest2:x5; dest3:x6; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x2, x2, x3;
+aes64esm x4, x2, x3;
+aes64esm x5, x3, x2;
+xor x6, x5, x3;
+RVTEST_SIGUPD(x31,x4,24);
+RVTEST_SIGUPD(x31,x5,32);
+RVTEST_SIGUPD(x31,x6,40);
+
+inst_2:
+// 1st Instruction => rs1 = x3; rs2 = x4 | 2nd Instruction => rs1 = x4; rs2 = x3 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x3; op2:x4; dest1:x5; dest2:x6; dest3:x7; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x3, x3, x4;
+aes64esm x5, x3, x4;
+aes64esm x6, x4, x3;
+xor x7, x6, x4;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+RVTEST_SIGUPD(x31,x7,64);
+
+inst_3:
+// 1st Instruction => rs1 = x4; rs2 = x5 | 2nd Instruction => rs1 = x5; rs2 = x4 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x4; op2:x5; dest1:x6; dest2:x7; dest3:x8; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x4, x4, x5;
+aes64esm x6, x4, x5;
+aes64esm x7, x5, x4;
+xor x8, x7, x5;
+RVTEST_SIGUPD(x31,x6,72);
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_4:
+// 1st Instruction => rs1 = x5; rs2 = x6 | 2nd Instruction => rs1 = x6; rs2 = x5 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x5; op2:x6; dest1:x7; dest2:x8; dest3:x9; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x5, x5, x6;
+aes64esm x7, x5, x6;
+aes64esm x8, x6, x5;
+xor x9, x8, x6;
+RVTEST_SIGUPD(x31,x7,96);
+RVTEST_SIGUPD(x31,x8,104);
+RVTEST_SIGUPD(x31,x9,112);
+
+inst_5:
+// 1st Instruction => rs1 = x6; rs2 = x7 | 2nd Instruction => rs1 = x7; rs2 = x6 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x6; op2:x7; dest1:x8; dest2:x9; dest3:x10; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x6, x6, x7;
+aes64esm x8, x6, x7;
+aes64esm x9, x7, x6;
+xor x10, x9, x7;
+RVTEST_SIGUPD(x31,x8,120);
+RVTEST_SIGUPD(x31,x9,128);
+RVTEST_SIGUPD(x31,x10,136);
+
+inst_6:
+// 1st Instruction => rs1 = x7; rs2 = x8 | 2nd Instruction => rs1 = x8; rs2 = x7 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x7; op2:x8; dest1:x9; dest2:x10; dest3:x11; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x7, x7, x8;
+aes64esm x9, x7, x8;
+aes64esm x10, x8, x7;
+xor x11, x10, x8;
+RVTEST_SIGUPD(x31,x9,144);
+RVTEST_SIGUPD(x31,x10,152);
+RVTEST_SIGUPD(x31,x11,160);
+
+inst_7:
+// 1st Instruction => rs1 = x8; rs2 = x9 | 2nd Instruction => rs1 = x9; rs2 = x8 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x8; op2:x9; dest1:x10; dest2:x11; dest3:x12; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x8, x8, x9;
+aes64esm x10, x8, x9;
+aes64esm x11, x9, x8;
+xor x12, x11, x9;
+RVTEST_SIGUPD(x31,x10,168);
+RVTEST_SIGUPD(x31,x11,176);
+RVTEST_SIGUPD(x31,x12,184);
+
+inst_8:
+// 1st Instruction => rs1 = x9; rs2 = x10 | 2nd Instruction => rs1 = x10; rs2 = x9 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x9; op2:x10; dest1:x11; dest2:x12; dest3:x13; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x9, x9, x10;
+aes64esm x11, x9, x10;
+aes64esm x12, x10, x9;
+xor x13, x12, x10;
+RVTEST_SIGUPD(x31,x11,192);
+RVTEST_SIGUPD(x31,x12,200);
+RVTEST_SIGUPD(x31,x13,208);
+
+inst_9:
+// 1st Instruction => rs1 = x10; rs2 = x11 | 2nd Instruction => rs1 = x11; rs2 = x10 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x10; op2:x11; dest1:x12; dest2:x13; dest3:x14; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x10, x10, x11;
+aes64esm x12, x10, x11;
+aes64esm x13, x11, x10;
+xor x14, x13, x11;
+RVTEST_SIGUPD(x31,x12,216);
+RVTEST_SIGUPD(x31,x13,224);
+RVTEST_SIGUPD(x31,x14,232);
+
+inst_10:
+// 1st Instruction => rs1 = x11; rs2 = x12 | 2nd Instruction => rs1 = x12; rs2 = x11 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x11; op2:x12; dest1:x13; dest2:x14; dest3:x15; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x11, x11, x12;
+aes64esm x13, x11, x12;
+aes64esm x14, x12, x11;
+xor x15, x14, x12;
+RVTEST_SIGUPD(x31,x13,240);
+RVTEST_SIGUPD(x31,x14,248);
+RVTEST_SIGUPD(x31,x15,256);
+
+inst_11:
+// 1st Instruction => rs1 = x12; rs2 = x13 | 2nd Instruction => rs1 = x13; rs2 = x12 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x12; op2:x13; dest1:x14; dest2:x15; dest3:x16; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x12, x12, x13;
+aes64esm x14, x12, x13;
+aes64esm x15, x13, x12;
+xor x16, x15, x13;
+RVTEST_SIGUPD(x31,x14,264);
+RVTEST_SIGUPD(x31,x15,272);
+RVTEST_SIGUPD(x31,x16,280);
+
+inst_12:
+// 1st Instruction => rs1 = x13; rs2 = x14 | 2nd Instruction => rs1 = x14; rs2 = x13 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x13; op2:x14; dest1:x15; dest2:x16; dest3:x17; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x13, x13, x14;
+aes64esm x15, x13, x14;
+aes64esm x16, x14, x13;
+xor x17, x16, x14;
+RVTEST_SIGUPD(x31,x15,288);
+RVTEST_SIGUPD(x31,x16,296);
+RVTEST_SIGUPD(x31,x17,304);
+
+inst_13:
+// 1st Instruction => rs1 = x14; rs2 = x15 | 2nd Instruction => rs1 = x15; rs2 = x14 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x14; op2:x15; dest1:x16; dest2:x17; dest3:x18; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x14, x14, x15;
+aes64esm x16, x14, x15;
+aes64esm x17, x15, x14;
+xor x18, x17, x15;
+RVTEST_SIGUPD(x31,x16,312);
+RVTEST_SIGUPD(x31,x17,320);
+RVTEST_SIGUPD(x31,x18,328);
+
+inst_14:
+// 1st Instruction => rs1 = x15; rs2 = x16 | 2nd Instruction => rs1 = x16; rs2 = x15 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x15; op2:x16; dest1:x17; dest2:x18; dest3:x19; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x15, x15, x16;
+aes64esm x17, x15, x16;
+aes64esm x18, x16, x15;
+xor x19, x18, x16;
+RVTEST_SIGUPD(x31,x17,336);
+RVTEST_SIGUPD(x31,x18,344);
+RVTEST_SIGUPD(x31,x19,352);
+
+inst_15:
+// 1st Instruction => rs1 = x16; rs2 = x17 | 2nd Instruction => rs1 = x17; rs2 = x16 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x16; op2:x17; dest1:x18; dest2:x19; dest3:x20; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x16, x16, x17;
+aes64esm x18, x16, x17;
+aes64esm x19, x17, x16;
+xor x20, x19, x17;
+RVTEST_SIGUPD(x31,x18,360);
+RVTEST_SIGUPD(x31,x19,368);
+RVTEST_SIGUPD(x31,x20,376);
+
+inst_16:
+// 1st Instruction => rs1 = x17; rs2 = x18 | 2nd Instruction => rs1 = x18; rs2 = x17 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x17; op2:x18; dest1:x19; dest2:x20; dest3:x21; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x17, x17, x18;
+aes64esm x19, x17, x18;
+aes64esm x20, x18, x17;
+xor x21, x20, x18;
+RVTEST_SIGUPD(x31,x19,384);
+RVTEST_SIGUPD(x31,x20,392);
+RVTEST_SIGUPD(x31,x21,400);
+
+inst_17:
+// 1st Instruction => rs1 = x18; rs2 = x19 | 2nd Instruction => rs1 = x19; rs2 = x18 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x18; op2:x19; dest1:x20; dest2:x21; dest3:x22; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x18, x18, x19;
+aes64esm x20, x18, x19;
+aes64esm x21, x19, x18;
+xor x22, x21, x19;
+RVTEST_SIGUPD(x31,x20,408);
+RVTEST_SIGUPD(x31,x21,416);
+RVTEST_SIGUPD(x31,x22,424);
+
+inst_18:
+// 1st Instruction => rs1 = x19; rs2 = x20 | 2nd Instruction => rs1 = x20; rs2 = x19 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x19; op2:x20; dest1:x21; dest2:x22; dest3:x23; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x19, x19, x20;
+aes64esm x21, x19, x20;
+aes64esm x22, x20, x19;
+xor x23, x22, x20;
+RVTEST_SIGUPD(x31,x21,432);
+RVTEST_SIGUPD(x31,x22,440);
+RVTEST_SIGUPD(x31,x23,448);
+
+inst_19:
+// 1st Instruction => rs1 = x20; rs2 = x21 | 2nd Instruction => rs1 = x21; rs2 = x20 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x20; op2:x21; dest1:x22; dest2:x23; dest3:x24; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x20, x20, x21;
+aes64esm x22, x20, x21;
+aes64esm x23, x21, x20;
+xor x24, x23, x21;
+RVTEST_SIGUPD(x31,x22,456);
+RVTEST_SIGUPD(x31,x23,464);
+RVTEST_SIGUPD(x31,x24,472);
+
+inst_20:
+// 1st Instruction => rs1 = x21; rs2 = x22 | 2nd Instruction => rs1 = x22; rs2 = x21 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x21; op2:x22; dest1:x23; dest2:x24; dest3:x25; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x21, x21, x22;
+aes64esm x23, x21, x22;
+aes64esm x24, x22, x21;
+xor x25, x24, x22;
+RVTEST_SIGUPD(x31,x23,480);
+RVTEST_SIGUPD(x31,x24,488);
+RVTEST_SIGUPD(x31,x25,496);
+
+inst_21:
+// 1st Instruction => rs1 = x22; rs2 = x23 | 2nd Instruction => rs1 = x23; rs2 = x22 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x22; op2:x23; dest1:x24; dest2:x25; dest3:x26; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x22, x22, x23;
+aes64esm x24, x22, x23;
+aes64esm x25, x23, x22;
+xor x26, x25, x23;
+RVTEST_SIGUPD(x31,x24,504);
+RVTEST_SIGUPD(x31,x25,512);
+RVTEST_SIGUPD(x31,x26,520);
+
+inst_22:
+// 1st Instruction => rs1 = x23; rs2 = x24 | 2nd Instruction => rs1 = x24; rs2 = x23 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x23; op2:x24; dest1:x25; dest2:x26; dest3:x27; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x23, x23, x24;
+aes64esm x25, x23, x24;
+aes64esm x26, x24, x23;
+xor x27, x26, x24;
+RVTEST_SIGUPD(x31,x25,528);
+RVTEST_SIGUPD(x31,x26,536);
+RVTEST_SIGUPD(x31,x27,544);
+
+inst_23:
+// 1st Instruction => rs1 = x24; rs2 = x25 | 2nd Instruction => rs1 = x25; rs2 = x24 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x24; op2:x25; dest1:x26; dest2:x27; dest3:x28; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x24, x24, x25;
+aes64esm x26, x24, x25;
+aes64esm x27, x25, x24;
+xor x28, x27, x25;
+RVTEST_SIGUPD(x31,x26,552);
+RVTEST_SIGUPD(x31,x27,560);
+RVTEST_SIGUPD(x31,x28,568);
+
+inst_24:
+// 1st Instruction => rs1 = x25; rs2 = x26 | 2nd Instruction => rs1 = x26; rs2 = x25 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x25; op2:x26; dest1:x27; dest2:x28; dest3:x29; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x25, x25, x26;
+aes64esm x27, x25, x26;
+aes64esm x28, x26, x25;
+xor x29, x28, x26;
+RVTEST_SIGUPD(x31,x27,576);
+RVTEST_SIGUPD(x31,x28,584);
+RVTEST_SIGUPD(x31,x29,592);
+
+inst_25:
+// 1st Instruction => rs1 = x26; rs2 = x27 | 2nd Instruction => rs1 = x27; rs2 = x26 | Result of xor goes into aes64esm & vice versa
+// opcode: aes64esm; op1:x26; op2:x27; dest1:x28; dest2:x29; dest3:x30; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x26, x26, x27;
+aes64esm x28, x26, x27;
+aes64esm x29, x27, x26;
+xor x30, x29, x27;
+RVTEST_SIGUPD(x31,x28,600);
+RVTEST_SIGUPD(x31,x29,608);
+RVTEST_SIGUPD(x31,x30,616);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 78*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-01.S
new file mode 100644
index 000000000..f926ced17
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the aes64im instruction of the RISC-V extension for the aes64im covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64im)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64im)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnd.*);def TEST_CASE_1=True;",aes64im)
+
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_0:
+// rs1 != rd, rs1==x26, rd==x0, rs1_val == 0x75a3adb3254a9493
+// opcode: aes64im ; op1:x26; dest:x0; op1val:0x75a3adb3254a9493;
+li x26, 0x75a3adb3254a9493
+aes64im x0, x26
+sw x0, 0(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x0, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x28, rd==x28, rs1_val == 9223372036854775807,
+// opcode: aes64im ; op1:x28; dest:x28; op1val:0x7fffffffffffffff;
+li x28, 0x7fffffffffffffff
+aes64im x28, x28
+sw x28, 8(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x28, 0x0000000000000000)
+
+inst_2:
+// rs1==x14, rd==x1, rs1_val == 13835058055282163711,
+// opcode: aes64im ; op1:x14; dest:x1; op1val:0xbfffffffffffffff;
+li x14, 0xbfffffffffffffff
+aes64im x1, x14
+sw x1, 16(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x1, 0x0000000000000000)
+
+inst_3:
+// rs1==x30, rd==x23, rs1_val == 16140901064495857663,
+// opcode: aes64im ; op1:x30; dest:x23; op1val:0xdfffffffffffffff;
+li x30, 0xdfffffffffffffff
+aes64im x23, x30
+sw x23, 24(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x23, 0x0000000000000000)
+
+inst_4:
+// rs1==x4, rd==x27, rs1_val == 17293822569102704639,
+// opcode: aes64im ; op1:x4; dest:x27; op1val:0xefffffffffffffff;
+li x4, 0xefffffffffffffff
+aes64im x27, x4
+sw x27, 32(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x27, 0x0000000000000000)
+
+inst_5:
+// rs1==x29, rd==x15, rs1_val == 17870283321406128127,
+// opcode: aes64im ; op1:x29; dest:x15; op1val:0xf7ffffffffffffff;
+li x29, 0xf7ffffffffffffff
+aes64im x15, x29
+sw x15, 40(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x15, 0x0000000000000000)
+
+inst_6:
+// rs1==x9, rd==x22, rs1_val == 18158513697557839871,
+// opcode: aes64im ; op1:x9; dest:x22; op1val:0xfbffffffffffffff;
+li x9, 0xfbffffffffffffff
+aes64im x22, x9
+sw x22, 48(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x22, 0x0000000000000000)
+
+inst_7:
+// rs1==x2, rd==x24, rs1_val == 18302628885633695743,
+// opcode: aes64im ; op1:x2; dest:x24; op1val:0xfdffffffffffffff;
+li x2, 0xfdffffffffffffff
+aes64im x24, x2
+sw x24, 56(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x24, 0x0000000000000000)
+
+inst_8:
+// rs1==x8, rd==x6, rs1_val == 18374686479671623679,
+// opcode: aes64im ; op1:x8; dest:x6; op1val:0xfeffffffffffffff;
+li x8, 0xfeffffffffffffff
+aes64im x6, x8
+sw x6, 64(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x6, 0x0000000000000000)
+
+inst_9:
+// rs1==x1, rd==x17, rs1_val == 18410715276690587647,
+// opcode: aes64im ; op1:x1; dest:x17; op1val:0xff7fffffffffffff;
+li x1, 0xff7fffffffffffff
+aes64im x17, x1
+sw x17, 72(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x17, 0x0000000000000000)
+
+inst_10:
+// rs1==x11, rd==x30, rs1_val == 18428729675200069631,
+// opcode: aes64im ; op1:x11; dest:x30; op1val:0xffbfffffffffffff;
+li x11, 0xffbfffffffffffff
+aes64im x30, x11
+sw x30, 80(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x30, 0x0000000000000000)
+
+inst_11:
+// rs1==x10, rd==x16, rs1_val == 18437736874454810623,
+// opcode: aes64im ; op1:x10; dest:x16; op1val:0xffdfffffffffffff;
+li x10, 0xffdfffffffffffff
+aes64im x16, x10
+sw x16, 88(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x16, 0x0000000000000000)
+
+inst_12:
+// rs1==x15, rd==x8, rs1_val == 18442240474082181119,
+// opcode: aes64im ; op1:x15; dest:x8; op1val:0xffefffffffffffff;
+li x15, 0xffefffffffffffff
+aes64im x8, x15
+sw x8, 96(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x8, 0x0000000000000000)
+
+inst_13:
+// rs1==x0, rd==x14, rs1_val == 18444492273895866367,
+// opcode: aes64im ; op1:x0; dest:x14; op1val:0x0;
+li x0, 0x0
+aes64im x14, x0
+sw x14, 104(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x14, 0x0000000000000000)
+
+inst_14:
+// rs1==x19, rd==x18, rs1_val == 18445618173802708991,
+// opcode: aes64im ; op1:x19; dest:x18; op1val:0xfffbffffffffffff;
+li x19, 0xfffbffffffffffff
+aes64im x18, x19
+sw x18, 112(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x18, 0x0000000000000000)
+
+inst_15:
+// rs1==x16, rd==x13, rs1_val == 18446181123756130303,
+// opcode: aes64im ; op1:x16; dest:x13; op1val:0xfffdffffffffffff;
+li x16, 0xfffdffffffffffff
+aes64im x13, x16
+sw x13, 120(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x13, 0x0000000000000000)
+
+inst_16:
+// rs1==x17, rd==x20, rs1_val == 18446462598732840959,
+// opcode: aes64im ; op1:x17; dest:x20; op1val:0xfffeffffffffffff;
+li x17, 0xfffeffffffffffff
+aes64im x20, x17
+sw x20, 128(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x20, 0x0000000000000000)
+
+inst_17:
+// rs1==x23, rd==x29, rs1_val == 18446603336221196287,
+// opcode: aes64im ; op1:x23; dest:x29; op1val:0xffff7fffffffffff;
+li x23, 0xffff7fffffffffff
+aes64im x29, x23
+sw x29, 136(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x29, 0x0000000000000000)
+
+inst_18:
+// rs1==x12, rd==x2, rs1_val == 18446673704965373951,
+// opcode: aes64im ; op1:x12; dest:x2; op1val:0xffffbfffffffffff;
+li x12, 0xffffbfffffffffff
+aes64im x2, x12
+sw x2, 144(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x2, 0x0000000000000000)
+
+inst_19:
+// rs1==x25, rd==x5, rs1_val == 18446708889337462783,
+// opcode: aes64im ; op1:x25; dest:x5; op1val:0xffffdfffffffffff;
+li x25, 0xffffdfffffffffff
+aes64im x5, x25
+sw x5, 152(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x7, x5, 0x0000000000000000)
+
+inst_20:
+// rs1==x22, rd==x12, rs1_val == 18446726481523507199,
+// opcode: aes64im ; op1:x22; dest:x12; op1val:0xffffefffffffffff;
+li x22, 0xffffefffffffffff
+aes64im x12, x22
+sw x12, 160(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x12, 0x0000000000000000)
+
+inst_21:
+// rs1==x5, rd==x4, rs1_val == 18446735277616529407,
+// opcode: aes64im ; op1:x5; dest:x4; op1val:0xfffff7ffffffffff;
+li x5, 0xfffff7ffffffffff
+aes64im x4, x5
+sw x4, 168(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x4, 0x0000000000000000)
+
+inst_22:
+// rs1==x27, rd==x21, rs1_val == 18446739675663040511,
+// opcode: aes64im ; op1:x27; dest:x21; op1val:0xfffffbffffffffff;
+li x27, 0xfffffbffffffffff
+aes64im x21, x27
+sw x21, 176(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x21, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_23:
+// rs1==x24, rd==x19, rs1_val == 18446741874686296063,
+// opcode: aes64im ; op1:x24; dest:x19; op1val:0xfffffdffffffffff;
+li x24, 0xfffffdffffffffff
+aes64im x19, x24
+sw x19, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x19, 0x0000000000000000)
+
+inst_24:
+// rs1==x7, rd==x3, rs1_val == 18446742974197923839,
+// opcode: aes64im ; op1:x7; dest:x3; op1val:0xfffffeffffffffff;
+li x7, 0xfffffeffffffffff
+aes64im x3, x7
+sw x3, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x3, 0x0000000000000000)
+
+inst_25:
+// rs1==x6, rd==x25, rs1_val == 18446743523953737727,
+// opcode: aes64im ; op1:x6; dest:x25; op1val:0xffffff7fffffffff;
+li x6, 0xffffff7fffffffff
+aes64im x25, x6
+sw x25, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x25, 0x0000000000000000)
+
+inst_26:
+// rs1==x18, rd==x26, rs1_val == 18446743798831644671,
+// opcode: aes64im ; op1:x18; dest:x26; op1val:0xffffffbfffffffff;
+li x18, 0xffffffbfffffffff
+aes64im x26, x18
+sw x26, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x26, 0x0000000000000000)
+
+inst_27:
+// rs1==x20, rd==x11, rs1_val == 18446743936270598143,
+// opcode: aes64im ; op1:x20; dest:x11; op1val:0xffffffdfffffffff;
+li x20, 0xffffffdfffffffff
+aes64im x11, x20
+sw x11, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_28:
+// rs1==x3, rd==x10, rs1_val == 18446744004990074879,
+// opcode: aes64im ; op1:x3; dest:x10; op1val:0xffffffefffffffff;
+li x3, 0xffffffefffffffff
+aes64im x10, x3
+sw x10, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x10, 0x0000000000000000)
+
+inst_29:
+// rs1==x21, rd==x7, rs1_val == 18446744039349813247,
+// opcode: aes64im ; op1:x21; dest:x7; op1val:0xfffffff7ffffffff;
+li x21, 0xfffffff7ffffffff
+aes64im x7, x21
+sw x7, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x7, 0x0000000000000000)
+
+inst_30:
+// rs1==x31, rd==x9, rs1_val == 18446744056529682431,
+// opcode: aes64im ; op1:x31; dest:x9; op1val:0xfffffffbffffffff;
+li x31, 0xfffffffbffffffff
+aes64im x9, x31
+sw x9, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x9, 0x0000000000000000)
+
+inst_31:
+// rs1==x13, rd==x31, rs1_val == 18446744065119617023,
+// opcode: aes64im ; op1:x13; dest:x31; op1val:0xfffffffdffffffff;
+li x13, 0xfffffffdffffffff
+aes64im x31, x13
+sw x31, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x31, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+aes64im x11, x10
+sw x11, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+aes64im x11, x10
+sw x11, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+aes64im x11, x10
+sw x11, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+aes64im x11, x10
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+aes64im x11, x10
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+aes64im x11, x10
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+aes64im x11, x10
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+aes64im x11, x10
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+aes64im x11, x10
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+aes64im x11, x10
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+aes64im x11, x10
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+aes64im x11, x10
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+aes64im x11, x10
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+aes64im x11, x10
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+aes64im x11, x10
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+aes64im x11, x10
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+aes64im x11, x10
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+aes64im x11, x10
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+aes64im x11, x10
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+aes64im x11, x10
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+aes64im x11, x10
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+aes64im x11, x10
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+aes64im x11, x10
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+aes64im x11, x10
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+aes64im x11, x10
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+aes64im x11, x10
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+aes64im x11, x10
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+aes64im x11, x10
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+aes64im x11, x10
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+aes64im x11, x10
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+aes64im x11, x10
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+aes64im x11, x10
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+aes64im x11, x10
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+aes64im x11, x10
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+aes64im x11, x10
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+aes64im x11, x10
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+aes64im x11, x10
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+aes64im x11, x10
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+aes64im x11, x10
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+aes64im x11, x10
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+aes64im x11, x10
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+aes64im x11, x10
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+aes64im x11, x10
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+aes64im x11, x10
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+aes64im x11, x10
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+aes64im x11, x10
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+aes64im x11, x10
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+aes64im x11, x10
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+aes64im x11, x10
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+aes64im x11, x10
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+aes64im x11, x10
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+aes64im x11, x10
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+aes64im x11, x10
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+aes64im x11, x10
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+aes64im x11, x10
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+aes64im x11, x10
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+aes64im x11, x10
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+aes64im x11, x10
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+aes64im x11, x10
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+aes64im x11, x10
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+aes64im x11, x10
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+aes64im x11, x10
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+aes64im x11, x10
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+aes64im x11, x10
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+aes64im x11, x10
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+aes64im x11, x10
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+aes64im x11, x10
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+aes64im x11, x10
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+aes64im x11, x10
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+aes64im x11, x10
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+aes64im x11, x10
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+aes64im x11, x10
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+aes64im x11, x10
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+aes64im x11, x10
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+aes64im x11, x10
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+aes64im x11, x10
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+aes64im x11, x10
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+aes64im x11, x10
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+aes64im x11, x10
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+aes64im x11, x10
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+aes64im x11, x10
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+aes64im x11, x10
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+aes64im x11, x10
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+aes64im x11, x10
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+aes64im x11, x10
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+aes64im x11, x10
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+aes64im x11, x10
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+aes64im x11, x10
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+aes64im x11, x10
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+aes64im x11, x10
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+aes64im x11, x10
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+aes64im x11, x10
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+aes64im x11, x10
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+aes64im x11, x10
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+aes64im x11, x10
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+aes64im x11, x10
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+aes64im x11, x10
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+aes64im x11, x10
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+aes64im x11, x10
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+aes64im x11, x10
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+aes64im x11, x10
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+aes64im x11, x10
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+aes64im x11, x10
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+aes64im x11, x10
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+aes64im x11, x10
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+aes64im x11, x10
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+aes64im x11, x10
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+aes64im x11, x10
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+aes64im x11, x10
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+aes64im x11, x10
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+aes64im x11, x10
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+aes64im x11, x10
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+aes64im x11, x10
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+aes64im x11, x10
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+aes64im x11, x10
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+aes64im x11, x10
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 0x75a3adb3254a9493
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0x75a3adb3254a9493;
+li x10, 0x75a3adb3254a9493
+aes64im x11, x10
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18444492273895866367,
+// opcode: aes64im ; op1:x10; dest:x11; op1val:0xfff7ffffffffffff;
+li x10, 0xfff7ffffffffffff
+aes64im x11, x10
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x3_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 23*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 127*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-rwp1.S
new file mode 100644
index 000000000..d827a5915
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64im)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64im)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+aes64im x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+aes64im x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+aes64im x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+aes64im x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+aes64im x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+aes64im x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+aes64im x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+aes64im x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+aes64im x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+aes64im x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+aes64im x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+aes64im x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+aes64im x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+aes64im x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+aes64im x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+aes64im x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+aes64im x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+aes64im x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+aes64im x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+aes64im x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+aes64im x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+aes64im x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+aes64im x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+aes64im x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+aes64im x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+aes64im x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+aes64im x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+aes64im x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+aes64im x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+aes64im x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+aes64im x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+aes64im x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+aes64im x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+aes64im x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+aes64im x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+aes64im x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+aes64im x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+aes64im x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+aes64im x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+aes64im x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+aes64im x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+aes64im x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+aes64im x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+aes64im x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+aes64im x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+aes64im x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+aes64im x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+aes64im x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+aes64im x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+aes64im x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+aes64im x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+aes64im x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+aes64im x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+aes64im x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+aes64im x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+aes64im x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+aes64im x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+aes64im x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+aes64im x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+aes64im x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+aes64im x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+aes64im x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+aes64im x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+aes64im x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+aes64im x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+aes64im x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+aes64im x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+aes64im x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+aes64im x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+aes64im x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+aes64im x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+aes64im x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+aes64im x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+aes64im x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+aes64im x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+aes64im x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+aes64im x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+aes64im x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into aes64im & the result back into xor
+// opcode: aes64im; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+aes64im x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into aes64im & the result back into not
+// opcode: aes64im; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+aes64im x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into aes64im & the result back into add
+// opcode: aes64im; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+aes64im x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-rwp2.S
new file mode 100644
index 000000000..281316aa8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64im-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64im)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64im)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+aes64im x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+aes64im x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+aes64im x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+aes64im x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+aes64im x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+aes64im x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+aes64im x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+aes64im x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+aes64im x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+aes64im x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+aes64im x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+aes64im x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+aes64im x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+aes64im x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+aes64im x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+aes64im x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+aes64im x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+aes64im x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+aes64im x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+aes64im x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+aes64im x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+aes64im x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+aes64im x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+aes64im x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+aes64im x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+aes64im x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+aes64im x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: aes64im; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+aes64im x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ks1i-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ks1i-01.S
new file mode 100644
index 000000000..193161514
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ks1i-01.S
@@ -0,0 +1,509 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Thu Aug 12 11:00:04 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the aes64ks1i instruction of the RISC-V K extension for the aes64ks1i covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64ks1i)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64ks1i)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKne.*);def TEST_CASE_1=True;",aes64ks1i)
+
+RVTEST_SIGBASE( x14,signature_x14_1)
+
+inst_0:
+// rs1 != rd, rs1==x7, rd==x8, rs1_val == 0x0706050403020100 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x7; dest:x8; op1val:0x706050403020100; immval:0xa
+TEST_IMM_OP( aes64ks1i, x8, x7, 0x0000000000000000, 0x706050403020100, 0xa, x14, 0, x15)
+
+inst_1:
+// rs1 == rd, rs1==x19, rd==x19, rs1_val == 0x71fad878b369e102 and imm_val == 0x0
+// opcode: aes64ks1i ; op1:x19; dest:x19; op1val:0x71fad878b369e102; immval:0x0
+TEST_IMM_OP( aes64ks1i, x19, x19, 0x0000000000000000, 0x71fad878b369e102, 0x0, x14, 8, x15)
+
+inst_2:
+// rs1==x12, rd==x10, rs1_val == 0xa4b7f979a8e45869 and imm_val == 0x0
+// opcode: aes64ks1i ; op1:x12; dest:x10; op1val:0xa4b7f979a8e45869; immval:0x0
+TEST_IMM_OP( aes64ks1i, x10, x12, 0x0000000000000000, 0xa4b7f979a8e45869, 0x0, x14, 16, x15)
+
+inst_3:
+// rs1==x8, rd==x6, rs1_val == 0x0b3fd605358a9235 and imm_val == 0x1
+// opcode: aes64ks1i ; op1:x8; dest:x6; op1val:0xb3fd605358a9235; immval:0x1
+TEST_IMM_OP( aes64ks1i, x6, x8, 0x0000000000000000, 0xb3fd605358a9235, 0x1, x14, 24, x15)
+
+inst_4:
+// rs1==x30, rd==x28, rs1_val == 0xb0873a0f0334fcca and imm_val == 0x7
+// opcode: aes64ks1i ; op1:x30; dest:x28; op1val:0xb0873a0f0334fcca; immval:0x7
+TEST_IMM_OP( aes64ks1i, x28, x30, 0x0000000000000000, 0xb0873a0f0334fcca, 0x7, x14, 32, x15)
+
+inst_5:
+// rs1==x16, rd==x13, rs1_val == 0x5b730cad91766f62 and imm_val == 0x7
+// opcode: aes64ks1i ; op1:x16; dest:x13; op1val:0x5b730cad91766f62; immval:0x7
+TEST_IMM_OP( aes64ks1i, x13, x16, 0x0000000000000000, 0x5b730cad91766f62, 0x7, x14, 40, x15)
+
+inst_6:
+// rs1==x9, rd==x7, rs1_val == 0xb7c1fc5f1efa1095 and imm_val == 0x3
+// opcode: aes64ks1i ; op1:x9; dest:x7; op1val:0xb7c1fc5f1efa1095; immval:0x3
+TEST_IMM_OP( aes64ks1i, x7, x9, 0x0000000000000000, 0xb7c1fc5f1efa1095, 0x3, x14, 48, x15)
+
+inst_7:
+// rs1==x17, rd==x5, rs1_val == 0x25ae27ee4113ee60 and imm_val == 0x5
+// opcode: aes64ks1i ; op1:x17; dest:x5; op1val:0x25ae27ee4113ee60; immval:0x5
+TEST_IMM_OP( aes64ks1i, x5, x17, 0x0000000000000000, 0x25ae27ee4113ee60, 0x5, x14, 56, x15)
+
+inst_8:
+// rs1==x4, rd==x21, rs1_val == 0xe3f4fca319f046a5 and imm_val == 0x6
+// opcode: aes64ks1i ; op1:x4; dest:x21; op1val:0xe3f4fca319f046a5; immval:0x6
+TEST_IMM_OP( aes64ks1i, x21, x4, 0x0000000000000000, 0xe3f4fca319f046a5, 0x6, x14, 64, x15)
+
+inst_9:
+// rs1==x2, rd==x20, rs1_val == 0xff9a1b805ced7e2e and imm_val == 0x6
+// opcode: aes64ks1i ; op1:x2; dest:x20; op1val:0xff9a1b805ced7e2e; immval:0x6
+TEST_IMM_OP( aes64ks1i, x20, x2, 0x0000000000000000, 0xff9a1b805ced7e2e, 0x6, x14, 72, x15)
+
+inst_10:
+// rs1==x0, rd==x1, rs1_val == 0x9722c9a6b0942992 and imm_val == 0x5
+// opcode: aes64ks1i ; op1:x0; dest:x1; op1val:0x0; immval:0x5
+TEST_IMM_OP( aes64ks1i, x1, x0, 0x0000000000000000, 0x0, 0x5, x14, 80, x15)
+
+inst_11:
+// rs1==x1, rd==x2, rs1_val == 0x9bedfe390d6ddd9d and imm_val == 0x4
+// opcode: aes64ks1i ; op1:x1; dest:x2; op1val:0x9bedfe390d6ddd9d; immval:0x4
+TEST_IMM_OP( aes64ks1i, x2, x1, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0x4, x14, 88, x15)
+
+inst_12:
+// rs1==x13, rd==x27, rs1_val == 0xd75739f82ac177c6 and imm_val == 0x3
+// opcode: aes64ks1i ; op1:x13; dest:x27; op1val:0xd75739f82ac177c6; immval:0x3
+TEST_IMM_OP( aes64ks1i, x27, x13, 0x0000000000000000, 0xd75739f82ac177c6, 0x3, x14, 96, x15)
+
+inst_13:
+// rs1==x23, rd==x22, rs1_val == 0x90efb625d9fbcdb5 and imm_val == 0x3
+// opcode: aes64ks1i ; op1:x23; dest:x22; op1val:0x90efb625d9fbcdb5; immval:0x3
+TEST_IMM_OP( aes64ks1i, x22, x23, 0x0000000000000000, 0x90efb625d9fbcdb5, 0x3, x14, 104, x15)
+
+inst_14:
+// rs1==x21, rd==x18, rs1_val == 0x60067d39d169a3f8 and imm_val == 0x1
+// opcode: aes64ks1i ; op1:x21; dest:x18; op1val:0x60067d39d169a3f8; immval:0x1
+TEST_IMM_OP( aes64ks1i, x18, x21, 0x0000000000000000, 0x60067d39d169a3f8, 0x1, x14, 112, x15)
+
+inst_15:
+// rs1==x18, rd==x24, rs1_val == 0xd5b9fe5cf69bdcf3 and imm_val == 0x6
+// opcode: aes64ks1i ; op1:x18; dest:x24; op1val:0xd5b9fe5cf69bdcf3; immval:0x6
+TEST_IMM_OP( aes64ks1i, x24, x18, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0x6, x14, 120, x15)
+
+inst_16:
+// rs1==x3, rd==x29, rs1_val == 0x58d548aae4921bf7 and imm_val == 0x6
+// opcode: aes64ks1i ; op1:x3; dest:x29; op1val:0x58d548aae4921bf7; immval:0x6
+TEST_IMM_OP( aes64ks1i, x29, x3, 0x0000000000000000, 0x58d548aae4921bf7, 0x6, x14, 128, x15)
+
+inst_17:
+// rs1==x26, rd==x17, rs1_val == 0x2daf9ac7f5faf207 and imm_val == 0x3
+// opcode: aes64ks1i ; op1:x26; dest:x17; op1val:0x2daf9ac7f5faf207; immval:0x3
+TEST_IMM_OP( aes64ks1i, x17, x26, 0x0000000000000000, 0x2daf9ac7f5faf207, 0x3, x14, 136, x15)
+
+inst_18:
+// rs1==x6, rd==x11, rs1_val == 0x3acdf61655d98c6e and imm_val == 0x3
+// opcode: aes64ks1i ; op1:x6; dest:x11; op1val:0x3acdf61655d98c6e; immval:0x3
+TEST_IMM_OP( aes64ks1i, x11, x6, 0x0000000000000000, 0x3acdf61655d98c6e, 0x3, x14, 144, x15)
+
+inst_19:
+// rs1==x24, rd==x16, rs1_val == 0x436f40f274b8de87 and imm_val == 0x3
+// opcode: aes64ks1i ; op1:x24; dest:x16; op1val:0x436f40f274b8de87; immval:0x3
+TEST_IMM_OP( aes64ks1i, x16, x24, 0x0000000000000000, 0x436f40f274b8de87, 0x3, x14, 152, x2)
+
+inst_20:
+// rs1==x10, rd==x31, rs1_val == 0x75a3adb3254a9493 and imm_val == 0x2
+// opcode: aes64ks1i ; op1:x10; dest:x31; op1val:0x75a3adb3254a9493; immval:0x2
+TEST_IMM_OP( aes64ks1i, x31, x10, 0x0000000000000000, 0x75a3adb3254a9493, 0x2, x14, 160, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_21:
+// rs1==x25, rd==x14, rs1_val == 0x03020100fffefdfc and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x25; dest:x14; op1val:0x3020100fffefdfc; immval:0xa
+TEST_IMM_OP( aes64ks1i, x14, x25, 0x0000000000000000, 0x3020100fffefdfc, 0xa, x1, 0, x2)
+
+inst_22:
+// rs1==x11, rd==x4, rs1_val == 0xfffefdfcfbfaf9f8 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x11; dest:x4; op1val:0xfffefdfcfbfaf9f8; immval:0xa
+TEST_IMM_OP( aes64ks1i, x4, x11, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xa, x1, 8, x2)
+
+inst_23:
+// rs1==x27, rd==x23, rs1_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x27; dest:x23; op1val:0xfbfaf9f8f7f6f5f4; immval:0xa
+TEST_IMM_OP( aes64ks1i, x23, x27, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xa, x1, 16, x2)
+
+inst_24:
+// rs1==x20, rd==x30, rs1_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x20; dest:x30; op1val:0xf7f6f5f4f3f2f1f0; immval:0xa
+TEST_IMM_OP( aes64ks1i, x30, x20, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xa, x1, 24, x2)
+
+inst_25:
+// rs1==x29, rd==x9, rs1_val == 0xf3f2f1f0efeeedec and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x29; dest:x9; op1val:0xf3f2f1f0efeeedec; immval:0xa
+TEST_IMM_OP( aes64ks1i, x9, x29, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xa, x1, 32, x2)
+
+inst_26:
+// rs1==x28, rd==x3, rs1_val == 0xefeeedecebeae9e8 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x28; dest:x3; op1val:0xefeeedecebeae9e8; immval:0xa
+TEST_IMM_OP( aes64ks1i, x3, x28, 0x0000000000000000, 0xefeeedecebeae9e8, 0xa, x1, 40, x2)
+
+inst_27:
+// rs1==x31, rd==x15, rs1_val == 0xebeae9e8e7e6e5e4 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x31; dest:x15; op1val:0xebeae9e8e7e6e5e4; immval:0xa
+TEST_IMM_OP( aes64ks1i, x15, x31, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xa, x1, 48, x2)
+
+inst_28:
+// rs1==x5, rd==x25, rs1_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x5; dest:x25; op1val:0xe7e6e5e4e3e2e1e0; immval:0xa
+TEST_IMM_OP( aes64ks1i, x25, x5, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xa, x1, 56, x2)
+
+inst_29:
+// rs1==x15, rd==x0, rs1_val == 0xe3e2e1e0dfdedddc and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x15; dest:x0; op1val:0xe3e2e1e0dfdedddc; immval:0xa
+TEST_IMM_OP( aes64ks1i, x0, x15, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xa, x1, 64, x2)
+
+inst_30:
+// rs1==x14, rd==x26, rs1_val == 0xdfdedddcdbdad9d8 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x14; dest:x26; op1val:0xdfdedddcdbdad9d8; immval:0xa
+TEST_IMM_OP( aes64ks1i, x26, x14, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xa, x1, 72, x2)
+
+inst_31:
+// rs1==x22, rd==x12, rs1_val == 0xdbdad9d8d7d6d5d4 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x22; dest:x12; op1val:0xdbdad9d8d7d6d5d4; immval:0xa
+TEST_IMM_OP( aes64ks1i, x12, x22, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xa, x1, 80, x2)
+
+inst_32:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xd7d6d5d4d3d2d1d0; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xa, x1, 88, x2)
+
+inst_33:
+// rs1_val == 0xd3d2d1d0cfcecdcc and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xd3d2d1d0cfcecdcc; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xa, x1, 96, x2)
+
+inst_34:
+// rs1_val == 0xcfcecdcccbcac9c8 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xcfcecdcccbcac9c8; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xa, x1, 104, x2)
+
+inst_35:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xcbcac9c8c7c6c5c4; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xa, x1, 112, x2)
+
+inst_36:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xc7c6c5c4c3c2c1c0; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xa, x1, 120, x2)
+
+inst_37:
+// rs1_val == 0xc3c2c1c0bfbebdbc and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xc3c2c1c0bfbebdbc; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xa, x1, 128, x2)
+
+inst_38:
+// rs1_val == 0xbfbebdbcbbbab9b8 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xbfbebdbcbbbab9b8; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xa, x1, 136, x2)
+
+inst_39:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xbbbab9b8b7b6b5b4; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xa, x1, 144, x2)
+
+inst_40:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xb7b6b5b4b3b2b1b0; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xa, x1, 152, x2)
+
+inst_41:
+// rs1_val == 0xb3b2b1b0afaeadac and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xb3b2b1b0afaeadac; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xa, x1, 160, x2)
+
+inst_42:
+// rs1_val == 0xafaeadacabaaa9a8 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xafaeadacabaaa9a8; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa, x1, 168, x2)
+
+inst_43:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xabaaa9a8a7a6a5a4; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa, x1, 176, x2)
+
+inst_44:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xa7a6a5a4a3a2a1a0; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xa, x1, 184, x2)
+
+inst_45:
+// rs1_val == 0xa3a2a1a09f9e9d9c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xa3a2a1a09f9e9d9c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0xa, x1, 192, x2)
+
+inst_46:
+// rs1_val == 0x9f9e9d9c9b9a9998 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x9f9e9d9c9b9a9998; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa, x1, 200, x2)
+
+inst_47:
+// rs1_val == 0x9b9a999897969594 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x9b9a999897969594; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x9b9a999897969594, 0xa, x1, 208, x2)
+
+inst_48:
+// rs1_val == 0x9796959493929190 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x9796959493929190; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x9796959493929190, 0xa, x1, 216, x2)
+
+inst_49:
+// rs1_val == 0x939291908f8e8d8c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x939291908f8e8d8c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x939291908f8e8d8c, 0xa, x1, 224, x2)
+
+inst_50:
+// rs1_val == 0x8f8e8d8c8b8a8988 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x8f8e8d8c8b8a8988; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0xa, x1, 232, x2)
+
+inst_51:
+// rs1_val == 0x8b8a898887868584 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x8b8a898887868584; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x8b8a898887868584, 0xa, x1, 240, x2)
+
+inst_52:
+// rs1_val == 0x8786858483828180 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x8786858483828180; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x8786858483828180, 0xa, x1, 248, x2)
+
+inst_53:
+// rs1_val == 0x838281807f7e7d7c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x838281807f7e7d7c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x838281807f7e7d7c, 0xa, x1, 256, x2)
+
+inst_54:
+// rs1_val == 0x7f7e7d7c7b7a7978 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x7f7e7d7c7b7a7978; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0xa, x1, 264, x2)
+
+inst_55:
+// rs1_val == 0x7b7a797877767574 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x7b7a797877767574; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x7b7a797877767574, 0xa, x1, 272, x2)
+
+inst_56:
+// rs1_val == 0x7776757473727170 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x7776757473727170; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x7776757473727170, 0xa, x1, 280, x2)
+
+inst_57:
+// rs1_val == 0x737271706f6e6d6c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x737271706f6e6d6c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x737271706f6e6d6c, 0xa, x1, 288, x2)
+
+inst_58:
+// rs1_val == 0x6f6e6d6c6b6a6968 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x6f6e6d6c6b6a6968; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0xa, x1, 296, x2)
+
+inst_59:
+// rs1_val == 0x6b6a696867666564 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x6b6a696867666564; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x6b6a696867666564, 0xa, x1, 304, x2)
+
+inst_60:
+// rs1_val == 0x6766656463626160 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x6766656463626160; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x6766656463626160, 0xa, x1, 312, x2)
+
+inst_61:
+// rs1_val == 0x636261605f5e5d5c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x636261605f5e5d5c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x636261605f5e5d5c, 0xa, x1, 320, x2)
+
+inst_62:
+// rs1_val == 0x5f5e5d5c5b5a5958 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x5f5e5d5c5b5a5958; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0xa, x1, 328, x2)
+
+inst_63:
+// rs1_val == 0x5b5a595857565554 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x5b5a595857565554; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x5b5a595857565554, 0xa, x1, 336, x2)
+
+inst_64:
+// rs1_val == 0x5756555453525150 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x5756555453525150; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x5756555453525150, 0xa, x1, 344, x2)
+
+inst_65:
+// rs1_val == 0x535251504f4e4d4c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x535251504f4e4d4c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x535251504f4e4d4c, 0xa, x1, 352, x2)
+
+inst_66:
+// rs1_val == 0x4f4e4d4c4b4a4948 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x4f4e4d4c4b4a4948; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0xa, x1, 360, x2)
+
+inst_67:
+// rs1_val == 0x4b4a494847464544 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x4b4a494847464544; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x4b4a494847464544, 0xa, x1, 368, x2)
+
+inst_68:
+// rs1_val == 0x4746454443424140 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x4746454443424140; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x4746454443424140, 0xa, x1, 376, x2)
+
+inst_69:
+// rs1_val == 0x434241403f3e3d3c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x434241403f3e3d3c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x434241403f3e3d3c, 0xa, x1, 384, x2)
+
+inst_70:
+// rs1_val == 0x3f3e3d3c3b3a3938 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x3f3e3d3c3b3a3938; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0xa, x1, 392, x2)
+
+inst_71:
+// rs1_val == 0x3b3a393837363534 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x3b3a393837363534; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x3b3a393837363534, 0xa, x1, 400, x2)
+
+inst_72:
+// rs1_val == 0x3736353433323130 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x3736353433323130; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x3736353433323130, 0xa, x1, 408, x2)
+
+inst_73:
+// rs1_val == 0x333231302f2e2d2c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x333231302f2e2d2c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x333231302f2e2d2c, 0xa, x1, 416, x2)
+
+inst_74:
+// rs1_val == 0x2f2e2d2c2b2a2928 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x2f2e2d2c2b2a2928; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0xa, x1, 424, x2)
+
+inst_75:
+// rs1_val == 0x2b2a292827262524 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x2b2a292827262524; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x2b2a292827262524, 0xa, x1, 432, x2)
+
+inst_76:
+// rs1_val == 0x2726252423222120 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x2726252423222120; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x2726252423222120, 0xa, x1, 440, x2)
+
+inst_77:
+// rs1_val == 0x232221201f1e1d1c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x232221201f1e1d1c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x232221201f1e1d1c, 0xa, x1, 448, x2)
+
+inst_78:
+// rs1_val == 0x1f1e1d1c1b1a1918 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x1f1e1d1c1b1a1918; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0xa, x1, 456, x2)
+
+inst_79:
+// rs1_val == 0x1b1a191817161514 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x1b1a191817161514; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x1b1a191817161514, 0xa, x1, 464, x2)
+
+inst_80:
+// rs1_val == 0x1716151413121110 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x1716151413121110; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x1716151413121110, 0xa, x1, 472, x2)
+
+inst_81:
+// rs1_val == 0x131211100f0e0d0c and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x131211100f0e0d0c; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x131211100f0e0d0c, 0xa, x1, 480, x2)
+
+inst_82:
+// rs1_val == 0x0f0e0d0c0b0a0908 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xf0e0d0c0b0a0908; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0xa, x1, 488, x2)
+
+inst_83:
+// rs1_val == 0x0b0a090807060504 and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xb0a090807060504; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xb0a090807060504, 0xa, x1, 496, x2)
+
+inst_84:
+// rs1_val == 0x9722c9a6b0942992 and imm_val == 0x5
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x9722c9a6b0942992; immval:0x5
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x9722c9a6b0942992, 0x5, x1, 504, x2)
+
+inst_85:
+// rs1_val == 0xe3e2e1e0dfdedddc and imm_val == 0xA
+// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xe3e2e1e0dfdedddc; immval:0xa
+TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xa, x1, 512, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x14_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x14_1:
+ .fill 21*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 65*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ks2-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ks2-01.S
new file mode 100644
index 000000000..3f40ce4aa
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/aes64ks2-01.S
@@ -0,0 +1,1184 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the aes64ks2 instruction of the RISC-V extension for the aes64ks2 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64ks2)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64ks2)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKne.*);def TEST_CASE_1=True;",aes64ks2)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x8, rs2==x8, rd==x13, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
+// opcode: aes64ks2 ; op1:x8; op2:x8; dest:x13; op1val:0x75a3adb3254a9493; op2val:0x75a3adb3254a9493
+TEST_RR_OP(aes64ks2, x13, x8, x8, 0x0000000000000000, 0x75a3adb3254a9493, 0x75a3adb3254a9493, x2, 0, x11)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x28, rs2==x28, rd==x28, rs2_val == 9223372036854775807,
+// opcode: aes64ks2 ; op1:x28; op2:x28; dest:x28; op1val:0xd; op2val:0xd
+TEST_RR_OP(aes64ks2, x28, x28, x28, 0x0000000000000000, 0xd, 0xd, x2, 8, x11)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x4, rs2==x0, rd==x24, rs2_val == 13835058055282163711,
+// opcode: aes64ks2 ; op1:x4; op2:x0; dest:x24; op1val:-0x5; op2val:0x0
+TEST_RR_OP(aes64ks2, x24, x4, x0, 0x0000000000000000, -0x5, 0x0, x2, 16, x11)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x6, rs2==x22, rd==x6, rs2_val == 16140901064495857663, rs1_val == 281474976710656
+// opcode: aes64ks2 ; op1:x6; op2:x22; dest:x6; op1val:0x1000000000000; op2val:0xdfffffffffffffff
+TEST_RR_OP(aes64ks2, x6, x6, x22, 0x0000000000000000, 0x1000000000000, 0xdfffffffffffffff, x2, 24, x11)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x10, rs2==x9, rd==x9, rs2_val == 17293822569102704639, rs1_val == 16384
+// opcode: aes64ks2 ; op1:x10; op2:x9; dest:x9; op1val:0x4000; op2val:0xefffffffffffffff
+TEST_RR_OP(aes64ks2, x9, x10, x9, 0x0000000000000000, 0x4000, 0xefffffffffffffff, x2, 32, x11)
+
+inst_5:
+// rs1==x1, rs2==x7, rd==x20, rs2_val == 17870283321406128127, rs1_val == 131072
+// opcode: aes64ks2 ; op1:x1; op2:x7; dest:x20; op1val:0x20000; op2val:0xf7ffffffffffffff
+TEST_RR_OP(aes64ks2, x20, x1, x7, 0x0000000000000000, 0x20000, 0xf7ffffffffffffff, x2, 40, x11)
+
+inst_6:
+// rs1==x17, rs2==x23, rd==x7, rs2_val == 18158513697557839871, rs1_val == 70368744177664
+// opcode: aes64ks2 ; op1:x17; op2:x23; dest:x7; op1val:0x400000000000; op2val:0xfbffffffffffffff
+TEST_RR_OP(aes64ks2, x7, x17, x23, 0x0000000000000000, 0x400000000000, 0xfbffffffffffffff, x2, 48, x11)
+
+inst_7:
+// rs1==x18, rs2==x13, rd==x14, rs2_val == 18302628885633695743,
+// opcode: aes64ks2 ; op1:x18; op2:x13; dest:x14; op1val:-0x4000000000000000; op2val:0xfdffffffffffffff
+TEST_RR_OP(aes64ks2, x14, x18, x13, 0x0000000000000000, -0x4000000000000000, 0xfdffffffffffffff, x2, 56, x11)
+
+inst_8:
+// rs1==x12, rs2==x27, rd==x16, rs2_val == 18374686479671623679, rs1_val == 18446744069414584319
+// opcode: aes64ks2 ; op1:x12; op2:x27; dest:x16; op1val:0xfffffffeffffffff; op2val:0xfeffffffffffffff
+TEST_RR_OP(aes64ks2, x16, x12, x27, 0x0000000000000000, 0xfffffffeffffffff, 0xfeffffffffffffff, x2, 64, x11)
+
+inst_9:
+// rs1==x30, rs2==x17, rd==x31, rs2_val == 18410715276690587647,
+// opcode: aes64ks2 ; op1:x30; op2:x17; dest:x31; op1val:-0x200000001; op2val:0xff7fffffffffffff
+TEST_RR_OP(aes64ks2, x31, x30, x17, 0x0000000000000000, -0x200000001, 0xff7fffffffffffff, x2, 72, x11)
+
+inst_10:
+// rs1==x22, rs2==x4, rd==x3, rs2_val == 18428729675200069631, rs1_val == 4611686018427387904
+// opcode: aes64ks2 ; op1:x22; op2:x4; dest:x3; op1val:0x4000000000000000; op2val:0xffbfffffffffffff
+TEST_RR_OP(aes64ks2, x3, x22, x4, 0x0000000000000000, 0x4000000000000000, 0xffbfffffffffffff, x2, 80, x11)
+
+inst_11:
+// rs1==x9, rs2==x15, rd==x5, rs2_val == 18437736874454810623,
+// opcode: aes64ks2 ; op1:x9; op2:x15; dest:x5; op1val:-0x7; op2val:0xffdfffffffffffff
+TEST_RR_OP(aes64ks2, x5, x9, x15, 0x0000000000000000, -0x7, 0xffdfffffffffffff, x2, 88, x11)
+
+inst_12:
+// rs1==x27, rs2==x18, rd==x29, rs2_val == 18442240474082181119, rs1_val == 18446744073709551487
+// opcode: aes64ks2 ; op1:x27; op2:x18; dest:x29; op1val:0xffffffffffffff7f; op2val:0xffefffffffffffff
+TEST_RR_OP(aes64ks2, x29, x27, x18, 0x0000000000000000, 0xffffffffffffff7f, 0xffefffffffffffff, x2, 96, x11)
+
+inst_13:
+// rs1==x24, rs2==x12, rd==x17, rs2_val == 18444492273895866367,
+// opcode: aes64ks2 ; op1:x24; op2:x12; dest:x17; op1val:-0x20000000001; op2val:0xfff7ffffffffffff
+TEST_RR_OP(aes64ks2, x17, x24, x12, 0x0000000000000000, -0x20000000001, 0xfff7ffffffffffff, x2, 104, x11)
+
+inst_14:
+// rs1==x21, rs2==x26, rd==x10, rs2_val == 18445618173802708991, rs1_val == 18014398509481984
+// opcode: aes64ks2 ; op1:x21; op2:x26; dest:x10; op1val:0x40000000000000; op2val:0xfffbffffffffffff
+TEST_RR_OP(aes64ks2, x10, x21, x26, 0x0000000000000000, 0x40000000000000, 0xfffbffffffffffff, x2, 112, x11)
+
+inst_15:
+// rs1==x0, rs2==x1, rd==x12, rs2_val == 18446181123756130303,
+// opcode: aes64ks2 ; op1:x0; op2:x1; dest:x12; op1val:0x0; op2val:0xfffdffffffffffff
+TEST_RR_OP(aes64ks2, x12, x0, x1, 0x0000000000000000, 0x0, 0xfffdffffffffffff, x2, 120, x8)
+
+inst_16:
+// rs1==x15, rs2==x19, rd==x25, rs2_val == 18446462598732840959, rs1_val == 18446744073709551614
+// opcode: aes64ks2 ; op1:x15; op2:x19; dest:x25; op1val:0xfffffffffffffffe; op2val:0xfffeffffffffffff
+TEST_RR_OP(aes64ks2, x25, x15, x19, 0x0000000000000000, 0xfffffffffffffffe, 0xfffeffffffffffff, x2, 128, x8)
+RVTEST_SIGBASE( x9,signature_x9_0)
+
+inst_17:
+// rs1==x13, rs2==x6, rd==x1, rs2_val == 18446603336221196287,
+// opcode: aes64ks2 ; op1:x13; op2:x6; dest:x1; op1val:-0x40001; op2val:0xffff7fffffffffff
+TEST_RR_OP(aes64ks2, x1, x13, x6, 0x0000000000000000, -0x40001, 0xffff7fffffffffff, x9, 0, x8)
+
+inst_18:
+// rs1==x7, rs2==x2, rd==x30, rs2_val == 18446673704965373951,
+// opcode: aes64ks2 ; op1:x7; op2:x2; dest:x30; op1val:0x400000000000; op2val:0xffffbfffffffffff
+TEST_RR_OP(aes64ks2, x30, x7, x2, 0x0000000000000000, 0x400000000000, 0xffffbfffffffffff, x9, 8, x8)
+
+inst_19:
+// rs1==x29, rs2==x5, rd==x2, rs2_val == 18446708889337462783, rs1_val == 16
+// opcode: aes64ks2 ; op1:x29; op2:x5; dest:x2; op1val:0x10; op2val:0xffffdfffffffffff
+TEST_RR_OP(aes64ks2, x2, x29, x5, 0x0000000000000000, 0x10, 0xffffdfffffffffff, x9, 16, x8)
+
+inst_20:
+// rs1==x25, rs2==x20, rd==x19, rs2_val == 18446726481523507199,
+// opcode: aes64ks2 ; op1:x25; op2:x20; dest:x19; op1val:-0x40001; op2val:0xffffefffffffffff
+TEST_RR_OP(aes64ks2, x19, x25, x20, 0x0000000000000000, -0x40001, 0xffffefffffffffff, x9, 24, x8)
+
+inst_21:
+// rs1==x26, rs2==x14, rd==x4, rs2_val == 18446735277616529407,
+// opcode: aes64ks2 ; op1:x26; op2:x14; dest:x4; op1val:0x400000000000; op2val:0xfffff7ffffffffff
+TEST_RR_OP(aes64ks2, x4, x26, x14, 0x0000000000000000, 0x400000000000, 0xfffff7ffffffffff, x9, 32, x8)
+
+inst_22:
+// rs1==x19, rs2==x24, rd==x23, rs2_val == 18446739675663040511,
+// opcode: aes64ks2 ; op1:x19; op2:x24; dest:x23; op1val:-0x1000000000001; op2val:0xfffffbffffffffff
+TEST_RR_OP(aes64ks2, x23, x19, x24, 0x0000000000000000, -0x1000000000001, 0xfffffbffffffffff, x9, 40, x8)
+
+inst_23:
+// rs1==x3, rs2==x16, rd==x15, rs2_val == 18446741874686296063, rs1_val == 18158513697557839871
+// opcode: aes64ks2 ; op1:x3; op2:x16; dest:x15; op1val:0xfbffffffffffffff; op2val:0xfffffdffffffffff
+TEST_RR_OP(aes64ks2, x15, x3, x16, 0x0000000000000000, 0xfbffffffffffffff, 0xfffffdffffffffff, x9, 48, x8)
+
+inst_24:
+// rs1==x31, rs2==x11, rd==x21, rs2_val == 18446742974197923839, rs1_val == 18446744073707454463
+// opcode: aes64ks2 ; op1:x31; op2:x11; dest:x21; op1val:0xffffffffffdfffff; op2val:0xfffffeffffffffff
+TEST_RR_OP(aes64ks2, x21, x31, x11, 0x0000000000000000, 0xffffffffffdfffff, 0xfffffeffffffffff, x9, 56, x8)
+
+inst_25:
+// rs1==x14, rs2==x21, rd==x27, rs2_val == 18446743523953737727,
+// opcode: aes64ks2 ; op1:x14; op2:x21; dest:x27; op1val:0x4000000000000000; op2val:0xffffff7fffffffff
+TEST_RR_OP(aes64ks2, x27, x14, x21, 0x0000000000000000, 0x4000000000000000, 0xffffff7fffffffff, x9, 64, x8)
+
+inst_26:
+// rs1==x5, rs2==x30, rd==x18, rs2_val == 18446743798831644671, rs1_val == 8
+// opcode: aes64ks2 ; op1:x5; op2:x30; dest:x18; op1val:0x8; op2val:0xffffffbfffffffff
+TEST_RR_OP(aes64ks2, x18, x5, x30, 0x0000000000000000, 0x8, 0xffffffbfffffffff, x9, 72, x8)
+
+inst_27:
+// rs1==x2, rs2==x29, rd==x11, rs2_val == 18446743936270598143,
+// opcode: aes64ks2 ; op1:x2; op2:x29; dest:x11; op1val:-0x800000000000001; op2val:0xffffffdfffffffff
+TEST_RR_OP(aes64ks2, x11, x2, x29, 0x0000000000000000, -0x800000000000001, 0xffffffdfffffffff, x9, 80, x8)
+
+inst_28:
+// rs1==x20, rs2==x10, rd==x0, rs2_val == 18446744004990074879,
+// opcode: aes64ks2 ; op1:x20; op2:x10; dest:x0; op1val:-0xa; op2val:0xffffffefffffffff
+TEST_RR_OP(aes64ks2, x0, x20, x10, 0x0000000000000000, -0xa, 0xffffffefffffffff, x9, 88, x8)
+
+inst_29:
+// rs1==x16, rs2==x25, rd==x26, rs2_val == 18446744039349813247, rs1_val == 2251799813685248
+// opcode: aes64ks2 ; op1:x16; op2:x25; dest:x26; op1val:0x8000000000000; op2val:0xfffffff7ffffffff
+TEST_RR_OP(aes64ks2, x26, x16, x25, 0x0000000000000000, 0x8000000000000, 0xfffffff7ffffffff, x9, 96, x8)
+
+inst_30:
+// rs1==x23, rs2==x3, rd==x22, rs2_val == 18446744056529682431, rs1_val == 35184372088832
+// opcode: aes64ks2 ; op1:x23; op2:x3; dest:x22; op1val:0x200000000000; op2val:0xfffffffbffffffff
+TEST_RR_OP(aes64ks2, x22, x23, x3, 0x0000000000000000, 0x200000000000, 0xfffffffbffffffff, x9, 104, x8)
+
+inst_31:
+// rs1==x11, rs2==x31, rd==x8, rs2_val == 18446744065119617023, rs1_val == 72057594037927936
+// opcode: aes64ks2 ; op1:x11; op2:x31; dest:x8; op1val:0x100000000000000; op2val:0xfffffffdffffffff
+TEST_RR_OP(aes64ks2, x8, x11, x31, 0x0000000000000000, 0x100000000000000, 0xfffffffdffffffff, x9, 112, x2)
+
+inst_32:
+// rs2_val == 18446744069414584319,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0xfffffffeffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0xfffffffeffffffff, x9, 120, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_33:
+// rs2_val == 18446744071562067967, rs1_val == 34359738368
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x800000000; op2val:0xffffffff7fffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x800000000, 0xffffffff7fffffff, x1, 0, x2)
+
+inst_34:
+// rs2_val == 18446744072635809791,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x40001; op2val:0xffffffffbfffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x40001, 0xffffffffbfffffff, x1, 8, x2)
+
+inst_35:
+// rs2_val == 18446744073172680703, rs1_val == 18446744073709543423
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffdfff; op2val:0xffffffffdfffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffffdfff, 0xffffffffdfffffff, x1, 16, x2)
+
+inst_36:
+// rs2_val == 18446744073441116159,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x8000000001; op2val:0xffffffffefffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x8000000001, 0xffffffffefffffff, x1, 24, x2)
+
+inst_37:
+// rs2_val == 18446744073575333887, rs1_val == 18446744056529682431
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbffffffff; op2val:0xfffffffff7ffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffbffffffff, 0xfffffffff7ffffff, x1, 32, x2)
+
+inst_38:
+// rs2_val == 18446744073642442751,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000000001; op2val:0xfffffffffbffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x80000000000001, 0xfffffffffbffffff, x1, 40, x2)
+
+inst_39:
+// rs2_val == 18446744073675997183,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x6; op2val:0xfffffffffdffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x6, 0xfffffffffdffffff, x1, 48, x2)
+
+inst_40:
+// rs2_val == 18446744073692774399,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x200000000000001; op2val:0xfffffffffeffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x200000000000001, 0xfffffffffeffffff, x1, 56, x2)
+
+inst_41:
+// rs2_val == 18446744073701163007,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x800000000; op2val:0xffffffffff7fffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x800000000, 0xffffffffff7fffff, x1, 64, x2)
+
+inst_42:
+// rs2_val == 18446744073705357311, rs1_val == 33554432
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x2000000; op2val:0xffffffffffbfffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x2000000, 0xffffffffffbfffff, x1, 72, x2)
+
+inst_43:
+// rs2_val == 18446744073707454463, rs1_val == 18446741874686296063
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffdffffffffff; op2val:0xffffffffffdfffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffdffffffffff, 0xffffffffffdfffff, x1, 80, x2)
+
+inst_44:
+// rs2_val == 18446744073708503039,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000; op2val:0xffffffffffefffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x8000000000000, 0xffffffffffefffff, x1, 88, x2)
+
+inst_45:
+// rs2_val == 18446744073709027327,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x1; op2val:0xfffffffffff7ffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x1, 0xfffffffffff7ffff, x1, 96, x2)
+
+inst_46:
+// rs2_val == 18446744073709289471, rs1_val == 18446603336221196287
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffff7fffffffffff; op2val:0xfffffffffffbffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffff7fffffffffff, 0xfffffffffffbffff, x1, 104, x2)
+
+inst_47:
+// rs2_val == 18446744073709420543,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x80000001; op2val:0xfffffffffffdffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x80000001, 0xfffffffffffdffff, x1, 112, x2)
+
+inst_48:
+// rs2_val == 18446744073709486079,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0xfffffffffffeffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x5, 0xfffffffffffeffff, x1, 120, x2)
+
+inst_49:
+// rs2_val == 18446744073709518847,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xc; op2val:0xffffffffffff7fff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xc, 0xffffffffffff7fff, x1, 128, x2)
+
+inst_50:
+// rs2_val == 18446744073709535231,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x10; op2val:0xffffffffffffbfff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x10, 0xffffffffffffbfff, x1, 136, x2)
+
+inst_51:
+// rs2_val == 18446744073709543423,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0xffffffffffffdfff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x201, 0xffffffffffffdfff, x1, 144, x2)
+
+inst_52:
+// rs2_val == 18446744073709547519, rs1_val == 128
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x80; op2val:0xffffffffffffefff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x80, 0xffffffffffffefff, x1, 152, x2)
+
+inst_53:
+// rs2_val == 18446744073709549567, rs1_val == 4398046511104
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x40000000000; op2val:0xfffffffffffff7ff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x40000000000, 0xfffffffffffff7ff, x1, 160, x2)
+
+inst_54:
+// rs2_val == 18446744073709550591, rs1_val == 144115188075855872
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x200000000000000; op2val:0xfffffffffffffbff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x200000000000000, 0xfffffffffffffbff, x1, 168, x2)
+
+inst_55:
+// rs2_val == 18446744073709551103,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x200001; op2val:0xfffffffffffffdff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x200001, 0xfffffffffffffdff, x1, 176, x2)
+
+inst_56:
+// rs2_val == 18446744073709551359,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0xfffffffffffffeff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x4000, 0xfffffffffffffeff, x1, 184, x2)
+
+inst_57:
+// rs2_val == 18446744073709551487,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x201; op2val:0xffffffffffffff7f
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x201, 0xffffffffffffff7f, x1, 192, x2)
+
+inst_58:
+// rs2_val == 18446744073709551551, rs1_val == 18437736874454810623
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffdfffffffffffff; op2val:0xffffffffffffffbf
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffdfffffffffffff, 0xffffffffffffffbf, x1, 200, x2)
+
+inst_59:
+// rs2_val == 18446744073709551583, rs1_val == 1073741824
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x40000000; op2val:0xffffffffffffffdf
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x40000000, 0xffffffffffffffdf, x1, 208, x2)
+
+inst_60:
+// rs2_val == 18446744073709551599,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x2000000000000001; op2val:0xffffffffffffffef
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x2000000000000001, 0xffffffffffffffef, x1, 216, x2)
+
+inst_61:
+// rs2_val == 18446744073709551607, rs1_val == 1
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0xfffffffffffffff7
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x1, 0xfffffffffffffff7, x1, 224, x2)
+
+inst_62:
+// rs2_val == 18446744073709551611, rs1_val == 1152921504606846976
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x1000000000000000; op2val:0xfffffffffffffffb
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x1000000000000000, 0xfffffffffffffffb, x1, 232, x2)
+
+inst_63:
+// rs2_val == 18446744073709551613, rs1_val == 18446744065119617023
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffdffffffff; op2val:0xfffffffffffffffd
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffdffffffff, 0xfffffffffffffffd, x1, 240, x2)
+
+inst_64:
+// rs2_val == 18446744073709551614, rs1_val == 1125899906842624
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000; op2val:0xfffffffffffffffe
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x4000000000000, 0xfffffffffffffffe, x1, 248, x2)
+
+inst_65:
+// rs1_val == 9223372036854775807, rs2_val == 17179869184
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x400000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x400000000, x1, 256, x2)
+
+inst_66:
+// rs1_val == 13835058055282163711, rs2_val == 2305843009213693952
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x2000000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x2000000000000000, x1, 264, x2)
+
+inst_67:
+// rs1_val == 16140901064495857663, rs2_val == 137438953472
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0x2000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0x2000000000, x1, 272, x2)
+
+inst_68:
+// rs1_val == 17293822569102704639,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xefffffffffffffff; op2val:-0x2
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xefffffffffffffff, -0x2, x1, 280, x2)
+
+inst_69:
+// rs1_val == 17870283321406128127, rs2_val == 32
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xf7ffffffffffffff; op2val:0x20
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xf7ffffffffffffff, 0x20, x1, 288, x2)
+
+inst_70:
+// rs1_val == 18302628885633695743,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfdffffffffffffff; op2val:-0x40000000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfdffffffffffffff, -0x40000000001, x1, 296, x2)
+
+inst_71:
+// rs1_val == 18374686479671623679,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfeffffffffffffff; op2val:0xfffffffeffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfeffffffffffffff, 0xfffffffeffffffff, x1, 304, x2)
+
+inst_72:
+// rs1_val == 18410715276690587647, rs2_val == 70368744177664
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xff7fffffffffffff; op2val:0x400000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xff7fffffffffffff, 0x400000000000, x1, 312, x2)
+
+inst_73:
+// rs1_val == 18428729675200069631, rs2_val == 8192
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffbfffffffffffff; op2val:0x2000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffbfffffffffffff, 0x2000, x1, 320, x2)
+
+inst_74:
+// rs1_val == 18442240474082181119,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffefffffffffffff; op2val:0x9
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffefffffffffffff, 0x9, x1, 328, x2)
+
+inst_75:
+// rs1_val == 18444492273895866367,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfff7ffffffffffff; op2val:-0x1000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfff7ffffffffffff, -0x1000001, x1, 336, x2)
+
+inst_76:
+// rs1_val == 18445618173802708991,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffbffffffffffff; op2val:-0x100000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffbffffffffffff, -0x100000001, x1, 344, x2)
+
+inst_77:
+// rs1_val == 18446181123756130303,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffdffffffffffff; op2val:0xffffffffffff7fff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffdffffffffffff, 0xffffffffffff7fff, x1, 352, x2)
+
+inst_78:
+// rs1_val == 18446462598732840959, rs2_val == 4503599627370496
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffeffffffffffff; op2val:0x10000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffeffffffffffff, 0x10000000000000, x1, 360, x2)
+
+inst_79:
+// rs1_val == 18446673704965373951, rs2_val == 2
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffbfffffffffff; op2val:0x2
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffbfffffffffff, 0x2, x1, 368, x2)
+
+inst_80:
+// rs1_val == 18446708889337462783,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfffffffffff; op2val:0xfffffdffffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffdfffffffffff, 0xfffffdffffffffff, x1, 376, x2)
+
+inst_81:
+// rs1_val == 18446726481523507199, rs2_val == 144115188075855872
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffefffffffffff; op2val:0x200000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffefffffffffff, 0x200000000000000, x1, 384, x2)
+
+inst_82:
+// rs1_val == 18446735277616529407,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffff7ffffffffff; op2val:0xfffffffff7ffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffff7ffffffffff, 0xfffffffff7ffffff, x1, 392, x2)
+
+inst_83:
+// rs1_val == 18446739675663040511,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffbffffffffff; op2val:-0x100001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffbffffffffff, -0x100001, x1, 400, x2)
+
+inst_84:
+// rs1_val == 18446742974197923839,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffeffffffffff; op2val:0xefffffffffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffeffffffffff, 0xefffffffffffffff, x1, 408, x2)
+
+inst_85:
+// rs1_val == 18446743523953737727,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffff7fffffffff; op2val:-0x4000000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffff7fffffffff, -0x4000000000000000, x1, 416, x2)
+
+inst_86:
+// rs1_val == 18446743798831644671, rs2_val == 64
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffbfffffffff; op2val:0x40
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffbfffffffff, 0x40, x1, 424, x2)
+
+inst_87:
+// rs1_val == 18446743936270598143, rs2_val == 18014398509481984
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffdfffffffff; op2val:0x40000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffdfffffffff, 0x40000000000000, x1, 432, x2)
+
+inst_88:
+// rs1_val == 18446744004990074879, rs2_val == 131072
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffefffffffff; op2val:0x20000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffefffffffff, 0x20000, x1, 440, x2)
+
+inst_89:
+// rs1_val == 18446744039349813247, rs2_val == 2251799813685248
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff7ffffffff; op2val:0x8000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffff7ffffffff, 0x8000000000000, x1, 448, x2)
+
+inst_90:
+// rs1_val == 18446744071562067967,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff7fffffff; op2val:0x6
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffff7fffffff, 0x6, x1, 456, x2)
+
+inst_91:
+// rs1_val == 18446744072635809791, rs2_val == 1099511627776
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffbfffffff; op2val:0x10000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffbfffffff, 0x10000000000, x1, 464, x2)
+
+inst_92:
+// rs1_val == 18446744073172680703,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffdfffffff; op2val:-0x1000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffdfffffff, -0x1000001, x1, 472, x2)
+
+inst_93:
+// rs1_val == 18446744073441116159, rs2_val == 268435456
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffefffffff; op2val:0x10000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffefffffff, 0x10000000, x1, 480, x2)
+
+inst_94:
+// rs1_val == 18446744073575333887,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff7ffffff; op2val:0x3
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffff7ffffff, 0x3, x1, 488, x2)
+
+inst_95:
+// rs1_val == 18446744073642442751,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffbffffff; op2val:-0x40000000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffbffffff, -0x40000000001, x1, 496, x2)
+
+inst_96:
+// rs1_val == 18446744073675997183, rs2_val == 1
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffdffffff; op2val:0x1
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffdffffff, 0x1, x1, 504, x2)
+
+inst_97:
+// rs1_val == 18446744073692774399,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffeffffff; op2val:-0x100000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffeffffff, -0x100000001, x1, 512, x2)
+
+inst_98:
+// rs1_val == 18446744073701163007,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7fffff; op2val:0xfffffffffffffffd
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffff7fffff, 0xfffffffffffffffd, x1, 520, x2)
+
+inst_99:
+// rs1_val == 18446744073705357311,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffbfffff; op2val:0x7fffffffffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffbfffff, 0x7fffffffffffffff, x1, 528, x2)
+
+inst_100:
+// rs1_val == 18446744073708503039,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffefffff; op2val:0x12
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffefffff, 0x12, x1, 536, x2)
+
+inst_101:
+// rs1_val == 18446744073709027327, rs2_val == 140737488355328
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff7ffff; op2val:0x800000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffff7ffff, 0x800000000000, x1, 544, x2)
+
+inst_102:
+// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x1, 552, x2)
+
+inst_103:
+// rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x1, 560, x2)
+
+inst_104:
+// rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x1, 568, x2)
+
+inst_105:
+// rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x1, 576, x2)
+
+inst_106:
+// rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x1, 584, x2)
+
+inst_107:
+// rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x1, 592, x2)
+
+inst_108:
+// rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x1, 600, x2)
+
+inst_109:
+// rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x1, 608, x2)
+
+inst_110:
+// rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x1, 616, x2)
+
+inst_111:
+// rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x1, 624, x2)
+
+inst_112:
+// rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x1, 632, x2)
+
+inst_113:
+// rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x1, 640, x2)
+
+inst_114:
+// rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x1, 648, x2)
+
+inst_115:
+// rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x1, 656, x2)
+
+inst_116:
+// rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x1, 664, x2)
+
+inst_117:
+// rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x1, 672, x2)
+
+inst_118:
+// rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x1, 680, x2)
+
+inst_119:
+// rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x1, 688, x2)
+
+inst_120:
+// rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x1, 696, x2)
+
+inst_121:
+// rs1_val == 18446744073709289471, rs2_val == 72057594037927936
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbffff; op2val:0x100000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbffff, 0x100000000000000, x1, 704, x2)
+
+inst_122:
+// rs1_val == 18446744073709420543,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffdffff; op2val:-0x40000000000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffdffff, -0x40000000000001, x1, 712, x2)
+
+inst_123:
+// rs1_val == 18446744073709486079,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffeffff; op2val:-0x10000000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffeffff, -0x10000000001, x1, 720, x2)
+
+inst_124:
+// rs1_val == 18446744073709518847,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff7fff; op2val:-0x9
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffff7fff, -0x9, x1, 728, x2)
+
+inst_125:
+// rs1_val == 18446744073709535231,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffbfff; op2val:0xfffffffffdffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffffbfff, 0xfffffffffdffffff, x1, 736, x2)
+
+inst_126:
+// rs1_val == 18446744073709547519, rs2_val == 1152921504606846976
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffefff; op2val:0x1000000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffffefff, 0x1000000000000000, x1, 744, x2)
+
+inst_127:
+// rs1_val == 18446744073709549567,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff7ff; op2val:0x5555555555555555
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff7ff, 0x5555555555555555, x1, 752, x2)
+
+inst_128:
+// rs1_val == 18446744073709550591,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffbff; op2val:0xfffffffdffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffbff, 0xfffffffdffffffff, x1, 760, x2)
+
+inst_129:
+// rs1_val == 18446744073709551103,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffdff; op2val:0x100000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffdff, 0x100000000000000, x1, 768, x2)
+
+inst_130:
+// rs1_val == 18446744073709551359, rs2_val == 4194304
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffeff; op2val:0x400000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffeff, 0x400000, x1, 776, x2)
+
+inst_131:
+// rs1_val == 18446744073709551551,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffbf; op2val:-0x2000000000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffbf, -0x2000000000001, x1, 784, x2)
+
+inst_132:
+// rs1_val == 18446744073709551583,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffdf; op2val:0x2
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffdf, 0x2, x1, 792, x2)
+
+inst_133:
+// rs1_val == 18446744073709551599,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffef; op2val:0x2000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffef, 0x2000000000, x1, 800, x2)
+
+inst_134:
+// rs1_val == 18446744073709551607,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff7; op2val:0x40000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff7, 0x40000000000000, x1, 808, x2)
+
+inst_135:
+// rs1_val == 18446744073709551611,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0x400000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0x400000000000, x1, 816, x2)
+
+inst_136:
+// rs1_val == 18446744073709551613, rs2_val == 2097152
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffd; op2val:0x200000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffd, 0x200000, x1, 824, x2)
+
+inst_137:
+// rs2_val == 9223372036854775808,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffdfffffffff; op2val:0x8000000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffdfffffffff, 0x8000000000000000, x1, 832, x2)
+
+inst_138:
+// rs2_val == 4611686018427387904,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x5555555555555555; op2val:0x4000000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x5555555555555555, 0x4000000000000000, x1, 840, x2)
+
+inst_139:
+// rs2_val == 576460752303423488, rs1_val == 576460752303423488
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x800000000000000; op2val:0x800000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x800000000000000, 0x800000000000000, x1, 848, x2)
+
+inst_140:
+// rs2_val == 288230376151711744,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xd; op2val:0x400000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xd, 0x400000000000000, x1, 856, x2)
+
+inst_141:
+// rs2_val == 36028797018963968,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffbfffffffffffff; op2val:0x80000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffbfffffffffffff, 0x80000000000000, x1, 864, x2)
+
+inst_142:
+// rs2_val == 9007199254740992, rs1_val == 9007199254740992
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x20000000000000; op2val:0x20000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x20000000000000, 0x20000000000000, x1, 872, x2)
+
+inst_143:
+// rs2_val == 1125899906842624,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000; op2val:0x4000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x8000000000000, 0x4000000000000, x1, 880, x2)
+
+inst_144:
+// rs2_val == 562949953421312,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffdffffff; op2val:0x2000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffdffffff, 0x2000000000000, x1, 888, x2)
+
+inst_145:
+// rs2_val == 281474976710656,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x81; op2val:0x1000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x81, 0x1000000000000, x1, 896, x2)
+
+inst_146:
+// rs2_val == 35184372088832,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x80000000001; op2val:0x200000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x80000000001, 0x200000000000, x1, 904, x2)
+
+inst_147:
+// rs2_val == 17592186044416,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x20000000000000; op2val:0x100000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x20000000000000, 0x100000000000, x1, 912, x2)
+
+inst_148:
+// rs2_val == 8796093022208,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff7fffffff; op2val:0x80000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffff7fffffff, 0x80000000000, x1, 920, x2)
+
+inst_149:
+// rs2_val == 4398046511104, rs1_val == 2305843009213693952
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0x40000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0x40000000000, x1, 928, x2)
+
+inst_150:
+// rs2_val == 2199023255552,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffbfffffff; op2val:0x20000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffffffbfffffff, 0x20000000000, x1, 936, x2)
+
+inst_151:
+// rs2_val == 549755813888,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x8; op2val:0x8000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x8, 0x8000000000, x1, 944, x2)
+
+inst_152:
+// rs2_val == 274877906944,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x400000000000; op2val:0x4000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x400000000000, 0x4000000000, x1, 952, x2)
+
+inst_153:
+// rs2_val == 68719476736,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x1000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x11, 0x1000000000, x1, 960, x2)
+
+inst_154:
+// rs2_val == 34359738368, rs1_val == 1048576
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x800000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x100000, 0x800000000, x1, 968, x2)
+
+inst_155:
+// rs2_val == 8589934592,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x200000000000; op2val:0x200000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x200000000000, 0x200000000, x1, 976, x2)
+
+inst_156:
+// rs2_val == 4294967296,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x100000; op2val:0x100000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x100000, 0x100000000, x1, 984, x2)
+
+inst_157:
+// rs2_val == 2147483648,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffd; op2val:0x80000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffd, 0x80000000, x1, 992, x2)
+
+inst_158:
+// rs2_val == 1073741824,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x5; op2val:0x40000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x5, 0x40000000, x1, 1000, x2)
+
+inst_159:
+// rs2_val == 536870912,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff7ffffffff; op2val:0x20000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffff7ffffffff, 0x20000000, x1, 1008, x2)
+
+inst_160:
+// rs2_val == 134217728,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x8000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x0, 0x8000000, x1, 1016, x2)
+
+inst_161:
+// rs2_val == 67108864,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x4000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x4000000, x1, 1024, x2)
+
+inst_162:
+// rs2_val == 33554432,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffdffffffffff; op2val:0x2000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffdffffffffff, 0x2000000, x1, 1032, x2)
+
+inst_163:
+// rs2_val == 16777216, rs1_val == 65536
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x10000; op2val:0x1000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x10000, 0x1000000, x1, 1040, x2)
+
+inst_164:
+// rs2_val == 8388608, rs1_val == 9223372036854775808
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0x800000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0x800000, x1, 1048, x2)
+
+inst_165:
+// rs2_val == 1048576,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x9; op2val:0x100000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x9, 0x100000, x1, 1056, x2)
+
+inst_166:
+// rs2_val == 524288,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeffffffff; op2val:0x80000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffeffffffff, 0x80000, x1, 1064, x2)
+
+inst_167:
+// rs2_val == 262144,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffdfffffffffff; op2val:0x40000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffdfffffffffff, 0x40000, x1, 1072, x2)
+
+inst_168:
+// rs2_val == 65536,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffdff; op2val:0x10000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffdff, 0x10000, x1, 1080, x2)
+
+inst_169:
+// rs2_val == 32768,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x8; op2val:0x8000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x8, 0x8000, x1, 1088, x2)
+
+inst_170:
+// rs2_val == 16384,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xffffbfffffffffff; op2val:0x4000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xffffbfffffffffff, 0x4000, x1, 1096, x2)
+
+inst_171:
+// rs2_val == 4096,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbffffffff; op2val:0x1000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0xfffffffbffffffff, 0x1000, x1, 1104, x2)
+
+inst_172:
+// rs2_val == 2048,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x2; op2val:0x800
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x2, 0x800, x1, 1112, x2)
+
+inst_173:
+// rs2_val == 1024,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x11; op2val:0x400
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x11, 0x400, x1, 1120, x2)
+
+inst_174:
+// rs2_val == 512,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x5555555555555556; op2val:0x200
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x5555555555555556, 0x200, x1, 1128, x2)
+
+inst_175:
+// rs2_val == 256,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x20000000001; op2val:0x100
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x20000000001, 0x100, x1, 1136, x2)
+
+inst_176:
+// rs2_val == 128,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x21; op2val:0x80
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x21, 0x80, x1, 1144, x2)
+
+inst_177:
+// rs2_val == 16, rs1_val == 268435456
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x10000000; op2val:0x10
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x10000000, 0x10, x1, 1152, x2)
+
+inst_178:
+// rs2_val == 8,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0x8
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0x8, x1, 1160, x2)
+
+inst_179:
+// rs2_val == 4, rs1_val == 68719476736
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x1000000000; op2val:0x4
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x1000000000, 0x4, x1, 1168, x2)
+
+inst_180:
+// rs1_val == 288230376151711744,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x400000000000000; op2val:0xffffffbfffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x400000000000000, 0xffffffbfffffffff, x1, 1176, x2)
+
+inst_181:
+// rs1_val == 36028797018963968,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x80000000000000; op2val:0x80000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x80000000000000, 0x80000000, x1, 1184, x2)
+
+inst_182:
+// rs1_val == 4503599627370496,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x10000000000000; op2val:-0x40000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x10000000000000, -0x40000001, x1, 1192, x2)
+
+inst_183:
+// rs1_val == 562949953421312,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000; op2val:-0x80000000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x2000000000000, -0x80000000001, x1, 1200, x2)
+
+inst_184:
+// rs1_val == 140737488355328,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x800000000000; op2val:-0xa
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x800000000000, -0xa, x1, 1208, x2)
+
+inst_185:
+// rs1_val == 17592186044416,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x100000000000; op2val:0x5555555555555555
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x100000000000, 0x5555555555555555, x1, 1216, x2)
+
+inst_186:
+// rs1_val == 8796093022208,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x80000000000; op2val:0xe
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x80000000000, 0xe, x1, 1224, x2)
+
+inst_187:
+// rs1_val == 2199023255552,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x20000000000; op2val:0x4
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x20000000000, 0x4, x1, 1232, x2)
+
+inst_188:
+// rs1_val == 1099511627776,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x10000000000; op2val:0xdfffffffffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x10000000000, 0xdfffffffffffffff, x1, 1240, x2)
+
+inst_189:
+// rs1_val == 549755813888,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000; op2val:-0x6
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x8000000000, -0x6, x1, 1248, x2)
+
+inst_190:
+// rs1_val == 274877906944,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000; op2val:-0xa
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x4000000000, -0xa, x1, 1256, x2)
+
+inst_191:
+// rs1_val == 137438953472,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000; op2val:0x0
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x2000000000, 0x0, x1, 1264, x2)
+
+inst_192:
+// rs1_val == 17179869184,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x400000000; op2val:0x400000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x400000000, 0x400000, x1, 1272, x2)
+
+inst_193:
+// rs1_val == 8589934592,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x200000000; op2val:0x800
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x200000000, 0x800, x1, 1280, x2)
+
+inst_194:
+// rs1_val == 4294967296,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x100000000; op2val:0x10
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x100000000, 0x10, x1, 1288, x2)
+
+inst_195:
+// rs1_val == 2147483648,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x80000000; op2val:-0x11
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x80000000, -0x11, x1, 1296, x2)
+
+inst_196:
+// rs1_val == 536870912,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x20000000; op2val:0x80000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x20000000, 0x80000000000, x1, 1304, x2)
+
+inst_197:
+// rs1_val == 134217728,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x8000000; op2val:0xfffffffffff7ffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x8000000, 0xfffffffffff7ffff, x1, 1312, x2)
+
+inst_198:
+// rs1_val == 67108864,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x4000000; op2val:0xa
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x4000000, 0xa, x1, 1320, x2)
+
+inst_199:
+// rs1_val == 16777216,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x1000000; op2val:-0x100000000000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x1000000, -0x100000000000001, x1, 1328, x2)
+
+inst_200:
+// rs1_val == 8388608,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x800000; op2val:0xfffbffffffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x800000, 0xfffbffffffffffff, x1, 1336, x2)
+
+inst_201:
+// rs1_val == 4194304,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x400000; op2val:0x20
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x400000, 0x20, x1, 1344, x2)
+
+inst_202:
+// rs1_val == 2097152,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x200000; op2val:-0x81
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x200000, -0x81, x1, 1352, x2)
+
+inst_203:
+// rs1_val == 524288,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x80000; op2val:-0x2000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x80000, -0x2000001, x1, 1360, x2)
+
+inst_204:
+// rs1_val == 262144,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x40000; op2val:-0x11
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x40000, -0x11, x1, 1368, x2)
+
+inst_205:
+// rs1_val == 32768,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x8000; op2val:0xfffffffbffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x8000, 0xfffffffbffffffff, x1, 1376, x2)
+
+inst_206:
+// rs1_val == 8192,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x2000; op2val:-0x801
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x2000, -0x801, x1, 1384, x2)
+
+inst_207:
+// rs1_val == 4096,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x1000; op2val:0x4000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x1000, 0x4000000, x1, 1392, x2)
+
+inst_208:
+// rs1_val == 2048,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x800; op2val:0x5
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x800, 0x5, x1, 1400, x2)
+
+inst_209:
+// rs1_val == 1024,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x400; op2val:-0x400001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x400, -0x400001, x1, 1408, x2)
+
+inst_210:
+// rs1_val == 512,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x200; op2val:-0x1
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x200, -0x1, x1, 1416, x2)
+
+inst_211:
+// rs1_val == 256,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x100; op2val:0x100000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x100, 0x100000000, x1, 1424, x2)
+
+inst_212:
+// rs1_val == 64,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x40; op2val:0xfffffffffffffeff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x40, 0xfffffffffffffeff, x1, 1432, x2)
+
+inst_213:
+// rs1_val == 32,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x20; op2val:0x40000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x20, 0x40000000, x1, 1440, x2)
+
+inst_214:
+// rs1_val == 4,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x4; op2val:-0x40000001
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x4, -0x40000001, x1, 1448, x2)
+
+inst_215:
+// rs1_val == 2,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x10000000000000
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x2, 0x10000000000000, x1, 1456, x2)
+
+inst_216:
+// rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x1, 1464, x2)
+
+inst_217:
+// rs2_val == 13835058055282163711,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0x5; op2val:0xbfffffffffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0x5, 0xbfffffffffffffff, x1, 1472, x2)
+
+inst_218:
+// rs2_val == 18446181123756130303,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:0x4000; op2val:0xfffdffffffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, 0x4000, 0xfffdffffffffffff, x1, 1480, x2)
+
+inst_219:
+// rs2_val == 18446744004990074879,
+// opcode: aes64ks2 ; op1:x10; op2:x11; dest:x12; op1val:-0xa; op2val:0xffffffefffffffff
+TEST_RR_OP(aes64ks2, x12, x10, x11, 0x0000000000000000, -0xa, 0xffffffefffffffff, x1, 1488, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 17*(XLEN/32),4,0xdeadbeef
+
+
+signature_x9_0:
+ .fill 16*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 187*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/andn-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/andn-01.S
new file mode 100644
index 000000000..daf30b85d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/andn-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the andn instruction of the RISC-V extension for the andn covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",andn)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",andn)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",andn)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",andn)
+
+RVTEST_SIGBASE( x16,signature_x16_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x14, rs2==x14, rd==x1, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: andn ; op1:x14; op2:x14; dest:x1; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(andn, x1, x14, x14, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x16, 0, x12)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x2, rs2==x2, rd==x2, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: andn ; op1:x2; op2:x2; dest:x2; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(andn, x2, x2, x2, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x16, 8, x12)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x5, rs2==x3, rd==x26, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: andn ; op1:x5; op2:x3; dest:x26; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(andn, x26, x5, x3, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x16, 16, x12)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x0, rs2==x23, rd==x0, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: andn ; op1:x0; op2:x23; dest:x0; op1val:0x0; op2val:0x4000000000000000
+TEST_RR_OP(andn, x0, x0, x23, 0x0000000000000000, 0x0, 0x4000000000000000, x16, 24, x12)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x29, rs2==x17, rd==x17, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: andn ; op1:x29; op2:x17; dest:x17; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(andn, x17, x29, x17, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x16, 32, x12)
+
+inst_5:
+// rs1==x13, rs2==x5, rd==x15, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: andn ; op1:x13; op2:x5; dest:x15; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(andn, x15, x13, x5, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x16, 40, x12)
+
+inst_6:
+// rs1==x6, rs2==x18, rd==x7, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: andn ; op1:x6; op2:x18; dest:x7; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(andn, x7, x6, x18, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x16, 48, x12)
+
+inst_7:
+// rs1==x18, rs2==x1, rd==x24, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: andn ; op1:x18; op2:x1; dest:x24; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(andn, x24, x18, x1, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x16, 56, x12)
+
+inst_8:
+// rs1==x24, rs2==x6, rd==x13, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: andn ; op1:x24; op2:x6; dest:x13; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(andn, x13, x24, x6, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x16, 64, x12)
+
+inst_9:
+// rs1==x21, rs2==x13, rd==x28, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: andn ; op1:x21; op2:x13; dest:x28; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(andn, x28, x21, x13, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x16, 72, x12)
+
+inst_10:
+// rs1==x11, rs2==x7, rd==x25, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: andn ; op1:x11; op2:x7; dest:x25; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(andn, x25, x11, x7, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x16, 80, x12)
+
+inst_11:
+// rs1==x3, rs2==x28, rd==x10, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: andn ; op1:x3; op2:x28; dest:x10; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(andn, x10, x3, x28, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x16, 88, x12)
+
+inst_12:
+// rs1==x10, rs2==x25, rd==x20, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: andn ; op1:x10; op2:x25; dest:x20; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(andn, x20, x10, x25, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x16, 96, x12)
+
+inst_13:
+// rs1==x30, rs2==x26, rd==x9, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: andn ; op1:x30; op2:x26; dest:x9; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(andn, x9, x30, x26, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x16, 104, x12)
+
+inst_14:
+// rs1==x19, rs2==x8, rd==x4, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: andn ; op1:x19; op2:x8; dest:x4; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(andn, x4, x19, x8, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x16, 112, x12)
+
+inst_15:
+// rs1==x9, rs2==x29, rd==x31, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: andn ; op1:x9; op2:x29; dest:x31; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(andn, x31, x9, x29, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x16, 120, x12)
+
+inst_16:
+// rs1==x25, rs2==x19, rd==x12, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: andn ; op1:x25; op2:x19; dest:x12; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(andn, x12, x25, x19, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x16, 128, x1)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_17:
+// rs1==x31, rs2==x9, rd==x19, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: andn ; op1:x31; op2:x9; dest:x19; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(andn, x19, x31, x9, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x2, 0, x1)
+
+inst_18:
+// rs1==x27, rs2==x24, rd==x29, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: andn ; op1:x27; op2:x24; dest:x29; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(andn, x29, x27, x24, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x2, 8, x1)
+
+inst_19:
+// rs1==x28, rs2==x20, rd==x30, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: andn ; op1:x28; op2:x20; dest:x30; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(andn, x30, x28, x20, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x2, 16, x1)
+
+inst_20:
+// rs1==x17, rs2==x10, rd==x3, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: andn ; op1:x17; op2:x10; dest:x3; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(andn, x3, x17, x10, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x2, 24, x1)
+
+inst_21:
+// rs1==x16, rs2==x11, rd==x23, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: andn ; op1:x16; op2:x11; dest:x23; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(andn, x23, x16, x11, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x2, 32, x1)
+
+inst_22:
+// rs1==x20, rs2==x12, rd==x14, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: andn ; op1:x20; op2:x12; dest:x14; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(andn, x14, x20, x12, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x2, 40, x1)
+
+inst_23:
+// rs1==x26, rs2==x21, rd==x27, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: andn ; op1:x26; op2:x21; dest:x27; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(andn, x27, x26, x21, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x2, 48, x1)
+
+inst_24:
+// rs1==x23, rs2==x16, rd==x6, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: andn ; op1:x23; op2:x16; dest:x6; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(andn, x6, x23, x16, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x2, 56, x1)
+
+inst_25:
+// rs1==x7, rs2==x15, rd==x18, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: andn ; op1:x7; op2:x15; dest:x18; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(andn, x18, x7, x15, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x2, 64, x1)
+
+inst_26:
+// rs1==x4, rs2==x31, rd==x21, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: andn ; op1:x4; op2:x31; dest:x21; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(andn, x21, x4, x31, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x2, 72, x1)
+
+inst_27:
+// rs1==x8, rs2==x22, rd==x16, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: andn ; op1:x8; op2:x22; dest:x16; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(andn, x16, x8, x22, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x2, 80, x1)
+
+inst_28:
+// rs1==x12, rs2==x30, rd==x11, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: andn ; op1:x12; op2:x30; dest:x11; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(andn, x11, x12, x30, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x2, 88, x3)
+
+inst_29:
+// rs1==x1, rs2==x4, rd==x5, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: andn ; op1:x1; op2:x4; dest:x5; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(andn, x5, x1, x4, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x2, 96, x3)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_30:
+// rs1==x15, rs2==x0, rd==x22, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: andn ; op1:x15; op2:x0; dest:x22; op1val:0xb6de8bcfd96429c9; op2val:0x0
+TEST_RR_OP(andn, x22, x15, x0, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x0, x1, 0, x3)
+
+inst_31:
+// rs1==x22, rs2==x27, rd==x8, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: andn ; op1:x22; op2:x27; dest:x8; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(andn, x8, x22, x27, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x1, 8, x3)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x1, 16, x3)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x1, 24, x3)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x1, 32, x3)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x1, 40, x3)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x1, 48, x3)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x1, 56, x3)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x1, 64, x3)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x1, 72, x3)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x1, 80, x3)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x1, 88, x3)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x1, 96, x3)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x1, 104, x3)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x1, 112, x3)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x1, 120, x3)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x1, 128, x3)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x1, 136, x3)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x1, 144, x3)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x1, 152, x3)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x1, 160, x3)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x1, 168, x3)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x1, 176, x3)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x1, 184, x3)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x1, 192, x3)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x1, 200, x3)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x1, 208, x3)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x1, 216, x3)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x1, 224, x3)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x1, 232, x3)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x1, 240, x3)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x1, 248, x3)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x1, 256, x3)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x1, 264, x3)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x1, 272, x3)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x1, 280, x3)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x1, 288, x3)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x1, 296, x3)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x1, 304, x3)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x1, 312, x3)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x1, 320, x3)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x1, 328, x3)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x1, 336, x3)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x1, 344, x3)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x1, 352, x3)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x1, 360, x3)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x1, 368, x3)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x1, 376, x3)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x1, 384, x3)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x1, 392, x3)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x1, 400, x3)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x1, 408, x3)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x1, 416, x3)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x1, 424, x3)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x1, 432, x3)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x1, 440, x3)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x1, 448, x3)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x1, 456, x3)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x1, 464, x3)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x1, 472, x3)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x1, 480, x3)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x1, 488, x3)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x1, 496, x3)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x1, 504, x3)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x1, 512, x3)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x1, 520, x3)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x1, 528, x3)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x1, 536, x3)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x1, 544, x3)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x1, 552, x3)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x1, 560, x3)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x1, 568, x3)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x1, 576, x3)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x1, 584, x3)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x1, 592, x3)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x1, 600, x3)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x1, 608, x3)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x1, 616, x3)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x1, 624, x3)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x1, 632, x3)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x1, 640, x3)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x1, 648, x3)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x1, 656, x3)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x1, 664, x3)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x1, 672, x3)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x1, 680, x3)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x1, 688, x3)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x1, 696, x3)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x1, 704, x3)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x1, 712, x3)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x1, 720, x3)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x1, 728, x3)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x1, 736, x3)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x1, 744, x3)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x1, 752, x3)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x1, 760, x3)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x1, 768, x3)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x1, 776, x3)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x1, 784, x3)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x1, 792, x3)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x1, 800, x3)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x1, 808, x3)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x1, 816, x3)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x1, 824, x3)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x1, 832, x3)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x1, 840, x3)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x1, 848, x3)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x1, 856, x3)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x1, 864, x3)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x1, 872, x3)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x1, 880, x3)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x1, 888, x3)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x1, 896, x3)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x1, 904, x3)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x1, 912, x3)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x1, 920, x3)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x1, 928, x3)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x1, 936, x3)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x1, 944, x3)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x1, 952, x3)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x1, 960, x3)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x1, 968, x3)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x1, 976, x3)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x1, 984, x3)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x1, 992, x3)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x1, 1000, x3)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x1, 1008, x3)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x1, 1016, x3)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x1, 1024, x3)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x1, 1032, x3)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x1, 1040, x3)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x1, 1048, x3)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x1, 1056, x3)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x1, 1064, x3)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x1, 1072, x3)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x1, 1080, x3)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x1, 1088, x3)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x1, 1096, x3)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x1, 1104, x3)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x1, 1112, x3)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x1, 1120, x3)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x1, 1128, x3)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x1, 1136, x3)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x1, 1144, x3)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x1, 1152, x3)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x1, 1160, x3)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x1, 1168, x3)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x1, 1176, x3)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x1, 1184, x3)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x1, 1192, x3)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x1, 1200, x3)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x1, 1208, x3)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x1, 1216, x3)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x1, 1224, x3)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x1, 1232, x3)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x1, 1240, x3)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x1, 1248, x3)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x1, 1256, x3)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x1, 1264, x3)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x1, 1272, x3)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x1, 1280, x3)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x1, 1288, x3)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x1, 1296, x3)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x1, 1304, x3)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x1, 1312, x3)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x1, 1320, x3)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x1, 1328, x3)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x1, 1336, x3)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x1, 1344, x3)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x1, 1352, x3)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x1, 1360, x3)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x1, 1368, x3)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x1, 1376, x3)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x1, 1384, x3)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x1, 1392, x3)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x1, 1400, x3)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x1, 1408, x3)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x1, 1416, x3)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x1, 1424, x3)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x1, 1432, x3)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x1, 1440, x3)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x1, 1448, x3)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x1, 1456, x3)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x1, 1464, x3)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x1, 1472, x3)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x1, 1480, x3)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x1, 1488, x3)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x1, 1496, x3)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x1, 1504, x3)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x1, 1512, x3)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x1, 1520, x3)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x1, 1528, x3)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x1, 1536, x3)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x1, 1544, x3)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x1, 1552, x3)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x1, 1560, x3)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x1, 1568, x3)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x1, 1576, x3)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x1, 1584, x3)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x1, 1592, x3)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x1, 1600, x3)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x1, 1608, x3)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x1, 1616, x3)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x1, 1624, x3)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x1, 1632, x3)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x1, 1640, x3)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x1, 1648, x3)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x1, 1656, x3)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x1, 1664, x3)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x1, 1672, x3)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x1, 1680, x3)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x1, 1688, x3)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x1, 1696, x3)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x1, 1704, x3)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x1, 1712, x3)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x1, 1720, x3)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x1, 1728, x3)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x1, 1736, x3)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x1, 1744, x3)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x1, 1752, x3)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x1, 1760, x3)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x1, 1768, x3)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x1, 1776, x3)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x1, 1784, x3)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x1, 1792, x3)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x1, 1800, x3)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x1, 1808, x3)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x1, 1816, x3)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x1, 1824, x3)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x1, 1832, x3)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x1, 1840, x3)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x1, 1848, x3)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x1, 1856, x3)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x1, 1864, x3)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x1, 1872, x3)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x1, 1880, x3)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x1, 1888, x3)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x1, 1896, x3)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x1, 1904, x3)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x1, 1912, x3)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x1, 1920, x3)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x1, 1928, x3)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x1, 1936, x3)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x1, 1944, x3)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x1, 1952, x3)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x1, 1960, x3)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x1, 1968, x3)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x1, 1976, x3)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x1, 1984, x3)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x1, 1992, x3)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x1, 2000, x3)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x1, 2008, x3)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x1, 2016, x3)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x1, 2024, x3)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x1, 2032, x3)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x1, 2040, x3)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x1, 0, x3)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x1, 8, x3)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x1, 16, x3)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x1, 24, x3)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x1, 32, x3)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x1, 40, x3)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x1, 48, x3)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x1, 56, x3)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x1, 64, x3)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x1, 72, x3)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x1, 80, x3)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x1, 88, x3)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x1, 96, x3)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x1, 104, x3)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x1, 112, x3)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x1, 120, x3)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x1, 128, x3)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x1, 136, x3)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x1, 144, x3)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x1, 152, x3)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x1, 160, x3)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x1, 168, x3)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x1, 176, x3)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x1, 184, x3)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x1, 192, x3)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x1, 200, x3)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x1, 208, x3)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x1, 216, x3)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x1, 224, x3)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x1, 232, x3)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x1, 240, x3)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x1, 248, x3)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x1, 256, x3)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x1, 264, x3)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x1, 272, x3)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x1, 280, x3)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x1, 288, x3)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x1, 296, x3)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x1, 304, x3)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x1, 312, x3)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x1, 320, x3)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x1, 328, x3)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x1, 336, x3)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x1, 344, x3)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x1, 352, x3)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x1, 360, x3)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x1, 368, x3)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x1, 376, x3)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x1, 384, x3)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x1, 392, x3)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x1, 400, x3)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x1, 408, x3)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x1, 416, x3)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x1, 424, x3)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x1, 432, x3)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x1, 440, x3)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x1, 448, x3)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x1, 456, x3)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x1, 464, x3)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x1, 472, x3)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x1, 480, x3)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x1, 488, x3)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x1, 496, x3)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x1, 504, x3)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x1, 512, x3)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x1, 520, x3)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x1, 528, x3)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x1, 536, x3)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x1, 544, x3)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x1, 552, x3)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x1, 560, x3)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x1, 568, x3)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x1, 576, x3)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x1, 584, x3)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x1, 592, x3)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x1, 600, x3)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x1, 608, x3)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x1, 616, x3)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x1, 624, x3)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x1, 632, x3)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x1, 640, x3)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x1, 648, x3)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x1, 656, x3)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x1, 664, x3)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x1, 672, x3)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x1, 680, x3)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x1, 688, x3)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x1, 696, x3)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x1, 704, x3)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x1, 712, x3)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x1, 720, x3)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x1, 728, x3)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x1, 736, x3)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x1, 744, x3)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x1, 752, x3)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x1, 760, x3)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x1, 768, x3)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x1, 776, x3)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x1, 784, x3)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x1, 792, x3)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x1, 800, x3)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x1, 808, x3)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x1, 816, x3)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x1, 824, x3)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x1, 832, x3)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x1, 840, x3)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x1, 848, x3)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x1, 856, x3)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x1, 864, x3)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x1, 872, x3)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x1, 880, x3)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x1, 888, x3)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x1, 896, x3)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x1, 904, x3)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x1, 912, x3)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x1, 920, x3)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x1, 928, x3)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x1, 936, x3)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x1, 944, x3)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x1, 952, x3)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x1, 960, x3)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x1, 968, x3)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x1, 976, x3)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x1, 984, x3)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x1, 992, x3)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x1, 1000, x3)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x1, 1008, x3)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x1, 1016, x3)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x1, 1024, x3)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x1, 1032, x3)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x1, 1040, x3)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x1, 1048, x3)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x1, 1056, x3)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x1, 1064, x3)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x1, 1072, x3)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x1, 1080, x3)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x1, 1088, x3)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x1, 1096, x3)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x1, 1104, x3)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x1, 1112, x3)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x1, 1120, x3)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x1, 1128, x3)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x1, 1136, x3)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x1, 1144, x3)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x1, 1152, x3)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x1, 1160, x3)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x1, 1168, x3)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x1, 1176, x3)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x1, 1184, x3)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x1, 1192, x3)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x1, 1200, x3)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x1, 1208, x3)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x1, 1216, x3)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x1, 1224, x3)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x1, 1232, x3)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x1, 1240, x3)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x1, 1248, x3)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x1, 1256, x3)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x1, 1264, x3)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x1, 1272, x3)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x1, 1280, x3)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x1, 1288, x3)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x1, 1296, x3)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x1, 1304, x3)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x1, 1312, x3)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x1, 1320, x3)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x1, 1328, x3)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x1, 1336, x3)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x1, 1344, x3)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x1, 1352, x3)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x1, 1360, x3)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x1, 1368, x3)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x1, 1376, x3)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x1, 1384, x3)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x1, 1392, x3)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x1, 1400, x3)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x1, 1408, x3)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x1, 1416, x3)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x1, 1424, x3)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x1, 1432, x3)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x1, 1440, x3)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x1, 1448, x3)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x1, 1456, x3)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x1, 1464, x3)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x1, 1472, x3)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x1, 1480, x3)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x1, 1488, x3)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x1, 1496, x3)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x1, 1504, x3)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x1, 1512, x3)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x1, 1520, x3)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x1, 1528, x3)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x1, 1536, x3)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x1, 1544, x3)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x1, 1552, x3)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x1, 1560, x3)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x1, 1568, x3)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x1, 1576, x3)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x1, 1584, x3)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x1, 1592, x3)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x1, 1600, x3)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x1, 1608, x3)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x1, 1616, x3)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x1, 1624, x3)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x1, 1632, x3)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x1, 1640, x3)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x1, 1648, x3)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x1, 1656, x3)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x1, 1664, x3)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x1, 1672, x3)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x1, 1680, x3)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x1, 1688, x3)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x1, 1696, x3)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x1, 1704, x3)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x1, 1712, x3)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x1, 1720, x3)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x1, 1728, x3)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x1, 1736, x3)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x1, 1744, x3)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x1, 1752, x3)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x1, 1760, x3)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x1, 1768, x3)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x1, 1776, x3)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x1, 1784, x3)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x1, 1792, x3)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x1, 1800, x3)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x1, 1808, x3)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x1, 1816, x3)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x1, 1824, x3)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x1, 1832, x3)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x1, 1840, x3)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x1, 1848, x3)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x1, 1856, x3)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x1, 1864, x3)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x1, 1872, x3)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x1, 1880, x3)
+
+inst_522:
+// rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x1, 1888, x3)
+
+inst_523:
+// rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: andn ; op1:x10; op2:x11; dest:x12; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(andn, x12, x10, x11, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x1, 1896, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x16_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x16_1:
+ .fill 17*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 13*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 238*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/clmul-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/clmul-01.S
new file mode 100644
index 000000000..e46e5636f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/clmul-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the clmul instruction of the RISC-V extension for the clmul covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",clmul)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",clmul)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",clmul)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",clmul)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x16, rs2==x16, rd==x17, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: clmul ; op1:x16; op2:x16; dest:x17; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(clmul, x17, x16, x16, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x1, 0, x12)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x29, rs2==x29, rd==x29, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: clmul ; op1:x29; op2:x29; dest:x29; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(clmul, x29, x29, x29, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x1, 8, x12)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x6, rs2==x10, rd==x21, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: clmul ; op1:x6; op2:x10; dest:x21; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(clmul, x21, x6, x10, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x1, 16, x12)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x9, rs2==x8, rd==x9, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: clmul ; op1:x9; op2:x8; dest:x9; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(clmul, x9, x9, x8, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x1, 24, x12)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x30, rs2==x20, rd==x20, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: clmul ; op1:x30; op2:x20; dest:x20; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(clmul, x20, x30, x20, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x1, 32, x12)
+
+inst_5:
+// rs1==x27, rs2==x23, rd==x3, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: clmul ; op1:x27; op2:x23; dest:x3; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(clmul, x3, x27, x23, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x1, 40, x12)
+
+inst_6:
+// rs1==x26, rs2==x28, rd==x13, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: clmul ; op1:x26; op2:x28; dest:x13; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(clmul, x13, x26, x28, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x1, 48, x12)
+
+inst_7:
+// rs1==x2, rs2==x19, rd==x30, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: clmul ; op1:x2; op2:x19; dest:x30; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(clmul, x30, x2, x19, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x1, 56, x12)
+
+inst_8:
+// rs1==x15, rs2==x6, rd==x18, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: clmul ; op1:x15; op2:x6; dest:x18; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(clmul, x18, x15, x6, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x1, 64, x12)
+
+inst_9:
+// rs1==x5, rs2==x18, rd==x24, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: clmul ; op1:x5; op2:x18; dest:x24; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(clmul, x24, x5, x18, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x1, 72, x12)
+
+inst_10:
+// rs1==x20, rs2==x27, rd==x5, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: clmul ; op1:x20; op2:x27; dest:x5; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(clmul, x5, x20, x27, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x1, 80, x12)
+
+inst_11:
+// rs1==x18, rs2==x15, rd==x4, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: clmul ; op1:x18; op2:x15; dest:x4; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(clmul, x4, x18, x15, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x1, 88, x12)
+
+inst_12:
+// rs1==x8, rs2==x4, rd==x28, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: clmul ; op1:x8; op2:x4; dest:x28; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(clmul, x28, x8, x4, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x1, 96, x12)
+
+inst_13:
+// rs1==x24, rs2==x11, rd==x23, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: clmul ; op1:x24; op2:x11; dest:x23; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(clmul, x23, x24, x11, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x1, 104, x12)
+
+inst_14:
+// rs1==x28, rs2==x30, rd==x8, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: clmul ; op1:x28; op2:x30; dest:x8; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(clmul, x8, x28, x30, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x1, 112, x12)
+
+inst_15:
+// rs1==x22, rs2==x3, rd==x31, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: clmul ; op1:x22; op2:x3; dest:x31; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(clmul, x31, x22, x3, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x1, 120, x12)
+
+inst_16:
+// rs1==x10, rs2==x31, rd==x26, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: clmul ; op1:x10; op2:x31; dest:x26; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(clmul, x26, x10, x31, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x1, 128, x12)
+
+inst_17:
+// rs1==x7, rs2==x24, rd==x19, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: clmul ; op1:x7; op2:x24; dest:x19; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(clmul, x19, x7, x24, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x1, 136, x12)
+
+inst_18:
+// rs1==x0, rs2==x2, rd==x14, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: clmul ; op1:x0; op2:x2; dest:x14; op1val:0x0; op2val:0x3b0b800000000000
+TEST_RR_OP(clmul, x14, x0, x2, 0x0000000000000000, 0x0, 0x3b0b800000000000, x1, 144, x18)
+RVTEST_SIGBASE( x8,signature_x8_0)
+
+inst_19:
+// rs1==x11, rs2==x21, rd==x7, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: clmul ; op1:x11; op2:x21; dest:x7; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(clmul, x7, x11, x21, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x8, 0, x18)
+
+inst_20:
+// rs1==x14, rs2==x22, rd==x2, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: clmul ; op1:x14; op2:x22; dest:x2; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(clmul, x2, x14, x22, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x8, 8, x18)
+
+inst_21:
+// rs1==x23, rs2==x5, rd==x11, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: clmul ; op1:x23; op2:x5; dest:x11; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(clmul, x11, x23, x5, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x8, 16, x18)
+
+inst_22:
+// rs1==x3, rs2==x26, rd==x22, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: clmul ; op1:x3; op2:x26; dest:x22; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(clmul, x22, x3, x26, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x8, 24, x18)
+
+inst_23:
+// rs1==x1, rs2==x17, rd==x25, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: clmul ; op1:x1; op2:x17; dest:x25; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(clmul, x25, x1, x17, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x8, 32, x18)
+
+inst_24:
+// rs1==x13, rs2==x9, rd==x0, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: clmul ; op1:x13; op2:x9; dest:x0; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(clmul, x0, x13, x9, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x8, 40, x18)
+
+inst_25:
+// rs1==x19, rs2==x0, rd==x1, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: clmul ; op1:x19; op2:x0; dest:x1; op1val:0x2466b4600d42ea01; op2val:0x0
+TEST_RR_OP(clmul, x1, x19, x0, 0x0000000000000000, 0x2466b4600d42ea01, 0x0, x8, 48, x18)
+
+inst_26:
+// rs1==x31, rs2==x25, rd==x12, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: clmul ; op1:x31; op2:x25; dest:x12; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(clmul, x12, x31, x25, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x8, 56, x18)
+
+inst_27:
+// rs1==x21, rs2==x1, rd==x15, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: clmul ; op1:x21; op2:x1; dest:x15; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(clmul, x15, x21, x1, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x8, 64, x18)
+
+inst_28:
+// rs1==x17, rs2==x7, rd==x10, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: clmul ; op1:x17; op2:x7; dest:x10; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(clmul, x10, x17, x7, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x8, 72, x18)
+
+inst_29:
+// rs1==x25, rs2==x12, rd==x6, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: clmul ; op1:x25; op2:x12; dest:x6; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(clmul, x6, x25, x12, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x8, 80, x18)
+
+inst_30:
+// rs1==x4, rs2==x14, rd==x27, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: clmul ; op1:x4; op2:x14; dest:x27; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(clmul, x27, x4, x14, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x8, 88, x18)
+
+inst_31:
+// rs1==x12, rs2==x13, rd==x16, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: clmul ; op1:x12; op2:x13; dest:x16; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(clmul, x16, x12, x13, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x8, 96, x18)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x8, 104, x18)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x8, 112, x18)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x8, 120, x18)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x8, 128, x18)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x8, 136, x18)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x8, 144, x18)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x8, 152, x18)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x8, 160, x18)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x8, 168, x18)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x8, 176, x18)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x8, 184, x18)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x8, 192, x18)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x8, 200, x18)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x8, 208, x18)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x8, 216, x18)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x8, 224, x18)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x8, 232, x18)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x8, 240, x18)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x8, 248, x18)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x8, 256, x18)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x8, 264, x18)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x8, 272, x18)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x8, 280, x18)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x8, 288, x18)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x8, 296, x18)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x8, 304, x18)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x8, 312, x18)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x8, 320, x18)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x8, 328, x18)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x8, 336, x18)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x8, 344, x18)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x8, 352, x18)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x8, 360, x18)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x8, 368, x18)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x8, 376, x18)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x8, 384, x18)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x8, 392, x18)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x8, 400, x18)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x8, 408, x18)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x8, 416, x18)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x8, 424, x18)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x8, 432, x18)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x8, 440, x18)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x8, 448, x18)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x8, 456, x18)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x8, 464, x18)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x8, 472, x18)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x8, 480, x18)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x8, 488, x18)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x8, 496, x18)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x8, 504, x18)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x8, 512, x18)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x8, 520, x18)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x8, 528, x18)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x8, 536, x18)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x8, 544, x18)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x8, 552, x18)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x8, 560, x18)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x8, 568, x18)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x8, 576, x18)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x8, 584, x18)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x8, 592, x18)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x8, 600, x18)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x8, 608, x18)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x8, 616, x18)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x8, 624, x18)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x8, 632, x18)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x8, 640, x18)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x8, 648, x18)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x8, 656, x18)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x8, 664, x18)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x8, 672, x18)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x8, 680, x18)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x8, 688, x18)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x8, 696, x18)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x8, 704, x18)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x8, 712, x18)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x8, 720, x18)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x8, 728, x18)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x8, 736, x18)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x8, 744, x18)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x8, 752, x18)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x8, 760, x18)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x8, 768, x18)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x8, 776, x18)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x8, 784, x18)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x8, 792, x18)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x8, 800, x18)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x8, 808, x18)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x8, 816, x18)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x8, 824, x18)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x8, 832, x18)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x8, 840, x18)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x8, 848, x18)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x8, 856, x18)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x8, 864, x18)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x8, 872, x18)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x8, 880, x18)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x8, 888, x18)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x8, 896, x18)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x8, 904, x18)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x8, 912, x18)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x8, 920, x18)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x8, 928, x18)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x8, 936, x18)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x8, 944, x18)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x8, 952, x18)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x8, 960, x18)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x8, 968, x18)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x8, 976, x18)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x8, 984, x18)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x8, 992, x18)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x8, 1000, x18)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x8, 1008, x18)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x8, 1016, x18)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x8, 1024, x18)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x8, 1032, x18)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x8, 1040, x18)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x8, 1048, x18)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x8, 1056, x18)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x8, 1064, x18)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x8, 1072, x18)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x8, 1080, x18)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x8, 1088, x18)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x8, 1096, x18)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x8, 1104, x18)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x8, 1112, x18)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x8, 1120, x18)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x8, 1128, x18)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x8, 1136, x18)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x8, 1144, x18)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x8, 1152, x18)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x8, 1160, x18)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x8, 1168, x18)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x8, 1176, x18)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x8, 1184, x18)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x8, 1192, x18)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x8, 1200, x18)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x8, 1208, x18)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x8, 1216, x18)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x8, 1224, x18)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x8, 1232, x18)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x8, 1240, x18)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x8, 1248, x18)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x8, 1256, x18)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x8, 1264, x18)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x8, 1272, x18)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x8, 1280, x18)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x8, 1288, x18)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x8, 1296, x18)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x8, 1304, x18)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x8, 1312, x18)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x8, 1320, x18)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x8, 1328, x18)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x8, 1336, x18)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x8, 1344, x18)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x8, 1352, x18)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x8, 1360, x18)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x8, 1368, x18)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x8, 1376, x18)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x8, 1384, x18)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x8, 1392, x18)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x8, 1400, x18)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x8, 1408, x18)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x8, 1416, x18)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x8, 1424, x18)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x8, 1432, x18)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x8, 1440, x18)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x8, 1448, x18)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x8, 1456, x18)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x8, 1464, x18)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x8, 1472, x18)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x8, 1480, x18)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x8, 1488, x18)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x8, 1496, x18)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x8, 1504, x18)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x8, 1512, x18)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x8, 1520, x18)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x8, 1528, x18)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x8, 1536, x18)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x8, 1544, x18)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x8, 1552, x18)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x8, 1560, x18)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x8, 1568, x18)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x8, 1576, x18)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x8, 1584, x18)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x8, 1592, x18)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x8, 1600, x18)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x8, 1608, x18)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x8, 1616, x18)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x8, 1624, x18)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x8, 1632, x18)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x8, 1640, x18)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x8, 1648, x18)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x8, 1656, x18)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x8, 1664, x18)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x8, 1672, x18)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x8, 1680, x18)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x8, 1688, x18)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x8, 1696, x18)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x8, 1704, x18)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x8, 1712, x18)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x8, 1720, x18)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x8, 1728, x18)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x8, 1736, x18)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x8, 1744, x18)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x8, 1752, x18)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x8, 1760, x18)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x8, 1768, x18)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x8, 1776, x18)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x8, 1784, x18)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x8, 1792, x18)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x8, 1800, x18)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x8, 1808, x18)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x8, 1816, x18)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x8, 1824, x18)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x8, 1832, x18)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x8, 1840, x18)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x8, 1848, x18)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x8, 1856, x18)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x8, 1864, x18)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x8, 1872, x18)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x8, 1880, x18)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x8, 1888, x18)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x8, 1896, x18)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x8, 1904, x18)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x8, 1912, x18)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x8, 1920, x18)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x8, 1928, x18)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x8, 1936, x18)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x8, 1944, x18)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x8, 1952, x18)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x8, 1960, x18)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x8, 1968, x18)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x8, 1976, x18)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x8, 1984, x18)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x8, 1992, x18)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x8, 2000, x18)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x8, 2008, x18)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x8, 2016, x18)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x8, 2024, x18)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x8, 2032, x18)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x8, 2040, x18)
+RVTEST_SIGBASE( x8,signature_x8_1)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x8, 0, x18)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x8, 8, x18)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x8, 16, x18)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x8, 24, x18)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x8, 32, x18)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x8, 40, x18)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x8, 48, x18)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x8, 56, x18)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x8, 64, x18)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x8, 72, x18)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x8, 80, x18)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x8, 88, x18)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x8, 96, x18)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x8, 104, x18)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x8, 112, x18)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x8, 120, x18)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x8, 128, x18)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x8, 136, x18)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x8, 144, x18)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x8, 152, x18)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x8, 160, x18)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x8, 168, x18)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x8, 176, x18)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x8, 184, x18)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x8, 192, x18)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x8, 200, x18)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x8, 208, x18)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x8, 216, x18)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x8, 224, x18)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x8, 232, x18)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x8, 240, x18)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x8, 248, x18)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x8, 256, x18)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x8, 264, x18)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x8, 272, x18)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x8, 280, x18)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x8, 288, x18)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x8, 296, x18)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x8, 304, x18)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x8, 312, x18)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x8, 320, x18)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x8, 328, x18)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x8, 336, x18)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x8, 344, x18)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x8, 352, x18)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x8, 360, x18)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x8, 368, x18)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x8, 376, x18)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x8, 384, x18)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x8, 392, x18)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x8, 400, x18)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x8, 408, x18)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x8, 416, x18)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x8, 424, x18)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x8, 432, x18)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x8, 440, x18)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x8, 448, x18)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x8, 456, x18)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x8, 464, x18)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x8, 472, x18)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x8, 480, x18)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x8, 488, x18)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x8, 496, x18)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x8, 504, x18)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x8, 512, x18)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x8, 520, x18)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x8, 528, x18)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x8, 536, x18)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x8, 544, x18)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x8, 552, x18)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x8, 560, x18)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x8, 568, x18)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x8, 576, x18)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x8, 584, x18)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x8, 592, x18)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x8, 600, x18)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x8, 608, x18)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x8, 616, x18)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x8, 624, x18)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x8, 632, x18)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x8, 640, x18)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x8, 648, x18)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x8, 656, x18)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x8, 664, x18)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x8, 672, x18)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x8, 680, x18)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x8, 688, x18)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x8, 696, x18)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x8, 704, x18)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x8, 712, x18)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x8, 720, x18)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x8, 728, x18)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x8, 736, x18)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x8, 744, x18)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x8, 752, x18)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x8, 760, x18)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x8, 768, x18)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x8, 776, x18)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x8, 784, x18)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x8, 792, x18)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x8, 800, x18)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x8, 808, x18)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x8, 816, x18)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x8, 824, x18)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x8, 832, x18)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x8, 840, x18)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x8, 848, x18)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x8, 856, x18)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x8, 864, x18)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x8, 872, x18)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x8, 880, x18)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x8, 888, x18)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x8, 896, x18)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x8, 904, x18)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x8, 912, x18)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x8, 920, x18)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x8, 928, x18)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x8, 936, x18)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x8, 944, x18)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x8, 952, x18)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x8, 960, x18)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x8, 968, x18)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x8, 976, x18)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x8, 984, x18)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x8, 992, x18)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x8, 1000, x18)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x8, 1008, x18)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x8, 1016, x18)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x8, 1024, x18)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x8, 1032, x18)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x8, 1040, x18)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x8, 1048, x18)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x8, 1056, x18)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x8, 1064, x18)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x8, 1072, x18)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x8, 1080, x18)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x8, 1088, x18)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x8, 1096, x18)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x8, 1104, x18)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x8, 1112, x18)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x8, 1120, x18)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x8, 1128, x18)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x8, 1136, x18)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x8, 1144, x18)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x8, 1152, x18)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x8, 1160, x18)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x8, 1168, x18)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x8, 1176, x18)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x8, 1184, x18)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x8, 1192, x18)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x8, 1200, x18)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x8, 1208, x18)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x8, 1216, x18)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x8, 1224, x18)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x8, 1232, x18)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x8, 1240, x18)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x8, 1248, x18)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x8, 1256, x18)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x8, 1264, x18)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x8, 1272, x18)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x8, 1280, x18)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x8, 1288, x18)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x8, 1296, x18)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x8, 1304, x18)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x8, 1312, x18)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x8, 1320, x18)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x8, 1328, x18)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x8, 1336, x18)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x8, 1344, x18)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x8, 1352, x18)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x8, 1360, x18)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x8, 1368, x18)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x8, 1376, x18)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x8, 1384, x18)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x8, 1392, x18)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x8, 1400, x18)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x8, 1408, x18)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x8, 1416, x18)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x8, 1424, x18)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x8, 1432, x18)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x8, 1440, x18)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x8, 1448, x18)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x8, 1456, x18)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x8, 1464, x18)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x8, 1472, x18)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x8, 1480, x18)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x8, 1488, x18)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x8, 1496, x18)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x8, 1504, x18)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x8, 1512, x18)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x8, 1520, x18)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x8, 1528, x18)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x8, 1536, x18)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x8, 1544, x18)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x8, 1552, x18)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x8, 1560, x18)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x8, 1568, x18)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x8, 1576, x18)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x8, 1584, x18)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x8, 1592, x18)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x8, 1600, x18)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x8, 1608, x18)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x8, 1616, x18)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x8, 1624, x18)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x8, 1632, x18)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x8, 1640, x18)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x8, 1648, x18)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x8, 1656, x18)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x8, 1664, x18)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x8, 1672, x18)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x8, 1680, x18)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x8, 1688, x18)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x8, 1696, x18)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x8, 1704, x18)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x8, 1712, x18)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x8, 1720, x18)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x8, 1728, x18)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x8, 1736, x18)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x8, 1744, x18)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x8, 1752, x18)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x8, 1760, x18)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x8, 1768, x18)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x8, 1776, x18)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x8, 1784, x18)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x8, 1792, x18)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x8, 1800, x18)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x8, 1808, x18)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x8, 1816, x18)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x8, 1824, x18)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x8, 1832, x18)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x8, 1840, x18)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x8, 1848, x18)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x8, 1856, x18)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x8, 1864, x18)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x8, 1872, x18)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x8, 1880, x18)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x8, 1888, x18)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x8, 1896, x18)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x8, 1904, x18)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x8, 1912, x18)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x8, 1920, x18)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x8, 1928, x18)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x8, 1936, x18)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x8, 1944, x18)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x8, 1952, x18)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x8, 1960, x18)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x8, 1968, x18)
+
+inst_522:
+// rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x8, 1976, x18)
+
+inst_523:
+// rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x8, 1984, x18)
+
+inst_524:
+// rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: clmul ; op1:x10; op2:x11; dest:x12; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(clmul, x12, x10, x11, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x8, 1992, x18)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_1:
+ .fill 250*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/clmulh-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/clmulh-01.S
new file mode 100644
index 000000000..aac8a1997
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/clmulh-01.S
@@ -0,0 +1,2716 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the clmulh instruction of the RISC-V extension for the clmulh covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",clmulh)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",clmulh)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",clmulh)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",clmulh)
+
+RVTEST_SIGBASE( x18,signature_x18_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x14, rs2==x14, rd==x1, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: clmulh ; op1:x14; op2:x14; dest:x1; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(clmulh, x1, x14, x14, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x18, 0, x3)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x24, rs2==x24, rd==x24, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: clmulh ; op1:x24; op2:x24; dest:x24; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(clmulh, x24, x24, x24, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x18, 8, x3)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x4, rs2==x0, rd==x12, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: clmulh ; op1:x4; op2:x0; dest:x12; op1val:0x6f061d6dc38671b6; op2val:0x0
+TEST_RR_OP(clmulh, x12, x4, x0, 0x0000000000000000, 0x6f061d6dc38671b6, 0x0, x18, 16, x3)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x8, rs2==x17, rd==x8, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: clmulh ; op1:x8; op2:x17; dest:x8; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(clmulh, x8, x8, x17, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x18, 24, x3)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x0, rs2==x25, rd==x25, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: clmulh ; op1:x0; op2:x25; dest:x25; op1val:0x0; op2val:0xa000000000000000
+TEST_RR_OP(clmulh, x25, x0, x25, 0x0000000000000000, 0x0, 0xa000000000000000, x18, 32, x3)
+
+inst_5:
+// rs1==x11, rs2==x9, rd==x21, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: clmulh ; op1:x11; op2:x9; dest:x21; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(clmulh, x21, x11, x9, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x18, 40, x3)
+
+inst_6:
+// rs1==x5, rs2==x29, rd==x7, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: clmulh ; op1:x5; op2:x29; dest:x7; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(clmulh, x7, x5, x29, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x18, 48, x3)
+
+inst_7:
+// rs1==x13, rs2==x30, rd==x20, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: clmulh ; op1:x13; op2:x30; dest:x20; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(clmulh, x20, x13, x30, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x18, 56, x3)
+
+inst_8:
+// rs1==x21, rs2==x15, rd==x31, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: clmulh ; op1:x21; op2:x15; dest:x31; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(clmulh, x31, x21, x15, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x18, 64, x3)
+
+inst_9:
+// rs1==x6, rs2==x26, rd==x16, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: clmulh ; op1:x6; op2:x26; dest:x16; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(clmulh, x16, x6, x26, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x18, 72, x3)
+
+inst_10:
+// rs1==x10, rs2==x2, rd==x30, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: clmulh ; op1:x10; op2:x2; dest:x30; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(clmulh, x30, x10, x2, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x18, 80, x3)
+
+inst_11:
+// rs1==x1, rs2==x12, rd==x17, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: clmulh ; op1:x1; op2:x12; dest:x17; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(clmulh, x17, x1, x12, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x18, 88, x3)
+
+inst_12:
+// rs1==x15, rs2==x27, rd==x26, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: clmulh ; op1:x15; op2:x27; dest:x26; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(clmulh, x26, x15, x27, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x18, 96, x3)
+
+inst_13:
+// rs1==x28, rs2==x16, rd==x22, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: clmulh ; op1:x28; op2:x16; dest:x22; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(clmulh, x22, x28, x16, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x18, 104, x3)
+
+inst_14:
+// rs1==x26, rs2==x21, rd==x10, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: clmulh ; op1:x26; op2:x21; dest:x10; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(clmulh, x10, x26, x21, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x18, 112, x14)
+
+inst_15:
+// rs1==x7, rs2==x28, rd==x9, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: clmulh ; op1:x7; op2:x28; dest:x9; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(clmulh, x9, x7, x28, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x18, 120, x14)
+
+inst_16:
+// rs1==x12, rs2==x20, rd==x3, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: clmulh ; op1:x12; op2:x20; dest:x3; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(clmulh, x3, x12, x20, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x18, 128, x14)
+RVTEST_SIGBASE( x21,signature_x21_0)
+
+inst_17:
+// rs1==x23, rs2==x18, rd==x19, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: clmulh ; op1:x23; op2:x18; dest:x19; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(clmulh, x19, x23, x18, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x21, 0, x14)
+
+inst_18:
+// rs1==x22, rs2==x8, rd==x13, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: clmulh ; op1:x22; op2:x8; dest:x13; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(clmulh, x13, x22, x8, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x21, 8, x14)
+
+inst_19:
+// rs1==x19, rs2==x5, rd==x6, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: clmulh ; op1:x19; op2:x5; dest:x6; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(clmulh, x6, x19, x5, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x21, 16, x14)
+
+inst_20:
+// rs1==x18, rs2==x11, rd==x15, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: clmulh ; op1:x18; op2:x11; dest:x15; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(clmulh, x15, x18, x11, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x21, 24, x14)
+
+inst_21:
+// rs1==x3, rs2==x6, rd==x23, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: clmulh ; op1:x3; op2:x6; dest:x23; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(clmulh, x23, x3, x6, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x21, 32, x14)
+
+inst_22:
+// rs1==x29, rs2==x22, rd==x2, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: clmulh ; op1:x29; op2:x22; dest:x2; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(clmulh, x2, x29, x22, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x21, 40, x14)
+
+inst_23:
+// rs1==x16, rs2==x19, rd==x4, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: clmulh ; op1:x16; op2:x19; dest:x4; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(clmulh, x4, x16, x19, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x21, 48, x14)
+
+inst_24:
+// rs1==x20, rs2==x31, rd==x27, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: clmulh ; op1:x20; op2:x31; dest:x27; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(clmulh, x27, x20, x31, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x21, 56, x14)
+
+inst_25:
+// rs1==x25, rs2==x7, rd==x5, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: clmulh ; op1:x25; op2:x7; dest:x5; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(clmulh, x5, x25, x7, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x21, 64, x14)
+
+inst_26:
+// rs1==x30, rs2==x1, rd==x18, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: clmulh ; op1:x30; op2:x1; dest:x18; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(clmulh, x18, x30, x1, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x21, 72, x14)
+
+inst_27:
+// rs1==x9, rs2==x13, rd==x14, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: clmulh ; op1:x9; op2:x13; dest:x14; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(clmulh, x14, x9, x13, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x21, 80, x5)
+
+inst_28:
+// rs1==x17, rs2==x4, rd==x11, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: clmulh ; op1:x17; op2:x4; dest:x11; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(clmulh, x11, x17, x4, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x21, 88, x5)
+
+inst_29:
+// rs1==x2, rs2==x23, rd==x28, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: clmulh ; op1:x2; op2:x23; dest:x28; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(clmulh, x28, x2, x23, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x21, 96, x5)
+
+inst_30:
+// rs1==x27, rs2==x10, rd==x0, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: clmulh ; op1:x27; op2:x10; dest:x0; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(clmulh, x0, x27, x10, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x21, 104, x5)
+
+inst_31:
+// rs1==x31, rs2==x3, rd==x29, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: clmulh ; op1:x31; op2:x3; dest:x29; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(clmulh, x29, x31, x3, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x21, 112, x5)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x21, 120, x5)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x1, 0, x5)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x1, 8, x5)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x1, 16, x5)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x1, 24, x5)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x1, 32, x5)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x1, 40, x5)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x1, 48, x5)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x1, 56, x5)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x1, 64, x5)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x1, 72, x5)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x1, 80, x5)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x1, 88, x5)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x1, 96, x5)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x1, 104, x5)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x1, 112, x5)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x1, 120, x5)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x1, 128, x5)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x1, 136, x5)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x1, 144, x5)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x1, 152, x5)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x1, 160, x5)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x1, 168, x5)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x1, 176, x5)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x1, 184, x5)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x1, 192, x5)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x1, 200, x5)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x1, 208, x5)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x1, 216, x5)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x1, 224, x5)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x1, 232, x5)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x1, 240, x5)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x1, 248, x5)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x1, 256, x5)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x1, 264, x5)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x1, 272, x5)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x1, 280, x5)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x1, 288, x5)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x1, 296, x5)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x1, 304, x5)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x1, 312, x5)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x1, 320, x5)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x1, 328, x5)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x1, 336, x5)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x1, 344, x5)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x1, 352, x5)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x1, 360, x5)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x1, 368, x5)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x1, 376, x5)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x1, 384, x5)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x1, 392, x5)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x1, 400, x5)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x1, 408, x5)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x1, 416, x5)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x1, 424, x5)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x1, 432, x5)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x1, 440, x5)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x1, 448, x5)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x1, 456, x5)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x1, 464, x5)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x1, 472, x5)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x1, 480, x5)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x1, 488, x5)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x1, 496, x5)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x1, 504, x5)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x1, 512, x5)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x1, 520, x5)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x1, 528, x5)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x1, 536, x5)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x1, 544, x5)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x1, 552, x5)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x1, 560, x5)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x1, 568, x5)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x1, 576, x5)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x1, 584, x5)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x1, 592, x5)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x1, 600, x5)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x1, 608, x5)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x1, 616, x5)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x1, 624, x5)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x1, 632, x5)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x1, 640, x5)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x1, 648, x5)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x1, 656, x5)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x1, 664, x5)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x1, 672, x5)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x1, 680, x5)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x1, 688, x5)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x1, 696, x5)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x1, 704, x5)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x1, 712, x5)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x1, 720, x5)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x1, 728, x5)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x1, 736, x5)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x1, 744, x5)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x1, 752, x5)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x1, 760, x5)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x1, 768, x5)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x1, 776, x5)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x1, 784, x5)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x1, 792, x5)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x1, 800, x5)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x1, 808, x5)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x1, 816, x5)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x1, 824, x5)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x1, 832, x5)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x1, 840, x5)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x1, 848, x5)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x1, 856, x5)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x1, 864, x5)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x1, 872, x5)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x1, 880, x5)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x1, 888, x5)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x1, 896, x5)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x1, 904, x5)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x1, 912, x5)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x1, 920, x5)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x1, 928, x5)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x1, 936, x5)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x1, 944, x5)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x1, 952, x5)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x1, 960, x5)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x1, 968, x5)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x1, 976, x5)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x1, 984, x5)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x1, 992, x5)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x1, 1000, x5)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x1, 1008, x5)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x1, 1016, x5)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x1, 1024, x5)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x1, 1032, x5)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x1, 1040, x5)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x1, 1048, x5)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x1, 1056, x5)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x1, 1064, x5)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x1, 1072, x5)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x1, 1080, x5)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x1, 1088, x5)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x1, 1096, x5)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x1, 1104, x5)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x1, 1112, x5)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x1, 1120, x5)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x1, 1128, x5)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x1, 1136, x5)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x1, 1144, x5)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x1, 1152, x5)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x1, 1160, x5)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x1, 1168, x5)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x1, 1176, x5)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x1, 1184, x5)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x1, 1192, x5)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x1, 1200, x5)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x1, 1208, x5)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x1, 1216, x5)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x1, 1224, x5)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x1, 1232, x5)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x1, 1240, x5)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x1, 1248, x5)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x1, 1256, x5)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x1, 1264, x5)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x1, 1272, x5)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x1, 1280, x5)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x1, 1288, x5)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x1, 1296, x5)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x1, 1304, x5)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x1, 1312, x5)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x1, 1320, x5)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x1, 1328, x5)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x1, 1336, x5)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x1, 1344, x5)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x1, 1352, x5)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x1, 1360, x5)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x1, 1368, x5)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x1, 1376, x5)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x1, 1384, x5)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x1, 1392, x5)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x1, 1400, x5)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x1, 1408, x5)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x1, 1416, x5)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x1, 1424, x5)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x1, 1432, x5)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x1, 1440, x5)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x1, 1448, x5)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x1, 1456, x5)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x1, 1464, x5)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x1, 1472, x5)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x1, 1480, x5)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x1, 1488, x5)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x1, 1496, x5)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x1, 1504, x5)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x1, 1512, x5)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x1, 1520, x5)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x1, 1528, x5)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x1, 1536, x5)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x1, 1544, x5)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x1, 1552, x5)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x1, 1560, x5)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x1, 1568, x5)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x1, 1576, x5)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x1, 1584, x5)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x1, 1592, x5)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x1, 1600, x5)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x1, 1608, x5)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x1, 1616, x5)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x1, 1624, x5)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x1, 1632, x5)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x1, 1640, x5)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x1, 1648, x5)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x1, 1656, x5)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x1, 1664, x5)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x1, 1672, x5)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x1, 1680, x5)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x1, 1688, x5)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x1, 1696, x5)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x1, 1704, x5)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x1, 1712, x5)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x1, 1720, x5)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x1, 1728, x5)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x1, 1736, x5)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x1, 1744, x5)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x1, 1752, x5)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x1, 1760, x5)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x1, 1768, x5)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x1, 1776, x5)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x1, 1784, x5)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x1, 1792, x5)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x1, 1800, x5)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x1, 1808, x5)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x1, 1816, x5)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x1, 1824, x5)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x1, 1832, x5)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x1, 1840, x5)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x1, 1848, x5)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x1, 1856, x5)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x1, 1864, x5)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x1, 1872, x5)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x1, 1880, x5)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x1, 1888, x5)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x1, 1896, x5)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x1, 1904, x5)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x1, 1912, x5)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x1, 1920, x5)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x1, 1928, x5)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x1, 1936, x5)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x1, 1944, x5)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x1, 1952, x5)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x1, 1960, x5)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x1, 1968, x5)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x1, 1976, x5)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x1, 1984, x5)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x1, 1992, x5)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x1, 2000, x5)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x1, 2008, x5)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x1, 2016, x5)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x1, 2024, x5)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x1, 2032, x5)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x1, 2040, x5)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x1, 0, x5)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x1, 8, x5)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x1, 16, x5)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x1, 24, x5)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x1, 32, x5)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x1, 40, x5)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x1, 48, x5)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x1, 56, x5)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x1, 64, x5)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x1, 72, x5)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x1, 80, x5)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x1, 88, x5)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x1, 96, x5)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x1, 104, x5)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x1, 112, x5)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x1, 120, x5)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x1, 128, x5)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x1, 136, x5)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x1, 144, x5)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x1, 152, x5)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x1, 160, x5)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x1, 168, x5)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x1, 176, x5)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x1, 184, x5)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x1, 192, x5)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x1, 200, x5)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x1, 208, x5)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x1, 216, x5)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x1, 224, x5)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x1, 232, x5)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x1, 240, x5)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x1, 248, x5)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x1, 256, x5)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x1, 264, x5)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x1, 272, x5)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x1, 280, x5)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x1, 288, x5)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x1, 296, x5)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x1, 304, x5)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x1, 312, x5)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x1, 320, x5)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x1, 328, x5)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x1, 336, x5)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x1, 344, x5)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x1, 352, x5)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x1, 360, x5)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x1, 368, x5)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x1, 376, x5)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x1, 384, x5)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x1, 392, x5)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x1, 400, x5)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x1, 408, x5)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x1, 416, x5)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x1, 424, x5)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x1, 432, x5)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x1, 440, x5)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x1, 448, x5)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x1, 456, x5)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x1, 464, x5)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x1, 472, x5)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x1, 480, x5)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x1, 488, x5)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x1, 496, x5)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x1, 504, x5)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x1, 512, x5)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x1, 520, x5)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x1, 528, x5)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x1, 536, x5)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x1, 544, x5)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x1, 552, x5)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x1, 560, x5)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x1, 568, x5)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x1, 576, x5)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x1, 584, x5)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x1, 592, x5)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x1, 600, x5)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x1, 608, x5)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x1, 616, x5)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x1, 624, x5)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x1, 632, x5)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x1, 640, x5)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x1, 648, x5)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x1, 656, x5)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x1, 664, x5)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x1, 672, x5)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x1, 680, x5)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x1, 688, x5)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x1, 696, x5)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x1, 704, x5)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x1, 712, x5)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x1, 720, x5)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x1, 728, x5)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x1, 736, x5)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x1, 744, x5)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x1, 752, x5)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x1, 760, x5)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x1, 768, x5)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x1, 776, x5)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x1, 784, x5)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x1, 792, x5)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x1, 800, x5)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x1, 808, x5)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x1, 816, x5)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x1, 824, x5)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x1, 832, x5)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x1, 840, x5)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x1, 848, x5)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x1, 856, x5)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x1, 864, x5)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x1, 872, x5)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x1, 880, x5)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x1, 888, x5)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x1, 896, x5)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x1, 904, x5)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x1, 912, x5)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x1, 920, x5)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x1, 928, x5)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x1, 936, x5)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x1, 944, x5)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x1, 952, x5)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x1, 960, x5)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x1, 968, x5)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x1, 976, x5)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x1, 984, x5)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x1, 992, x5)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x1, 1000, x5)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x1, 1008, x5)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x1, 1016, x5)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x1, 1024, x5)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x1, 1032, x5)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x1, 1040, x5)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x1, 1048, x5)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x1, 1056, x5)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x1, 1064, x5)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x1, 1072, x5)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x1, 1080, x5)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x1, 1088, x5)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x1, 1096, x5)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x1, 1104, x5)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x1, 1112, x5)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x1, 1120, x5)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x1, 1128, x5)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x1, 1136, x5)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x1, 1144, x5)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x1, 1152, x5)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x1, 1160, x5)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x1, 1168, x5)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x1, 1176, x5)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x1, 1184, x5)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x1, 1192, x5)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x1, 1200, x5)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x1, 1208, x5)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x1, 1216, x5)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x1, 1224, x5)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x1, 1232, x5)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x1, 1240, x5)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x1, 1248, x5)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x1, 1256, x5)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x1, 1264, x5)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x1, 1272, x5)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x1, 1280, x5)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x1, 1288, x5)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x1, 1296, x5)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x1, 1304, x5)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x1, 1312, x5)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x1, 1320, x5)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x1, 1328, x5)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x1, 1336, x5)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x1, 1344, x5)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x1, 1352, x5)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x1, 1360, x5)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x1, 1368, x5)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x1, 1376, x5)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x1, 1384, x5)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x1, 1392, x5)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x1, 1400, x5)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x1, 1408, x5)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x1, 1416, x5)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x1, 1424, x5)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x1, 1432, x5)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x1, 1440, x5)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x1, 1448, x5)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x1, 1456, x5)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x1, 1464, x5)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x1, 1472, x5)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x1, 1480, x5)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x1, 1488, x5)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x1, 1496, x5)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x1, 1504, x5)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x1, 1512, x5)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x1, 1520, x5)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x1, 1528, x5)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x1, 1536, x5)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x1, 1544, x5)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x1, 1552, x5)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x1, 1560, x5)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x1, 1568, x5)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x1, 1576, x5)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x1, 1584, x5)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x1, 1592, x5)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x1, 1600, x5)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x1, 1608, x5)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x1, 1616, x5)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x1, 1624, x5)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x1, 1632, x5)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x1, 1640, x5)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x1, 1648, x5)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x1, 1656, x5)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x1, 1664, x5)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x1, 1672, x5)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x1, 1680, x5)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x1, 1688, x5)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x1, 1696, x5)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x1, 1704, x5)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x1, 1712, x5)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x1, 1720, x5)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x1, 1728, x5)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x1, 1736, x5)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x1, 1744, x5)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x1, 1752, x5)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x1, 1760, x5)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x1, 1768, x5)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x1, 1776, x5)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x1, 1784, x5)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x1, 1792, x5)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x1, 1800, x5)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x1, 1808, x5)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x1, 1816, x5)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x1, 1824, x5)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x1, 1832, x5)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x1, 1840, x5)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x1, 1848, x5)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x1, 1856, x5)
+
+inst_522:
+// rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x1, 1864, x5)
+
+inst_523:
+// rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x1, 1872, x5)
+
+inst_524:
+// rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: clmulh ; op1:x10; op2:x11; dest:x12; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(clmulh, x12, x10, x11, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x1, 1880, x5)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x18_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x18_1:
+ .fill 17*(XLEN/32),4,0xdeadbeef
+
+
+signature_x21_0:
+ .fill 16*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 236*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/orn-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/orn-01.S
new file mode 100644
index 000000000..2c76117d3
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/orn-01.S
@@ -0,0 +1,2716 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the orn instruction of the RISC-V extension for the orn covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",orn)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",orn)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",orn)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",orn)
+
+RVTEST_SIGBASE( x10,signature_x10_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x11, rs2==x11, rd==x16, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: orn ; op1:x11; op2:x11; dest:x16; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(orn, x16, x11, x11, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x10, 0, x23)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x8, rs2==x8, rd==x8, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: orn ; op1:x8; op2:x8; dest:x8; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(orn, x8, x8, x8, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x10, 8, x23)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x27, rs2==x21, rd==x15, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: orn ; op1:x27; op2:x21; dest:x15; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(orn, x15, x27, x21, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x10, 16, x23)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x6, rs2==x31, rd==x6, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: orn ; op1:x6; op2:x31; dest:x6; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(orn, x6, x6, x31, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x10, 24, x23)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x5, rs2==x14, rd==x14, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: orn ; op1:x5; op2:x14; dest:x14; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(orn, x14, x5, x14, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x10, 32, x23)
+
+inst_5:
+// rs1==x20, rs2==x1, rd==x26, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: orn ; op1:x20; op2:x1; dest:x26; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(orn, x26, x20, x1, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x10, 40, x23)
+
+inst_6:
+// rs1==x2, rs2==x7, rd==x9, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: orn ; op1:x2; op2:x7; dest:x9; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(orn, x9, x2, x7, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x10, 48, x23)
+
+inst_7:
+// rs1==x9, rs2==x3, rd==x17, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: orn ; op1:x9; op2:x3; dest:x17; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(orn, x17, x9, x3, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x10, 56, x23)
+
+inst_8:
+// rs1==x4, rs2==x27, rd==x30, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: orn ; op1:x4; op2:x27; dest:x30; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(orn, x30, x4, x27, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x10, 64, x23)
+
+inst_9:
+// rs1==x24, rs2==x0, rd==x22, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: orn ; op1:x24; op2:x0; dest:x22; op1val:0xde81bcad0b815ef0; op2val:0x0
+TEST_RR_OP(orn, x22, x24, x0, 0x0000000000000000, 0xde81bcad0b815ef0, 0x0, x10, 72, x23)
+
+inst_10:
+// rs1==x31, rs2==x30, rd==x19, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: orn ; op1:x31; op2:x30; dest:x19; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(orn, x19, x31, x30, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x10, 80, x23)
+
+inst_11:
+// rs1==x15, rs2==x12, rd==x20, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: orn ; op1:x15; op2:x12; dest:x20; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(orn, x20, x15, x12, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x10, 88, x23)
+
+inst_12:
+// rs1==x19, rs2==x13, rd==x31, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: orn ; op1:x19; op2:x13; dest:x31; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(orn, x31, x19, x13, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x10, 96, x23)
+
+inst_13:
+// rs1==x14, rs2==x24, rd==x28, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: orn ; op1:x14; op2:x24; dest:x28; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(orn, x28, x14, x24, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x10, 104, x23)
+
+inst_14:
+// rs1==x29, rs2==x18, rd==x0, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: orn ; op1:x29; op2:x18; dest:x0; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(orn, x0, x29, x18, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x10, 112, x23)
+RVTEST_SIGBASE( x8,signature_x8_0)
+
+inst_15:
+// rs1==x23, rs2==x4, rd==x11, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: orn ; op1:x23; op2:x4; dest:x11; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(orn, x11, x23, x4, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x8, 0, x14)
+
+inst_16:
+// rs1==x22, rs2==x25, rd==x10, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: orn ; op1:x22; op2:x25; dest:x10; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(orn, x10, x22, x25, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x8, 8, x14)
+
+inst_17:
+// rs1==x26, rs2==x28, rd==x18, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: orn ; op1:x26; op2:x28; dest:x18; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(orn, x18, x26, x28, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x8, 16, x14)
+
+inst_18:
+// rs1==x30, rs2==x26, rd==x3, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: orn ; op1:x30; op2:x26; dest:x3; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(orn, x3, x30, x26, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x8, 24, x14)
+
+inst_19:
+// rs1==x17, rs2==x9, rd==x2, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: orn ; op1:x17; op2:x9; dest:x2; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(orn, x2, x17, x9, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x8, 32, x14)
+
+inst_20:
+// rs1==x10, rs2==x17, rd==x4, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: orn ; op1:x10; op2:x17; dest:x4; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(orn, x4, x10, x17, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x8, 40, x14)
+
+inst_21:
+// rs1==x12, rs2==x19, rd==x23, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: orn ; op1:x12; op2:x19; dest:x23; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(orn, x23, x12, x19, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x8, 48, x14)
+
+inst_22:
+// rs1==x18, rs2==x23, rd==x13, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: orn ; op1:x18; op2:x23; dest:x13; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(orn, x13, x18, x23, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x8, 56, x14)
+
+inst_23:
+// rs1==x3, rs2==x6, rd==x5, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: orn ; op1:x3; op2:x6; dest:x5; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(orn, x5, x3, x6, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x8, 64, x14)
+
+inst_24:
+// rs1==x0, rs2==x5, rd==x24, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: orn ; op1:x0; op2:x5; dest:x24; op1val:0x0; op2val:0xf37b4e0000000000
+TEST_RR_OP(orn, x24, x0, x5, 0x0000000000000000, 0x0, 0xf37b4e0000000000, x8, 72, x14)
+
+inst_25:
+// rs1==x1, rs2==x20, rd==x12, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: orn ; op1:x1; op2:x20; dest:x12; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(orn, x12, x1, x20, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x8, 80, x14)
+
+inst_26:
+// rs1==x16, rs2==x22, rd==x1, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: orn ; op1:x16; op2:x22; dest:x1; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(orn, x1, x16, x22, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x8, 88, x14)
+
+inst_27:
+// rs1==x7, rs2==x16, rd==x21, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: orn ; op1:x7; op2:x16; dest:x21; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(orn, x21, x7, x16, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x8, 96, x14)
+
+inst_28:
+// rs1==x21, rs2==x2, rd==x27, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: orn ; op1:x21; op2:x2; dest:x27; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(orn, x27, x21, x2, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x8, 104, x14)
+
+inst_29:
+// rs1==x13, rs2==x29, rd==x7, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: orn ; op1:x13; op2:x29; dest:x7; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(orn, x7, x13, x29, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x8, 112, x14)
+
+inst_30:
+// rs1==x25, rs2==x15, rd==x29, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: orn ; op1:x25; op2:x15; dest:x29; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(orn, x29, x25, x15, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x8, 120, x2)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_31:
+// rs1==x28, rs2==x10, rd==x25, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: orn ; op1:x28; op2:x10; dest:x25; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(orn, x25, x28, x10, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x1, 0, x2)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x1, 8, x2)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x1, 16, x2)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x1, 24, x2)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x1, 32, x2)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x1, 40, x2)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x1, 48, x2)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x1, 56, x2)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x1, 64, x2)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x1, 72, x2)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x1, 80, x2)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x1, 88, x2)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x1, 96, x2)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x1, 104, x2)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x1, 112, x2)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x1, 120, x2)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x1, 128, x2)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x1, 136, x2)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x1, 144, x2)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x1, 152, x2)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x1, 160, x2)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x1, 168, x2)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x1, 176, x2)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x1, 184, x2)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x1, 192, x2)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x1, 200, x2)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x1, 208, x2)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x1, 216, x2)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x1, 224, x2)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x1, 232, x2)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x1, 240, x2)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x1, 248, x2)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x1, 256, x2)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x1, 264, x2)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x1, 272, x2)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x1, 280, x2)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x1, 288, x2)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x1, 296, x2)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x1, 304, x2)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x1, 312, x2)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x1, 320, x2)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x1, 328, x2)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x1, 336, x2)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x1, 344, x2)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x1, 352, x2)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x1, 360, x2)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x1, 368, x2)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x1, 376, x2)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x1, 384, x2)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x1, 392, x2)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x1, 400, x2)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x1, 408, x2)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x1, 416, x2)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x1, 424, x2)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x1, 432, x2)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x1, 440, x2)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x1, 448, x2)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x1, 456, x2)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x1, 464, x2)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x1, 472, x2)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x1, 480, x2)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x1, 488, x2)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x1, 496, x2)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x1, 504, x2)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x1, 512, x2)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x1, 520, x2)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x1, 528, x2)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x1, 536, x2)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x1, 544, x2)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x1, 552, x2)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x1, 560, x2)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x1, 568, x2)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x1, 576, x2)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x1, 584, x2)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x1, 592, x2)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x1, 600, x2)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x1, 608, x2)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x1, 616, x2)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x1, 624, x2)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x1, 632, x2)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x1, 640, x2)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x1, 648, x2)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x1, 656, x2)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x1, 664, x2)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x1, 672, x2)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x1, 680, x2)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x1, 688, x2)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x1, 696, x2)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x1, 704, x2)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x1, 712, x2)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x1, 720, x2)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x1, 728, x2)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x1, 736, x2)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x1, 744, x2)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x1, 752, x2)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x1, 760, x2)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x1, 768, x2)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x1, 776, x2)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x1, 784, x2)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x1, 792, x2)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x1, 800, x2)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x1, 808, x2)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x1, 816, x2)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x1, 824, x2)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x1, 832, x2)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x1, 840, x2)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x1, 848, x2)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x1, 856, x2)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x1, 864, x2)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x1, 872, x2)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x1, 880, x2)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x1, 888, x2)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x1, 896, x2)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x1, 904, x2)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x1, 912, x2)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x1, 920, x2)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x1, 928, x2)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x1, 936, x2)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x1, 944, x2)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x1, 952, x2)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x1, 960, x2)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x1, 968, x2)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x1, 976, x2)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x1, 984, x2)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x1, 992, x2)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x1, 1000, x2)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x1, 1008, x2)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x1, 1016, x2)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x1, 1024, x2)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x1, 1032, x2)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x1, 1040, x2)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x1, 1048, x2)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x1, 1056, x2)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x1, 1064, x2)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x1, 1072, x2)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x1, 1080, x2)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x1, 1088, x2)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x1, 1096, x2)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x1, 1104, x2)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x1, 1112, x2)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x1, 1120, x2)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x1, 1128, x2)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x1, 1136, x2)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x1, 1144, x2)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x1, 1152, x2)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x1, 1160, x2)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x1, 1168, x2)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x1, 1176, x2)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x1, 1184, x2)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x1, 1192, x2)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x1, 1200, x2)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x1, 1208, x2)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x1, 1216, x2)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x1, 1224, x2)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x1, 1232, x2)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x1, 1240, x2)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x1, 1248, x2)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x1, 1256, x2)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x1, 1264, x2)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x1, 1272, x2)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x1, 1280, x2)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x1, 1288, x2)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x1, 1296, x2)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x1, 1304, x2)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x1, 1312, x2)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x1, 1320, x2)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x1, 1328, x2)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x1, 1336, x2)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x1, 1344, x2)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x1, 1352, x2)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x1, 1360, x2)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x1, 1368, x2)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x1, 1376, x2)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x1, 1384, x2)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x1, 1392, x2)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x1, 1400, x2)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x1, 1408, x2)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x1, 1416, x2)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x1, 1424, x2)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x1, 1432, x2)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x1, 1440, x2)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x1, 1448, x2)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x1, 1456, x2)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x1, 1464, x2)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x1, 1472, x2)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x1, 1480, x2)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x1, 1488, x2)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x1, 1496, x2)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x1, 1504, x2)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x1, 1512, x2)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x1, 1520, x2)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x1, 1528, x2)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x1, 1536, x2)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x1, 1544, x2)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x1, 1552, x2)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x1, 1560, x2)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x1, 1568, x2)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x1, 1576, x2)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x1, 1584, x2)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x1, 1592, x2)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x1, 1600, x2)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x1, 1608, x2)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x1, 1616, x2)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x1, 1624, x2)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x1, 1632, x2)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x1, 1640, x2)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x1, 1648, x2)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x1, 1656, x2)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x1, 1664, x2)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x1, 1672, x2)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x1, 1680, x2)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x1, 1688, x2)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x1, 1696, x2)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x1, 1704, x2)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x1, 1712, x2)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x1, 1720, x2)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x1, 1728, x2)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x1, 1736, x2)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x1, 1744, x2)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x1, 1752, x2)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x1, 1760, x2)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x1, 1768, x2)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x1, 1776, x2)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x1, 1784, x2)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x1, 1792, x2)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x1, 1800, x2)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x1, 1808, x2)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x1, 1816, x2)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x1, 1824, x2)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x1, 1832, x2)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x1, 1840, x2)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x1, 1848, x2)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x1, 1856, x2)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x1, 1864, x2)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x1, 1872, x2)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x1, 1880, x2)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x1, 1888, x2)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x1, 1896, x2)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x1, 1904, x2)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x1, 1912, x2)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x1, 1920, x2)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x1, 1928, x2)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x1, 1936, x2)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x1, 1944, x2)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x1, 1952, x2)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x1, 1960, x2)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x1, 1968, x2)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x1, 1976, x2)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x1, 1984, x2)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x1, 1992, x2)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x1, 2000, x2)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x1, 2008, x2)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x1, 2016, x2)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x1, 2024, x2)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x1, 2032, x2)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x1, 2040, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x1, 0, x2)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x1, 8, x2)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x1, 16, x2)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x1, 24, x2)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x1, 32, x2)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x1, 40, x2)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x1, 48, x2)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x1, 56, x2)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x1, 64, x2)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x1, 72, x2)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x1, 80, x2)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x1, 88, x2)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x1, 96, x2)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x1, 104, x2)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x1, 112, x2)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x1, 120, x2)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x1, 128, x2)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x1, 136, x2)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x1, 144, x2)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x1, 152, x2)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x1, 160, x2)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x1, 168, x2)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x1, 176, x2)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x1, 184, x2)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x1, 192, x2)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x1, 200, x2)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x1, 208, x2)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x1, 216, x2)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x1, 224, x2)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x1, 232, x2)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x1, 240, x2)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x1, 248, x2)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x1, 256, x2)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x1, 264, x2)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x1, 272, x2)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x1, 280, x2)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x1, 288, x2)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x1, 296, x2)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x1, 304, x2)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x1, 312, x2)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x1, 320, x2)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x1, 328, x2)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x1, 336, x2)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x1, 344, x2)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x1, 352, x2)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x1, 360, x2)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x1, 368, x2)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x1, 376, x2)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x1, 384, x2)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x1, 392, x2)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x1, 400, x2)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x1, 408, x2)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x1, 416, x2)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x1, 424, x2)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x1, 432, x2)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x1, 440, x2)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x1, 448, x2)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x1, 456, x2)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x1, 464, x2)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x1, 472, x2)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x1, 480, x2)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x1, 488, x2)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x1, 496, x2)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x1, 504, x2)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x1, 512, x2)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x1, 520, x2)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x1, 528, x2)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x1, 536, x2)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x1, 544, x2)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x1, 552, x2)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x1, 560, x2)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x1, 568, x2)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x1, 576, x2)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x1, 584, x2)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x1, 592, x2)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x1, 600, x2)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x1, 608, x2)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x1, 616, x2)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x1, 624, x2)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x1, 632, x2)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x1, 640, x2)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x1, 648, x2)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x1, 656, x2)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x1, 664, x2)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x1, 672, x2)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x1, 680, x2)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x1, 688, x2)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x1, 696, x2)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x1, 704, x2)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x1, 712, x2)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x1, 720, x2)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x1, 728, x2)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x1, 736, x2)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x1, 744, x2)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x1, 752, x2)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x1, 760, x2)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x1, 768, x2)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x1, 776, x2)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x1, 784, x2)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x1, 792, x2)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x1, 800, x2)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x1, 808, x2)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x1, 816, x2)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x1, 824, x2)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x1, 832, x2)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x1, 840, x2)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x1, 848, x2)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x1, 856, x2)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x1, 864, x2)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x1, 872, x2)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x1, 880, x2)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x1, 888, x2)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x1, 896, x2)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x1, 904, x2)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x1, 912, x2)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x1, 920, x2)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x1, 928, x2)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x1, 936, x2)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x1, 944, x2)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x1, 952, x2)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x1, 960, x2)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x1, 968, x2)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x1, 976, x2)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x1, 984, x2)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x1, 992, x2)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x1, 1000, x2)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x1, 1008, x2)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x1, 1016, x2)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x1, 1024, x2)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x1, 1032, x2)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x1, 1040, x2)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x1, 1048, x2)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x1, 1056, x2)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x1, 1064, x2)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x1, 1072, x2)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x1, 1080, x2)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x1, 1088, x2)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x1, 1096, x2)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x1, 1104, x2)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x1, 1112, x2)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x1, 1120, x2)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x1, 1128, x2)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x1, 1136, x2)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x1, 1144, x2)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x1, 1152, x2)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x1, 1160, x2)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x1, 1168, x2)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x1, 1176, x2)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x1, 1184, x2)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x1, 1192, x2)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x1, 1200, x2)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x1, 1208, x2)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x1, 1216, x2)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x1, 1224, x2)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x1, 1232, x2)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x1, 1240, x2)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x1, 1248, x2)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x1, 1256, x2)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x1, 1264, x2)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x1, 1272, x2)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x1, 1280, x2)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x1, 1288, x2)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x1, 1296, x2)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x1, 1304, x2)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x1, 1312, x2)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x1, 1320, x2)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x1, 1328, x2)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x1, 1336, x2)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x1, 1344, x2)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x1, 1352, x2)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x1, 1360, x2)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x1, 1368, x2)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x1, 1376, x2)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x1, 1384, x2)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x1, 1392, x2)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x1, 1400, x2)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x1, 1408, x2)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x1, 1416, x2)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x1, 1424, x2)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x1, 1432, x2)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x1, 1440, x2)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x1, 1448, x2)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x1, 1456, x2)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x1, 1464, x2)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x1, 1472, x2)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x1, 1480, x2)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x1, 1488, x2)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x1, 1496, x2)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x1, 1504, x2)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x1, 1512, x2)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x1, 1520, x2)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x1, 1528, x2)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x1, 1536, x2)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x1, 1544, x2)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x1, 1552, x2)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x1, 1560, x2)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x1, 1568, x2)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x1, 1576, x2)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x1, 1584, x2)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x1, 1592, x2)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x1, 1600, x2)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x1, 1608, x2)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x1, 1616, x2)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x1, 1624, x2)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x1, 1632, x2)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x1, 1640, x2)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x1, 1648, x2)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x1, 1656, x2)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x1, 1664, x2)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x1, 1672, x2)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x1, 1680, x2)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x1, 1688, x2)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x1, 1696, x2)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x1, 1704, x2)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x1, 1712, x2)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x1, 1720, x2)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x1, 1728, x2)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x1, 1736, x2)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x1, 1744, x2)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x1, 1752, x2)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x1, 1760, x2)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x1, 1768, x2)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x1, 1776, x2)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x1, 1784, x2)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x1, 1792, x2)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x1, 1800, x2)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x1, 1808, x2)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x1, 1816, x2)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x1, 1824, x2)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x1, 1832, x2)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x1, 1840, x2)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x1, 1848, x2)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x1, 1856, x2)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x1, 1864, x2)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x1, 1872, x2)
+
+inst_522:
+// rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x1, 1880, x2)
+
+inst_523:
+// rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x1, 1888, x2)
+
+inst_524:
+// rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: orn ; op1:x10; op2:x11; dest:x12; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(orn, x12, x10, x11, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x1, 1896, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x10_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x10_1:
+ .fill 15*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_0:
+ .fill 16*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 238*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/pack-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/pack-01.S
new file mode 100644
index 000000000..65270346f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/pack-01.S
@@ -0,0 +1,2706 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the pack instruction of the RISC-V extension for the pack covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",pack)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",pack)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",pack)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",pack)
+
+RVTEST_SIGBASE( x8,signature_x8_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x23, rs2==x23, rd==x0, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: pack ; op1:x23; op2:x23; dest:x0; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(pack, x0, x23, x23, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x8, 0, x15)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x18, rs2==x18, rd==x18, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: pack ; op1:x18; op2:x18; dest:x18; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(pack, x18, x18, x18, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x8, 8, x15)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x5, rs2==x30, rd==x17, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: pack ; op1:x5; op2:x30; dest:x17; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(pack, x17, x5, x30, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x8, 16, x15)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x7, rs2==x24, rd==x7, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: pack ; op1:x7; op2:x24; dest:x7; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(pack, x7, x7, x24, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x8, 24, x15)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x12, rs2==x13, rd==x13, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: pack ; op1:x12; op2:x13; dest:x13; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(pack, x13, x12, x13, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x8, 32, x15)
+
+inst_5:
+// rs1==x21, rs2==x12, rd==x16, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: pack ; op1:x21; op2:x12; dest:x16; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(pack, x16, x21, x12, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x8, 40, x15)
+
+inst_6:
+// rs1==x17, rs2==x14, rd==x1, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: pack ; op1:x17; op2:x14; dest:x1; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(pack, x1, x17, x14, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x8, 48, x15)
+
+inst_7:
+// rs1==x27, rs2==x21, rd==x28, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: pack ; op1:x27; op2:x21; dest:x28; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(pack, x28, x27, x21, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x8, 56, x15)
+
+inst_8:
+// rs1==x22, rs2==x19, rd==x11, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: pack ; op1:x22; op2:x19; dest:x11; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(pack, x11, x22, x19, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x8, 64, x15)
+
+inst_9:
+// rs1==x3, rs2==x29, rd==x30, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: pack ; op1:x3; op2:x29; dest:x30; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(pack, x30, x3, x29, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x8, 72, x15)
+
+inst_10:
+// rs1==x11, rs2==x1, rd==x25, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: pack ; op1:x11; op2:x1; dest:x25; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(pack, x25, x11, x1, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x8, 80, x15)
+
+inst_11:
+// rs1==x2, rs2==x27, rd==x9, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: pack ; op1:x2; op2:x27; dest:x9; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(pack, x9, x2, x27, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x8, 88, x15)
+
+inst_12:
+// rs1==x13, rs2==x28, rd==x14, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: pack ; op1:x13; op2:x28; dest:x14; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(pack, x14, x13, x28, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x8, 96, x15)
+
+inst_13:
+// rs1==x29, rs2==x9, rd==x20, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: pack ; op1:x29; op2:x9; dest:x20; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(pack, x20, x29, x9, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x8, 104, x15)
+
+inst_14:
+// rs1==x24, rs2==x7, rd==x6, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: pack ; op1:x24; op2:x7; dest:x6; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(pack, x6, x24, x7, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x8, 112, x15)
+
+inst_15:
+// rs1==x6, rs2==x11, rd==x29, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: pack ; op1:x6; op2:x11; dest:x29; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(pack, x29, x6, x11, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x8, 120, x15)
+
+inst_16:
+// rs1==x10, rs2==x4, rd==x12, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: pack ; op1:x10; op2:x4; dest:x12; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(pack, x12, x10, x4, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x8, 128, x15)
+
+inst_17:
+// rs1==x1, rs2==x17, rd==x26, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: pack ; op1:x1; op2:x17; dest:x26; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(pack, x26, x1, x17, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x8, 136, x7)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_18:
+// rs1==x16, rs2==x22, rd==x27, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: pack ; op1:x16; op2:x22; dest:x27; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(pack, x27, x16, x22, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x1, 0, x7)
+
+inst_19:
+// rs1==x0, rs2==x10, rd==x31, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: pack ; op1:x0; op2:x10; dest:x31; op1val:0x0; op2val:0x3da8400000000000
+TEST_RR_OP(pack, x31, x0, x10, 0x0000000000000000, 0x0, 0x3da8400000000000, x1, 8, x7)
+
+inst_20:
+// rs1==x30, rs2==x8, rd==x2, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: pack ; op1:x30; op2:x8; dest:x2; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(pack, x2, x30, x8, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x1, 16, x7)
+
+inst_21:
+// rs1==x26, rs2==x25, rd==x24, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: pack ; op1:x26; op2:x25; dest:x24; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(pack, x24, x26, x25, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x1, 24, x7)
+
+inst_22:
+// rs1==x25, rs2==x2, rd==x3, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: pack ; op1:x25; op2:x2; dest:x3; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(pack, x3, x25, x2, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x1, 32, x7)
+
+inst_23:
+// rs1==x4, rs2==x16, rd==x19, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: pack ; op1:x4; op2:x16; dest:x19; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(pack, x19, x4, x16, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x1, 40, x7)
+
+inst_24:
+// rs1==x20, rs2==x26, rd==x23, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: pack ; op1:x20; op2:x26; dest:x23; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(pack, x23, x20, x26, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x1, 48, x7)
+
+inst_25:
+// rs1==x28, rs2==x20, rd==x4, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: pack ; op1:x28; op2:x20; dest:x4; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(pack, x4, x28, x20, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x1, 56, x7)
+
+inst_26:
+// rs1==x31, rs2==x0, rd==x21, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: pack ; op1:x31; op2:x0; dest:x21; op1val:0x4256f18f2de4eb20; op2val:0x0
+TEST_RR_OP(pack, x21, x31, x0, 0x0000000000000000, 0x4256f18f2de4eb20, 0x0, x1, 64, x7)
+
+inst_27:
+// rs1==x14, rs2==x5, rd==x8, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: pack ; op1:x14; op2:x5; dest:x8; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(pack, x8, x14, x5, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x1, 72, x7)
+
+inst_28:
+// rs1==x9, rs2==x15, rd==x22, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: pack ; op1:x9; op2:x15; dest:x22; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(pack, x22, x9, x15, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x1, 80, x7)
+
+inst_29:
+// rs1==x19, rs2==x6, rd==x5, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: pack ; op1:x19; op2:x6; dest:x5; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(pack, x5, x19, x6, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x1, 88, x7)
+
+inst_30:
+// rs1==x8, rs2==x3, rd==x10, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: pack ; op1:x8; op2:x3; dest:x10; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(pack, x10, x8, x3, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x1, 96, x7)
+
+inst_31:
+// rs1==x15, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: pack ; op1:x15; op2:x18; dest:x24; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(pack, x24, x15, x18, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x1, 104, x7)
+
+inst_32:
+// rs2==x31, rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: pack ; op1:x14; op2:x31; dest:x4; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(pack, x4, x14, x31, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x1, 112, x7)
+
+inst_33:
+// rd==x15, rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: pack ; op1:x16; op2:x8; dest:x15; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(pack, x15, x16, x8, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x1, 120, x7)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x1, 128, x7)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x1, 136, x2)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x1, 144, x2)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x1, 152, x2)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x1, 160, x2)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x1, 168, x2)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x1, 176, x2)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x1, 184, x2)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x1, 192, x2)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x1, 200, x2)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x1, 208, x2)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x1, 216, x2)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x1, 224, x2)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x1, 232, x2)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x1, 240, x2)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x1, 248, x2)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x1, 256, x2)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x1, 264, x2)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x1, 272, x2)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x1, 280, x2)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x1, 288, x2)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x1, 296, x2)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x1, 304, x2)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x1, 312, x2)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x1, 320, x2)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x1, 328, x2)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x1, 336, x2)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x1, 344, x2)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x1, 352, x2)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x1, 360, x2)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x1, 368, x2)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x1, 376, x2)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x1, 384, x2)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x1, 392, x2)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x1, 400, x2)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x1, 408, x2)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x1, 416, x2)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x1, 424, x2)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x1, 432, x2)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x1, 440, x2)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x1, 448, x2)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x1, 456, x2)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x1, 464, x2)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x1, 472, x2)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x1, 480, x2)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x1, 488, x2)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x1, 496, x2)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x1, 504, x2)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x1, 512, x2)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x1, 520, x2)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x1, 528, x2)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x1, 536, x2)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x1, 544, x2)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x1, 552, x2)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x1, 560, x2)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x1, 568, x2)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x1, 576, x2)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x1, 584, x2)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x1, 592, x2)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x1, 600, x2)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x1, 608, x2)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x1, 616, x2)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x1, 624, x2)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x1, 632, x2)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x1, 640, x2)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x1, 648, x2)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x1, 656, x2)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x1, 664, x2)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x1, 672, x2)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x1, 680, x2)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x1, 688, x2)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x1, 696, x2)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x1, 704, x2)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x1, 712, x2)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x1, 720, x2)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x1, 728, x2)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x1, 736, x2)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x1, 744, x2)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x1, 752, x2)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x1, 760, x2)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x1, 768, x2)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x1, 776, x2)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x1, 784, x2)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x1, 792, x2)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x1, 800, x2)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x1, 808, x2)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x1, 816, x2)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x1, 824, x2)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x1, 832, x2)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x1, 840, x2)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x1, 848, x2)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x1, 856, x2)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x1, 864, x2)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x1, 872, x2)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x1, 880, x2)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x1, 888, x2)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x1, 896, x2)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x1, 904, x2)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x1, 912, x2)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x1, 920, x2)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x1, 928, x2)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x1, 936, x2)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x1, 944, x2)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x1, 952, x2)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x1, 960, x2)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x1, 968, x2)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x1, 976, x2)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x1, 984, x2)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x1, 992, x2)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x1, 1000, x2)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x1, 1008, x2)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x1, 1016, x2)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x1, 1024, x2)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x1, 1032, x2)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x1, 1040, x2)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x1, 1048, x2)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x1, 1056, x2)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x1, 1064, x2)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x1, 1072, x2)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x1, 1080, x2)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x1, 1088, x2)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x1, 1096, x2)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x1, 1104, x2)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x1, 1112, x2)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x1, 1120, x2)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x1, 1128, x2)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x1, 1136, x2)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x1, 1144, x2)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x1, 1152, x2)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x1, 1160, x2)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x1, 1168, x2)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x1, 1176, x2)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x1, 1184, x2)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x1, 1192, x2)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x1, 1200, x2)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x1, 1208, x2)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x1, 1216, x2)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x1, 1224, x2)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x1, 1232, x2)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x1, 1240, x2)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x1, 1248, x2)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x1, 1256, x2)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x1, 1264, x2)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x1, 1272, x2)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x1, 1280, x2)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x1, 1288, x2)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x1, 1296, x2)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x1, 1304, x2)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x1, 1312, x2)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x1, 1320, x2)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x1, 1328, x2)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x1, 1336, x2)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x1, 1344, x2)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x1, 1352, x2)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x1, 1360, x2)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x1, 1368, x2)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x1, 1376, x2)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x1, 1384, x2)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x1, 1392, x2)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x1, 1400, x2)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x1, 1408, x2)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x1, 1416, x2)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x1, 1424, x2)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x1, 1432, x2)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x1, 1440, x2)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x1, 1448, x2)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x1, 1456, x2)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x1, 1464, x2)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x1, 1472, x2)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x1, 1480, x2)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x1, 1488, x2)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x1, 1496, x2)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x1, 1504, x2)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x1, 1512, x2)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x1, 1520, x2)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x1, 1528, x2)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x1, 1536, x2)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x1, 1544, x2)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x1, 1552, x2)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x1, 1560, x2)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x1, 1568, x2)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x1, 1576, x2)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x1, 1584, x2)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x1, 1592, x2)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x1, 1600, x2)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x1, 1608, x2)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x1, 1616, x2)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x1, 1624, x2)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x1, 1632, x2)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x1, 1640, x2)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x1, 1648, x2)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x1, 1656, x2)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x1, 1664, x2)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x1, 1672, x2)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x1, 1680, x2)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x1, 1688, x2)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x1, 1696, x2)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x1, 1704, x2)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x1, 1712, x2)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x1, 1720, x2)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x1, 1728, x2)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x1, 1736, x2)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x1, 1744, x2)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x1, 1752, x2)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x1, 1760, x2)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x1, 1768, x2)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x1, 1776, x2)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x1, 1784, x2)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x1, 1792, x2)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x1, 1800, x2)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x1, 1808, x2)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x1, 1816, x2)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x1, 1824, x2)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x1, 1832, x2)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x1, 1840, x2)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x1, 1848, x2)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x1, 1856, x2)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x1, 1864, x2)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x1, 1872, x2)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x1, 1880, x2)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x1, 1888, x2)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x1, 1896, x2)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x1, 1904, x2)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x1, 1912, x2)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x1, 1920, x2)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x1, 1928, x2)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x1, 1936, x2)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x1, 1944, x2)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x1, 1952, x2)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x1, 1960, x2)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x1, 1968, x2)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x1, 1976, x2)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x1, 1984, x2)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x1, 1992, x2)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x1, 2000, x2)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x1, 2008, x2)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x1, 2016, x2)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x1, 2024, x2)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x1, 2032, x2)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x1, 2040, x2)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x1, 0, x2)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x1, 8, x2)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x1, 16, x2)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x1, 24, x2)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x1, 32, x2)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x1, 40, x2)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x1, 48, x2)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x1, 56, x2)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x1, 64, x2)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x1, 72, x2)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x1, 80, x2)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x1, 88, x2)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x1, 96, x2)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x1, 104, x2)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x1, 112, x2)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x1, 120, x2)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x1, 128, x2)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x1, 136, x2)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x1, 144, x2)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x1, 152, x2)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x1, 160, x2)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x1, 168, x2)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x1, 176, x2)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x1, 184, x2)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x1, 192, x2)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x1, 200, x2)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x1, 208, x2)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x1, 216, x2)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x1, 224, x2)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x1, 232, x2)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x1, 240, x2)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x1, 248, x2)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x1, 256, x2)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x1, 264, x2)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x1, 272, x2)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x1, 280, x2)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x1, 288, x2)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x1, 296, x2)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x1, 304, x2)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x1, 312, x2)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x1, 320, x2)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x1, 328, x2)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x1, 336, x2)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x1, 344, x2)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x1, 352, x2)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x1, 360, x2)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x1, 368, x2)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x1, 376, x2)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x1, 384, x2)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x1, 392, x2)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x1, 400, x2)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x1, 408, x2)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x1, 416, x2)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x1, 424, x2)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x1, 432, x2)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x1, 440, x2)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x1, 448, x2)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x1, 456, x2)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x1, 464, x2)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x1, 472, x2)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x1, 480, x2)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x1, 488, x2)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x1, 496, x2)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x1, 504, x2)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x1, 512, x2)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x1, 520, x2)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x1, 528, x2)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x1, 536, x2)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x1, 544, x2)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x1, 552, x2)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x1, 560, x2)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x1, 568, x2)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x1, 576, x2)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x1, 584, x2)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x1, 592, x2)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x1, 600, x2)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x1, 608, x2)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x1, 616, x2)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x1, 624, x2)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x1, 632, x2)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x1, 640, x2)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x1, 648, x2)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x1, 656, x2)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x1, 664, x2)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x1, 672, x2)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x1, 680, x2)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x1, 688, x2)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x1, 696, x2)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x1, 704, x2)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x1, 712, x2)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x1, 720, x2)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x1, 728, x2)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x1, 736, x2)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x1, 744, x2)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x1, 752, x2)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x1, 760, x2)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x1, 768, x2)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x1, 776, x2)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x1, 784, x2)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x1, 792, x2)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x1, 800, x2)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x1, 808, x2)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x1, 816, x2)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x1, 824, x2)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x1, 832, x2)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x1, 840, x2)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x1, 848, x2)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x1, 856, x2)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x1, 864, x2)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x1, 872, x2)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x1, 880, x2)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x1, 888, x2)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x1, 896, x2)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x1, 904, x2)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x1, 912, x2)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x1, 920, x2)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x1, 928, x2)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x1, 936, x2)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x1, 944, x2)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x1, 952, x2)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x1, 960, x2)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x1, 968, x2)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x1, 976, x2)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x1, 984, x2)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x1, 992, x2)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x1, 1000, x2)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x1, 1008, x2)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x1, 1016, x2)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x1, 1024, x2)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x1, 1032, x2)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x1, 1040, x2)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x1, 1048, x2)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x1, 1056, x2)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x1, 1064, x2)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x1, 1072, x2)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x1, 1080, x2)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x1, 1088, x2)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x1, 1096, x2)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x1, 1104, x2)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x1, 1112, x2)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x1, 1120, x2)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x1, 1128, x2)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x1, 1136, x2)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x1, 1144, x2)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x1, 1152, x2)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x1, 1160, x2)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x1, 1168, x2)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x1, 1176, x2)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x1, 1184, x2)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x1, 1192, x2)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x1, 1200, x2)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x1, 1208, x2)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x1, 1216, x2)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x1, 1224, x2)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x1, 1232, x2)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x1, 1240, x2)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x1, 1248, x2)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x1, 1256, x2)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x1, 1264, x2)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x1, 1272, x2)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x1, 1280, x2)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x1, 1288, x2)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x1, 1296, x2)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x1, 1304, x2)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x1, 1312, x2)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x1, 1320, x2)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x1, 1328, x2)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x1, 1336, x2)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x1, 1344, x2)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x1, 1352, x2)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x1, 1360, x2)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x1, 1368, x2)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x1, 1376, x2)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x1, 1384, x2)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x1, 1392, x2)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x1, 1400, x2)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x1, 1408, x2)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x1, 1416, x2)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x1, 1424, x2)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x1, 1432, x2)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x1, 1440, x2)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x1, 1448, x2)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x1, 1456, x2)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x1, 1464, x2)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x1, 1472, x2)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x1, 1480, x2)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x1, 1488, x2)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x1, 1496, x2)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x1, 1504, x2)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x1, 1512, x2)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x1, 1520, x2)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x1, 1528, x2)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x1, 1536, x2)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x1, 1544, x2)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x1, 1552, x2)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x1, 1560, x2)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x1, 1568, x2)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x1, 1576, x2)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x1, 1584, x2)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x1, 1592, x2)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x1, 1600, x2)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x1, 1608, x2)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x1, 1616, x2)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x1, 1624, x2)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x1, 1632, x2)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x1, 1640, x2)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x1, 1648, x2)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x1, 1656, x2)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x1, 1664, x2)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x1, 1672, x2)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x1, 1680, x2)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x1, 1688, x2)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x1, 1696, x2)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x1, 1704, x2)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x1, 1712, x2)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x1, 1720, x2)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x1, 1728, x2)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x1, 1736, x2)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x1, 1744, x2)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x1, 1752, x2)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x1, 1760, x2)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x1, 1768, x2)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x1, 1776, x2)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x1, 1784, x2)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x1, 1792, x2)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x1, 1800, x2)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x1, 1808, x2)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x1, 1816, x2)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x1, 1824, x2)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x1, 1832, x2)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x1, 1840, x2)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x1, 1848, x2)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x1, 1856, x2)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x1, 1864, x2)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x1, 1872, x2)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x1, 1880, x2)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x1, 1888, x2)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x1, 1896, x2)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x1, 1904, x2)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x1, 1912, x2)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x1, 1920, x2)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x1, 1928, x2)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x1, 1936, x2)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x1, 1944, x2)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x1, 1952, x2)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x1, 1960, x2)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x1, 1968, x2)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x1, 1976, x2)
+
+inst_522:
+// rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x1, 1984, x2)
+
+inst_523:
+// rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: pack ; op1:x10; op2:x11; dest:x12; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(pack, x12, x10, x11, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x1, 1992, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x8_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_1:
+ .fill 18*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 250*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packh-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packh-01.S
new file mode 100644
index 000000000..f25688408
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packh-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the packh instruction of the RISC-V extension for the packh covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",packh)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",packh)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",packh)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",packh)
+
+RVTEST_SIGBASE( x16,signature_x16_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x29, rs2==x29, rd==x6, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: packh ; op1:x29; op2:x29; dest:x6; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(packh, x6, x29, x29, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x16, 0, x15)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x18, rs2==x18, rd==x18, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: packh ; op1:x18; op2:x18; dest:x18; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(packh, x18, x18, x18, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x16, 8, x15)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x20, rs2==x26, rd==x5, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: packh ; op1:x20; op2:x26; dest:x5; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(packh, x5, x20, x26, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x16, 16, x15)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x17, rs2==x24, rd==x17, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: packh ; op1:x17; op2:x24; dest:x17; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(packh, x17, x17, x24, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x16, 24, x15)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x12, rs2==x2, rd==x2, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: packh ; op1:x12; op2:x2; dest:x2; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(packh, x2, x12, x2, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x16, 32, x15)
+
+inst_5:
+// rs1==x30, rs2==x7, rd==x3, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: packh ; op1:x30; op2:x7; dest:x3; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(packh, x3, x30, x7, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x16, 40, x15)
+
+inst_6:
+// rs1==x7, rs2==x28, rd==x22, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: packh ; op1:x7; op2:x28; dest:x22; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(packh, x22, x7, x28, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x16, 48, x15)
+
+inst_7:
+// rs1==x8, rs2==x1, rd==x14, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: packh ; op1:x8; op2:x1; dest:x14; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(packh, x14, x8, x1, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x16, 56, x15)
+
+inst_8:
+// rs1==x3, rs2==x10, rd==x12, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: packh ; op1:x3; op2:x10; dest:x12; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(packh, x12, x3, x10, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x16, 64, x15)
+
+inst_9:
+// rs1==x5, rs2==x6, rd==x20, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: packh ; op1:x5; op2:x6; dest:x20; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(packh, x20, x5, x6, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x16, 72, x15)
+
+inst_10:
+// rs1==x11, rs2==x22, rd==x29, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: packh ; op1:x11; op2:x22; dest:x29; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(packh, x29, x11, x22, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x16, 80, x15)
+
+inst_11:
+// rs1==x24, rs2==x0, rd==x27, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: packh ; op1:x24; op2:x0; dest:x27; op1val:0xfd8bf41246e4abd8; op2val:0x0
+TEST_RR_OP(packh, x27, x24, x0, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x0, x16, 88, x15)
+
+inst_12:
+// rs1==x13, rs2==x23, rd==x4, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: packh ; op1:x13; op2:x23; dest:x4; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(packh, x4, x13, x23, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x16, 96, x15)
+
+inst_13:
+// rs1==x22, rs2==x3, rd==x0, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: packh ; op1:x22; op2:x3; dest:x0; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(packh, x0, x22, x3, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x16, 104, x15)
+
+inst_14:
+// rs1==x9, rs2==x5, rd==x24, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: packh ; op1:x9; op2:x5; dest:x24; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(packh, x24, x9, x5, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x16, 112, x15)
+
+inst_15:
+// rs1==x19, rs2==x30, rd==x13, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: packh ; op1:x19; op2:x30; dest:x13; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(packh, x13, x19, x30, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x16, 120, x15)
+
+inst_16:
+// rs1==x1, rs2==x20, rd==x7, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: packh ; op1:x1; op2:x20; dest:x7; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(packh, x7, x1, x20, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x16, 128, x15)
+
+inst_17:
+// rs1==x10, rs2==x9, rd==x21, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: packh ; op1:x10; op2:x9; dest:x21; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(packh, x21, x10, x9, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x16, 136, x15)
+
+inst_18:
+// rs1==x26, rs2==x8, rd==x1, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: packh ; op1:x26; op2:x8; dest:x1; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(packh, x1, x26, x8, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x16, 144, x3)
+
+inst_19:
+// rs1==x21, rs2==x13, rd==x11, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: packh ; op1:x21; op2:x13; dest:x11; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(packh, x11, x21, x13, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x16, 152, x3)
+
+inst_20:
+// rs1==x2, rs2==x4, rd==x30, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: packh ; op1:x2; op2:x4; dest:x30; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(packh, x30, x2, x4, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x16, 160, x3)
+
+inst_21:
+// rs1==x4, rs2==x17, rd==x8, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: packh ; op1:x4; op2:x17; dest:x8; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(packh, x8, x4, x17, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x16, 168, x3)
+
+inst_22:
+// rs1==x14, rs2==x15, rd==x9, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: packh ; op1:x14; op2:x15; dest:x9; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(packh, x9, x14, x15, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x16, 176, x3)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_23:
+// rs1==x16, rs2==x11, rd==x28, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: packh ; op1:x16; op2:x11; dest:x28; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(packh, x28, x16, x11, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x1, 0, x3)
+
+inst_24:
+// rs1==x28, rs2==x31, rd==x23, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: packh ; op1:x28; op2:x31; dest:x23; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(packh, x23, x28, x31, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x1, 8, x3)
+
+inst_25:
+// rs1==x6, rs2==x19, rd==x31, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: packh ; op1:x6; op2:x19; dest:x31; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(packh, x31, x6, x19, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x1, 16, x3)
+
+inst_26:
+// rs1==x25, rs2==x16, rd==x15, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: packh ; op1:x25; op2:x16; dest:x15; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(packh, x15, x25, x16, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x1, 24, x3)
+
+inst_27:
+// rs1==x0, rs2==x21, rd==x25, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: packh ; op1:x0; op2:x21; dest:x25; op1val:0x0; op2val:0xfa56aa4000000000
+TEST_RR_OP(packh, x25, x0, x21, 0x0000000000000000, 0x0, 0xfa56aa4000000000, x1, 32, x3)
+
+inst_28:
+// rs1==x27, rs2==x14, rd==x10, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: packh ; op1:x27; op2:x14; dest:x10; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(packh, x10, x27, x14, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x1, 40, x3)
+
+inst_29:
+// rs1==x23, rs2==x27, rd==x19, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: packh ; op1:x23; op2:x27; dest:x19; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(packh, x19, x23, x27, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x1, 48, x3)
+
+inst_30:
+// rs1==x31, rs2==x25, rd==x16, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: packh ; op1:x31; op2:x25; dest:x16; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(packh, x16, x31, x25, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x1, 56, x3)
+
+inst_31:
+// rs1==x15, rs2==x12, rd==x26, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: packh ; op1:x15; op2:x12; dest:x26; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(packh, x26, x15, x12, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x1, 64, x3)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x1, 72, x3)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x1, 80, x3)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x1, 88, x3)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x1, 96, x3)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x1, 104, x3)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x1, 112, x3)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x1, 120, x3)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x1, 128, x3)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x1, 136, x3)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x1, 144, x3)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x1, 152, x3)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x1, 160, x3)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x1, 168, x3)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x1, 176, x3)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x1, 184, x3)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x1, 192, x3)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x1, 200, x3)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x1, 208, x3)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x1, 216, x3)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x1, 224, x3)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x1, 232, x3)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x1, 240, x3)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x1, 248, x3)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x1, 256, x3)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x1, 264, x3)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x1, 272, x3)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x1, 280, x3)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x1, 288, x3)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x1, 296, x3)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x1, 304, x3)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x1, 312, x3)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x1, 320, x3)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x1, 328, x3)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x1, 336, x3)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x1, 344, x3)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x1, 352, x3)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x1, 360, x3)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x1, 368, x3)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x1, 376, x3)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x1, 384, x3)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x1, 392, x3)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x1, 400, x3)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x1, 408, x3)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x1, 416, x3)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x1, 424, x3)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x1, 432, x3)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x1, 440, x3)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x1, 448, x3)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x1, 456, x3)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x1, 464, x3)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x1, 472, x3)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x1, 480, x3)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x1, 488, x3)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x1, 496, x3)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x1, 504, x3)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x1, 512, x3)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x1, 520, x3)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x1, 528, x3)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x1, 536, x3)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x1, 544, x3)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x1, 552, x3)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x1, 560, x3)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x1, 568, x3)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x1, 576, x3)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x1, 584, x3)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x1, 592, x3)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x1, 600, x3)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x1, 608, x3)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x1, 616, x3)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x1, 624, x3)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x1, 632, x3)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x1, 640, x3)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x1, 648, x3)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x1, 656, x3)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x1, 664, x3)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x1, 672, x3)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x1, 680, x3)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x1, 688, x3)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x1, 696, x3)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x1, 704, x3)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x1, 712, x3)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x1, 720, x3)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x1, 728, x3)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x1, 736, x3)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x1, 744, x3)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x1, 752, x3)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x1, 760, x3)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x1, 768, x3)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x1, 776, x3)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x1, 784, x3)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x1, 792, x3)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x1, 800, x3)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x1, 808, x3)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x1, 816, x3)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x1, 824, x3)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x1, 832, x3)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x1, 840, x3)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x1, 848, x3)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x1, 856, x3)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x1, 864, x3)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x1, 872, x3)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x1, 880, x3)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x1, 888, x3)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x1, 896, x3)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x1, 904, x3)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x1, 912, x3)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x1, 920, x3)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x1, 928, x3)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x1, 936, x3)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x1, 944, x3)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x1, 952, x3)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x1, 960, x3)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x1, 968, x3)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x1, 976, x3)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x1, 984, x3)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x1, 992, x3)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x1, 1000, x3)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x1, 1008, x3)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x1, 1016, x3)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x1, 1024, x3)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x1, 1032, x3)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x1, 1040, x3)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x1, 1048, x3)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x1, 1056, x3)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x1, 1064, x3)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x1, 1072, x3)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x1, 1080, x3)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x1, 1088, x3)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x1, 1096, x3)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x1, 1104, x3)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x1, 1112, x3)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x1, 1120, x3)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x1, 1128, x3)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x1, 1136, x3)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x1, 1144, x3)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x1, 1152, x3)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x1, 1160, x3)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x1, 1168, x3)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x1, 1176, x3)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x1, 1184, x3)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x1, 1192, x3)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x1, 1200, x3)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x1, 1208, x3)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x1, 1216, x3)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x1, 1224, x3)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x1, 1232, x3)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x1, 1240, x3)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x1, 1248, x3)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x1, 1256, x3)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x1, 1264, x3)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x1, 1272, x3)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x1, 1280, x3)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x1, 1288, x3)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x1, 1296, x3)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x1, 1304, x3)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x1, 1312, x3)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x1, 1320, x3)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x1, 1328, x3)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x1, 1336, x3)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x1, 1344, x3)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x1, 1352, x3)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x1, 1360, x3)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x1, 1368, x3)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x1, 1376, x3)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x1, 1384, x3)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x1, 1392, x3)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x1, 1400, x3)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x1, 1408, x3)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x1, 1416, x3)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x1, 1424, x3)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x1, 1432, x3)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x1, 1440, x3)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x1, 1448, x3)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x1, 1456, x3)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x1, 1464, x3)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x1, 1472, x3)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x1, 1480, x3)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x1, 1488, x3)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x1, 1496, x3)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x1, 1504, x3)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x1, 1512, x3)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x1, 1520, x3)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x1, 1528, x3)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x1, 1536, x3)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x1, 1544, x3)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x1, 1552, x3)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x1, 1560, x3)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x1, 1568, x3)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x1, 1576, x3)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x1, 1584, x3)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x1, 1592, x3)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x1, 1600, x3)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x1, 1608, x3)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x1, 1616, x3)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x1, 1624, x3)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x1, 1632, x3)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x1, 1640, x3)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x1, 1648, x3)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x1, 1656, x3)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x1, 1664, x3)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x1, 1672, x3)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x1, 1680, x3)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x1, 1688, x3)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x1, 1696, x3)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x1, 1704, x3)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x1, 1712, x3)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x1, 1720, x3)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x1, 1728, x3)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x1, 1736, x3)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x1, 1744, x3)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x1, 1752, x3)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x1, 1760, x3)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x1, 1768, x3)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x1, 1776, x3)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x1, 1784, x3)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x1, 1792, x3)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x1, 1800, x3)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x1, 1808, x3)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x1, 1816, x3)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x1, 1824, x3)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x1, 1832, x3)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x1, 1840, x3)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x1, 1848, x3)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x1, 1856, x3)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x1, 1864, x3)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x1, 1872, x3)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x1, 1880, x3)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x1, 1888, x3)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x1, 1896, x3)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x1, 1904, x3)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x1, 1912, x3)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x1, 1920, x3)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x1, 1928, x3)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x1, 1936, x3)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x1, 1944, x3)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x1, 1952, x3)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x1, 1960, x3)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x1, 1968, x3)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x1, 1976, x3)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x1, 1984, x3)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x1, 1992, x3)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x1, 2000, x3)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x1, 2008, x3)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x1, 2016, x3)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x1, 2024, x3)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x1, 2032, x3)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x1, 2040, x3)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x1, 0, x3)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x1, 8, x3)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x1, 16, x3)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x1, 24, x3)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x1, 32, x3)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x1, 40, x3)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x1, 48, x3)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x1, 56, x3)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x1, 64, x3)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x1, 72, x3)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x1, 80, x3)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x1, 88, x3)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x1, 96, x3)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x1, 104, x3)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x1, 112, x3)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x1, 120, x3)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x1, 128, x3)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x1, 136, x3)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x1, 144, x3)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x1, 152, x3)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x1, 160, x3)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x1, 168, x3)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x1, 176, x3)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x1, 184, x3)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x1, 192, x3)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x1, 200, x3)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x1, 208, x3)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x1, 216, x3)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x1, 224, x3)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x1, 232, x3)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x1, 240, x3)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x1, 248, x3)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x1, 256, x3)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x1, 264, x3)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x1, 272, x3)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x1, 280, x3)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x1, 288, x3)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x1, 296, x3)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x1, 304, x3)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x1, 312, x3)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x1, 320, x3)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x1, 328, x3)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x1, 336, x3)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x1, 344, x3)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x1, 352, x3)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x1, 360, x3)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x1, 368, x3)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x1, 376, x3)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x1, 384, x3)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x1, 392, x3)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x1, 400, x3)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x1, 408, x3)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x1, 416, x3)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x1, 424, x3)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x1, 432, x3)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x1, 440, x3)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x1, 448, x3)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x1, 456, x3)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x1, 464, x3)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x1, 472, x3)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x1, 480, x3)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x1, 488, x3)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x1, 496, x3)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x1, 504, x3)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x1, 512, x3)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x1, 520, x3)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x1, 528, x3)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x1, 536, x3)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x1, 544, x3)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x1, 552, x3)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x1, 560, x3)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x1, 568, x3)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x1, 576, x3)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x1, 584, x3)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x1, 592, x3)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x1, 600, x3)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x1, 608, x3)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x1, 616, x3)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x1, 624, x3)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x1, 632, x3)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x1, 640, x3)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x1, 648, x3)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x1, 656, x3)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x1, 664, x3)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x1, 672, x3)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x1, 680, x3)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x1, 688, x3)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x1, 696, x3)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x1, 704, x3)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x1, 712, x3)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x1, 720, x3)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x1, 728, x3)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x1, 736, x3)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x1, 744, x3)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x1, 752, x3)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x1, 760, x3)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x1, 768, x3)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x1, 776, x3)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x1, 784, x3)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x1, 792, x3)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x1, 800, x3)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x1, 808, x3)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x1, 816, x3)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x1, 824, x3)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x1, 832, x3)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x1, 840, x3)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x1, 848, x3)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x1, 856, x3)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x1, 864, x3)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x1, 872, x3)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x1, 880, x3)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x1, 888, x3)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x1, 896, x3)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x1, 904, x3)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x1, 912, x3)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x1, 920, x3)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x1, 928, x3)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x1, 936, x3)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x1, 944, x3)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x1, 952, x3)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x1, 960, x3)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x1, 968, x3)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x1, 976, x3)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x1, 984, x3)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x1, 992, x3)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x1, 1000, x3)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x1, 1008, x3)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x1, 1016, x3)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x1, 1024, x3)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x1, 1032, x3)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x1, 1040, x3)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x1, 1048, x3)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x1, 1056, x3)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x1, 1064, x3)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x1, 1072, x3)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x1, 1080, x3)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x1, 1088, x3)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x1, 1096, x3)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x1, 1104, x3)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x1, 1112, x3)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x1, 1120, x3)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x1, 1128, x3)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x1, 1136, x3)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x1, 1144, x3)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x1, 1152, x3)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x1, 1160, x3)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x1, 1168, x3)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x1, 1176, x3)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x1, 1184, x3)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x1, 1192, x3)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x1, 1200, x3)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x1, 1208, x3)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x1, 1216, x3)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x1, 1224, x3)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x1, 1232, x3)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x1, 1240, x3)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x1, 1248, x3)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x1, 1256, x3)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x1, 1264, x3)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x1, 1272, x3)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x1, 1280, x3)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x1, 1288, x3)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x1, 1296, x3)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x1, 1304, x3)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x1, 1312, x3)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x1, 1320, x3)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x1, 1328, x3)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x1, 1336, x3)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x1, 1344, x3)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x1, 1352, x3)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x1, 1360, x3)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x1, 1368, x3)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x1, 1376, x3)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x1, 1384, x3)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x1, 1392, x3)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x1, 1400, x3)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x1, 1408, x3)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x1, 1416, x3)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x1, 1424, x3)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x1, 1432, x3)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x1, 1440, x3)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x1, 1448, x3)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x1, 1456, x3)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x1, 1464, x3)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x1, 1472, x3)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x1, 1480, x3)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x1, 1488, x3)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x1, 1496, x3)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x1, 1504, x3)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x1, 1512, x3)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x1, 1520, x3)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x1, 1528, x3)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x1, 1536, x3)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x1, 1544, x3)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x1, 1552, x3)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x1, 1560, x3)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x1, 1568, x3)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x1, 1576, x3)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x1, 1584, x3)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x1, 1592, x3)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x1, 1600, x3)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x1, 1608, x3)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x1, 1616, x3)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x1, 1624, x3)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x1, 1632, x3)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x1, 1640, x3)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x1, 1648, x3)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x1, 1656, x3)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x1, 1664, x3)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x1, 1672, x3)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x1, 1680, x3)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x1, 1688, x3)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x1, 1696, x3)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x1, 1704, x3)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x1, 1712, x3)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x1, 1720, x3)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x1, 1728, x3)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x1, 1736, x3)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x1, 1744, x3)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x1, 1752, x3)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x1, 1760, x3)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x1, 1768, x3)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x1, 1776, x3)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x1, 1784, x3)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x1, 1792, x3)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x1, 1800, x3)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x1, 1808, x3)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x1, 1816, x3)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x1, 1824, x3)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x1, 1832, x3)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x1, 1840, x3)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x1, 1848, x3)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x1, 1856, x3)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x1, 1864, x3)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x1, 1872, x3)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x1, 1880, x3)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x1, 1888, x3)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x1, 1896, x3)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x1, 1904, x3)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x1, 1912, x3)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x1, 1920, x3)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x1, 1928, x3)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x1, 1936, x3)
+
+inst_522:
+// rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x1, 1944, x3)
+
+inst_523:
+// rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x1, 1952, x3)
+
+inst_524:
+// rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: packh ; op1:x10; op2:x11; dest:x12; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(packh, x12, x10, x11, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x1, 1960, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x16_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x16_1:
+ .fill 23*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 246*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packu-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packu-01.S
new file mode 100644
index 000000000..6e96f15cd
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packu-01.S
@@ -0,0 +1,2696 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the packu instruction of the RISC-V extension for the packu covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",packu)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",packu)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",packu)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",packu)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x6, rs2==x6, rd==x8, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: packu ; op1:x6; op2:x6; dest:x8; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(packu, x8, x6, x6, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x4, 0, x5)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x0, rs2==x0, rd==x0, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: packu ; op1:x0; op2:x0; dest:x0; op1val:0x0; op2val:0x0
+TEST_RR_OP(packu, x0, x0, x0, 0x0000000000000000, 0x0, 0x0, x4, 8, x5)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x3, rs2==x12, rd==x22, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: packu ; op1:x3; op2:x12; dest:x22; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(packu, x22, x3, x12, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x4, 16, x5)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x24, rs2==x16, rd==x24, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: packu ; op1:x24; op2:x16; dest:x24; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(packu, x24, x24, x16, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x4, 24, x5)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x20, rs2==x2, rd==x2, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: packu ; op1:x20; op2:x2; dest:x2; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(packu, x2, x20, x2, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x4, 32, x5)
+
+inst_5:
+// rs1==x13, rs2==x11, rd==x16, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: packu ; op1:x13; op2:x11; dest:x16; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(packu, x16, x13, x11, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x4, 40, x5)
+
+inst_6:
+// rs1==x9, rs2==x7, rd==x27, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: packu ; op1:x9; op2:x7; dest:x27; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(packu, x27, x9, x7, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x4, 48, x5)
+
+inst_7:
+// rs1==x19, rs2==x26, rd==x18, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: packu ; op1:x19; op2:x26; dest:x18; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(packu, x18, x19, x26, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x4, 56, x5)
+
+inst_8:
+// rs1==x14, rs2==x20, rd==x15, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: packu ; op1:x14; op2:x20; dest:x15; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(packu, x15, x14, x20, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x4, 64, x5)
+
+inst_9:
+// rs1==x28, rs2==x25, rd==x11, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: packu ; op1:x28; op2:x25; dest:x11; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(packu, x11, x28, x25, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x4, 72, x5)
+
+inst_10:
+// rs1==x2, rs2==x14, rd==x29, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: packu ; op1:x2; op2:x14; dest:x29; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(packu, x29, x2, x14, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x4, 80, x5)
+
+inst_11:
+// rs1==x31, rs2==x9, rd==x14, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: packu ; op1:x31; op2:x9; dest:x14; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(packu, x14, x31, x9, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x4, 88, x5)
+
+inst_12:
+// rs1==x16, rs2==x19, rd==x3, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: packu ; op1:x16; op2:x19; dest:x3; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(packu, x3, x16, x19, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x4, 96, x5)
+
+inst_13:
+// rs1==x27, rs2==x15, rd==x13, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: packu ; op1:x27; op2:x15; dest:x13; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(packu, x13, x27, x15, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x4, 104, x5)
+
+inst_14:
+// rs1==x11, rs2==x22, rd==x28, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: packu ; op1:x11; op2:x22; dest:x28; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(packu, x28, x11, x22, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x4, 112, x5)
+
+inst_15:
+// rs1==x21, rs2==x29, rd==x10, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: packu ; op1:x21; op2:x29; dest:x10; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(packu, x10, x21, x29, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x4, 120, x5)
+
+inst_16:
+// rs1==x15, rs2==x17, rd==x1, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: packu ; op1:x15; op2:x17; dest:x1; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(packu, x1, x15, x17, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x4, 128, x5)
+
+inst_17:
+// rs1==x1, rs2==x23, rd==x5, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: packu ; op1:x1; op2:x23; dest:x5; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(packu, x5, x1, x23, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x4, 136, x14)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_18:
+// rs1==x22, rs2==x24, rd==x12, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: packu ; op1:x22; op2:x24; dest:x12; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(packu, x12, x22, x24, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x2, 0, x14)
+
+inst_19:
+// rs1==x18, rs2==x1, rd==x25, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: packu ; op1:x18; op2:x1; dest:x25; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(packu, x25, x18, x1, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x2, 8, x14)
+
+inst_20:
+// rs1==x7, rs2==x21, rd==x17, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: packu ; op1:x7; op2:x21; dest:x17; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(packu, x17, x7, x21, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x2, 16, x14)
+
+inst_21:
+// rs1==x26, rs2==x8, rd==x30, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: packu ; op1:x26; op2:x8; dest:x30; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(packu, x30, x26, x8, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x2, 24, x14)
+
+inst_22:
+// rs1==x17, rs2==x27, rd==x31, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: packu ; op1:x17; op2:x27; dest:x31; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(packu, x31, x17, x27, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x2, 32, x14)
+
+inst_23:
+// rs1==x23, rs2==x4, rd==x6, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: packu ; op1:x23; op2:x4; dest:x6; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(packu, x6, x23, x4, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x2, 40, x14)
+
+inst_24:
+// rs1==x29, rs2==x10, rd==x19, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: packu ; op1:x29; op2:x10; dest:x19; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(packu, x19, x29, x10, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x2, 48, x14)
+
+inst_25:
+// rs1==x4, rs2==x13, rd==x26, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: packu ; op1:x4; op2:x13; dest:x26; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(packu, x26, x4, x13, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x2, 56, x14)
+
+inst_26:
+// rs1==x10, rs2==x3, rd==x23, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: packu ; op1:x10; op2:x3; dest:x23; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(packu, x23, x10, x3, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x2, 64, x14)
+
+inst_27:
+// rs1==x8, rs2==x31, rd==x7, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: packu ; op1:x8; op2:x31; dest:x7; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(packu, x7, x8, x31, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x2, 72, x14)
+
+inst_28:
+// rs1==x12, rs2==x30, rd==x9, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: packu ; op1:x12; op2:x30; dest:x9; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(packu, x9, x12, x30, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x2, 80, x14)
+
+inst_29:
+// rs1==x30, rs2==x18, rd==x20, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: packu ; op1:x30; op2:x18; dest:x20; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(packu, x20, x30, x18, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x2, 88, x14)
+
+inst_30:
+// rs1==x25, rs2==x5, rd==x21, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: packu ; op1:x25; op2:x5; dest:x21; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(packu, x21, x25, x5, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x2, 96, x14)
+
+inst_31:
+// rs1==x5, rs2==x28, rd==x4, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: packu ; op1:x5; op2:x28; dest:x4; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(packu, x4, x5, x28, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x2, 104, x14)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x2, 112, x14)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x2, 120, x1)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x2, 128, x1)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x2, 136, x1)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x2, 144, x1)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x2, 152, x1)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x2, 160, x1)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x2, 168, x1)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x2, 176, x1)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x2, 184, x1)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x2, 192, x1)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x2, 200, x1)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x2, 208, x1)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x2, 216, x1)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x2, 224, x1)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x2, 232, x1)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x2, 240, x1)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x2, 248, x1)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x2, 256, x1)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x2, 264, x1)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x2, 272, x1)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x2, 280, x1)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x2, 288, x1)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x2, 296, x1)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x2, 304, x1)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x2, 312, x1)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x2, 320, x1)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x2, 328, x1)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x2, 336, x1)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x2, 344, x1)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x2, 352, x1)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x2, 360, x1)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x2, 368, x1)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x2, 376, x1)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x2, 384, x1)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x2, 392, x1)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x2, 400, x1)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x2, 408, x1)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x2, 416, x1)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x2, 424, x1)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x2, 432, x1)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x2, 440, x1)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x2, 448, x1)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x2, 456, x1)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x2, 464, x1)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x2, 472, x1)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x2, 480, x1)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x2, 488, x1)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x2, 496, x1)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x2, 504, x1)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x2, 512, x1)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x2, 520, x1)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x2, 528, x1)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x2, 536, x1)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x2, 544, x1)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x2, 552, x1)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x2, 560, x1)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x2, 568, x1)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x2, 576, x1)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x2, 584, x1)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x2, 592, x1)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x2, 600, x1)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x2, 608, x1)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x2, 616, x1)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x2, 624, x1)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x2, 632, x1)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x2, 640, x1)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x2, 648, x1)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x2, 656, x1)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x2, 664, x1)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x2, 672, x1)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x2, 680, x1)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x2, 688, x1)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x2, 696, x1)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x2, 704, x1)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x2, 712, x1)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x2, 720, x1)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x2, 728, x1)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x2, 736, x1)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x2, 744, x1)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x2, 752, x1)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x2, 760, x1)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x2, 768, x1)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x2, 776, x1)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x2, 784, x1)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x2, 792, x1)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x2, 800, x1)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x2, 808, x1)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x2, 816, x1)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x2, 824, x1)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x2, 832, x1)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x2, 840, x1)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x2, 848, x1)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x2, 856, x1)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x2, 864, x1)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x2, 872, x1)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x2, 880, x1)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x2, 888, x1)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x2, 896, x1)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x2, 904, x1)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x2, 912, x1)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x2, 920, x1)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x2, 928, x1)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x2, 936, x1)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x2, 944, x1)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x2, 952, x1)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x2, 960, x1)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x2, 968, x1)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x2, 976, x1)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x2, 984, x1)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x2, 992, x1)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x2, 1000, x1)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x2, 1008, x1)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x2, 1016, x1)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x2, 1024, x1)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x2, 1032, x1)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x2, 1040, x1)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x2, 1048, x1)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x2, 1056, x1)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x2, 1064, x1)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x2, 1072, x1)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x2, 1080, x1)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x2, 1088, x1)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x2, 1096, x1)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x2, 1104, x1)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x2, 1112, x1)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x2, 1120, x1)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x2, 1128, x1)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x2, 1136, x1)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x2, 1144, x1)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x2, 1152, x1)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x2, 1160, x1)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x2, 1168, x1)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x2, 1176, x1)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x2, 1184, x1)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x2, 1192, x1)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x2, 1200, x1)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x2, 1208, x1)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x2, 1216, x1)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x2, 1224, x1)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x2, 1232, x1)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x2, 1240, x1)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x2, 1248, x1)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x2, 1256, x1)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x2, 1264, x1)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x2, 1272, x1)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x2, 1280, x1)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x2, 1288, x1)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x2, 1296, x1)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x2, 1304, x1)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x2, 1312, x1)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x2, 1320, x1)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x2, 1328, x1)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x2, 1336, x1)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x2, 1344, x1)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x2, 1352, x1)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x2, 1360, x1)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x2, 1368, x1)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x2, 1376, x1)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x2, 1384, x1)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x2, 1392, x1)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x2, 1400, x1)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x2, 1408, x1)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x2, 1416, x1)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x2, 1424, x1)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x2, 1432, x1)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x2, 1440, x1)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x2, 1448, x1)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x2, 1456, x1)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x2, 1464, x1)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x2, 1472, x1)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x2, 1480, x1)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x2, 1488, x1)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x2, 1496, x1)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x2, 1504, x1)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x2, 1512, x1)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x2, 1520, x1)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x2, 1528, x1)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x2, 1536, x1)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x2, 1544, x1)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x2, 1552, x1)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x2, 1560, x1)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x2, 1568, x1)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x2, 1576, x1)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x2, 1584, x1)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x2, 1592, x1)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x2, 1600, x1)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x2, 1608, x1)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x2, 1616, x1)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x2, 1624, x1)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x2, 1632, x1)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x2, 1640, x1)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x2, 1648, x1)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x2, 1656, x1)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x2, 1664, x1)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x2, 1672, x1)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x2, 1680, x1)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x2, 1688, x1)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x2, 1696, x1)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x2, 1704, x1)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x2, 1712, x1)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x2, 1720, x1)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x2, 1728, x1)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x2, 1736, x1)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x2, 1744, x1)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x2, 1752, x1)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x2, 1760, x1)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x2, 1768, x1)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x2, 1776, x1)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x2, 1784, x1)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x2, 1792, x1)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x2, 1800, x1)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x2, 1808, x1)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x2, 1816, x1)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x2, 1824, x1)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x2, 1832, x1)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x2, 1840, x1)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x2, 1848, x1)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x2, 1856, x1)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x2, 1864, x1)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x2, 1872, x1)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x2, 1880, x1)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x2, 1888, x1)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x2, 1896, x1)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x2, 1904, x1)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x2, 1912, x1)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x2, 1920, x1)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x2, 1928, x1)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x2, 1936, x1)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x2, 1944, x1)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x2, 1952, x1)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x2, 1960, x1)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x2, 1968, x1)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x2, 1976, x1)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x2, 1984, x1)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x2, 1992, x1)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x2, 2000, x1)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x2, 2008, x1)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x2, 2016, x1)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x2, 2024, x1)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x2, 2032, x1)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x2, 2040, x1)
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x2, 0, x1)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x2, 8, x1)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x2, 16, x1)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x2, 24, x1)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x2, 32, x1)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x2, 40, x1)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x2, 48, x1)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x2, 56, x1)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x2, 64, x1)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x2, 72, x1)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x2, 80, x1)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x2, 88, x1)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x2, 96, x1)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x2, 104, x1)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x2, 112, x1)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x2, 120, x1)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x2, 128, x1)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x2, 136, x1)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x2, 144, x1)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x2, 152, x1)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x2, 160, x1)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x2, 168, x1)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x2, 176, x1)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x2, 184, x1)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x2, 192, x1)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x2, 200, x1)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x2, 208, x1)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x2, 216, x1)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x2, 224, x1)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x2, 232, x1)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x2, 240, x1)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x2, 248, x1)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x2, 256, x1)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x2, 264, x1)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x2, 272, x1)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x2, 280, x1)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x2, 288, x1)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x2, 296, x1)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x2, 304, x1)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x2, 312, x1)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x2, 320, x1)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x2, 328, x1)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x2, 336, x1)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x2, 344, x1)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x2, 352, x1)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x2, 360, x1)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x2, 368, x1)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x2, 376, x1)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x2, 384, x1)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x2, 392, x1)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x2, 400, x1)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x2, 408, x1)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x2, 416, x1)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x2, 424, x1)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x2, 432, x1)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x2, 440, x1)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x2, 448, x1)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x2, 456, x1)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x2, 464, x1)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x2, 472, x1)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x2, 480, x1)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x2, 488, x1)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x2, 496, x1)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x2, 504, x1)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x2, 512, x1)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x2, 520, x1)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x2, 528, x1)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x2, 536, x1)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x2, 544, x1)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x2, 552, x1)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x2, 560, x1)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x2, 568, x1)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x2, 576, x1)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x2, 584, x1)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x2, 592, x1)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x2, 600, x1)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x2, 608, x1)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x2, 616, x1)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x2, 624, x1)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x2, 632, x1)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x2, 640, x1)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x2, 648, x1)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x2, 656, x1)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x2, 664, x1)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x2, 672, x1)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x2, 680, x1)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x2, 688, x1)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x2, 696, x1)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x2, 704, x1)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x2, 712, x1)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x2, 720, x1)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x2, 728, x1)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x2, 736, x1)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x2, 744, x1)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x2, 752, x1)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x2, 760, x1)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x2, 768, x1)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x2, 776, x1)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x2, 784, x1)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x2, 792, x1)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x2, 800, x1)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x2, 808, x1)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x2, 816, x1)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x2, 824, x1)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x2, 832, x1)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x2, 840, x1)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x2, 848, x1)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x2, 856, x1)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x2, 864, x1)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x2, 872, x1)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x2, 880, x1)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x2, 888, x1)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x2, 896, x1)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x2, 904, x1)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x2, 912, x1)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x2, 920, x1)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x2, 928, x1)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x2, 936, x1)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x2, 944, x1)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x2, 952, x1)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x2, 960, x1)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x2, 968, x1)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x2, 976, x1)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x2, 984, x1)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x2, 992, x1)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x2, 1000, x1)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x2, 1008, x1)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x2, 1016, x1)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x2, 1024, x1)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x2, 1032, x1)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x2, 1040, x1)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x2, 1048, x1)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x2, 1056, x1)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x2, 1064, x1)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x2, 1072, x1)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x2, 1080, x1)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x2, 1088, x1)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x2, 1096, x1)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x2, 1104, x1)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x2, 1112, x1)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x2, 1120, x1)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x2, 1128, x1)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x2, 1136, x1)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x2, 1144, x1)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x2, 1152, x1)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x2, 1160, x1)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x2, 1168, x1)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x2, 1176, x1)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x2, 1184, x1)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x2, 1192, x1)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x2, 1200, x1)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x2, 1208, x1)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x2, 1216, x1)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x2, 1224, x1)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x2, 1232, x1)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x2, 1240, x1)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x2, 1248, x1)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x2, 1256, x1)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x2, 1264, x1)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x2, 1272, x1)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x2, 1280, x1)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x2, 1288, x1)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x2, 1296, x1)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x2, 1304, x1)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x2, 1312, x1)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x2, 1320, x1)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x2, 1328, x1)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x2, 1336, x1)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x2, 1344, x1)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x2, 1352, x1)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x2, 1360, x1)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x2, 1368, x1)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x2, 1376, x1)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x2, 1384, x1)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x2, 1392, x1)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x2, 1400, x1)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x2, 1408, x1)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x2, 1416, x1)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x2, 1424, x1)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x2, 1432, x1)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x2, 1440, x1)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x2, 1448, x1)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x2, 1456, x1)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x2, 1464, x1)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x2, 1472, x1)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x2, 1480, x1)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x2, 1488, x1)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x2, 1496, x1)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x2, 1504, x1)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x2, 1512, x1)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x2, 1520, x1)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x2, 1528, x1)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x2, 1536, x1)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x2, 1544, x1)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x2, 1552, x1)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x2, 1560, x1)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x2, 1568, x1)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x2, 1576, x1)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x2, 1584, x1)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x2, 1592, x1)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x2, 1600, x1)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x2, 1608, x1)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x2, 1616, x1)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x2, 1624, x1)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x2, 1632, x1)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x2, 1640, x1)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x2, 1648, x1)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x2, 1656, x1)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x2, 1664, x1)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x2, 1672, x1)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x2, 1680, x1)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x2, 1688, x1)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x2, 1696, x1)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x2, 1704, x1)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x2, 1712, x1)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x2, 1720, x1)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x2, 1728, x1)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x2, 1736, x1)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x2, 1744, x1)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x2, 1752, x1)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x2, 1760, x1)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x2, 1768, x1)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x2, 1776, x1)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x2, 1784, x1)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x2, 1792, x1)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x2, 1800, x1)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x2, 1808, x1)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x2, 1816, x1)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x2, 1824, x1)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x2, 1832, x1)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x2, 1840, x1)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x2, 1848, x1)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x2, 1856, x1)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x2, 1864, x1)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x2, 1872, x1)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x2, 1880, x1)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x2, 1888, x1)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x2, 1896, x1)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x2, 1904, x1)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x2, 1912, x1)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x2, 1920, x1)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x2, 1928, x1)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x2, 1936, x1)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x2, 1944, x1)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x2, 1952, x1)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x2, 1960, x1)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x2, 1968, x1)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: packu ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(packu, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x2, 1976, x1)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 18*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 248*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packuw-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packuw-01.S
new file mode 100644
index 000000000..84bc2ca74
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packuw-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the packuw instruction of the RISC-V extension for the packuw covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",packuw)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",packuw)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",packuw)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKb.*);def TEST_CASE_1=True;",packuw)
+
+RVTEST_SIGBASE( x12,signature_x12_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x9, rs2==x9, rd==x27, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: packuw ; op1:x9; op2:x9; dest:x27; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(packuw, x27, x9, x9, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x12, 0, x16)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x25, rs2==x25, rd==x25, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: packuw ; op1:x25; op2:x25; dest:x25; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(packuw, x25, x25, x25, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x12, 8, x16)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x10, rs2==x27, rd==x13, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: packuw ; op1:x10; op2:x27; dest:x13; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(packuw, x13, x10, x27, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x12, 16, x16)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x30, rs2==x3, rd==x30, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: packuw ; op1:x30; op2:x3; dest:x30; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(packuw, x30, x30, x3, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x12, 24, x16)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x27, rs2==x2, rd==x2, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: packuw ; op1:x27; op2:x2; dest:x2; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(packuw, x2, x27, x2, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x12, 32, x16)
+
+inst_5:
+// rs1==x5, rs2==x0, rd==x9, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: packuw ; op1:x5; op2:x0; dest:x9; op1val:0xd50bd94a392e6fa3; op2val:0x0
+TEST_RR_OP(packuw, x9, x5, x0, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x0, x12, 40, x16)
+
+inst_6:
+// rs1==x3, rs2==x4, rd==x1, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: packuw ; op1:x3; op2:x4; dest:x1; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(packuw, x1, x3, x4, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x12, 48, x16)
+
+inst_7:
+// rs1==x1, rs2==x18, rd==x10, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: packuw ; op1:x1; op2:x18; dest:x10; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(packuw, x10, x1, x18, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x12, 56, x16)
+
+inst_8:
+// rs1==x24, rs2==x7, rd==x17, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: packuw ; op1:x24; op2:x7; dest:x17; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(packuw, x17, x24, x7, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x12, 64, x16)
+
+inst_9:
+// rs1==x13, rs2==x26, rd==x31, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: packuw ; op1:x13; op2:x26; dest:x31; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(packuw, x31, x13, x26, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x12, 72, x16)
+
+inst_10:
+// rs1==x14, rs2==x1, rd==x7, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: packuw ; op1:x14; op2:x1; dest:x7; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(packuw, x7, x14, x1, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x12, 80, x16)
+
+inst_11:
+// rs1==x31, rs2==x30, rd==x29, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: packuw ; op1:x31; op2:x30; dest:x29; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(packuw, x29, x31, x30, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x12, 88, x16)
+
+inst_12:
+// rs1==x29, rs2==x17, rd==x20, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: packuw ; op1:x29; op2:x17; dest:x20; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(packuw, x20, x29, x17, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x12, 96, x16)
+
+inst_13:
+// rs1==x11, rs2==x5, rd==x14, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: packuw ; op1:x11; op2:x5; dest:x14; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(packuw, x14, x11, x5, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x12, 104, x16)
+
+inst_14:
+// rs1==x26, rs2==x8, rd==x5, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: packuw ; op1:x26; op2:x8; dest:x5; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(packuw, x5, x26, x8, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x12, 112, x16)
+
+inst_15:
+// rs1==x28, rs2==x13, rd==x23, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: packuw ; op1:x28; op2:x13; dest:x23; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(packuw, x23, x28, x13, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x12, 120, x16)
+
+inst_16:
+// rs1==x15, rs2==x21, rd==x6, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: packuw ; op1:x15; op2:x21; dest:x6; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(packuw, x6, x15, x21, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x12, 128, x16)
+
+inst_17:
+// rs1==x16, rs2==x10, rd==x8, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: packuw ; op1:x16; op2:x10; dest:x8; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(packuw, x8, x16, x10, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x12, 136, x5)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_18:
+// rs1==x4, rs2==x31, rd==x3, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: packuw ; op1:x4; op2:x31; dest:x3; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(packuw, x3, x4, x31, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x1, 0, x5)
+
+inst_19:
+// rs1==x2, rs2==x29, rd==x22, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: packuw ; op1:x2; op2:x29; dest:x22; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(packuw, x22, x2, x29, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x1, 8, x5)
+
+inst_20:
+// rs1==x7, rs2==x15, rd==x16, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: packuw ; op1:x7; op2:x15; dest:x16; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(packuw, x16, x7, x15, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x1, 16, x5)
+
+inst_21:
+// rs1==x17, rs2==x19, rd==x24, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: packuw ; op1:x17; op2:x19; dest:x24; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(packuw, x24, x17, x19, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x1, 24, x5)
+
+inst_22:
+// rs1==x21, rs2==x20, rd==x28, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: packuw ; op1:x21; op2:x20; dest:x28; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(packuw, x28, x21, x20, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x1, 32, x5)
+
+inst_23:
+// rs1==x8, rs2==x11, rd==x19, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: packuw ; op1:x8; op2:x11; dest:x19; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(packuw, x19, x8, x11, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x1, 40, x5)
+
+inst_24:
+// rs1==x6, rs2==x16, rd==x26, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: packuw ; op1:x6; op2:x16; dest:x26; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(packuw, x26, x6, x16, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x1, 48, x5)
+
+inst_25:
+// rs1==x22, rs2==x6, rd==x12, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: packuw ; op1:x22; op2:x6; dest:x12; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(packuw, x12, x22, x6, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x1, 56, x5)
+
+inst_26:
+// rs1==x23, rs2==x22, rd==x11, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: packuw ; op1:x23; op2:x22; dest:x11; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(packuw, x11, x23, x22, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x1, 64, x5)
+
+inst_27:
+// rs1==x18, rs2==x12, rd==x21, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: packuw ; op1:x18; op2:x12; dest:x21; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(packuw, x21, x18, x12, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x1, 72, x5)
+
+inst_28:
+// rs1==x0, rs2==x24, rd==x15, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: packuw ; op1:x0; op2:x24; dest:x15; op1val:0x0; op2val:0x60c9f22000000000
+TEST_RR_OP(packuw, x15, x0, x24, 0x0000000000000000, 0x0, 0x60c9f22000000000, x1, 80, x5)
+
+inst_29:
+// rs1==x19, rs2==x23, rd==x4, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: packuw ; op1:x19; op2:x23; dest:x4; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(packuw, x4, x19, x23, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x1, 88, x5)
+
+inst_30:
+// rs1==x12, rs2==x14, rd==x0, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: packuw ; op1:x12; op2:x14; dest:x0; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(packuw, x0, x12, x14, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x1, 96, x5)
+
+inst_31:
+// rs1==x20, rs2==x28, rd==x18, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: packuw ; op1:x20; op2:x28; dest:x18; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(packuw, x18, x20, x28, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x1, 104, x5)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x1, 112, x5)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x1, 120, x5)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x1, 128, x5)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x1, 136, x5)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x1, 144, x5)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x1, 152, x5)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x1, 160, x5)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x1, 168, x5)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x1, 176, x5)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x1, 184, x5)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x1, 192, x5)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x1, 200, x5)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x1, 208, x5)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x1, 216, x5)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x1, 224, x5)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x1, 232, x5)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x1, 240, x5)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x1, 248, x5)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x1, 256, x5)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x1, 264, x5)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x1, 272, x5)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x1, 280, x5)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x1, 288, x5)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x1, 296, x5)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x1, 304, x5)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x1, 312, x5)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x1, 320, x5)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x1, 328, x5)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x1, 336, x5)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x1, 344, x5)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x1, 352, x5)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x1, 360, x5)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x1, 368, x5)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x1, 376, x5)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x1, 384, x5)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x1, 392, x5)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x1, 400, x5)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x1, 408, x5)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x1, 416, x5)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x1, 424, x5)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x1, 432, x5)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x1, 440, x5)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x1, 448, x5)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x1, 456, x5)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x1, 464, x5)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x1, 472, x5)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x1, 480, x5)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x1, 488, x5)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x1, 496, x5)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x1, 504, x5)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x1, 512, x5)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x1, 520, x5)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x1, 528, x5)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x1, 536, x5)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x1, 544, x5)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x1, 552, x5)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x1, 560, x5)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x1, 568, x5)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x1, 576, x5)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x1, 584, x5)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x1, 592, x5)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x1, 600, x5)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x1, 608, x5)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x1, 616, x5)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x1, 624, x5)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x1, 632, x5)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x1, 640, x5)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x1, 648, x5)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x1, 656, x5)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x1, 664, x5)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x1, 672, x5)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x1, 680, x5)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x1, 688, x5)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x1, 696, x5)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x1, 704, x5)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x1, 712, x5)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x1, 720, x5)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x1, 728, x5)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x1, 736, x5)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x1, 744, x5)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x1, 752, x5)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x1, 760, x5)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x1, 768, x5)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x1, 776, x5)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x1, 784, x5)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x1, 792, x5)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x1, 800, x5)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x1, 808, x5)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x1, 816, x5)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x1, 824, x5)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x1, 832, x5)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x1, 840, x5)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x1, 848, x5)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x1, 856, x5)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x1, 864, x5)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x1, 872, x5)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x1, 880, x5)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x1, 888, x5)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x1, 896, x5)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x1, 904, x5)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x1, 912, x5)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x1, 920, x5)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x1, 928, x5)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x1, 936, x5)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x1, 944, x5)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x1, 952, x5)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x1, 960, x5)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x1, 968, x5)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x1, 976, x5)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x1, 984, x5)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x1, 992, x5)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x1, 1000, x5)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x1, 1008, x5)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x1, 1016, x5)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x1, 1024, x5)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x1, 1032, x5)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x1, 1040, x5)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x1, 1048, x5)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x1, 1056, x5)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x1, 1064, x5)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x1, 1072, x5)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x1, 1080, x5)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x1, 1088, x5)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x1, 1096, x5)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x1, 1104, x5)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x1, 1112, x5)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x1, 1120, x5)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x1, 1128, x5)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x1, 1136, x5)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x1, 1144, x5)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x1, 1152, x5)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x1, 1160, x5)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x1, 1168, x5)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x1, 1176, x5)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x1, 1184, x5)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x1, 1192, x5)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x1, 1200, x5)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x1, 1208, x5)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x1, 1216, x5)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x1, 1224, x5)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x1, 1232, x5)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x1, 1240, x5)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x1, 1248, x5)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x1, 1256, x5)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x1, 1264, x5)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x1, 1272, x5)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x1, 1280, x5)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x1, 1288, x5)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x1, 1296, x5)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x1, 1304, x5)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x1, 1312, x5)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x1, 1320, x5)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x1, 1328, x5)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x1, 1336, x5)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x1, 1344, x5)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x1, 1352, x5)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x1, 1360, x5)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x1, 1368, x5)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x1, 1376, x5)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x1, 1384, x5)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x1, 1392, x5)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x1, 1400, x5)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x1, 1408, x5)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x1, 1416, x5)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x1, 1424, x5)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x1, 1432, x5)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x1, 1440, x5)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x1, 1448, x5)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x1, 1456, x5)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x1, 1464, x5)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x1, 1472, x5)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x1, 1480, x5)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x1, 1488, x5)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x1, 1496, x5)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x1, 1504, x5)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x1, 1512, x5)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x1, 1520, x5)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x1, 1528, x5)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x1, 1536, x5)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x1, 1544, x5)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x1, 1552, x5)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x1, 1560, x5)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x1, 1568, x5)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x1, 1576, x5)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x1, 1584, x5)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x1, 1592, x5)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x1, 1600, x5)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x1, 1608, x5)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x1, 1616, x5)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x1, 1624, x5)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x1, 1632, x5)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x1, 1640, x5)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x1, 1648, x5)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x1, 1656, x5)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x1, 1664, x5)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x1, 1672, x5)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x1, 1680, x5)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x1, 1688, x5)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x1, 1696, x5)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x1, 1704, x5)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x1, 1712, x5)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x1, 1720, x5)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x1, 1728, x5)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x1, 1736, x5)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x1, 1744, x5)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x1, 1752, x5)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x1, 1760, x5)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x1, 1768, x5)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x1, 1776, x5)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x1, 1784, x5)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x1, 1792, x5)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x1, 1800, x5)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x1, 1808, x5)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x1, 1816, x5)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x1, 1824, x5)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x1, 1832, x5)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x1, 1840, x5)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x1, 1848, x5)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x1, 1856, x5)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x1, 1864, x5)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x1, 1872, x5)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x1, 1880, x5)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x1, 1888, x5)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x1, 1896, x5)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x1, 1904, x5)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x1, 1912, x5)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x1, 1920, x5)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x1, 1928, x5)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x1, 1936, x5)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x1, 1944, x5)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x1, 1952, x5)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x1, 1960, x5)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x1, 1968, x5)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x1, 1976, x5)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x1, 1984, x5)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x1, 1992, x5)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x1, 2000, x5)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x1, 2008, x5)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x1, 2016, x5)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x1, 2024, x5)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x1, 2032, x5)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x1, 2040, x5)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x1, 0, x5)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x1, 8, x5)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x1, 16, x5)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x1, 24, x5)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x1, 32, x5)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x1, 40, x5)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x1, 48, x5)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x1, 56, x5)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x1, 64, x5)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x1, 72, x5)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x1, 80, x5)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x1, 88, x5)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x1, 96, x5)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x1, 104, x5)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x1, 112, x5)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x1, 120, x5)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x1, 128, x5)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x1, 136, x5)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x1, 144, x5)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x1, 152, x5)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x1, 160, x5)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x1, 168, x5)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x1, 176, x5)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x1, 184, x5)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x1, 192, x5)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x1, 200, x5)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x1, 208, x5)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x1, 216, x5)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x1, 224, x5)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x1, 232, x5)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x1, 240, x5)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x1, 248, x5)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x1, 256, x5)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x1, 264, x5)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x1, 272, x5)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x1, 280, x5)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x1, 288, x5)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x1, 296, x5)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x1, 304, x5)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x1, 312, x5)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x1, 320, x5)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x1, 328, x5)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x1, 336, x5)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x1, 344, x5)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x1, 352, x5)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x1, 360, x5)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x1, 368, x5)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x1, 376, x5)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x1, 384, x5)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x1, 392, x5)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x1, 400, x5)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x1, 408, x5)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x1, 416, x5)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x1, 424, x5)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x1, 432, x5)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x1, 440, x5)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x1, 448, x5)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x1, 456, x5)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x1, 464, x5)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x1, 472, x5)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x1, 480, x5)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x1, 488, x5)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x1, 496, x5)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x1, 504, x5)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x1, 512, x5)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x1, 520, x5)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x1, 528, x5)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x1, 536, x5)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x1, 544, x5)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x1, 552, x5)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x1, 560, x5)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x1, 568, x5)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x1, 576, x5)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x1, 584, x5)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x1, 592, x5)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x1, 600, x5)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x1, 608, x5)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x1, 616, x5)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x1, 624, x5)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x1, 632, x5)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x1, 640, x5)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x1, 648, x5)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x1, 656, x5)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x1, 664, x5)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x1, 672, x5)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x1, 680, x5)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x1, 688, x5)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x1, 696, x5)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x1, 704, x5)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x1, 712, x5)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x1, 720, x5)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x1, 728, x5)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x1, 736, x5)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x1, 744, x5)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x1, 752, x5)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x1, 760, x5)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x1, 768, x5)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x1, 776, x5)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x1, 784, x5)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x1, 792, x5)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x1, 800, x5)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x1, 808, x5)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x1, 816, x5)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x1, 824, x5)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x1, 832, x5)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x1, 840, x5)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x1, 848, x5)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x1, 856, x5)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x1, 864, x5)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x1, 872, x5)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x1, 880, x5)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x1, 888, x5)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x1, 896, x5)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x1, 904, x5)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x1, 912, x5)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x1, 920, x5)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x1, 928, x5)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x1, 936, x5)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x1, 944, x5)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x1, 952, x5)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x1, 960, x5)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x1, 968, x5)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x1, 976, x5)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x1, 984, x5)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x1, 992, x5)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x1, 1000, x5)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x1, 1008, x5)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x1, 1016, x5)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x1, 1024, x5)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x1, 1032, x5)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x1, 1040, x5)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x1, 1048, x5)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x1, 1056, x5)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x1, 1064, x5)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x1, 1072, x5)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x1, 1080, x5)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x1, 1088, x5)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x1, 1096, x5)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x1, 1104, x5)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x1, 1112, x5)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x1, 1120, x5)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x1, 1128, x5)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x1, 1136, x5)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x1, 1144, x5)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x1, 1152, x5)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x1, 1160, x5)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x1, 1168, x5)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x1, 1176, x5)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x1, 1184, x5)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x1, 1192, x5)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x1, 1200, x5)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x1, 1208, x5)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x1, 1216, x5)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x1, 1224, x5)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x1, 1232, x5)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x1, 1240, x5)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x1, 1248, x5)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x1, 1256, x5)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x1, 1264, x5)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x1, 1272, x5)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x1, 1280, x5)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x1, 1288, x5)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x1, 1296, x5)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x1, 1304, x5)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x1, 1312, x5)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x1, 1320, x5)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x1, 1328, x5)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x1, 1336, x5)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x1, 1344, x5)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x1, 1352, x5)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x1, 1360, x5)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x1, 1368, x5)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x1, 1376, x5)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x1, 1384, x5)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x1, 1392, x5)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x1, 1400, x5)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x1, 1408, x5)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x1, 1416, x5)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x1, 1424, x5)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x1, 1432, x5)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x1, 1440, x5)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x1, 1448, x5)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x1, 1456, x5)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x1, 1464, x5)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x1, 1472, x5)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x1, 1480, x5)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x1, 1488, x5)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x1, 1496, x5)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x1, 1504, x5)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x1, 1512, x5)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x1, 1520, x5)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x1, 1528, x5)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x1, 1536, x5)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x1, 1544, x5)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x1, 1552, x5)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x1, 1560, x5)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x1, 1568, x5)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x1, 1576, x5)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x1, 1584, x5)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x1, 1592, x5)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x1, 1600, x5)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x1, 1608, x5)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x1, 1616, x5)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x1, 1624, x5)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x1, 1632, x5)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x1, 1640, x5)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x1, 1648, x5)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x1, 1656, x5)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x1, 1664, x5)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x1, 1672, x5)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x1, 1680, x5)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x1, 1688, x5)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x1, 1696, x5)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x1, 1704, x5)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x1, 1712, x5)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x1, 1720, x5)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x1, 1728, x5)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x1, 1736, x5)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x1, 1744, x5)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x1, 1752, x5)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x1, 1760, x5)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x1, 1768, x5)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x1, 1776, x5)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x1, 1784, x5)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x1, 1792, x5)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x1, 1800, x5)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x1, 1808, x5)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x1, 1816, x5)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x1, 1824, x5)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x1, 1832, x5)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x1, 1840, x5)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x1, 1848, x5)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x1, 1856, x5)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x1, 1864, x5)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x1, 1872, x5)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x1, 1880, x5)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x1, 1888, x5)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x1, 1896, x5)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x1, 1904, x5)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x1, 1912, x5)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x1, 1920, x5)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x1, 1928, x5)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x1, 1936, x5)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x1, 1944, x5)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x1, 1952, x5)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x1, 1960, x5)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x1, 1968, x5)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x1, 1976, x5)
+
+inst_522:
+// rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x1, 1984, x5)
+
+inst_523:
+// rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x1, 1992, x5)
+
+inst_524:
+// rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: packuw ; op1:x10; op2:x11; dest:x12; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(packuw, x12, x10, x11, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x1, 2000, x5)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x12_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x12_1:
+ .fill 18*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 251*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packw-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packw-01.S
new file mode 100644
index 000000000..842dead52
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/packw-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the packw instruction of the RISC-V extension for the packw covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",packw)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",packw)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",packw)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKb.*);def TEST_CASE_1=True;",packw)
+
+RVTEST_SIGBASE( x8,signature_x8_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x1, rs2==x1, rd==x12, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: packw ; op1:x1; op2:x1; dest:x12; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(packw, x12, x1, x1, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x8, 0, x21)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x19, rs2==x19, rd==x19, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: packw ; op1:x19; op2:x19; dest:x19; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(packw, x19, x19, x19, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x8, 8, x21)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x31, rs2==x9, rd==x0, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: packw ; op1:x31; op2:x9; dest:x0; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(packw, x0, x31, x9, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x8, 16, x21)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x5, rs2==x25, rd==x5, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: packw ; op1:x5; op2:x25; dest:x5; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(packw, x5, x5, x25, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x8, 24, x21)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x29, rs2==x23, rd==x23, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: packw ; op1:x29; op2:x23; dest:x23; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(packw, x23, x29, x23, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x8, 32, x21)
+
+inst_5:
+// rs1==x28, rs2==x2, rd==x20, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: packw ; op1:x28; op2:x2; dest:x20; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(packw, x20, x28, x2, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x8, 40, x21)
+
+inst_6:
+// rs1==x3, rs2==x16, rd==x9, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: packw ; op1:x3; op2:x16; dest:x9; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(packw, x9, x3, x16, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x8, 48, x21)
+
+inst_7:
+// rs1==x12, rs2==x11, rd==x15, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: packw ; op1:x12; op2:x11; dest:x15; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(packw, x15, x12, x11, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x8, 56, x21)
+
+inst_8:
+// rs1==x22, rs2==x18, rd==x29, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: packw ; op1:x22; op2:x18; dest:x29; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(packw, x29, x22, x18, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x8, 64, x21)
+
+inst_9:
+// rs1==x4, rs2==x15, rd==x22, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: packw ; op1:x4; op2:x15; dest:x22; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(packw, x22, x4, x15, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x8, 72, x21)
+
+inst_10:
+// rs1==x7, rs2==x4, rd==x18, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: packw ; op1:x7; op2:x4; dest:x18; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(packw, x18, x7, x4, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x8, 80, x21)
+
+inst_11:
+// rs1==x2, rs2==x0, rd==x24, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: packw ; op1:x2; op2:x0; dest:x24; op1val:0xfd8bf41246e4abd8; op2val:0x0
+TEST_RR_OP(packw, x24, x2, x0, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x0, x8, 88, x21)
+
+inst_12:
+// rs1==x24, rs2==x5, rd==x30, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: packw ; op1:x24; op2:x5; dest:x30; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(packw, x30, x24, x5, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x8, 96, x21)
+
+inst_13:
+// rs1==x13, rs2==x24, rd==x17, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: packw ; op1:x13; op2:x24; dest:x17; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(packw, x17, x13, x24, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x8, 104, x21)
+
+inst_14:
+// rs1==x11, rs2==x7, rd==x4, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: packw ; op1:x11; op2:x7; dest:x4; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(packw, x4, x11, x7, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x8, 112, x21)
+
+inst_15:
+// rs1==x14, rs2==x6, rd==x10, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: packw ; op1:x14; op2:x6; dest:x10; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(packw, x10, x14, x6, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x8, 120, x21)
+
+inst_16:
+// rs1==x10, rs2==x30, rd==x26, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: packw ; op1:x10; op2:x30; dest:x26; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(packw, x26, x10, x30, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x8, 128, x5)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_17:
+// rs1==x26, rs2==x20, rd==x13, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: packw ; op1:x26; op2:x20; dest:x13; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(packw, x13, x26, x20, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x4, 0, x5)
+
+inst_18:
+// rs1==x0, rs2==x26, rd==x7, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: packw ; op1:x0; op2:x26; dest:x7; op1val:0x0; op2val:0x3b0b800000000000
+TEST_RR_OP(packw, x7, x0, x26, 0x0000000000000000, 0x0, 0x3b0b800000000000, x4, 8, x5)
+
+inst_19:
+// rs1==x16, rs2==x31, rd==x8, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: packw ; op1:x16; op2:x31; dest:x8; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(packw, x8, x16, x31, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x4, 16, x5)
+
+inst_20:
+// rs1==x18, rs2==x27, rd==x31, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: packw ; op1:x18; op2:x27; dest:x31; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(packw, x31, x18, x27, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x4, 24, x5)
+
+inst_21:
+// rs1==x23, rs2==x12, rd==x11, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: packw ; op1:x23; op2:x12; dest:x11; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(packw, x11, x23, x12, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x4, 32, x5)
+
+inst_22:
+// rs1==x6, rs2==x10, rd==x16, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: packw ; op1:x6; op2:x10; dest:x16; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(packw, x16, x6, x10, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x4, 40, x5)
+
+inst_23:
+// rs1==x8, rs2==x13, rd==x25, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: packw ; op1:x8; op2:x13; dest:x25; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(packw, x25, x8, x13, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x4, 48, x5)
+
+inst_24:
+// rs1==x15, rs2==x17, rd==x21, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: packw ; op1:x15; op2:x17; dest:x21; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(packw, x21, x15, x17, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x4, 56, x5)
+
+inst_25:
+// rs1==x17, rs2==x14, rd==x3, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: packw ; op1:x17; op2:x14; dest:x3; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(packw, x3, x17, x14, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x4, 64, x5)
+
+inst_26:
+// rs1==x25, rs2==x22, rd==x6, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: packw ; op1:x25; op2:x22; dest:x6; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(packw, x6, x25, x22, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x4, 72, x5)
+
+inst_27:
+// rs1==x20, rs2==x8, rd==x1, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: packw ; op1:x20; op2:x8; dest:x1; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(packw, x1, x20, x8, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x4, 80, x5)
+
+inst_28:
+// rs1==x21, rs2==x28, rd==x27, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: packw ; op1:x21; op2:x28; dest:x27; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(packw, x27, x21, x28, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x4, 88, x5)
+
+inst_29:
+// rs1==x27, rs2==x3, rd==x2, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: packw ; op1:x27; op2:x3; dest:x2; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(packw, x2, x27, x3, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x4, 96, x5)
+
+inst_30:
+// rs1==x30, rs2==x29, rd==x28, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: packw ; op1:x30; op2:x29; dest:x28; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(packw, x28, x30, x29, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x4, 104, x5)
+
+inst_31:
+// rs1==x9, rs2==x21, rd==x14, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: packw ; op1:x9; op2:x21; dest:x14; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(packw, x14, x9, x21, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x4, 112, x5)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x4, 120, x1)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x4, 128, x1)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x4, 136, x1)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x4, 144, x1)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x4, 152, x1)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x4, 160, x1)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x4, 168, x1)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x4, 176, x1)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x4, 184, x1)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x4, 192, x1)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x4, 200, x1)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x4, 208, x1)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x4, 216, x1)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x4, 224, x1)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x4, 232, x1)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x4, 240, x1)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x4, 248, x1)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x4, 256, x1)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x4, 264, x1)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x4, 272, x1)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x4, 280, x1)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x4, 288, x1)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x4, 296, x1)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x4, 304, x1)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x4, 312, x1)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x4, 320, x1)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x4, 328, x1)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x4, 336, x1)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x4, 344, x1)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x4, 352, x1)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x4, 360, x1)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x4, 368, x1)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x4, 376, x1)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x4, 384, x1)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x4, 392, x1)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x4, 400, x1)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x4, 408, x1)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x4, 416, x1)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x4, 424, x1)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x4, 432, x1)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x4, 440, x1)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x4, 448, x1)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x4, 456, x1)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x4, 464, x1)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x4, 472, x1)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x4, 480, x1)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x4, 488, x1)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x4, 496, x1)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x4, 504, x1)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x4, 512, x1)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x4, 520, x1)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x4, 528, x1)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x4, 536, x1)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x4, 544, x1)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x4, 552, x1)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x4, 560, x1)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x4, 568, x1)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x4, 576, x1)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x4, 584, x1)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x4, 592, x1)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x4, 600, x1)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x4, 608, x1)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x4, 616, x1)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x4, 624, x1)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x4, 632, x1)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x4, 640, x1)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x4, 648, x1)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x4, 656, x1)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x4, 664, x1)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x4, 672, x1)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x4, 680, x1)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x4, 688, x1)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x4, 696, x1)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x4, 704, x1)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x4, 712, x1)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x4, 720, x1)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x4, 728, x1)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x4, 736, x1)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x4, 744, x1)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x4, 752, x1)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x4, 760, x1)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x4, 768, x1)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x4, 776, x1)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x4, 784, x1)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x4, 792, x1)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x4, 800, x1)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x4, 808, x1)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x4, 816, x1)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x4, 824, x1)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x4, 832, x1)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x4, 840, x1)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x4, 848, x1)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x4, 856, x1)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x4, 864, x1)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x4, 872, x1)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x4, 880, x1)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x4, 888, x1)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x4, 896, x1)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x4, 904, x1)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x4, 912, x1)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x4, 920, x1)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x4, 928, x1)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x4, 936, x1)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x4, 944, x1)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x4, 952, x1)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x4, 960, x1)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x4, 968, x1)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x4, 976, x1)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x4, 984, x1)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x4, 992, x1)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x4, 1000, x1)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x4, 1008, x1)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x4, 1016, x1)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x4, 1024, x1)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x4, 1032, x1)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x4, 1040, x1)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x4, 1048, x1)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x4, 1056, x1)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x4, 1064, x1)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x4, 1072, x1)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x4, 1080, x1)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x4, 1088, x1)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x4, 1096, x1)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x4, 1104, x1)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x4, 1112, x1)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x4, 1120, x1)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x4, 1128, x1)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x4, 1136, x1)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x4, 1144, x1)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x4, 1152, x1)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x4, 1160, x1)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x4, 1168, x1)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x4, 1176, x1)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x4, 1184, x1)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x4, 1192, x1)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x4, 1200, x1)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x4, 1208, x1)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x4, 1216, x1)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x4, 1224, x1)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x4, 1232, x1)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x4, 1240, x1)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x4, 1248, x1)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x4, 1256, x1)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x4, 1264, x1)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x4, 1272, x1)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x4, 1280, x1)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x4, 1288, x1)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x4, 1296, x1)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x4, 1304, x1)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x4, 1312, x1)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x4, 1320, x1)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x4, 1328, x1)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x4, 1336, x1)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x4, 1344, x1)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x4, 1352, x1)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x4, 1360, x1)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x4, 1368, x1)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x4, 1376, x1)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x4, 1384, x1)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x4, 1392, x1)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x4, 1400, x1)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x4, 1408, x1)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x4, 1416, x1)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x4, 1424, x1)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x4, 1432, x1)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x4, 1440, x1)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x4, 1448, x1)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x4, 1456, x1)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x4, 1464, x1)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x4, 1472, x1)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x4, 1480, x1)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x4, 1488, x1)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x4, 1496, x1)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x4, 1504, x1)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x4, 1512, x1)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x4, 1520, x1)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x4, 1528, x1)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x4, 1536, x1)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x4, 1544, x1)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x4, 1552, x1)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x4, 1560, x1)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x4, 1568, x1)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x4, 1576, x1)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x4, 1584, x1)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x4, 1592, x1)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x4, 1600, x1)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x4, 1608, x1)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x4, 1616, x1)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x4, 1624, x1)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x4, 1632, x1)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x4, 1640, x1)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x4, 1648, x1)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x4, 1656, x1)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x4, 1664, x1)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x4, 1672, x1)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x4, 1680, x1)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x4, 1688, x1)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x4, 1696, x1)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x4, 1704, x1)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x4, 1712, x1)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x4, 1720, x1)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x4, 1728, x1)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x4, 1736, x1)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x4, 1744, x1)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x4, 1752, x1)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x4, 1760, x1)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x4, 1768, x1)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x4, 1776, x1)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x4, 1784, x1)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x4, 1792, x1)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x4, 1800, x1)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x4, 1808, x1)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x4, 1816, x1)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x4, 1824, x1)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x4, 1832, x1)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x4, 1840, x1)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x4, 1848, x1)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x4, 1856, x1)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x4, 1864, x1)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x4, 1872, x1)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x4, 1880, x1)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x4, 1888, x1)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x4, 1896, x1)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x4, 1904, x1)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x4, 1912, x1)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x4, 1920, x1)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x4, 1928, x1)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x4, 1936, x1)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x4, 1944, x1)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x4, 1952, x1)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x4, 1960, x1)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x4, 1968, x1)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x4, 1976, x1)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x4, 1984, x1)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x4, 1992, x1)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x4, 2000, x1)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x4, 2008, x1)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x4, 2016, x1)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x4, 2024, x1)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x4, 2032, x1)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x4, 2040, x1)
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x4, 0, x1)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x4, 8, x1)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x4, 16, x1)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x4, 24, x1)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x4, 32, x1)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x4, 40, x1)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x4, 48, x1)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x4, 56, x1)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x4, 64, x1)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x4, 72, x1)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x4, 80, x1)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x4, 88, x1)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x4, 96, x1)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x4, 104, x1)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x4, 112, x1)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x4, 120, x1)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x4, 128, x1)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x4, 136, x1)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x4, 144, x1)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x4, 152, x1)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x4, 160, x1)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x4, 168, x1)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x4, 176, x1)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x4, 184, x1)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x4, 192, x1)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x4, 200, x1)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x4, 208, x1)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x4, 216, x1)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x4, 224, x1)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x4, 232, x1)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x4, 240, x1)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x4, 248, x1)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x4, 256, x1)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x4, 264, x1)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x4, 272, x1)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x4, 280, x1)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x4, 288, x1)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x4, 296, x1)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x4, 304, x1)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x4, 312, x1)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x4, 320, x1)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x4, 328, x1)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x4, 336, x1)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x4, 344, x1)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x4, 352, x1)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x4, 360, x1)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x4, 368, x1)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x4, 376, x1)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x4, 384, x1)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x4, 392, x1)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x4, 400, x1)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x4, 408, x1)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x4, 416, x1)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x4, 424, x1)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x4, 432, x1)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x4, 440, x1)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x4, 448, x1)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x4, 456, x1)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x4, 464, x1)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x4, 472, x1)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x4, 480, x1)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x4, 488, x1)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x4, 496, x1)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x4, 504, x1)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x4, 512, x1)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x4, 520, x1)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x4, 528, x1)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x4, 536, x1)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x4, 544, x1)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x4, 552, x1)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x4, 560, x1)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x4, 568, x1)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x4, 576, x1)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x4, 584, x1)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x4, 592, x1)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x4, 600, x1)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x4, 608, x1)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x4, 616, x1)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x4, 624, x1)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x4, 632, x1)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x4, 640, x1)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x4, 648, x1)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x4, 656, x1)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x4, 664, x1)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x4, 672, x1)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x4, 680, x1)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x4, 688, x1)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x4, 696, x1)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x4, 704, x1)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x4, 712, x1)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x4, 720, x1)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x4, 728, x1)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x4, 736, x1)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x4, 744, x1)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x4, 752, x1)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x4, 760, x1)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x4, 768, x1)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x4, 776, x1)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x4, 784, x1)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x4, 792, x1)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x4, 800, x1)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x4, 808, x1)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x4, 816, x1)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x4, 824, x1)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x4, 832, x1)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x4, 840, x1)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x4, 848, x1)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x4, 856, x1)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x4, 864, x1)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x4, 872, x1)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x4, 880, x1)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x4, 888, x1)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x4, 896, x1)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x4, 904, x1)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x4, 912, x1)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x4, 920, x1)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x4, 928, x1)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x4, 936, x1)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x4, 944, x1)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x4, 952, x1)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x4, 960, x1)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x4, 968, x1)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x4, 976, x1)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x4, 984, x1)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x4, 992, x1)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x4, 1000, x1)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x4, 1008, x1)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x4, 1016, x1)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x4, 1024, x1)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x4, 1032, x1)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x4, 1040, x1)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x4, 1048, x1)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x4, 1056, x1)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x4, 1064, x1)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x4, 1072, x1)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x4, 1080, x1)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x4, 1088, x1)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x4, 1096, x1)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x4, 1104, x1)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x4, 1112, x1)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x4, 1120, x1)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x4, 1128, x1)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x4, 1136, x1)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x4, 1144, x1)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x4, 1152, x1)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x4, 1160, x1)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x4, 1168, x1)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x4, 1176, x1)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x4, 1184, x1)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x4, 1192, x1)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x4, 1200, x1)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x4, 1208, x1)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x4, 1216, x1)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x4, 1224, x1)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x4, 1232, x1)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x4, 1240, x1)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x4, 1248, x1)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x4, 1256, x1)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x4, 1264, x1)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x4, 1272, x1)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x4, 1280, x1)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x4, 1288, x1)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x4, 1296, x1)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x4, 1304, x1)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x4, 1312, x1)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x4, 1320, x1)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x4, 1328, x1)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x4, 1336, x1)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x4, 1344, x1)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x4, 1352, x1)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x4, 1360, x1)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x4, 1368, x1)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x4, 1376, x1)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x4, 1384, x1)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x4, 1392, x1)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x4, 1400, x1)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x4, 1408, x1)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x4, 1416, x1)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x4, 1424, x1)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x4, 1432, x1)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x4, 1440, x1)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x4, 1448, x1)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x4, 1456, x1)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x4, 1464, x1)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x4, 1472, x1)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x4, 1480, x1)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x4, 1488, x1)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x4, 1496, x1)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x4, 1504, x1)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x4, 1512, x1)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x4, 1520, x1)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x4, 1528, x1)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x4, 1536, x1)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x4, 1544, x1)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x4, 1552, x1)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x4, 1560, x1)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x4, 1568, x1)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x4, 1576, x1)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x4, 1584, x1)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x4, 1592, x1)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x4, 1600, x1)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x4, 1608, x1)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x4, 1616, x1)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x4, 1624, x1)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x4, 1632, x1)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x4, 1640, x1)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x4, 1648, x1)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x4, 1656, x1)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x4, 1664, x1)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x4, 1672, x1)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x4, 1680, x1)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x4, 1688, x1)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x4, 1696, x1)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x4, 1704, x1)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x4, 1712, x1)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x4, 1720, x1)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x4, 1728, x1)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x4, 1736, x1)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x4, 1744, x1)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x4, 1752, x1)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x4, 1760, x1)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x4, 1768, x1)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x4, 1776, x1)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x4, 1784, x1)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x4, 1792, x1)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x4, 1800, x1)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x4, 1808, x1)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x4, 1816, x1)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x4, 1824, x1)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x4, 1832, x1)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x4, 1840, x1)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x4, 1848, x1)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x4, 1856, x1)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x4, 1864, x1)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x4, 1872, x1)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x4, 1880, x1)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x4, 1888, x1)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x4, 1896, x1)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x4, 1904, x1)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x4, 1912, x1)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x4, 1920, x1)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x4, 1928, x1)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x4, 1936, x1)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x4, 1944, x1)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x4, 1952, x1)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x4, 1960, x1)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x4, 1968, x1)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x4, 1976, x1)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x4, 1984, x1)
+
+inst_522:
+// rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x4, 1992, x1)
+
+inst_523:
+// rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x4, 2000, x1)
+
+inst_524:
+// rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: packw ; op1:x10; op2:x11; dest:x12; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(packw, x12, x10, x11, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x4, 2008, x1)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x8_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_1:
+ .fill 17*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 252*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev.b-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev.b-01.S
new file mode 100644
index 000000000..ed52f53dc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev.b-01.S
@@ -0,0 +1,2161 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the grevi instruction of the RISC-V extension for the rev.b covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",rev.b)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",rev.b)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",rev.b)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",rev.b)
+
+RVTEST_SIGBASE( x6,signature_x6_1)
+
+inst_0:
+// rs1 != rd, rs1==x13, rd==x1, rs1_val == 0xFFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x13; dest:x1; op1val:0xffffffffffffffff;
+li x13, 0xffffffffffffffff
+grevi x1, x13, 7
+sw x1, 0(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x1, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x20, rd==x20, rs1_val == 0x0000000000000000
+// opcode: grevi ; op1:x20; dest:x20; op1val:0x0;
+li x20, 0x0
+grevi x20, x20, 7
+sw x20, 8(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x20, 0x0000000000000000)
+
+inst_2:
+// rs1==x28, rd==x7, rs1_val == 0x8000000000000000
+// opcode: grevi ; op1:x28; dest:x7; op1val:0x8000000000000000;
+li x28, 0x8000000000000000
+grevi x7, x28, 7
+sw x7, 16(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x7, 0x0000000000000000)
+
+inst_3:
+// rs1==x0, rd==x10, rs1_val == 0xC000000000000000
+// opcode: grevi ; op1:x0; dest:x10; op1val:0x0;
+li x0, 0x0
+grevi x10, x0, 7
+sw x10, 24(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x10, 0x0000000000000000)
+
+inst_4:
+// rs1==x2, rd==x26, rs1_val == 0xA000000000000000
+// opcode: grevi ; op1:x2; dest:x26; op1val:0xa000000000000000;
+li x2, 0xa000000000000000
+grevi x26, x2, 7
+sw x26, 32(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x26, 0x0000000000000000)
+
+inst_5:
+// rs1==x17, rd==x9, rs1_val == 0x9000000000000000
+// opcode: grevi ; op1:x17; dest:x9; op1val:0x9000000000000000;
+li x17, 0x9000000000000000
+grevi x9, x17, 7
+sw x9, 40(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x9, 0x0000000000000000)
+
+inst_6:
+// rs1==x7, rd==x11, rs1_val == 0x0800000000000000
+// opcode: grevi ; op1:x7; dest:x11; op1val:0x800000000000000;
+li x7, 0x800000000000000
+grevi x11, x7, 7
+sw x11, 48(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x11, 0x0000000000000000)
+
+inst_7:
+// rs1==x5, rd==x2, rs1_val == 0x2C00000000000000
+// opcode: grevi ; op1:x5; dest:x2; op1val:0x2c00000000000000;
+li x5, 0x2c00000000000000
+grevi x2, x5, 7
+sw x2, 56(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x2, 0x0000000000000000)
+
+inst_8:
+// rs1==x9, rd==x23, rs1_val == 0x9600000000000000
+// opcode: grevi ; op1:x9; dest:x23; op1val:0x9600000000000000;
+li x9, 0x9600000000000000
+grevi x23, x9, 7
+sw x23, 64(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x23, 0x0000000000000000)
+
+inst_9:
+// rs1==x31, rd==x8, rs1_val == 0x0100000000000000
+// opcode: grevi ; op1:x31; dest:x8; op1val:0x100000000000000;
+li x31, 0x100000000000000
+grevi x8, x31, 7
+sw x8, 72(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x8, 0x0000000000000000)
+
+inst_10:
+// rs1==x11, rd==x30, rs1_val == 0x9480000000000000
+// opcode: grevi ; op1:x11; dest:x30; op1val:0x9480000000000000;
+li x11, 0x9480000000000000
+grevi x30, x11, 7
+sw x30, 80(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x30, 0x0000000000000000)
+
+inst_11:
+// rs1==x15, rd==x24, rs1_val == 0xB5C0000000000000
+// opcode: grevi ; op1:x15; dest:x24; op1val:0xb5c0000000000000;
+li x15, 0xb5c0000000000000
+grevi x24, x15, 7
+sw x24, 88(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x24, 0x0000000000000000)
+
+inst_12:
+// rs1==x24, rd==x0, rs1_val == 0x07A0000000000000
+// opcode: grevi ; op1:x24; dest:x0; op1val:0x7a0000000000000;
+li x24, 0x7a0000000000000
+grevi x0, x24, 7
+sw x0, 96(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x0, 0x0000000000000000)
+
+inst_13:
+// rs1==x16, rd==x15, rs1_val == 0x77B0000000000000
+// opcode: grevi ; op1:x16; dest:x15; op1val:0x77b0000000000000;
+li x16, 0x77b0000000000000
+grevi x15, x16, 7
+sw x15, 104(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x15, 0x0000000000000000)
+
+inst_14:
+// rs1==x26, rd==x19, rs1_val == 0xF128000000000000
+// opcode: grevi ; op1:x26; dest:x19; op1val:0xf128000000000000;
+li x26, 0xf128000000000000
+grevi x19, x26, 7
+sw x19, 112(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x19, 0x0000000000000000)
+
+inst_15:
+// rs1==x18, rd==x13, rs1_val == 0xC0E4000000000000
+// opcode: grevi ; op1:x18; dest:x13; op1val:0xc0e4000000000000;
+li x18, 0xc0e4000000000000
+grevi x13, x18, 7
+sw x13, 120(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x13, 0x0000000000000000)
+
+inst_16:
+// rs1==x4, rd==x16, rs1_val == 0xDC52000000000000
+// opcode: grevi ; op1:x4; dest:x16; op1val:0xdc52000000000000;
+li x4, 0xdc52000000000000
+grevi x16, x4, 7
+sw x16, 128(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x16, 0x0000000000000000)
+
+inst_17:
+// rs1==x29, rd==x3, rs1_val == 0x0B3D000000000000
+// opcode: grevi ; op1:x29; dest:x3; op1val:0xb3d000000000000;
+li x29, 0xb3d000000000000
+grevi x3, x29, 7
+sw x3, 136(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x3, 0x0000000000000000)
+
+inst_18:
+// rs1==x14, rd==x22, rs1_val == 0xB154800000000000
+// opcode: grevi ; op1:x14; dest:x22; op1val:0xb154800000000000;
+li x14, 0xb154800000000000
+grevi x22, x14, 7
+sw x22, 144(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x22, 0x0000000000000000)
+
+inst_19:
+// rs1==x1, rd==x4, rs1_val == 0x2609C00000000000
+// opcode: grevi ; op1:x1; dest:x4; op1val:0x2609c00000000000;
+li x1, 0x2609c00000000000
+grevi x4, x1, 7
+sw x4, 152(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x4, 0x0000000000000000)
+
+inst_20:
+// rs1==x19, rd==x14, rs1_val == 0xCF5BE00000000000
+// opcode: grevi ; op1:x19; dest:x14; op1val:0xcf5be00000000000;
+li x19, 0xcf5be00000000000
+grevi x14, x19, 7
+sw x14, 160(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x14, 0x0000000000000000)
+
+inst_21:
+// rs1==x10, rd==x12, rs1_val == 0x3ED0700000000000
+// opcode: grevi ; op1:x10; dest:x12; op1val:0x3ed0700000000000;
+li x10, 0x3ed0700000000000
+grevi x12, x10, 7
+sw x12, 168(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x21, x12, 0x0000000000000000)
+
+inst_22:
+// rs1==x22, rd==x31, rs1_val == 0x6BDED80000000000
+// opcode: grevi ; op1:x22; dest:x31; op1val:0x6bded80000000000;
+li x22, 0x6bded80000000000
+grevi x31, x22, 7
+sw x31, 176(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x31, 0x0000000000000000)
+
+inst_23:
+// rs1==x3, rd==x29, rs1_val == 0x4637640000000000
+// opcode: grevi ; op1:x3; dest:x29; op1val:0x4637640000000000;
+li x3, 0x4637640000000000
+grevi x29, x3, 7
+sw x29, 184(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x29, 0x0000000000000000)
+
+inst_24:
+// rs1==x8, rd==x21, rs1_val == 0x7239560000000000
+// opcode: grevi ; op1:x8; dest:x21; op1val:0x7239560000000000;
+li x8, 0x7239560000000000
+grevi x21, x8, 7
+sw x21, 192(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x21, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_25:
+// rs1==x21, rd==x6, rs1_val == 0x8864C10000000000
+// opcode: grevi ; op1:x21; dest:x6; op1val:0x8864c10000000000;
+li x21, 0x8864c10000000000
+grevi x6, x21, 7
+sw x6, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x6, 0x0000000000000000)
+
+inst_26:
+// rs1==x30, rd==x27, rs1_val == 0x68C7D88000000000
+// opcode: grevi ; op1:x30; dest:x27; op1val:0x68c7d88000000000;
+li x30, 0x68c7d88000000000
+grevi x27, x30, 7
+sw x27, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x27, 0x0000000000000000)
+
+inst_27:
+// rs1==x6, rd==x18, rs1_val == 0xF52BF0C000000000
+// opcode: grevi ; op1:x6; dest:x18; op1val:0xf52bf0c000000000;
+li x6, 0xf52bf0c000000000
+grevi x18, x6, 7
+sw x18, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x18, 0x0000000000000000)
+
+inst_28:
+// rs1==x23, rd==x17, rs1_val == 0xA4AFB46000000000
+// opcode: grevi ; op1:x23; dest:x17; op1val:0xa4afb46000000000;
+li x23, 0xa4afb46000000000
+grevi x17, x23, 7
+sw x17, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x17, 0x0000000000000000)
+
+inst_29:
+// rs1==x27, rd==x5, rs1_val == 0x263BEA5000000000
+// opcode: grevi ; op1:x27; dest:x5; op1val:0x263bea5000000000;
+li x27, 0x263bea5000000000
+grevi x5, x27, 7
+sw x5, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x5, 0x0000000000000000)
+
+inst_30:
+// rs1==x12, rd==x28, rs1_val == 0x4EE5BCE800000000
+// opcode: grevi ; op1:x12; dest:x28; op1val:0x4ee5bce800000000;
+li x12, 0x4ee5bce800000000
+grevi x28, x12, 7
+sw x28, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x28, 0x0000000000000000)
+
+inst_31:
+// rs1==x25, rs1_val == 0x7C5DE60C00000000
+// opcode: grevi ; op1:x25; dest:x23; op1val:0x7c5de60c00000000;
+li x25, 0x7c5de60c00000000
+grevi x23, x25, 7
+sw x23, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x23, 0x0000000000000000)
+
+inst_32:
+// rd==x25, rs1_val == 0xA005556A00000000
+// opcode: grevi ; op1:x21; dest:x25; op1val:0xa005556a00000000;
+li x21, 0xa005556a00000000
+grevi x25, x21, 7
+sw x25, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x25, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 0x2293EA2900000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2293ea2900000000;
+li x10, 0x2293ea2900000000
+grevi x11, x10, 7
+sw x11, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 0x362BA25E80000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x362ba25e80000000;
+li x10, 0x362ba25e80000000
+grevi x11, x10, 7
+sw x11, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 0x4733A71E40000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4733a71e40000000;
+li x10, 0x4733a71e40000000
+grevi x11, x10, 7
+sw x11, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 0x1E4B791A20000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1e4b791a20000000;
+li x10, 0x1e4b791a20000000
+grevi x11, x10, 7
+sw x11, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 0x5FCB4D02D0000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5fcb4d02d0000000;
+li x10, 0x5fcb4d02d0000000
+grevi x11, x10, 7
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 0x98BA52AA88000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x98ba52aa88000000;
+li x10, 0x98ba52aa88000000
+grevi x11, x10, 7
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 0xEE0923E014000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xee0923e014000000;
+li x10, 0xee0923e014000000
+grevi x11, x10, 7
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 0x4BD47F4A3A000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4bd47f4a3a000000;
+li x10, 0x4bd47f4a3a000000
+grevi x11, x10, 7
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 0xB30F8F95F1000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb30f8f95f1000000;
+li x10, 0xb30f8f95f1000000
+grevi x11, x10, 7
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 0x398261A02E800000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x398261a02e800000;
+li x10, 0x398261a02e800000
+grevi x11, x10, 7
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 0x0AF5E9EFD7C00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaf5e9efd7c00000;
+li x10, 0xaf5e9efd7c00000
+grevi x11, x10, 7
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 0x4BCCF299A5E00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4bccf299a5e00000;
+li x10, 0x4bccf299a5e00000
+grevi x11, x10, 7
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 0xAFF56459AFF00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaff56459aff00000;
+li x10, 0xaff56459aff00000
+grevi x11, x10, 7
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 0xE07D7EDD48F80000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe07d7edd48f80000;
+li x10, 0xe07d7edd48f80000
+grevi x11, x10, 7
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 0x26604C6677840000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x26604c6677840000;
+li x10, 0x26604c6677840000
+grevi x11, x10, 7
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 0x5F67A33C644A0000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5f67a33c644a0000;
+li x10, 0x5f67a33c644a0000
+grevi x11, x10, 7
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 0xCC710F0F1C6B0000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xcc710f0f1c6b0000;
+li x10, 0xcc710f0f1c6b0000
+grevi x11, x10, 7
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 0x86BA73F6EC348000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x86ba73f6ec348000;
+li x10, 0x86ba73f6ec348000
+grevi x11, x10, 7
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 0x51EACA62967E4000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x51eaca62967e4000;
+li x10, 0x51eaca62967e4000
+grevi x11, x10, 7
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 0xD52F0E14EDC96000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd52f0e14edc96000;
+li x10, 0xd52f0e14edc96000
+grevi x11, x10, 7
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 0x0DBD625329043000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdbd625329043000;
+li x10, 0xdbd625329043000
+grevi x11, x10, 7
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 0x6DCF0D4A62B5D800
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6dcf0d4a62b5d800;
+li x10, 0x6dcf0d4a62b5d800
+grevi x11, x10, 7
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 0xB4B31E3B962C1C00
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb4b31e3b962c1c00;
+li x10, 0xb4b31e3b962c1c00
+grevi x11, x10, 7
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 0x8DCD6133F22D6600
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8dcd6133f22d6600;
+li x10, 0x8dcd6133f22d6600
+grevi x11, x10, 7
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 0x45AF1CB0CAAE1D00
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x45af1cb0caae1d00;
+li x10, 0x45af1cb0caae1d00
+grevi x11, x10, 7
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 0xE86EB367B97C2C80
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe86eb367b97c2c80;
+li x10, 0xe86eb367b97c2c80
+grevi x11, x10, 7
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 0x2D9BE3118A013740
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2d9be3118a013740;
+li x10, 0x2d9be3118a013740
+grevi x11, x10, 7
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 0x70F53C4BFDFD2260
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x70f53c4bfdfd2260;
+li x10, 0x70f53c4bfdfd2260
+grevi x11, x10, 7
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 0xF22A27B02C7BFF30
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf22a27b02c7bff30;
+li x10, 0xf22a27b02c7bff30
+grevi x11, x10, 7
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 0x0D99CFF9240BA738
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd99cff9240ba738;
+li x10, 0xd99cff9240ba738
+grevi x11, x10, 7
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 0x662E236EAA6781EC
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x662e236eaa6781ec;
+li x10, 0x662e236eaa6781ec
+grevi x11, x10, 7
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 0x0EEA3A9950A03C5A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xeea3a9950a03c5a;
+li x10, 0xeea3a9950a03c5a
+grevi x11, x10, 7
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 0x44DCDA6A797D76DF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x44dcda6a797d76df;
+li x10, 0x44dcda6a797d76df
+grevi x11, x10, 7
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 0x39935C590B0FB71C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x39935c590b0fb71c;
+li x10, 0x39935c590b0fb71c
+grevi x11, x10, 7
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 0xDE14BFF2EED7A249
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xde14bff2eed7a249;
+li x10, 0xde14bff2eed7a249
+grevi x11, x10, 7
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 0x6C9FEE24B808A67B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c9fee24b808a67b;
+li x10, 0x6c9fee24b808a67b
+grevi x11, x10, 7
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 0x008EEF6A63C2A497
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8eef6a63c2a497;
+li x10, 0x8eef6a63c2a497
+grevi x11, x10, 7
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 0x76B1FD3DF423752F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x76b1fd3df423752f;
+li x10, 0x76b1fd3df423752f
+grevi x11, x10, 7
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 0xA10BC6CCA6B7201F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa10bc6cca6b7201f;
+li x10, 0xa10bc6cca6b7201f
+grevi x11, x10, 7
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 0x6E2D704512C233BF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6e2d704512c233bf;
+li x10, 0x6e2d704512c233bf
+grevi x11, x10, 7
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 0x218FDC135DCF017F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x218fdc135dcf017f;
+li x10, 0x218fdc135dcf017f
+grevi x11, x10, 7
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 0xB3988B5231C8B6FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb3988b5231c8b6ff;
+li x10, 0xb3988b5231c8b6ff
+grevi x11, x10, 7
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 0xE2F99B2A3C5569FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe2f99b2a3c5569ff;
+li x10, 0xe2f99b2a3c5569ff
+grevi x11, x10, 7
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 0x90BB34803C4643FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x90bb34803c4643ff;
+li x10, 0x90bb34803c4643ff
+grevi x11, x10, 7
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 0x8CCE89147DA8D7FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8cce89147da8d7ff;
+li x10, 0x8cce89147da8d7ff
+grevi x11, x10, 7
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 0x93C38B33217ACFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x93c38b33217acfff;
+li x10, 0x93c38b33217acfff
+grevi x11, x10, 7
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 0xE3A707D665505FFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe3a707d665505fff;
+li x10, 0xe3a707d665505fff
+grevi x11, x10, 7
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 0x47B7097B9B01BFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x47b7097b9b01bfff;
+li x10, 0x47b7097b9b01bfff
+grevi x11, x10, 7
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 0x4302DA54759F7FFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4302da54759f7fff;
+li x10, 0x4302da54759f7fff
+grevi x11, x10, 7
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 0x5F013C8240D8FFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5f013c8240d8ffff;
+li x10, 0x5f013c8240d8ffff
+grevi x11, x10, 7
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 0x5B33199985CDFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5b33199985cdffff;
+li x10, 0x5b33199985cdffff
+grevi x11, x10, 7
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 0x2DEDF12233DBFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2dedf12233dbffff;
+li x10, 0x2dedf12233dbffff
+grevi x11, x10, 7
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 0x4B1634E12D37FFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4b1634e12d37ffff;
+li x10, 0x4b1634e12d37ffff
+grevi x11, x10, 7
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0x8935B826718FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8935b826718fffff;
+li x10, 0x8935b826718fffff
+grevi x11, x10, 7
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0xBA9C678AAD5FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xba9c678aad5fffff;
+li x10, 0xba9c678aad5fffff
+grevi x11, x10, 7
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0x70BCB8E322BFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x70bcb8e322bfffff;
+li x10, 0x70bcb8e322bfffff
+grevi x11, x10, 7
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0xFCB627AFBF7FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfcb627afbf7fffff;
+li x10, 0xfcb627afbf7fffff
+grevi x11, x10, 7
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0x9C76DF528CFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x9c76df528cffffff;
+li x10, 0x9c76df528cffffff
+grevi x11, x10, 7
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0x72C8DD98B1FFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x72c8dd98b1ffffff;
+li x10, 0x72c8dd98b1ffffff
+grevi x11, x10, 7
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x434CBF26FBFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x434cbf26fbffffff;
+li x10, 0x434cbf26fbffffff
+grevi x11, x10, 7
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0xA23FB787C7FFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa23fb787c7ffffff;
+li x10, 0xa23fb787c7ffffff
+grevi x11, x10, 7
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x983CA1BECFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x983ca1becfffffff;
+li x10, 0x983ca1becfffffff
+grevi x11, x10, 7
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0x589218431FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x589218431fffffff;
+li x10, 0x589218431fffffff
+grevi x11, x10, 7
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xA7BE99AE3FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa7be99ae3fffffff;
+li x10, 0xa7be99ae3fffffff
+grevi x11, x10, 7
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xA37E37287FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa37e37287fffffff;
+li x10, 0xa37e37287fffffff
+grevi x11, x10, 7
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xE37D3738FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe37d3738ffffffff;
+li x10, 0xe37d3738ffffffff
+grevi x11, x10, 7
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xABB4DA1DFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xabb4da1dffffffff;
+li x10, 0xabb4da1dffffffff
+grevi x11, x10, 7
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0xFB3E7193FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfb3e7193ffffffff;
+li x10, 0xfb3e7193ffffffff
+grevi x11, x10, 7
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0x8CB950A7FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8cb950a7ffffffff;
+li x10, 0x8cb950a7ffffffff
+grevi x11, x10, 7
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0xE5F31BEFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe5f31befffffffff;
+li x10, 0xe5f31befffffffff
+grevi x11, x10, 7
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x3BE93F9FFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3be93f9fffffffff;
+li x10, 0x3be93f9fffffffff
+grevi x11, x10, 7
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0x5B1196BFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5b1196bfffffffff;
+li x10, 0x5b1196bfffffffff
+grevi x11, x10, 7
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 0xE084097FFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe084097fffffffff;
+li x10, 0xe084097fffffffff
+grevi x11, x10, 7
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 0x23B6BCFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x23b6bcffffffffff;
+li x10, 0x23b6bcffffffffff
+grevi x11, x10, 7
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 0x6FCFD5FFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6fcfd5ffffffffff;
+li x10, 0x6fcfd5ffffffffff
+grevi x11, x10, 7
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 0x73790BFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x73790bffffffffff;
+li x10, 0x73790bffffffffff
+grevi x11, x10, 7
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 0x432FF7FFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x432ff7ffffffffff;
+li x10, 0x432ff7ffffffffff
+grevi x11, x10, 7
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 0xE36B0FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe36b0fffffffffff;
+li x10, 0xe36b0fffffffffff
+grevi x11, x10, 7
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 0xCB4ADFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xcb4adfffffffffff;
+li x10, 0xcb4adfffffffffff
+grevi x11, x10, 7
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 0x15BF3FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x15bf3fffffffffff;
+li x10, 0x15bf3fffffffffff
+grevi x11, x10, 7
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 0xD59A7FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd59a7fffffffffff;
+li x10, 0xd59a7fffffffffff
+grevi x11, x10, 7
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 0xFE32FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfe32ffffffffffff;
+li x10, 0xfe32ffffffffffff
+grevi x11, x10, 7
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 0xFF7DFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff7dffffffffffff;
+li x10, 0xff7dffffffffffff
+grevi x11, x10, 7
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 0xAF23FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaf23ffffffffffff;
+li x10, 0xaf23ffffffffffff
+grevi x11, x10, 7
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 0x2057FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2057ffffffffffff;
+li x10, 0x2057ffffffffffff
+grevi x11, x10, 7
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 0x07AFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7afffffffffffff;
+li x10, 0x7afffffffffffff
+grevi x11, x10, 7
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 0xBE9FFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xbe9fffffffffffff;
+li x10, 0xbe9fffffffffffff
+grevi x11, x10, 7
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 0xD8BFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd8bfffffffffffff;
+li x10, 0xd8bfffffffffffff
+grevi x11, x10, 7
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 0x127FFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x127fffffffffffff;
+li x10, 0x127fffffffffffff
+grevi x11, x10, 7
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 0x2EFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2effffffffffffff;
+li x10, 0x2effffffffffffff
+grevi x11, x10, 7
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 0xA5FFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa5ffffffffffffff;
+li x10, 0xa5ffffffffffffff
+grevi x11, x10, 7
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 0xDBFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdbffffffffffffff;
+li x10, 0xdbffffffffffffff
+grevi x11, x10, 7
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 0xA7FFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa7ffffffffffffff;
+li x10, 0xa7ffffffffffffff
+grevi x11, x10, 7
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 0xAFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xafffffffffffffff;
+li x10, 0xafffffffffffffff
+grevi x11, x10, 7
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 0xDFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdfffffffffffffff;
+li x10, 0xdfffffffffffffff
+grevi x11, x10, 7
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 0xBFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xbfffffffffffffff;
+li x10, 0xbfffffffffffffff
+grevi x11, x10, 7
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 0x7FFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7fffffffffffffff;
+li x10, 0x7fffffffffffffff
+grevi x11, x10, 7
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 0xA274EA181E34B3F2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa274ea181e34b3f2;
+li x10, 0xa274ea181e34b3f2
+grevi x11, x10, 7
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 0x6C3FBF4DC20EF165
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c3fbf4dc20ef165;
+li x10, 0x6c3fbf4dc20ef165
+grevi x11, x10, 7
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 0x28F918D8F6CDB2F9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x28f918d8f6cdb2f9;
+li x10, 0x28f918d8f6cdb2f9
+grevi x11, x10, 7
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 0x13E0D681552454F2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x13e0d681552454f2;
+li x10, 0x13e0d681552454f2
+grevi x11, x10, 7
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 0x0FAB6F3E164F1514
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfab6f3e164f1514;
+li x10, 0xfab6f3e164f1514
+grevi x11, x10, 7
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 0x063E9BED45100359
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x63e9bed45100359;
+li x10, 0x63e9bed45100359
+grevi x11, x10, 7
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 0x02C6D8F2C74C7CD0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2c6d8f2c74c7cd0;
+li x10, 0x2c6d8f2c74c7cd0
+grevi x11, x10, 7
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 0x01D03FDDA123F502
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1d03fdda123f502;
+li x10, 0x1d03fdda123f502
+grevi x11, x10, 7
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 0x00F5380E12B2A415
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf5380e12b2a415;
+li x10, 0xf5380e12b2a415
+grevi x11, x10, 7
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 0x0077730F65BD9ACC
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x77730f65bd9acc;
+li x10, 0x77730f65bd9acc
+grevi x11, x10, 7
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 0x003A6A1DFAF8CDAA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3a6a1dfaf8cdaa;
+li x10, 0x3a6a1dfaf8cdaa
+grevi x11, x10, 7
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 0x001E5B4578511609
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1e5b4578511609;
+li x10, 0x1e5b4578511609
+grevi x11, x10, 7
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 0x000D0372E90794E0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd0372e90794e0;
+li x10, 0xd0372e90794e0
+grevi x11, x10, 7
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 0x0006A24135B00A55
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6a24135b00a55;
+li x10, 0x6a24135b00a55
+grevi x11, x10, 7
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 0x00020BDF0023B683
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x20bdf0023b683;
+li x10, 0x20bdf0023b683
+grevi x11, x10, 7
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 0x000170EED8E94B16
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x170eed8e94b16;
+li x10, 0x170eed8e94b16
+grevi x11, x10, 7
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 0x0000EF05F542441E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xef05f542441e;
+li x10, 0xef05f542441e
+grevi x11, x10, 7
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 0x00004AAA62F28D1B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4aaa62f28d1b;
+li x10, 0x4aaa62f28d1b
+grevi x11, x10, 7
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 0x00003CB3D8B9B45D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3cb3d8b9b45d;
+li x10, 0x3cb3d8b9b45d
+grevi x11, x10, 7
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 0x00001BE466809A12
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1be466809a12;
+li x10, 0x1be466809a12
+grevi x11, x10, 7
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_150:
+// rs1_val == 0x0000092EC42B7171
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x92ec42b7171;
+li x10, 0x92ec42b7171
+grevi x11, x10, 7
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_151:
+// rs1_val == 0x0000074F11FA2AC1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x74f11fa2ac1;
+li x10, 0x74f11fa2ac1
+grevi x11, x10, 7
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_152:
+// rs1_val == 0x0000025A49FE85B1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x25a49fe85b1;
+li x10, 0x25a49fe85b1
+grevi x11, x10, 7
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_153:
+// rs1_val == 0x0000017A3ACB6267
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x17a3acb6267;
+li x10, 0x17a3acb6267
+grevi x11, x10, 7
+sw x11, 1024(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_154:
+// rs1_val == 0x000000C250B601FD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xc250b601fd;
+li x10, 0xc250b601fd
+grevi x11, x10, 7
+sw x11, 1032(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_155:
+// rs1_val == 0x00000067B53302FD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x67b53302fd;
+li x10, 0x67b53302fd
+grevi x11, x10, 7
+sw x11, 1040(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_156:
+// rs1_val == 0x0000002AD7185DDB
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2ad7185ddb;
+li x10, 0x2ad7185ddb
+grevi x11, x10, 7
+sw x11, 1048(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_157:
+// rs1_val == 0x0000001FFEE5A5B3
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1ffee5a5b3;
+li x10, 0x1ffee5a5b3
+grevi x11, x10, 7
+sw x11, 1056(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_158:
+// rs1_val == 0x0000000AFF66658A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaff66658a;
+li x10, 0xaff66658a
+grevi x11, x10, 7
+sw x11, 1064(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_159:
+// rs1_val == 0x000000064735AF1D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x64735af1d;
+li x10, 0x64735af1d
+grevi x11, x10, 7
+sw x11, 1072(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_160:
+// rs1_val == 0x0000000275139238
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x275139238;
+li x10, 0x275139238
+grevi x11, x10, 7
+sw x11, 1080(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_161:
+// rs1_val == 0x00000001A9964AF0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1a9964af0;
+li x10, 0x1a9964af0
+grevi x11, x10, 7
+sw x11, 1088(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_162:
+// rs1_val == 0x00000000FFF1222A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfff1222a;
+li x10, 0xfff1222a
+grevi x11, x10, 7
+sw x11, 1096(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_163:
+// rs1_val == 0x0000000063EA284E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x63ea284e;
+li x10, 0x63ea284e
+grevi x11, x10, 7
+sw x11, 1104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_164:
+// rs1_val == 0x0000000024E55161
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x24e55161;
+li x10, 0x24e55161
+grevi x11, x10, 7
+sw x11, 1112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_165:
+// rs1_val == 0x0000000017A94DEE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x17a94dee;
+li x10, 0x17a94dee
+grevi x11, x10, 7
+sw x11, 1120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_166:
+// rs1_val == 0x0000000008C6A5B9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8c6a5b9;
+li x10, 0x8c6a5b9
+grevi x11, x10, 7
+sw x11, 1128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_167:
+// rs1_val == 0x0000000006C468AF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c468af;
+li x10, 0x6c468af
+grevi x11, x10, 7
+sw x11, 1136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_168:
+// rs1_val == 0x0000000003B37E15
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3b37e15;
+li x10, 0x3b37e15
+grevi x11, x10, 7
+sw x11, 1144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_169:
+// rs1_val == 0x0000000001EFFA39
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1effa39;
+li x10, 0x1effa39
+grevi x11, x10, 7
+sw x11, 1152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_170:
+// rs1_val == 0x0000000000B17D0C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb17d0c;
+li x10, 0xb17d0c
+grevi x11, x10, 7
+sw x11, 1160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_171:
+// rs1_val == 0x00000000007EBDD4
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7ebdd4;
+li x10, 0x7ebdd4
+grevi x11, x10, 7
+sw x11, 1168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_172:
+// rs1_val == 0x000000000023FEB7
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x23feb7;
+li x10, 0x23feb7
+grevi x11, x10, 7
+sw x11, 1176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_173:
+// rs1_val == 0x0000000000171685
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x171685;
+li x10, 0x171685
+grevi x11, x10, 7
+sw x11, 1184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_174:
+// rs1_val == 0x0000000000098868
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x98868;
+li x10, 0x98868
+grevi x11, x10, 7
+sw x11, 1192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_175:
+// rs1_val == 0x000000000005847F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5847f;
+li x10, 0x5847f
+grevi x11, x10, 7
+sw x11, 1200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_176:
+// rs1_val == 0x0000000000037797
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x37797;
+li x10, 0x37797
+grevi x11, x10, 7
+sw x11, 1208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_177:
+// rs1_val == 0x0000000000015DB9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x15db9;
+li x10, 0x15db9
+grevi x11, x10, 7
+sw x11, 1216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_178:
+// rs1_val == 0x0000000000008735
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8735;
+li x10, 0x8735
+grevi x11, x10, 7
+sw x11, 1224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_179:
+// rs1_val == 0x0000000000006B68
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6b68;
+li x10, 0x6b68
+grevi x11, x10, 7
+sw x11, 1232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_180:
+// rs1_val == 0x0000000000002F28
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2f28;
+li x10, 0x2f28
+grevi x11, x10, 7
+sw x11, 1240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_181:
+// rs1_val == 0x0000000000001D40
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1d40;
+li x10, 0x1d40
+grevi x11, x10, 7
+sw x11, 1248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_182:
+// rs1_val == 0x0000000000000F26
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf26;
+li x10, 0xf26
+grevi x11, x10, 7
+sw x11, 1256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_183:
+// rs1_val == 0x0000000000000482
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x482;
+li x10, 0x482
+grevi x11, x10, 7
+sw x11, 1264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_184:
+// rs1_val == 0x0000000000000394
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x394;
+li x10, 0x394
+grevi x11, x10, 7
+sw x11, 1272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_185:
+// rs1_val == 0x0000000000000154
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x154;
+li x10, 0x154
+grevi x11, x10, 7
+sw x11, 1280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_186:
+// rs1_val == 0x00000000000000FA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfa;
+li x10, 0xfa
+grevi x11, x10, 7
+sw x11, 1288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_187:
+// rs1_val == 0x0000000000000043
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x43;
+li x10, 0x43
+grevi x11, x10, 7
+sw x11, 1296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_188:
+// rs1_val == 0x0000000000000039
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x39;
+li x10, 0x39
+grevi x11, x10, 7
+sw x11, 1304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_189:
+// rs1_val == 0x0000000000000013
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x13;
+li x10, 0x13
+grevi x11, x10, 7
+sw x11, 1312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_190:
+// rs1_val == 0x000000000000000E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe;
+li x10, 0xe
+grevi x11, x10, 7
+sw x11, 1320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_191:
+// rs1_val == 0x0000000000000006
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6;
+li x10, 0x6
+grevi x11, x10, 7
+sw x11, 1328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_192:
+// rs1_val == 0x0000000000000002
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+grevi x11, x10, 7
+sw x11, 1336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_193:
+// rs1_val == 0x0000000000000001
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+grevi x11, x10, 7
+sw x11, 1344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_194:
+// rs1_val == 0x5D68F2012DAF94C2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5d68f2012daf94c2;
+li x10, 0x5d68f2012daf94c2
+grevi x11, x10, 7
+sw x11, 1352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_195:
+// rs1_val == 0x85986ADB9E044707
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x85986adb9e044707;
+li x10, 0x85986adb9e044707
+grevi x11, x10, 7
+sw x11, 1360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_196:
+// rs1_val == 0xC4BD48204652F62E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xc4bd48204652f62e;
+li x10, 0xc4bd48204652f62e
+grevi x11, x10, 7
+sw x11, 1368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_197:
+// rs1_val == 0xEE4839A13ED7E667
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xee4839a13ed7e667;
+li x10, 0xee4839a13ed7e667
+grevi x11, x10, 7
+sw x11, 1376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_198:
+// rs1_val == 0xF213516D6A013381
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf213516d6a013381;
+li x10, 0xf213516d6a013381
+grevi x11, x10, 7
+sw x11, 1384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_199:
+// rs1_val == 0xF871CFDE6EE84271
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf871cfde6ee84271;
+li x10, 0xf871cfde6ee84271
+grevi x11, x10, 7
+sw x11, 1392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_200:
+// rs1_val == 0xFD432A19F29C11AE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfd432a19f29c11ae;
+li x10, 0xfd432a19f29c11ae
+grevi x11, x10, 7
+sw x11, 1400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_201:
+// rs1_val == 0xFEE0888FCEB506F7
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfee0888fceb506f7;
+li x10, 0xfee0888fceb506f7
+grevi x11, x10, 7
+sw x11, 1408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_202:
+// rs1_val == 0xFF605EE62A96D06B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff605ee62a96d06b;
+li x10, 0xff605ee62a96d06b
+grevi x11, x10, 7
+sw x11, 1416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_203:
+// rs1_val == 0xFF89799918BB28EA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff89799918bb28ea;
+li x10, 0xff89799918bb28ea
+grevi x11, x10, 7
+sw x11, 1424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_204:
+// rs1_val == 0xFFCC6148C6880008
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffcc6148c6880008;
+li x10, 0xffcc6148c6880008
+grevi x11, x10, 7
+sw x11, 1432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_205:
+// rs1_val == 0xFFEB5EA11CE80B13
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffeb5ea11ce80b13;
+li x10, 0xffeb5ea11ce80b13
+grevi x11, x10, 7
+sw x11, 1440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_206:
+// rs1_val == 0xFFF039F699EF1858
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfff039f699ef1858;
+li x10, 0xfff039f699ef1858
+grevi x11, x10, 7
+sw x11, 1448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_207:
+// rs1_val == 0xFFFBEA615FC9EBA5
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffbea615fc9eba5;
+li x10, 0xfffbea615fc9eba5
+grevi x11, x10, 7
+sw x11, 1456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_208:
+// rs1_val == 0xFFFC8D619136580C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffc8d619136580c;
+li x10, 0xfffc8d619136580c
+grevi x11, x10, 7
+sw x11, 1464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_209:
+// rs1_val == 0xFFFE46462651F638
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffe46462651f638;
+li x10, 0xfffe46462651f638
+grevi x11, x10, 7
+sw x11, 1472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_210:
+// rs1_val == 0xFFFF1C79DAE98555
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffff1c79dae98555;
+li x10, 0xffff1c79dae98555
+grevi x11, x10, 7
+sw x11, 1480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_211:
+// rs1_val == 0xFFFF8E6F889263CF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffff8e6f889263cf;
+li x10, 0xffff8e6f889263cf
+grevi x11, x10, 7
+sw x11, 1488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_212:
+// rs1_val == 0xFFFFDEE2A86B8A6F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffdee2a86b8a6f;
+li x10, 0xffffdee2a86b8a6f
+grevi x11, x10, 7
+sw x11, 1496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_213:
+// rs1_val == 0xFFFFE2AFD167533B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffe2afd167533b;
+li x10, 0xffffe2afd167533b
+grevi x11, x10, 7
+sw x11, 1504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_214:
+// rs1_val == 0xFFFFF1A07F216823
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffff1a07f216823;
+li x10, 0xfffff1a07f216823
+grevi x11, x10, 7
+sw x11, 1512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_215:
+// rs1_val == 0xFFFFF9090973E89D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffff9090973e89d;
+li x10, 0xfffff9090973e89d
+grevi x11, x10, 7
+sw x11, 1520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_216:
+// rs1_val == 0xFFFFFC3769B1DCC0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffc3769b1dcc0;
+li x10, 0xfffffc3769b1dcc0
+grevi x11, x10, 7
+sw x11, 1528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_217:
+// rs1_val == 0xFFFFFEB8396BA83B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffeb8396ba83b;
+li x10, 0xfffffeb8396ba83b
+grevi x11, x10, 7
+sw x11, 1536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_218:
+// rs1_val == 0xFFFFFF4F280B11FE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffff4f280b11fe;
+li x10, 0xffffff4f280b11fe
+grevi x11, x10, 7
+sw x11, 1544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_219:
+// rs1_val == 0xFFFFFF85D814D576
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffff85d814d576;
+li x10, 0xffffff85d814d576
+grevi x11, x10, 7
+sw x11, 1552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_220:
+// rs1_val == 0xFFFFFFCC95A4D258
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffcc95a4d258;
+li x10, 0xffffffcc95a4d258
+grevi x11, x10, 7
+sw x11, 1560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_221:
+// rs1_val == 0xFFFFFFE610A37559
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffe610a37559;
+li x10, 0xffffffe610a37559
+grevi x11, x10, 7
+sw x11, 1568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_222:
+// rs1_val == 0xFFFFFFF66F9FB998
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffff66f9fb998;
+li x10, 0xfffffff66f9fb998
+grevi x11, x10, 7
+sw x11, 1576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_223:
+// rs1_val == 0xFFFFFFFB8C8A18B3
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffb8c8a18b3;
+li x10, 0xfffffffb8c8a18b3
+grevi x11, x10, 7
+sw x11, 1584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_224:
+// rs1_val == 0xFFFFFFFC507A2561
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffc507a2561;
+li x10, 0xfffffffc507a2561
+grevi x11, x10, 7
+sw x11, 1592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_225:
+// rs1_val == 0xFFFFFFFEE5F0307F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffee5f0307f;
+li x10, 0xfffffffee5f0307f
+grevi x11, x10, 7
+sw x11, 1600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_226:
+// rs1_val == 0xFFFFFFFF5DBBB7CF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffff5dbbb7cf;
+li x10, 0xffffffff5dbbb7cf
+grevi x11, x10, 7
+sw x11, 1608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_227:
+// rs1_val == 0xFFFFFFFF8D884510
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffff8d884510;
+li x10, 0xffffffff8d884510
+grevi x11, x10, 7
+sw x11, 1616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_228:
+// rs1_val == 0xFFFFFFFFD0E58651
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffd0e58651;
+li x10, 0xffffffffd0e58651
+grevi x11, x10, 7
+sw x11, 1624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_229:
+// rs1_val == 0xFFFFFFFFE24C0602
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffe24c0602;
+li x10, 0xffffffffe24c0602
+grevi x11, x10, 7
+sw x11, 1632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_230:
+// rs1_val == 0xFFFFFFFFF109C208
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffff109c208;
+li x10, 0xfffffffff109c208
+grevi x11, x10, 7
+sw x11, 1640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_231:
+// rs1_val == 0xFFFFFFFFFB54AA23
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffb54aa23;
+li x10, 0xfffffffffb54aa23
+grevi x11, x10, 7
+sw x11, 1648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_232:
+// rs1_val == 0xFFFFFFFFFD02FC91
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffd02fc91;
+li x10, 0xfffffffffd02fc91
+grevi x11, x10, 7
+sw x11, 1656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_233:
+// rs1_val == 0xFFFFFFFFFE29D2A0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffe29d2a0;
+li x10, 0xfffffffffe29d2a0
+grevi x11, x10, 7
+sw x11, 1664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_234:
+// rs1_val == 0xFFFFFFFFFF7F6F5E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffff7f6f5e;
+li x10, 0xffffffffff7f6f5e
+grevi x11, x10, 7
+sw x11, 1672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_235:
+// rs1_val == 0xFFFFFFFFFF9104D1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffff9104d1;
+li x10, 0xffffffffff9104d1
+grevi x11, x10, 7
+sw x11, 1680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_236:
+// rs1_val == 0xFFFFFFFFFFCADB0B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffcadb0b;
+li x10, 0xffffffffffcadb0b
+grevi x11, x10, 7
+sw x11, 1688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_237:
+// rs1_val == 0xFFFFFFFFFFEEC2B4
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffeec2b4;
+li x10, 0xffffffffffeec2b4
+grevi x11, x10, 7
+sw x11, 1696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_238:
+// rs1_val == 0xFFFFFFFFFFF49E5F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffff49e5f;
+li x10, 0xfffffffffff49e5f
+grevi x11, x10, 7
+sw x11, 1704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_239:
+// rs1_val == 0xFFFFFFFFFFFAE2EE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffae2ee;
+li x10, 0xfffffffffffae2ee
+grevi x11, x10, 7
+sw x11, 1712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_240:
+// rs1_val == 0xFFFFFFFFFFFC7F0E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffc7f0e;
+li x10, 0xfffffffffffc7f0e
+grevi x11, x10, 7
+sw x11, 1720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_241:
+// rs1_val == 0xFFFFFFFFFFFE3410
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffe3410;
+li x10, 0xfffffffffffe3410
+grevi x11, x10, 7
+sw x11, 1728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_242:
+// rs1_val == 0xFFFFFFFFFFFF6E0A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffff6e0a;
+li x10, 0xffffffffffff6e0a
+grevi x11, x10, 7
+sw x11, 1736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_243:
+// rs1_val == 0xFFFFFFFFFFFFB32A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffb32a;
+li x10, 0xffffffffffffb32a
+grevi x11, x10, 7
+sw x11, 1744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_244:
+// rs1_val == 0xFFFFFFFFFFFFC384
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffc384;
+li x10, 0xffffffffffffc384
+grevi x11, x10, 7
+sw x11, 1752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_245:
+// rs1_val == 0xFFFFFFFFFFFFEC1D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffec1d;
+li x10, 0xffffffffffffec1d
+grevi x11, x10, 7
+sw x11, 1760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_246:
+// rs1_val == 0xFFFFFFFFFFFFF3F0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffff3f0;
+li x10, 0xfffffffffffff3f0
+grevi x11, x10, 7
+sw x11, 1768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_247:
+// rs1_val == 0xFFFFFFFFFFFFFB13
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffb13;
+li x10, 0xfffffffffffffb13
+grevi x11, x10, 7
+sw x11, 1776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_248:
+// rs1_val == 0xFFFFFFFFFFFFFC31
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffc31;
+li x10, 0xfffffffffffffc31
+grevi x11, x10, 7
+sw x11, 1784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_249:
+// rs1_val == 0xFFFFFFFFFFFFFE44
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffe44;
+li x10, 0xfffffffffffffe44
+grevi x11, x10, 7
+sw x11, 1792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_250:
+// rs1_val == 0xFFFFFFFFFFFFFF58
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffff58;
+li x10, 0xffffffffffffff58
+grevi x11, x10, 7
+sw x11, 1800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_251:
+// rs1_val == 0xFFFFFFFFFFFFFFB0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffb0;
+li x10, 0xffffffffffffffb0
+grevi x11, x10, 7
+sw x11, 1808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_252:
+// rs1_val == 0xFFFFFFFFFFFFFFC6
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffc6;
+li x10, 0xffffffffffffffc6
+grevi x11, x10, 7
+sw x11, 1816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_253:
+// rs1_val == 0xFFFFFFFFFFFFFFE8
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffe8;
+li x10, 0xffffffffffffffe8
+grevi x11, x10, 7
+sw x11, 1824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_254:
+// rs1_val == 0xFFFFFFFFFFFFFFF2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffff2;
+li x10, 0xfffffffffffffff2
+grevi x11, x10, 7
+sw x11, 1832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_255:
+// rs1_val == 0xFFFFFFFFFFFFFFF9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffff9;
+li x10, 0xfffffffffffffff9
+grevi x11, x10, 7
+sw x11, 1840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_256:
+// rs1_val == 0xFFFFFFFFFFFFFFFD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+grevi x11, x10, 7
+sw x11, 1848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_257:
+// rs1_val == 0xFFFFFFFFFFFFFFFE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+grevi x11, x10, 7
+sw x11, 1856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_258:
+// rs1_val == 0xC000000000000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xc000000000000000;
+li x10, 0xc000000000000000
+grevi x11, x10, 7
+sw x11, 1864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_259:
+// rs1_val == 0x07A0000000000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7a0000000000000;
+li x10, 0x7a0000000000000
+grevi x11, x10, 7
+sw x11, 1872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x6_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_1:
+ .fill 25*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 235*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev8-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev8-01.S
new file mode 100644
index 000000000..1a0dcaf50
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev8-01.S
@@ -0,0 +1,2161 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the grevi instruction of the RISC-V extension for the rev8 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",rev8)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",rev8)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",rev8)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",rev8)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs1 != rd, rs1==x17, rd==x3, rs1_val == 0xFFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x17; dest:x3; op1val:0xffffffffffffffff;
+li x17, 0xffffffffffffffff
+grevi x3, x17, 7
+sw x3, 0(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x3, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x28, rd==x28, rs1_val == 0x0000000000000000
+// opcode: grevi ; op1:x28; dest:x28; op1val:0x0;
+li x28, 0x0
+grevi x28, x28, 7
+sw x28, 8(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x28, 0x0000000000000000)
+
+inst_2:
+// rs1==x2, rd==x27, rs1_val == 0x8000000000000000
+// opcode: grevi ; op1:x2; dest:x27; op1val:0x8000000000000000;
+li x2, 0x8000000000000000
+grevi x27, x2, 7
+sw x27, 16(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x27, 0x0000000000000000)
+
+inst_3:
+// rs1==x22, rd==x18, rs1_val == 0xC000000000000000
+// opcode: grevi ; op1:x22; dest:x18; op1val:0xc000000000000000;
+li x22, 0xc000000000000000
+grevi x18, x22, 7
+sw x18, 24(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x18, 0x0000000000000000)
+
+inst_4:
+// rs1==x0, rd==x16, rs1_val == 0xA000000000000000
+// opcode: grevi ; op1:x0; dest:x16; op1val:0x0;
+li x0, 0x0
+grevi x16, x0, 7
+sw x16, 32(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x16, 0x0000000000000000)
+
+inst_5:
+// rs1==x30, rd==x19, rs1_val == 0x9000000000000000
+// opcode: grevi ; op1:x30; dest:x19; op1val:0x9000000000000000;
+li x30, 0x9000000000000000
+grevi x19, x30, 7
+sw x19, 40(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x19, 0x0000000000000000)
+
+inst_6:
+// rs1==x11, rd==x29, rs1_val == 0x0800000000000000
+// opcode: grevi ; op1:x11; dest:x29; op1val:0x800000000000000;
+li x11, 0x800000000000000
+grevi x29, x11, 7
+sw x29, 48(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x29, 0x0000000000000000)
+
+inst_7:
+// rs1==x9, rd==x11, rs1_val == 0x2C00000000000000
+// opcode: grevi ; op1:x9; dest:x11; op1val:0x2c00000000000000;
+li x9, 0x2c00000000000000
+grevi x11, x9, 7
+sw x11, 56(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x11, 0x0000000000000000)
+
+inst_8:
+// rs1==x26, rd==x5, rs1_val == 0x9600000000000000
+// opcode: grevi ; op1:x26; dest:x5; op1val:0x9600000000000000;
+li x26, 0x9600000000000000
+grevi x5, x26, 7
+sw x5, 64(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x5, 0x0000000000000000)
+
+inst_9:
+// rs1==x21, rd==x6, rs1_val == 0x0100000000000000
+// opcode: grevi ; op1:x21; dest:x6; op1val:0x100000000000000;
+li x21, 0x100000000000000
+grevi x6, x21, 7
+sw x6, 72(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x6, 0x0000000000000000)
+
+inst_10:
+// rs1==x29, rd==x7, rs1_val == 0x9480000000000000
+// opcode: grevi ; op1:x29; dest:x7; op1val:0x9480000000000000;
+li x29, 0x9480000000000000
+grevi x7, x29, 7
+sw x7, 80(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x7, 0x0000000000000000)
+
+inst_11:
+// rs1==x12, rd==x21, rs1_val == 0xB5C0000000000000
+// opcode: grevi ; op1:x12; dest:x21; op1val:0xb5c0000000000000;
+li x12, 0xb5c0000000000000
+grevi x21, x12, 7
+sw x21, 88(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x21, 0x0000000000000000)
+
+inst_12:
+// rs1==x1, rd==x24, rs1_val == 0x07A0000000000000
+// opcode: grevi ; op1:x1; dest:x24; op1val:0x7a0000000000000;
+li x1, 0x7a0000000000000
+grevi x24, x1, 7
+sw x24, 96(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x24, 0x0000000000000000)
+
+inst_13:
+// rs1==x6, rd==x30, rs1_val == 0x77B0000000000000
+// opcode: grevi ; op1:x6; dest:x30; op1val:0x77b0000000000000;
+li x6, 0x77b0000000000000
+grevi x30, x6, 7
+sw x30, 104(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x30, 0x0000000000000000)
+
+inst_14:
+// rs1==x14, rd==x31, rs1_val == 0xF128000000000000
+// opcode: grevi ; op1:x14; dest:x31; op1val:0xf128000000000000;
+li x14, 0xf128000000000000
+grevi x31, x14, 7
+sw x31, 112(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x31, 0x0000000000000000)
+
+inst_15:
+// rs1==x27, rd==x1, rs1_val == 0xC0E4000000000000
+// opcode: grevi ; op1:x27; dest:x1; op1val:0xc0e4000000000000;
+li x27, 0xc0e4000000000000
+grevi x1, x27, 7
+sw x1, 120(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x1, 0x0000000000000000)
+
+inst_16:
+// rs1==x20, rd==x26, rs1_val == 0xDC52000000000000
+// opcode: grevi ; op1:x20; dest:x26; op1val:0xdc52000000000000;
+li x20, 0xdc52000000000000
+grevi x26, x20, 7
+sw x26, 128(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x26, 0x0000000000000000)
+
+inst_17:
+// rs1==x7, rd==x9, rs1_val == 0x0B3D000000000000
+// opcode: grevi ; op1:x7; dest:x9; op1val:0xb3d000000000000;
+li x7, 0xb3d000000000000
+grevi x9, x7, 7
+sw x9, 136(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x9, 0x0000000000000000)
+
+inst_18:
+// rs1==x25, rd==x15, rs1_val == 0xB154800000000000
+// opcode: grevi ; op1:x25; dest:x15; op1val:0xb154800000000000;
+li x25, 0xb154800000000000
+grevi x15, x25, 7
+sw x15, 144(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x15, 0x0000000000000000)
+
+inst_19:
+// rs1==x8, rd==x10, rs1_val == 0x2609C00000000000
+// opcode: grevi ; op1:x8; dest:x10; op1val:0x2609c00000000000;
+li x8, 0x2609c00000000000
+grevi x10, x8, 7
+sw x10, 152(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x10, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_20:
+// rs1==x24, rd==x23, rs1_val == 0xCF5BE00000000000
+// opcode: grevi ; op1:x24; dest:x23; op1val:0xcf5be00000000000;
+li x24, 0xcf5be00000000000
+grevi x23, x24, 7
+sw x23, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x23, 0x0000000000000000)
+
+inst_21:
+// rs1==x10, rd==x4, rs1_val == 0x3ED0700000000000
+// opcode: grevi ; op1:x10; dest:x4; op1val:0x3ed0700000000000;
+li x10, 0x3ed0700000000000
+grevi x4, x10, 7
+sw x4, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x4, 0x0000000000000000)
+
+inst_22:
+// rs1==x31, rd==x14, rs1_val == 0x6BDED80000000000
+// opcode: grevi ; op1:x31; dest:x14; op1val:0x6bded80000000000;
+li x31, 0x6bded80000000000
+grevi x14, x31, 7
+sw x14, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x14, 0x0000000000000000)
+
+inst_23:
+// rs1==x18, rd==x12, rs1_val == 0x4637640000000000
+// opcode: grevi ; op1:x18; dest:x12; op1val:0x4637640000000000;
+li x18, 0x4637640000000000
+grevi x12, x18, 7
+sw x12, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x12, 0x0000000000000000)
+
+inst_24:
+// rs1==x15, rd==x25, rs1_val == 0x7239560000000000
+// opcode: grevi ; op1:x15; dest:x25; op1val:0x7239560000000000;
+li x15, 0x7239560000000000
+grevi x25, x15, 7
+sw x25, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x25, 0x0000000000000000)
+
+inst_25:
+// rs1==x23, rd==x0, rs1_val == 0x8864C10000000000
+// opcode: grevi ; op1:x23; dest:x0; op1val:0x8864c10000000000;
+li x23, 0x8864c10000000000
+grevi x0, x23, 7
+sw x0, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x0, 0x0000000000000000)
+
+inst_26:
+// rs1==x16, rd==x17, rs1_val == 0x68C7D88000000000
+// opcode: grevi ; op1:x16; dest:x17; op1val:0x68c7d88000000000;
+li x16, 0x68c7d88000000000
+grevi x17, x16, 7
+sw x17, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x17, 0x0000000000000000)
+
+inst_27:
+// rs1==x19, rd==x2, rs1_val == 0xF52BF0C000000000
+// opcode: grevi ; op1:x19; dest:x2; op1val:0xf52bf0c000000000;
+li x19, 0xf52bf0c000000000
+grevi x2, x19, 7
+sw x2, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x2, 0x0000000000000000)
+
+inst_28:
+// rs1==x4, rd==x8, rs1_val == 0xA4AFB46000000000
+// opcode: grevi ; op1:x4; dest:x8; op1val:0xa4afb46000000000;
+li x4, 0xa4afb46000000000
+grevi x8, x4, 7
+sw x8, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x8, 0x0000000000000000)
+
+inst_29:
+// rs1==x3, rd==x13, rs1_val == 0x263BEA5000000000
+// opcode: grevi ; op1:x3; dest:x13; op1val:0x263bea5000000000;
+li x3, 0x263bea5000000000
+grevi x13, x3, 7
+sw x13, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x13, 0x0000000000000000)
+
+inst_30:
+// rs1==x13, rd==x20, rs1_val == 0x4EE5BCE800000000
+// opcode: grevi ; op1:x13; dest:x20; op1val:0x4ee5bce800000000;
+li x13, 0x4ee5bce800000000
+grevi x20, x13, 7
+sw x20, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x20, 0x0000000000000000)
+
+inst_31:
+// rs1==x5, rd==x22, rs1_val == 0x7C5DE60C00000000
+// opcode: grevi ; op1:x5; dest:x22; op1val:0x7c5de60c00000000;
+li x5, 0x7c5de60c00000000
+grevi x22, x5, 7
+sw x22, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x22, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 0xA005556A00000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa005556a00000000;
+li x10, 0xa005556a00000000
+grevi x11, x10, 7
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 0x2293EA2900000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2293ea2900000000;
+li x10, 0x2293ea2900000000
+grevi x11, x10, 7
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 0x362BA25E80000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x362ba25e80000000;
+li x10, 0x362ba25e80000000
+grevi x11, x10, 7
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 0x4733A71E40000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4733a71e40000000;
+li x10, 0x4733a71e40000000
+grevi x11, x10, 7
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 0x1E4B791A20000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1e4b791a20000000;
+li x10, 0x1e4b791a20000000
+grevi x11, x10, 7
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 0x5FCB4D02D0000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5fcb4d02d0000000;
+li x10, 0x5fcb4d02d0000000
+grevi x11, x10, 7
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 0x98BA52AA88000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x98ba52aa88000000;
+li x10, 0x98ba52aa88000000
+grevi x11, x10, 7
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 0xEE0923E014000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xee0923e014000000;
+li x10, 0xee0923e014000000
+grevi x11, x10, 7
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 0x4BD47F4A3A000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4bd47f4a3a000000;
+li x10, 0x4bd47f4a3a000000
+grevi x11, x10, 7
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 0xB30F8F95F1000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb30f8f95f1000000;
+li x10, 0xb30f8f95f1000000
+grevi x11, x10, 7
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 0x398261A02E800000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x398261a02e800000;
+li x10, 0x398261a02e800000
+grevi x11, x10, 7
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 0x0AF5E9EFD7C00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaf5e9efd7c00000;
+li x10, 0xaf5e9efd7c00000
+grevi x11, x10, 7
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 0x4BCCF299A5E00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4bccf299a5e00000;
+li x10, 0x4bccf299a5e00000
+grevi x11, x10, 7
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 0xAFF56459AFF00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaff56459aff00000;
+li x10, 0xaff56459aff00000
+grevi x11, x10, 7
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 0xE07D7EDD48F80000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe07d7edd48f80000;
+li x10, 0xe07d7edd48f80000
+grevi x11, x10, 7
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 0x26604C6677840000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x26604c6677840000;
+li x10, 0x26604c6677840000
+grevi x11, x10, 7
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 0x5F67A33C644A0000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5f67a33c644a0000;
+li x10, 0x5f67a33c644a0000
+grevi x11, x10, 7
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 0xCC710F0F1C6B0000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xcc710f0f1c6b0000;
+li x10, 0xcc710f0f1c6b0000
+grevi x11, x10, 7
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 0x86BA73F6EC348000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x86ba73f6ec348000;
+li x10, 0x86ba73f6ec348000
+grevi x11, x10, 7
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 0x51EACA62967E4000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x51eaca62967e4000;
+li x10, 0x51eaca62967e4000
+grevi x11, x10, 7
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 0xD52F0E14EDC96000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd52f0e14edc96000;
+li x10, 0xd52f0e14edc96000
+grevi x11, x10, 7
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 0x0DBD625329043000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdbd625329043000;
+li x10, 0xdbd625329043000
+grevi x11, x10, 7
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 0x6DCF0D4A62B5D800
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6dcf0d4a62b5d800;
+li x10, 0x6dcf0d4a62b5d800
+grevi x11, x10, 7
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 0xB4B31E3B962C1C00
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb4b31e3b962c1c00;
+li x10, 0xb4b31e3b962c1c00
+grevi x11, x10, 7
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 0x8DCD6133F22D6600
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8dcd6133f22d6600;
+li x10, 0x8dcd6133f22d6600
+grevi x11, x10, 7
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 0x45AF1CB0CAAE1D00
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x45af1cb0caae1d00;
+li x10, 0x45af1cb0caae1d00
+grevi x11, x10, 7
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 0xE86EB367B97C2C80
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe86eb367b97c2c80;
+li x10, 0xe86eb367b97c2c80
+grevi x11, x10, 7
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 0x2D9BE3118A013740
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2d9be3118a013740;
+li x10, 0x2d9be3118a013740
+grevi x11, x10, 7
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 0x70F53C4BFDFD2260
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x70f53c4bfdfd2260;
+li x10, 0x70f53c4bfdfd2260
+grevi x11, x10, 7
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 0xF22A27B02C7BFF30
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf22a27b02c7bff30;
+li x10, 0xf22a27b02c7bff30
+grevi x11, x10, 7
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 0x0D99CFF9240BA738
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd99cff9240ba738;
+li x10, 0xd99cff9240ba738
+grevi x11, x10, 7
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 0x662E236EAA6781EC
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x662e236eaa6781ec;
+li x10, 0x662e236eaa6781ec
+grevi x11, x10, 7
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 0x0EEA3A9950A03C5A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xeea3a9950a03c5a;
+li x10, 0xeea3a9950a03c5a
+grevi x11, x10, 7
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 0x44DCDA6A797D76DF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x44dcda6a797d76df;
+li x10, 0x44dcda6a797d76df
+grevi x11, x10, 7
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 0x39935C590B0FB71C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x39935c590b0fb71c;
+li x10, 0x39935c590b0fb71c
+grevi x11, x10, 7
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 0xDE14BFF2EED7A249
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xde14bff2eed7a249;
+li x10, 0xde14bff2eed7a249
+grevi x11, x10, 7
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 0x6C9FEE24B808A67B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c9fee24b808a67b;
+li x10, 0x6c9fee24b808a67b
+grevi x11, x10, 7
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 0x008EEF6A63C2A497
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8eef6a63c2a497;
+li x10, 0x8eef6a63c2a497
+grevi x11, x10, 7
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 0x76B1FD3DF423752F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x76b1fd3df423752f;
+li x10, 0x76b1fd3df423752f
+grevi x11, x10, 7
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 0xA10BC6CCA6B7201F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa10bc6cca6b7201f;
+li x10, 0xa10bc6cca6b7201f
+grevi x11, x10, 7
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 0x6E2D704512C233BF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6e2d704512c233bf;
+li x10, 0x6e2d704512c233bf
+grevi x11, x10, 7
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 0x218FDC135DCF017F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x218fdc135dcf017f;
+li x10, 0x218fdc135dcf017f
+grevi x11, x10, 7
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 0xB3988B5231C8B6FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb3988b5231c8b6ff;
+li x10, 0xb3988b5231c8b6ff
+grevi x11, x10, 7
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 0xE2F99B2A3C5569FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe2f99b2a3c5569ff;
+li x10, 0xe2f99b2a3c5569ff
+grevi x11, x10, 7
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 0x90BB34803C4643FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x90bb34803c4643ff;
+li x10, 0x90bb34803c4643ff
+grevi x11, x10, 7
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 0x8CCE89147DA8D7FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8cce89147da8d7ff;
+li x10, 0x8cce89147da8d7ff
+grevi x11, x10, 7
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 0x93C38B33217ACFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x93c38b33217acfff;
+li x10, 0x93c38b33217acfff
+grevi x11, x10, 7
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 0xE3A707D665505FFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe3a707d665505fff;
+li x10, 0xe3a707d665505fff
+grevi x11, x10, 7
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 0x47B7097B9B01BFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x47b7097b9b01bfff;
+li x10, 0x47b7097b9b01bfff
+grevi x11, x10, 7
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 0x4302DA54759F7FFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4302da54759f7fff;
+li x10, 0x4302da54759f7fff
+grevi x11, x10, 7
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 0x5F013C8240D8FFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5f013c8240d8ffff;
+li x10, 0x5f013c8240d8ffff
+grevi x11, x10, 7
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 0x5B33199985CDFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5b33199985cdffff;
+li x10, 0x5b33199985cdffff
+grevi x11, x10, 7
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 0x2DEDF12233DBFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2dedf12233dbffff;
+li x10, 0x2dedf12233dbffff
+grevi x11, x10, 7
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 0x4B1634E12D37FFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4b1634e12d37ffff;
+li x10, 0x4b1634e12d37ffff
+grevi x11, x10, 7
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0x8935B826718FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8935b826718fffff;
+li x10, 0x8935b826718fffff
+grevi x11, x10, 7
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0xBA9C678AAD5FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xba9c678aad5fffff;
+li x10, 0xba9c678aad5fffff
+grevi x11, x10, 7
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0x70BCB8E322BFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x70bcb8e322bfffff;
+li x10, 0x70bcb8e322bfffff
+grevi x11, x10, 7
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0xFCB627AFBF7FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfcb627afbf7fffff;
+li x10, 0xfcb627afbf7fffff
+grevi x11, x10, 7
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0x9C76DF528CFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x9c76df528cffffff;
+li x10, 0x9c76df528cffffff
+grevi x11, x10, 7
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0x72C8DD98B1FFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x72c8dd98b1ffffff;
+li x10, 0x72c8dd98b1ffffff
+grevi x11, x10, 7
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x434CBF26FBFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x434cbf26fbffffff;
+li x10, 0x434cbf26fbffffff
+grevi x11, x10, 7
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0xA23FB787C7FFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa23fb787c7ffffff;
+li x10, 0xa23fb787c7ffffff
+grevi x11, x10, 7
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x983CA1BECFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x983ca1becfffffff;
+li x10, 0x983ca1becfffffff
+grevi x11, x10, 7
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0x589218431FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x589218431fffffff;
+li x10, 0x589218431fffffff
+grevi x11, x10, 7
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xA7BE99AE3FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa7be99ae3fffffff;
+li x10, 0xa7be99ae3fffffff
+grevi x11, x10, 7
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xA37E37287FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa37e37287fffffff;
+li x10, 0xa37e37287fffffff
+grevi x11, x10, 7
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xE37D3738FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe37d3738ffffffff;
+li x10, 0xe37d3738ffffffff
+grevi x11, x10, 7
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xABB4DA1DFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xabb4da1dffffffff;
+li x10, 0xabb4da1dffffffff
+grevi x11, x10, 7
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0xFB3E7193FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfb3e7193ffffffff;
+li x10, 0xfb3e7193ffffffff
+grevi x11, x10, 7
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0x8CB950A7FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8cb950a7ffffffff;
+li x10, 0x8cb950a7ffffffff
+grevi x11, x10, 7
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0xE5F31BEFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe5f31befffffffff;
+li x10, 0xe5f31befffffffff
+grevi x11, x10, 7
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x3BE93F9FFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3be93f9fffffffff;
+li x10, 0x3be93f9fffffffff
+grevi x11, x10, 7
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0x5B1196BFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5b1196bfffffffff;
+li x10, 0x5b1196bfffffffff
+grevi x11, x10, 7
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 0xE084097FFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe084097fffffffff;
+li x10, 0xe084097fffffffff
+grevi x11, x10, 7
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 0x23B6BCFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x23b6bcffffffffff;
+li x10, 0x23b6bcffffffffff
+grevi x11, x10, 7
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 0x6FCFD5FFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6fcfd5ffffffffff;
+li x10, 0x6fcfd5ffffffffff
+grevi x11, x10, 7
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 0x73790BFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x73790bffffffffff;
+li x10, 0x73790bffffffffff
+grevi x11, x10, 7
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 0x432FF7FFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x432ff7ffffffffff;
+li x10, 0x432ff7ffffffffff
+grevi x11, x10, 7
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 0xE36B0FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe36b0fffffffffff;
+li x10, 0xe36b0fffffffffff
+grevi x11, x10, 7
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 0xCB4ADFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xcb4adfffffffffff;
+li x10, 0xcb4adfffffffffff
+grevi x11, x10, 7
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 0x15BF3FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x15bf3fffffffffff;
+li x10, 0x15bf3fffffffffff
+grevi x11, x10, 7
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 0xD59A7FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd59a7fffffffffff;
+li x10, 0xd59a7fffffffffff
+grevi x11, x10, 7
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 0xFE32FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfe32ffffffffffff;
+li x10, 0xfe32ffffffffffff
+grevi x11, x10, 7
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 0xFF7DFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff7dffffffffffff;
+li x10, 0xff7dffffffffffff
+grevi x11, x10, 7
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 0xAF23FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaf23ffffffffffff;
+li x10, 0xaf23ffffffffffff
+grevi x11, x10, 7
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 0x2057FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2057ffffffffffff;
+li x10, 0x2057ffffffffffff
+grevi x11, x10, 7
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 0x07AFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7afffffffffffff;
+li x10, 0x7afffffffffffff
+grevi x11, x10, 7
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 0xBE9FFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xbe9fffffffffffff;
+li x10, 0xbe9fffffffffffff
+grevi x11, x10, 7
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 0xD8BFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd8bfffffffffffff;
+li x10, 0xd8bfffffffffffff
+grevi x11, x10, 7
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 0x127FFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x127fffffffffffff;
+li x10, 0x127fffffffffffff
+grevi x11, x10, 7
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 0x2EFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2effffffffffffff;
+li x10, 0x2effffffffffffff
+grevi x11, x10, 7
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 0xA5FFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa5ffffffffffffff;
+li x10, 0xa5ffffffffffffff
+grevi x11, x10, 7
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 0xDBFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdbffffffffffffff;
+li x10, 0xdbffffffffffffff
+grevi x11, x10, 7
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 0xA7FFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa7ffffffffffffff;
+li x10, 0xa7ffffffffffffff
+grevi x11, x10, 7
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 0xAFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xafffffffffffffff;
+li x10, 0xafffffffffffffff
+grevi x11, x10, 7
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 0xDFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdfffffffffffffff;
+li x10, 0xdfffffffffffffff
+grevi x11, x10, 7
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 0xBFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xbfffffffffffffff;
+li x10, 0xbfffffffffffffff
+grevi x11, x10, 7
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 0x7FFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7fffffffffffffff;
+li x10, 0x7fffffffffffffff
+grevi x11, x10, 7
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 0xA274EA181E34B3F2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa274ea181e34b3f2;
+li x10, 0xa274ea181e34b3f2
+grevi x11, x10, 7
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 0x6C3FBF4DC20EF165
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c3fbf4dc20ef165;
+li x10, 0x6c3fbf4dc20ef165
+grevi x11, x10, 7
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 0x28F918D8F6CDB2F9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x28f918d8f6cdb2f9;
+li x10, 0x28f918d8f6cdb2f9
+grevi x11, x10, 7
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 0x13E0D681552454F2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x13e0d681552454f2;
+li x10, 0x13e0d681552454f2
+grevi x11, x10, 7
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 0x0FAB6F3E164F1514
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfab6f3e164f1514;
+li x10, 0xfab6f3e164f1514
+grevi x11, x10, 7
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 0x063E9BED45100359
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x63e9bed45100359;
+li x10, 0x63e9bed45100359
+grevi x11, x10, 7
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 0x02C6D8F2C74C7CD0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2c6d8f2c74c7cd0;
+li x10, 0x2c6d8f2c74c7cd0
+grevi x11, x10, 7
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 0x01D03FDDA123F502
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1d03fdda123f502;
+li x10, 0x1d03fdda123f502
+grevi x11, x10, 7
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 0x00F5380E12B2A415
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf5380e12b2a415;
+li x10, 0xf5380e12b2a415
+grevi x11, x10, 7
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 0x0077730F65BD9ACC
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x77730f65bd9acc;
+li x10, 0x77730f65bd9acc
+grevi x11, x10, 7
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 0x003A6A1DFAF8CDAA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3a6a1dfaf8cdaa;
+li x10, 0x3a6a1dfaf8cdaa
+grevi x11, x10, 7
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 0x001E5B4578511609
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1e5b4578511609;
+li x10, 0x1e5b4578511609
+grevi x11, x10, 7
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 0x000D0372E90794E0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd0372e90794e0;
+li x10, 0xd0372e90794e0
+grevi x11, x10, 7
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 0x0006A24135B00A55
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6a24135b00a55;
+li x10, 0x6a24135b00a55
+grevi x11, x10, 7
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 0x00020BDF0023B683
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x20bdf0023b683;
+li x10, 0x20bdf0023b683
+grevi x11, x10, 7
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 0x000170EED8E94B16
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x170eed8e94b16;
+li x10, 0x170eed8e94b16
+grevi x11, x10, 7
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 0x0000EF05F542441E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xef05f542441e;
+li x10, 0xef05f542441e
+grevi x11, x10, 7
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 0x00004AAA62F28D1B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4aaa62f28d1b;
+li x10, 0x4aaa62f28d1b
+grevi x11, x10, 7
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 0x00003CB3D8B9B45D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3cb3d8b9b45d;
+li x10, 0x3cb3d8b9b45d
+grevi x11, x10, 7
+sw x11, 1024(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 0x00001BE466809A12
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1be466809a12;
+li x10, 0x1be466809a12
+grevi x11, x10, 7
+sw x11, 1032(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_150:
+// rs1_val == 0x0000092EC42B7171
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x92ec42b7171;
+li x10, 0x92ec42b7171
+grevi x11, x10, 7
+sw x11, 1040(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_151:
+// rs1_val == 0x0000074F11FA2AC1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x74f11fa2ac1;
+li x10, 0x74f11fa2ac1
+grevi x11, x10, 7
+sw x11, 1048(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_152:
+// rs1_val == 0x0000025A49FE85B1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x25a49fe85b1;
+li x10, 0x25a49fe85b1
+grevi x11, x10, 7
+sw x11, 1056(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_153:
+// rs1_val == 0x0000017A3ACB6267
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x17a3acb6267;
+li x10, 0x17a3acb6267
+grevi x11, x10, 7
+sw x11, 1064(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_154:
+// rs1_val == 0x000000C250B601FD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xc250b601fd;
+li x10, 0xc250b601fd
+grevi x11, x10, 7
+sw x11, 1072(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_155:
+// rs1_val == 0x00000067B53302FD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x67b53302fd;
+li x10, 0x67b53302fd
+grevi x11, x10, 7
+sw x11, 1080(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_156:
+// rs1_val == 0x0000002AD7185DDB
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2ad7185ddb;
+li x10, 0x2ad7185ddb
+grevi x11, x10, 7
+sw x11, 1088(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_157:
+// rs1_val == 0x0000001FFEE5A5B3
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1ffee5a5b3;
+li x10, 0x1ffee5a5b3
+grevi x11, x10, 7
+sw x11, 1096(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_158:
+// rs1_val == 0x0000000AFF66658A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaff66658a;
+li x10, 0xaff66658a
+grevi x11, x10, 7
+sw x11, 1104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_159:
+// rs1_val == 0x000000064735AF1D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x64735af1d;
+li x10, 0x64735af1d
+grevi x11, x10, 7
+sw x11, 1112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_160:
+// rs1_val == 0x0000000275139238
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x275139238;
+li x10, 0x275139238
+grevi x11, x10, 7
+sw x11, 1120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_161:
+// rs1_val == 0x00000001A9964AF0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1a9964af0;
+li x10, 0x1a9964af0
+grevi x11, x10, 7
+sw x11, 1128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_162:
+// rs1_val == 0x00000000FFF1222A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfff1222a;
+li x10, 0xfff1222a
+grevi x11, x10, 7
+sw x11, 1136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_163:
+// rs1_val == 0x0000000063EA284E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x63ea284e;
+li x10, 0x63ea284e
+grevi x11, x10, 7
+sw x11, 1144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_164:
+// rs1_val == 0x0000000024E55161
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x24e55161;
+li x10, 0x24e55161
+grevi x11, x10, 7
+sw x11, 1152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_165:
+// rs1_val == 0x0000000017A94DEE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x17a94dee;
+li x10, 0x17a94dee
+grevi x11, x10, 7
+sw x11, 1160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_166:
+// rs1_val == 0x0000000008C6A5B9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8c6a5b9;
+li x10, 0x8c6a5b9
+grevi x11, x10, 7
+sw x11, 1168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_167:
+// rs1_val == 0x0000000006C468AF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c468af;
+li x10, 0x6c468af
+grevi x11, x10, 7
+sw x11, 1176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_168:
+// rs1_val == 0x0000000003B37E15
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3b37e15;
+li x10, 0x3b37e15
+grevi x11, x10, 7
+sw x11, 1184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_169:
+// rs1_val == 0x0000000001EFFA39
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1effa39;
+li x10, 0x1effa39
+grevi x11, x10, 7
+sw x11, 1192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_170:
+// rs1_val == 0x0000000000B17D0C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb17d0c;
+li x10, 0xb17d0c
+grevi x11, x10, 7
+sw x11, 1200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_171:
+// rs1_val == 0x00000000007EBDD4
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7ebdd4;
+li x10, 0x7ebdd4
+grevi x11, x10, 7
+sw x11, 1208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_172:
+// rs1_val == 0x000000000023FEB7
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x23feb7;
+li x10, 0x23feb7
+grevi x11, x10, 7
+sw x11, 1216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_173:
+// rs1_val == 0x0000000000171685
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x171685;
+li x10, 0x171685
+grevi x11, x10, 7
+sw x11, 1224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_174:
+// rs1_val == 0x0000000000098868
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x98868;
+li x10, 0x98868
+grevi x11, x10, 7
+sw x11, 1232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_175:
+// rs1_val == 0x000000000005847F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5847f;
+li x10, 0x5847f
+grevi x11, x10, 7
+sw x11, 1240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_176:
+// rs1_val == 0x0000000000037797
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x37797;
+li x10, 0x37797
+grevi x11, x10, 7
+sw x11, 1248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_177:
+// rs1_val == 0x0000000000015DB9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x15db9;
+li x10, 0x15db9
+grevi x11, x10, 7
+sw x11, 1256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_178:
+// rs1_val == 0x0000000000008735
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8735;
+li x10, 0x8735
+grevi x11, x10, 7
+sw x11, 1264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_179:
+// rs1_val == 0x0000000000006B68
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6b68;
+li x10, 0x6b68
+grevi x11, x10, 7
+sw x11, 1272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_180:
+// rs1_val == 0x0000000000002F28
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2f28;
+li x10, 0x2f28
+grevi x11, x10, 7
+sw x11, 1280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_181:
+// rs1_val == 0x0000000000001D40
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1d40;
+li x10, 0x1d40
+grevi x11, x10, 7
+sw x11, 1288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_182:
+// rs1_val == 0x0000000000000F26
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf26;
+li x10, 0xf26
+grevi x11, x10, 7
+sw x11, 1296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_183:
+// rs1_val == 0x0000000000000482
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x482;
+li x10, 0x482
+grevi x11, x10, 7
+sw x11, 1304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_184:
+// rs1_val == 0x0000000000000394
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x394;
+li x10, 0x394
+grevi x11, x10, 7
+sw x11, 1312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_185:
+// rs1_val == 0x0000000000000154
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x154;
+li x10, 0x154
+grevi x11, x10, 7
+sw x11, 1320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_186:
+// rs1_val == 0x00000000000000FA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfa;
+li x10, 0xfa
+grevi x11, x10, 7
+sw x11, 1328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_187:
+// rs1_val == 0x0000000000000043
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x43;
+li x10, 0x43
+grevi x11, x10, 7
+sw x11, 1336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_188:
+// rs1_val == 0x0000000000000039
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x39;
+li x10, 0x39
+grevi x11, x10, 7
+sw x11, 1344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_189:
+// rs1_val == 0x0000000000000013
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x13;
+li x10, 0x13
+grevi x11, x10, 7
+sw x11, 1352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_190:
+// rs1_val == 0x000000000000000E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe;
+li x10, 0xe
+grevi x11, x10, 7
+sw x11, 1360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_191:
+// rs1_val == 0x0000000000000006
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6;
+li x10, 0x6
+grevi x11, x10, 7
+sw x11, 1368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_192:
+// rs1_val == 0x0000000000000002
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+grevi x11, x10, 7
+sw x11, 1376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_193:
+// rs1_val == 0x0000000000000001
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+grevi x11, x10, 7
+sw x11, 1384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_194:
+// rs1_val == 0x5D68F2012DAF94C2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5d68f2012daf94c2;
+li x10, 0x5d68f2012daf94c2
+grevi x11, x10, 7
+sw x11, 1392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_195:
+// rs1_val == 0x85986ADB9E044707
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x85986adb9e044707;
+li x10, 0x85986adb9e044707
+grevi x11, x10, 7
+sw x11, 1400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_196:
+// rs1_val == 0xC4BD48204652F62E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xc4bd48204652f62e;
+li x10, 0xc4bd48204652f62e
+grevi x11, x10, 7
+sw x11, 1408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_197:
+// rs1_val == 0xEE4839A13ED7E667
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xee4839a13ed7e667;
+li x10, 0xee4839a13ed7e667
+grevi x11, x10, 7
+sw x11, 1416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_198:
+// rs1_val == 0xF213516D6A013381
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf213516d6a013381;
+li x10, 0xf213516d6a013381
+grevi x11, x10, 7
+sw x11, 1424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_199:
+// rs1_val == 0xF871CFDE6EE84271
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf871cfde6ee84271;
+li x10, 0xf871cfde6ee84271
+grevi x11, x10, 7
+sw x11, 1432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_200:
+// rs1_val == 0xFD432A19F29C11AE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfd432a19f29c11ae;
+li x10, 0xfd432a19f29c11ae
+grevi x11, x10, 7
+sw x11, 1440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_201:
+// rs1_val == 0xFEE0888FCEB506F7
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfee0888fceb506f7;
+li x10, 0xfee0888fceb506f7
+grevi x11, x10, 7
+sw x11, 1448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_202:
+// rs1_val == 0xFF605EE62A96D06B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff605ee62a96d06b;
+li x10, 0xff605ee62a96d06b
+grevi x11, x10, 7
+sw x11, 1456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_203:
+// rs1_val == 0xFF89799918BB28EA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff89799918bb28ea;
+li x10, 0xff89799918bb28ea
+grevi x11, x10, 7
+sw x11, 1464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_204:
+// rs1_val == 0xFFCC6148C6880008
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffcc6148c6880008;
+li x10, 0xffcc6148c6880008
+grevi x11, x10, 7
+sw x11, 1472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_205:
+// rs1_val == 0xFFEB5EA11CE80B13
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffeb5ea11ce80b13;
+li x10, 0xffeb5ea11ce80b13
+grevi x11, x10, 7
+sw x11, 1480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_206:
+// rs1_val == 0xFFF039F699EF1858
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfff039f699ef1858;
+li x10, 0xfff039f699ef1858
+grevi x11, x10, 7
+sw x11, 1488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_207:
+// rs1_val == 0xFFFBEA615FC9EBA5
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffbea615fc9eba5;
+li x10, 0xfffbea615fc9eba5
+grevi x11, x10, 7
+sw x11, 1496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_208:
+// rs1_val == 0xFFFC8D619136580C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffc8d619136580c;
+li x10, 0xfffc8d619136580c
+grevi x11, x10, 7
+sw x11, 1504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_209:
+// rs1_val == 0xFFFE46462651F638
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffe46462651f638;
+li x10, 0xfffe46462651f638
+grevi x11, x10, 7
+sw x11, 1512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_210:
+// rs1_val == 0xFFFF1C79DAE98555
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffff1c79dae98555;
+li x10, 0xffff1c79dae98555
+grevi x11, x10, 7
+sw x11, 1520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_211:
+// rs1_val == 0xFFFF8E6F889263CF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffff8e6f889263cf;
+li x10, 0xffff8e6f889263cf
+grevi x11, x10, 7
+sw x11, 1528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_212:
+// rs1_val == 0xFFFFDEE2A86B8A6F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffdee2a86b8a6f;
+li x10, 0xffffdee2a86b8a6f
+grevi x11, x10, 7
+sw x11, 1536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_213:
+// rs1_val == 0xFFFFE2AFD167533B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffe2afd167533b;
+li x10, 0xffffe2afd167533b
+grevi x11, x10, 7
+sw x11, 1544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_214:
+// rs1_val == 0xFFFFF1A07F216823
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffff1a07f216823;
+li x10, 0xfffff1a07f216823
+grevi x11, x10, 7
+sw x11, 1552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_215:
+// rs1_val == 0xFFFFF9090973E89D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffff9090973e89d;
+li x10, 0xfffff9090973e89d
+grevi x11, x10, 7
+sw x11, 1560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_216:
+// rs1_val == 0xFFFFFC3769B1DCC0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffc3769b1dcc0;
+li x10, 0xfffffc3769b1dcc0
+grevi x11, x10, 7
+sw x11, 1568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_217:
+// rs1_val == 0xFFFFFEB8396BA83B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffeb8396ba83b;
+li x10, 0xfffffeb8396ba83b
+grevi x11, x10, 7
+sw x11, 1576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_218:
+// rs1_val == 0xFFFFFF4F280B11FE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffff4f280b11fe;
+li x10, 0xffffff4f280b11fe
+grevi x11, x10, 7
+sw x11, 1584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_219:
+// rs1_val == 0xFFFFFF85D814D576
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffff85d814d576;
+li x10, 0xffffff85d814d576
+grevi x11, x10, 7
+sw x11, 1592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_220:
+// rs1_val == 0xFFFFFFCC95A4D258
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffcc95a4d258;
+li x10, 0xffffffcc95a4d258
+grevi x11, x10, 7
+sw x11, 1600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_221:
+// rs1_val == 0xFFFFFFE610A37559
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffe610a37559;
+li x10, 0xffffffe610a37559
+grevi x11, x10, 7
+sw x11, 1608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_222:
+// rs1_val == 0xFFFFFFF66F9FB998
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffff66f9fb998;
+li x10, 0xfffffff66f9fb998
+grevi x11, x10, 7
+sw x11, 1616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_223:
+// rs1_val == 0xFFFFFFFB8C8A18B3
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffb8c8a18b3;
+li x10, 0xfffffffb8c8a18b3
+grevi x11, x10, 7
+sw x11, 1624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_224:
+// rs1_val == 0xFFFFFFFC507A2561
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffc507a2561;
+li x10, 0xfffffffc507a2561
+grevi x11, x10, 7
+sw x11, 1632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_225:
+// rs1_val == 0xFFFFFFFEE5F0307F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffee5f0307f;
+li x10, 0xfffffffee5f0307f
+grevi x11, x10, 7
+sw x11, 1640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_226:
+// rs1_val == 0xFFFFFFFF5DBBB7CF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffff5dbbb7cf;
+li x10, 0xffffffff5dbbb7cf
+grevi x11, x10, 7
+sw x11, 1648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_227:
+// rs1_val == 0xFFFFFFFF8D884510
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffff8d884510;
+li x10, 0xffffffff8d884510
+grevi x11, x10, 7
+sw x11, 1656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_228:
+// rs1_val == 0xFFFFFFFFD0E58651
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffd0e58651;
+li x10, 0xffffffffd0e58651
+grevi x11, x10, 7
+sw x11, 1664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_229:
+// rs1_val == 0xFFFFFFFFE24C0602
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffe24c0602;
+li x10, 0xffffffffe24c0602
+grevi x11, x10, 7
+sw x11, 1672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_230:
+// rs1_val == 0xFFFFFFFFF109C208
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffff109c208;
+li x10, 0xfffffffff109c208
+grevi x11, x10, 7
+sw x11, 1680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_231:
+// rs1_val == 0xFFFFFFFFFB54AA23
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffb54aa23;
+li x10, 0xfffffffffb54aa23
+grevi x11, x10, 7
+sw x11, 1688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_232:
+// rs1_val == 0xFFFFFFFFFD02FC91
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffd02fc91;
+li x10, 0xfffffffffd02fc91
+grevi x11, x10, 7
+sw x11, 1696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_233:
+// rs1_val == 0xFFFFFFFFFE29D2A0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffe29d2a0;
+li x10, 0xfffffffffe29d2a0
+grevi x11, x10, 7
+sw x11, 1704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_234:
+// rs1_val == 0xFFFFFFFFFF7F6F5E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffff7f6f5e;
+li x10, 0xffffffffff7f6f5e
+grevi x11, x10, 7
+sw x11, 1712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_235:
+// rs1_val == 0xFFFFFFFFFF9104D1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffff9104d1;
+li x10, 0xffffffffff9104d1
+grevi x11, x10, 7
+sw x11, 1720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_236:
+// rs1_val == 0xFFFFFFFFFFCADB0B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffcadb0b;
+li x10, 0xffffffffffcadb0b
+grevi x11, x10, 7
+sw x11, 1728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_237:
+// rs1_val == 0xFFFFFFFFFFEEC2B4
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffeec2b4;
+li x10, 0xffffffffffeec2b4
+grevi x11, x10, 7
+sw x11, 1736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_238:
+// rs1_val == 0xFFFFFFFFFFF49E5F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffff49e5f;
+li x10, 0xfffffffffff49e5f
+grevi x11, x10, 7
+sw x11, 1744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_239:
+// rs1_val == 0xFFFFFFFFFFFAE2EE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffae2ee;
+li x10, 0xfffffffffffae2ee
+grevi x11, x10, 7
+sw x11, 1752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_240:
+// rs1_val == 0xFFFFFFFFFFFC7F0E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffc7f0e;
+li x10, 0xfffffffffffc7f0e
+grevi x11, x10, 7
+sw x11, 1760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_241:
+// rs1_val == 0xFFFFFFFFFFFE3410
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffe3410;
+li x10, 0xfffffffffffe3410
+grevi x11, x10, 7
+sw x11, 1768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_242:
+// rs1_val == 0xFFFFFFFFFFFF6E0A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffff6e0a;
+li x10, 0xffffffffffff6e0a
+grevi x11, x10, 7
+sw x11, 1776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_243:
+// rs1_val == 0xFFFFFFFFFFFFB32A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffb32a;
+li x10, 0xffffffffffffb32a
+grevi x11, x10, 7
+sw x11, 1784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_244:
+// rs1_val == 0xFFFFFFFFFFFFC384
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffc384;
+li x10, 0xffffffffffffc384
+grevi x11, x10, 7
+sw x11, 1792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_245:
+// rs1_val == 0xFFFFFFFFFFFFEC1D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffec1d;
+li x10, 0xffffffffffffec1d
+grevi x11, x10, 7
+sw x11, 1800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_246:
+// rs1_val == 0xFFFFFFFFFFFFF3F0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffff3f0;
+li x10, 0xfffffffffffff3f0
+grevi x11, x10, 7
+sw x11, 1808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_247:
+// rs1_val == 0xFFFFFFFFFFFFFB13
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffb13;
+li x10, 0xfffffffffffffb13
+grevi x11, x10, 7
+sw x11, 1816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_248:
+// rs1_val == 0xFFFFFFFFFFFFFC31
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffc31;
+li x10, 0xfffffffffffffc31
+grevi x11, x10, 7
+sw x11, 1824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_249:
+// rs1_val == 0xFFFFFFFFFFFFFE44
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffe44;
+li x10, 0xfffffffffffffe44
+grevi x11, x10, 7
+sw x11, 1832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_250:
+// rs1_val == 0xFFFFFFFFFFFFFF58
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffff58;
+li x10, 0xffffffffffffff58
+grevi x11, x10, 7
+sw x11, 1840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_251:
+// rs1_val == 0xFFFFFFFFFFFFFFB0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffb0;
+li x10, 0xffffffffffffffb0
+grevi x11, x10, 7
+sw x11, 1848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_252:
+// rs1_val == 0xFFFFFFFFFFFFFFC6
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffc6;
+li x10, 0xffffffffffffffc6
+grevi x11, x10, 7
+sw x11, 1856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_253:
+// rs1_val == 0xFFFFFFFFFFFFFFE8
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffe8;
+li x10, 0xffffffffffffffe8
+grevi x11, x10, 7
+sw x11, 1864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_254:
+// rs1_val == 0xFFFFFFFFFFFFFFF2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffff2;
+li x10, 0xfffffffffffffff2
+grevi x11, x10, 7
+sw x11, 1872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_255:
+// rs1_val == 0xFFFFFFFFFFFFFFF9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffff9;
+li x10, 0xfffffffffffffff9
+grevi x11, x10, 7
+sw x11, 1880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_256:
+// rs1_val == 0xFFFFFFFFFFFFFFFD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+grevi x11, x10, 7
+sw x11, 1888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_257:
+// rs1_val == 0xFFFFFFFFFFFFFFFE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+grevi x11, x10, 7
+sw x11, 1896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_258:
+// rs1_val == 0xA000000000000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa000000000000000;
+li x10, 0xa000000000000000
+grevi x11, x10, 7
+sw x11, 1904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+
+inst_259:
+// rs1_val == 0x8864C10000000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8864c10000000000;
+li x10, 0x8864c10000000000
+grevi x11, x10, 7
+sw x11, 1912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x6, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 20*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 240*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev8.w-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev8.w-01.S
new file mode 100644
index 000000000..b9e5d6ab1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rev8.w-01.S
@@ -0,0 +1,2161 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the grevi instruction of the RISC-V extension for the rev8.w covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",rev8.w)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",rev8.w)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",rev8.w)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKb.*);def TEST_CASE_1=True;",rev8.w)
+
+RVTEST_SIGBASE( x15,signature_x15_1)
+
+inst_0:
+// rs1 != rd, rs1==x27, rd==x28, rs1_val == 0xFFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x27; dest:x28; op1val:0xffffffffffffffff;
+li x27, 0xffffffffffffffff
+grevi x28, x27, 7
+sw x28, 0(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x28, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x22, rd==x22, rs1_val == 0x0000000000000000
+// opcode: grevi ; op1:x22; dest:x22; op1val:0x0;
+li x22, 0x0
+grevi x22, x22, 7
+sw x22, 8(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x22, 0x0000000000000000)
+
+inst_2:
+// rs1==x1, rd==x7, rs1_val == 0x8000000000000000
+// opcode: grevi ; op1:x1; dest:x7; op1val:0x8000000000000000;
+li x1, 0x8000000000000000
+grevi x7, x1, 7
+sw x7, 16(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x7, 0x0000000000000000)
+
+inst_3:
+// rs1==x24, rd==x17, rs1_val == 0xC000000000000000
+// opcode: grevi ; op1:x24; dest:x17; op1val:0xc000000000000000;
+li x24, 0xc000000000000000
+grevi x17, x24, 7
+sw x17, 24(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x17, 0x0000000000000000)
+
+inst_4:
+// rs1==x18, rd==x1, rs1_val == 0xA000000000000000
+// opcode: grevi ; op1:x18; dest:x1; op1val:0xa000000000000000;
+li x18, 0xa000000000000000
+grevi x1, x18, 7
+sw x1, 32(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x1, 0x0000000000000000)
+
+inst_5:
+// rs1==x10, rd==x12, rs1_val == 0x9000000000000000
+// opcode: grevi ; op1:x10; dest:x12; op1val:0x9000000000000000;
+li x10, 0x9000000000000000
+grevi x12, x10, 7
+sw x12, 40(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x12, 0x0000000000000000)
+
+inst_6:
+// rs1==x29, rd==x2, rs1_val == 0x0800000000000000
+// opcode: grevi ; op1:x29; dest:x2; op1val:0x800000000000000;
+li x29, 0x800000000000000
+grevi x2, x29, 7
+sw x2, 48(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x2, 0x0000000000000000)
+
+inst_7:
+// rs1==x14, rd==x3, rs1_val == 0x2C00000000000000
+// opcode: grevi ; op1:x14; dest:x3; op1val:0x2c00000000000000;
+li x14, 0x2c00000000000000
+grevi x3, x14, 7
+sw x3, 56(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x3, 0x0000000000000000)
+
+inst_8:
+// rs1==x5, rd==x24, rs1_val == 0x9600000000000000
+// opcode: grevi ; op1:x5; dest:x24; op1val:0x9600000000000000;
+li x5, 0x9600000000000000
+grevi x24, x5, 7
+sw x24, 64(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x24, 0x0000000000000000)
+
+inst_9:
+// rs1==x2, rd==x30, rs1_val == 0x0100000000000000
+// opcode: grevi ; op1:x2; dest:x30; op1val:0x100000000000000;
+li x2, 0x100000000000000
+grevi x30, x2, 7
+sw x30, 72(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x30, 0x0000000000000000)
+
+inst_10:
+// rs1==x0, rd==x6, rs1_val == 0x9480000000000000
+// opcode: grevi ; op1:x0; dest:x6; op1val:0x0;
+li x0, 0x0
+grevi x6, x0, 7
+sw x6, 80(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x6, 0x0000000000000000)
+
+inst_11:
+// rs1==x7, rd==x18, rs1_val == 0xB5C0000000000000
+// opcode: grevi ; op1:x7; dest:x18; op1val:0xb5c0000000000000;
+li x7, 0xb5c0000000000000
+grevi x18, x7, 7
+sw x18, 88(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x18, 0x0000000000000000)
+
+inst_12:
+// rs1==x30, rd==x5, rs1_val == 0x07A0000000000000
+// opcode: grevi ; op1:x30; dest:x5; op1val:0x7a0000000000000;
+li x30, 0x7a0000000000000
+grevi x5, x30, 7
+sw x5, 96(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x5, 0x0000000000000000)
+
+inst_13:
+// rs1==x28, rd==x0, rs1_val == 0x77B0000000000000
+// opcode: grevi ; op1:x28; dest:x0; op1val:0x77b0000000000000;
+li x28, 0x77b0000000000000
+grevi x0, x28, 7
+sw x0, 104(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x0, 0x0000000000000000)
+
+inst_14:
+// rs1==x20, rd==x19, rs1_val == 0xF128000000000000
+// opcode: grevi ; op1:x20; dest:x19; op1val:0xf128000000000000;
+li x20, 0xf128000000000000
+grevi x19, x20, 7
+sw x19, 112(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x19, 0x0000000000000000)
+
+inst_15:
+// rs1==x31, rd==x13, rs1_val == 0xC0E4000000000000
+// opcode: grevi ; op1:x31; dest:x13; op1val:0xc0e4000000000000;
+li x31, 0xc0e4000000000000
+grevi x13, x31, 7
+sw x13, 120(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x13, 0x0000000000000000)
+
+inst_16:
+// rs1==x4, rd==x25, rs1_val == 0xDC52000000000000
+// opcode: grevi ; op1:x4; dest:x25; op1val:0xdc52000000000000;
+li x4, 0xdc52000000000000
+grevi x25, x4, 7
+sw x25, 128(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x25, 0x0000000000000000)
+
+inst_17:
+// rs1==x13, rd==x8, rs1_val == 0x0B3D000000000000
+// opcode: grevi ; op1:x13; dest:x8; op1val:0xb3d000000000000;
+li x13, 0xb3d000000000000
+grevi x8, x13, 7
+sw x8, 136(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x8, 0x0000000000000000)
+
+inst_18:
+// rs1==x3, rd==x31, rs1_val == 0xB154800000000000
+// opcode: grevi ; op1:x3; dest:x31; op1val:0xb154800000000000;
+li x3, 0xb154800000000000
+grevi x31, x3, 7
+sw x31, 144(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x31, 0x0000000000000000)
+
+inst_19:
+// rs1==x17, rd==x10, rs1_val == 0x2609C00000000000
+// opcode: grevi ; op1:x17; dest:x10; op1val:0x2609c00000000000;
+li x17, 0x2609c00000000000
+grevi x10, x17, 7
+sw x10, 152(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x10, 0x0000000000000000)
+
+inst_20:
+// rs1==x9, rd==x27, rs1_val == 0xCF5BE00000000000
+// opcode: grevi ; op1:x9; dest:x27; op1val:0xcf5be00000000000;
+li x9, 0xcf5be00000000000
+grevi x27, x9, 7
+sw x27, 160(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x27, 0x0000000000000000)
+
+inst_21:
+// rs1==x6, rd==x26, rs1_val == 0x3ED0700000000000
+// opcode: grevi ; op1:x6; dest:x26; op1val:0x3ed0700000000000;
+li x6, 0x3ed0700000000000
+grevi x26, x6, 7
+sw x26, 168(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x26, 0x0000000000000000)
+
+inst_22:
+// rs1==x11, rd==x21, rs1_val == 0x6BDED80000000000
+// opcode: grevi ; op1:x11; dest:x21; op1val:0x6bded80000000000;
+li x11, 0x6bded80000000000
+grevi x21, x11, 7
+sw x21, 176(x15)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x21, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_23:
+// rs1==x12, rd==x9, rs1_val == 0x4637640000000000
+// opcode: grevi ; op1:x12; dest:x9; op1val:0x4637640000000000;
+li x12, 0x4637640000000000
+grevi x9, x12, 7
+sw x9, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x9, 0x0000000000000000)
+
+inst_24:
+// rs1==x26, rd==x23, rs1_val == 0x7239560000000000
+// opcode: grevi ; op1:x26; dest:x23; op1val:0x7239560000000000;
+li x26, 0x7239560000000000
+grevi x23, x26, 7
+sw x23, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x23, 0x0000000000000000)
+
+inst_25:
+// rs1==x23, rd==x16, rs1_val == 0x8864C10000000000
+// opcode: grevi ; op1:x23; dest:x16; op1val:0x8864c10000000000;
+li x23, 0x8864c10000000000
+grevi x16, x23, 7
+sw x16, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x16, 0x0000000000000000)
+
+inst_26:
+// rs1==x16, rd==x11, rs1_val == 0x68C7D88000000000
+// opcode: grevi ; op1:x16; dest:x11; op1val:0x68c7d88000000000;
+li x16, 0x68c7d88000000000
+grevi x11, x16, 7
+sw x11, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_27:
+// rs1==x8, rd==x4, rs1_val == 0xF52BF0C000000000
+// opcode: grevi ; op1:x8; dest:x4; op1val:0xf52bf0c000000000;
+li x8, 0xf52bf0c000000000
+grevi x4, x8, 7
+sw x4, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x4, 0x0000000000000000)
+
+inst_28:
+// rs1==x21, rd==x20, rs1_val == 0xA4AFB46000000000
+// opcode: grevi ; op1:x21; dest:x20; op1val:0xa4afb46000000000;
+li x21, 0xa4afb46000000000
+grevi x20, x21, 7
+sw x20, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x20, 0x0000000000000000)
+
+inst_29:
+// rs1==x19, rd==x15, rs1_val == 0x263BEA5000000000
+// opcode: grevi ; op1:x19; dest:x15; op1val:0x263bea5000000000;
+li x19, 0x263bea5000000000
+grevi x15, x19, 7
+sw x15, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x15, 0x0000000000000000)
+
+inst_30:
+// rs1==x25, rd==x29, rs1_val == 0x4EE5BCE800000000
+// opcode: grevi ; op1:x25; dest:x29; op1val:0x4ee5bce800000000;
+li x25, 0x4ee5bce800000000
+grevi x29, x25, 7
+sw x29, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x29, 0x0000000000000000)
+
+inst_31:
+// rs1==x15, rd==x14, rs1_val == 0x7C5DE60C00000000
+// opcode: grevi ; op1:x15; dest:x14; op1val:0x7c5de60c00000000;
+li x15, 0x7c5de60c00000000
+grevi x14, x15, 7
+sw x14, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x14, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 0xA005556A00000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa005556a00000000;
+li x10, 0xa005556a00000000
+grevi x11, x10, 7
+sw x11, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 0x2293EA2900000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2293ea2900000000;
+li x10, 0x2293ea2900000000
+grevi x11, x10, 7
+sw x11, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 0x362BA25E80000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x362ba25e80000000;
+li x10, 0x362ba25e80000000
+grevi x11, x10, 7
+sw x11, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 0x4733A71E40000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4733a71e40000000;
+li x10, 0x4733a71e40000000
+grevi x11, x10, 7
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 0x1E4B791A20000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1e4b791a20000000;
+li x10, 0x1e4b791a20000000
+grevi x11, x10, 7
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 0x5FCB4D02D0000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5fcb4d02d0000000;
+li x10, 0x5fcb4d02d0000000
+grevi x11, x10, 7
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 0x98BA52AA88000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x98ba52aa88000000;
+li x10, 0x98ba52aa88000000
+grevi x11, x10, 7
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 0xEE0923E014000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xee0923e014000000;
+li x10, 0xee0923e014000000
+grevi x11, x10, 7
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 0x4BD47F4A3A000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4bd47f4a3a000000;
+li x10, 0x4bd47f4a3a000000
+grevi x11, x10, 7
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 0xB30F8F95F1000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb30f8f95f1000000;
+li x10, 0xb30f8f95f1000000
+grevi x11, x10, 7
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 0x398261A02E800000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x398261a02e800000;
+li x10, 0x398261a02e800000
+grevi x11, x10, 7
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 0x0AF5E9EFD7C00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaf5e9efd7c00000;
+li x10, 0xaf5e9efd7c00000
+grevi x11, x10, 7
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 0x4BCCF299A5E00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4bccf299a5e00000;
+li x10, 0x4bccf299a5e00000
+grevi x11, x10, 7
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 0xAFF56459AFF00000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaff56459aff00000;
+li x10, 0xaff56459aff00000
+grevi x11, x10, 7
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 0xE07D7EDD48F80000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe07d7edd48f80000;
+li x10, 0xe07d7edd48f80000
+grevi x11, x10, 7
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 0x26604C6677840000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x26604c6677840000;
+li x10, 0x26604c6677840000
+grevi x11, x10, 7
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 0x5F67A33C644A0000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5f67a33c644a0000;
+li x10, 0x5f67a33c644a0000
+grevi x11, x10, 7
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 0xCC710F0F1C6B0000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xcc710f0f1c6b0000;
+li x10, 0xcc710f0f1c6b0000
+grevi x11, x10, 7
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 0x86BA73F6EC348000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x86ba73f6ec348000;
+li x10, 0x86ba73f6ec348000
+grevi x11, x10, 7
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 0x51EACA62967E4000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x51eaca62967e4000;
+li x10, 0x51eaca62967e4000
+grevi x11, x10, 7
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 0xD52F0E14EDC96000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd52f0e14edc96000;
+li x10, 0xd52f0e14edc96000
+grevi x11, x10, 7
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 0x0DBD625329043000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdbd625329043000;
+li x10, 0xdbd625329043000
+grevi x11, x10, 7
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 0x6DCF0D4A62B5D800
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6dcf0d4a62b5d800;
+li x10, 0x6dcf0d4a62b5d800
+grevi x11, x10, 7
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 0xB4B31E3B962C1C00
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb4b31e3b962c1c00;
+li x10, 0xb4b31e3b962c1c00
+grevi x11, x10, 7
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 0x8DCD6133F22D6600
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8dcd6133f22d6600;
+li x10, 0x8dcd6133f22d6600
+grevi x11, x10, 7
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 0x45AF1CB0CAAE1D00
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x45af1cb0caae1d00;
+li x10, 0x45af1cb0caae1d00
+grevi x11, x10, 7
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 0xE86EB367B97C2C80
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe86eb367b97c2c80;
+li x10, 0xe86eb367b97c2c80
+grevi x11, x10, 7
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 0x2D9BE3118A013740
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2d9be3118a013740;
+li x10, 0x2d9be3118a013740
+grevi x11, x10, 7
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 0x70F53C4BFDFD2260
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x70f53c4bfdfd2260;
+li x10, 0x70f53c4bfdfd2260
+grevi x11, x10, 7
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 0xF22A27B02C7BFF30
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf22a27b02c7bff30;
+li x10, 0xf22a27b02c7bff30
+grevi x11, x10, 7
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 0x0D99CFF9240BA738
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd99cff9240ba738;
+li x10, 0xd99cff9240ba738
+grevi x11, x10, 7
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 0x662E236EAA6781EC
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x662e236eaa6781ec;
+li x10, 0x662e236eaa6781ec
+grevi x11, x10, 7
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 0x0EEA3A9950A03C5A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xeea3a9950a03c5a;
+li x10, 0xeea3a9950a03c5a
+grevi x11, x10, 7
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 0x44DCDA6A797D76DF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x44dcda6a797d76df;
+li x10, 0x44dcda6a797d76df
+grevi x11, x10, 7
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 0x39935C590B0FB71C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x39935c590b0fb71c;
+li x10, 0x39935c590b0fb71c
+grevi x11, x10, 7
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 0xDE14BFF2EED7A249
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xde14bff2eed7a249;
+li x10, 0xde14bff2eed7a249
+grevi x11, x10, 7
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 0x6C9FEE24B808A67B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c9fee24b808a67b;
+li x10, 0x6c9fee24b808a67b
+grevi x11, x10, 7
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 0x008EEF6A63C2A497
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8eef6a63c2a497;
+li x10, 0x8eef6a63c2a497
+grevi x11, x10, 7
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 0x76B1FD3DF423752F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x76b1fd3df423752f;
+li x10, 0x76b1fd3df423752f
+grevi x11, x10, 7
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 0xA10BC6CCA6B7201F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa10bc6cca6b7201f;
+li x10, 0xa10bc6cca6b7201f
+grevi x11, x10, 7
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 0x6E2D704512C233BF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6e2d704512c233bf;
+li x10, 0x6e2d704512c233bf
+grevi x11, x10, 7
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 0x218FDC135DCF017F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x218fdc135dcf017f;
+li x10, 0x218fdc135dcf017f
+grevi x11, x10, 7
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 0xB3988B5231C8B6FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb3988b5231c8b6ff;
+li x10, 0xb3988b5231c8b6ff
+grevi x11, x10, 7
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 0xE2F99B2A3C5569FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe2f99b2a3c5569ff;
+li x10, 0xe2f99b2a3c5569ff
+grevi x11, x10, 7
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 0x90BB34803C4643FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x90bb34803c4643ff;
+li x10, 0x90bb34803c4643ff
+grevi x11, x10, 7
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 0x8CCE89147DA8D7FF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8cce89147da8d7ff;
+li x10, 0x8cce89147da8d7ff
+grevi x11, x10, 7
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 0x93C38B33217ACFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x93c38b33217acfff;
+li x10, 0x93c38b33217acfff
+grevi x11, x10, 7
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 0xE3A707D665505FFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe3a707d665505fff;
+li x10, 0xe3a707d665505fff
+grevi x11, x10, 7
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 0x47B7097B9B01BFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x47b7097b9b01bfff;
+li x10, 0x47b7097b9b01bfff
+grevi x11, x10, 7
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 0x4302DA54759F7FFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4302da54759f7fff;
+li x10, 0x4302da54759f7fff
+grevi x11, x10, 7
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 0x5F013C8240D8FFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5f013c8240d8ffff;
+li x10, 0x5f013c8240d8ffff
+grevi x11, x10, 7
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 0x5B33199985CDFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5b33199985cdffff;
+li x10, 0x5b33199985cdffff
+grevi x11, x10, 7
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 0x2DEDF12233DBFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2dedf12233dbffff;
+li x10, 0x2dedf12233dbffff
+grevi x11, x10, 7
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 0x4B1634E12D37FFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4b1634e12d37ffff;
+li x10, 0x4b1634e12d37ffff
+grevi x11, x10, 7
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0x8935B826718FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8935b826718fffff;
+li x10, 0x8935b826718fffff
+grevi x11, x10, 7
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0xBA9C678AAD5FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xba9c678aad5fffff;
+li x10, 0xba9c678aad5fffff
+grevi x11, x10, 7
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0x70BCB8E322BFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x70bcb8e322bfffff;
+li x10, 0x70bcb8e322bfffff
+grevi x11, x10, 7
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0xFCB627AFBF7FFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfcb627afbf7fffff;
+li x10, 0xfcb627afbf7fffff
+grevi x11, x10, 7
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0x9C76DF528CFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x9c76df528cffffff;
+li x10, 0x9c76df528cffffff
+grevi x11, x10, 7
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0x72C8DD98B1FFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x72c8dd98b1ffffff;
+li x10, 0x72c8dd98b1ffffff
+grevi x11, x10, 7
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x434CBF26FBFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x434cbf26fbffffff;
+li x10, 0x434cbf26fbffffff
+grevi x11, x10, 7
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0xA23FB787C7FFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa23fb787c7ffffff;
+li x10, 0xa23fb787c7ffffff
+grevi x11, x10, 7
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x983CA1BECFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x983ca1becfffffff;
+li x10, 0x983ca1becfffffff
+grevi x11, x10, 7
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0x589218431FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x589218431fffffff;
+li x10, 0x589218431fffffff
+grevi x11, x10, 7
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xA7BE99AE3FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa7be99ae3fffffff;
+li x10, 0xa7be99ae3fffffff
+grevi x11, x10, 7
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xA37E37287FFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa37e37287fffffff;
+li x10, 0xa37e37287fffffff
+grevi x11, x10, 7
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xE37D3738FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe37d3738ffffffff;
+li x10, 0xe37d3738ffffffff
+grevi x11, x10, 7
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xABB4DA1DFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xabb4da1dffffffff;
+li x10, 0xabb4da1dffffffff
+grevi x11, x10, 7
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0xFB3E7193FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfb3e7193ffffffff;
+li x10, 0xfb3e7193ffffffff
+grevi x11, x10, 7
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0x8CB950A7FFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8cb950a7ffffffff;
+li x10, 0x8cb950a7ffffffff
+grevi x11, x10, 7
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0xE5F31BEFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe5f31befffffffff;
+li x10, 0xe5f31befffffffff
+grevi x11, x10, 7
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x3BE93F9FFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3be93f9fffffffff;
+li x10, 0x3be93f9fffffffff
+grevi x11, x10, 7
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0x5B1196BFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5b1196bfffffffff;
+li x10, 0x5b1196bfffffffff
+grevi x11, x10, 7
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 0xE084097FFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe084097fffffffff;
+li x10, 0xe084097fffffffff
+grevi x11, x10, 7
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 0x23B6BCFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x23b6bcffffffffff;
+li x10, 0x23b6bcffffffffff
+grevi x11, x10, 7
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 0x6FCFD5FFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6fcfd5ffffffffff;
+li x10, 0x6fcfd5ffffffffff
+grevi x11, x10, 7
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 0x73790BFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x73790bffffffffff;
+li x10, 0x73790bffffffffff
+grevi x11, x10, 7
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 0x432FF7FFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x432ff7ffffffffff;
+li x10, 0x432ff7ffffffffff
+grevi x11, x10, 7
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 0xE36B0FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe36b0fffffffffff;
+li x10, 0xe36b0fffffffffff
+grevi x11, x10, 7
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 0xCB4ADFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xcb4adfffffffffff;
+li x10, 0xcb4adfffffffffff
+grevi x11, x10, 7
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 0x15BF3FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x15bf3fffffffffff;
+li x10, 0x15bf3fffffffffff
+grevi x11, x10, 7
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 0xD59A7FFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd59a7fffffffffff;
+li x10, 0xd59a7fffffffffff
+grevi x11, x10, 7
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 0xFE32FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfe32ffffffffffff;
+li x10, 0xfe32ffffffffffff
+grevi x11, x10, 7
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 0xFF7DFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff7dffffffffffff;
+li x10, 0xff7dffffffffffff
+grevi x11, x10, 7
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 0xAF23FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaf23ffffffffffff;
+li x10, 0xaf23ffffffffffff
+grevi x11, x10, 7
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 0x2057FFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2057ffffffffffff;
+li x10, 0x2057ffffffffffff
+grevi x11, x10, 7
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 0x07AFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7afffffffffffff;
+li x10, 0x7afffffffffffff
+grevi x11, x10, 7
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 0xBE9FFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xbe9fffffffffffff;
+li x10, 0xbe9fffffffffffff
+grevi x11, x10, 7
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 0xD8BFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd8bfffffffffffff;
+li x10, 0xd8bfffffffffffff
+grevi x11, x10, 7
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 0x127FFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x127fffffffffffff;
+li x10, 0x127fffffffffffff
+grevi x11, x10, 7
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 0x2EFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2effffffffffffff;
+li x10, 0x2effffffffffffff
+grevi x11, x10, 7
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 0xA5FFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa5ffffffffffffff;
+li x10, 0xa5ffffffffffffff
+grevi x11, x10, 7
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 0xDBFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdbffffffffffffff;
+li x10, 0xdbffffffffffffff
+grevi x11, x10, 7
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 0xA7FFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa7ffffffffffffff;
+li x10, 0xa7ffffffffffffff
+grevi x11, x10, 7
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 0xAFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xafffffffffffffff;
+li x10, 0xafffffffffffffff
+grevi x11, x10, 7
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 0xDFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xdfffffffffffffff;
+li x10, 0xdfffffffffffffff
+grevi x11, x10, 7
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 0xBFFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xbfffffffffffffff;
+li x10, 0xbfffffffffffffff
+grevi x11, x10, 7
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 0x7FFFFFFFFFFFFFFF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7fffffffffffffff;
+li x10, 0x7fffffffffffffff
+grevi x11, x10, 7
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 0xA274EA181E34B3F2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xa274ea181e34b3f2;
+li x10, 0xa274ea181e34b3f2
+grevi x11, x10, 7
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 0x6C3FBF4DC20EF165
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c3fbf4dc20ef165;
+li x10, 0x6c3fbf4dc20ef165
+grevi x11, x10, 7
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 0x28F918D8F6CDB2F9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x28f918d8f6cdb2f9;
+li x10, 0x28f918d8f6cdb2f9
+grevi x11, x10, 7
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 0x13E0D681552454F2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x13e0d681552454f2;
+li x10, 0x13e0d681552454f2
+grevi x11, x10, 7
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 0x0FAB6F3E164F1514
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfab6f3e164f1514;
+li x10, 0xfab6f3e164f1514
+grevi x11, x10, 7
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 0x063E9BED45100359
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x63e9bed45100359;
+li x10, 0x63e9bed45100359
+grevi x11, x10, 7
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 0x02C6D8F2C74C7CD0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2c6d8f2c74c7cd0;
+li x10, 0x2c6d8f2c74c7cd0
+grevi x11, x10, 7
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 0x01D03FDDA123F502
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1d03fdda123f502;
+li x10, 0x1d03fdda123f502
+grevi x11, x10, 7
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 0x00F5380E12B2A415
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf5380e12b2a415;
+li x10, 0xf5380e12b2a415
+grevi x11, x10, 7
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 0x0077730F65BD9ACC
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x77730f65bd9acc;
+li x10, 0x77730f65bd9acc
+grevi x11, x10, 7
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 0x003A6A1DFAF8CDAA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3a6a1dfaf8cdaa;
+li x10, 0x3a6a1dfaf8cdaa
+grevi x11, x10, 7
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 0x001E5B4578511609
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1e5b4578511609;
+li x10, 0x1e5b4578511609
+grevi x11, x10, 7
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 0x000D0372E90794E0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xd0372e90794e0;
+li x10, 0xd0372e90794e0
+grevi x11, x10, 7
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 0x0006A24135B00A55
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6a24135b00a55;
+li x10, 0x6a24135b00a55
+grevi x11, x10, 7
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 0x00020BDF0023B683
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x20bdf0023b683;
+li x10, 0x20bdf0023b683
+grevi x11, x10, 7
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 0x000170EED8E94B16
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x170eed8e94b16;
+li x10, 0x170eed8e94b16
+grevi x11, x10, 7
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 0x0000EF05F542441E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xef05f542441e;
+li x10, 0xef05f542441e
+grevi x11, x10, 7
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 0x00004AAA62F28D1B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x4aaa62f28d1b;
+li x10, 0x4aaa62f28d1b
+grevi x11, x10, 7
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 0x00003CB3D8B9B45D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3cb3d8b9b45d;
+li x10, 0x3cb3d8b9b45d
+grevi x11, x10, 7
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 0x00001BE466809A12
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1be466809a12;
+li x10, 0x1be466809a12
+grevi x11, x10, 7
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_150:
+// rs1_val == 0x0000092EC42B7171
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x92ec42b7171;
+li x10, 0x92ec42b7171
+grevi x11, x10, 7
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_151:
+// rs1_val == 0x0000074F11FA2AC1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x74f11fa2ac1;
+li x10, 0x74f11fa2ac1
+grevi x11, x10, 7
+sw x11, 1024(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_152:
+// rs1_val == 0x0000025A49FE85B1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x25a49fe85b1;
+li x10, 0x25a49fe85b1
+grevi x11, x10, 7
+sw x11, 1032(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_153:
+// rs1_val == 0x0000017A3ACB6267
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x17a3acb6267;
+li x10, 0x17a3acb6267
+grevi x11, x10, 7
+sw x11, 1040(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_154:
+// rs1_val == 0x000000C250B601FD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xc250b601fd;
+li x10, 0xc250b601fd
+grevi x11, x10, 7
+sw x11, 1048(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_155:
+// rs1_val == 0x00000067B53302FD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x67b53302fd;
+li x10, 0x67b53302fd
+grevi x11, x10, 7
+sw x11, 1056(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_156:
+// rs1_val == 0x0000002AD7185DDB
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2ad7185ddb;
+li x10, 0x2ad7185ddb
+grevi x11, x10, 7
+sw x11, 1064(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_157:
+// rs1_val == 0x0000001FFEE5A5B3
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1ffee5a5b3;
+li x10, 0x1ffee5a5b3
+grevi x11, x10, 7
+sw x11, 1072(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_158:
+// rs1_val == 0x0000000AFF66658A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xaff66658a;
+li x10, 0xaff66658a
+grevi x11, x10, 7
+sw x11, 1080(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_159:
+// rs1_val == 0x000000064735AF1D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x64735af1d;
+li x10, 0x64735af1d
+grevi x11, x10, 7
+sw x11, 1088(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_160:
+// rs1_val == 0x0000000275139238
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x275139238;
+li x10, 0x275139238
+grevi x11, x10, 7
+sw x11, 1096(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_161:
+// rs1_val == 0x00000001A9964AF0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1a9964af0;
+li x10, 0x1a9964af0
+grevi x11, x10, 7
+sw x11, 1104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_162:
+// rs1_val == 0x00000000FFF1222A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfff1222a;
+li x10, 0xfff1222a
+grevi x11, x10, 7
+sw x11, 1112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_163:
+// rs1_val == 0x0000000063EA284E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x63ea284e;
+li x10, 0x63ea284e
+grevi x11, x10, 7
+sw x11, 1120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_164:
+// rs1_val == 0x0000000024E55161
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x24e55161;
+li x10, 0x24e55161
+grevi x11, x10, 7
+sw x11, 1128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_165:
+// rs1_val == 0x0000000017A94DEE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x17a94dee;
+li x10, 0x17a94dee
+grevi x11, x10, 7
+sw x11, 1136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_166:
+// rs1_val == 0x0000000008C6A5B9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8c6a5b9;
+li x10, 0x8c6a5b9
+grevi x11, x10, 7
+sw x11, 1144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_167:
+// rs1_val == 0x0000000006C468AF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6c468af;
+li x10, 0x6c468af
+grevi x11, x10, 7
+sw x11, 1152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_168:
+// rs1_val == 0x0000000003B37E15
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x3b37e15;
+li x10, 0x3b37e15
+grevi x11, x10, 7
+sw x11, 1160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_169:
+// rs1_val == 0x0000000001EFFA39
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1effa39;
+li x10, 0x1effa39
+grevi x11, x10, 7
+sw x11, 1168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_170:
+// rs1_val == 0x0000000000B17D0C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xb17d0c;
+li x10, 0xb17d0c
+grevi x11, x10, 7
+sw x11, 1176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_171:
+// rs1_val == 0x00000000007EBDD4
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x7ebdd4;
+li x10, 0x7ebdd4
+grevi x11, x10, 7
+sw x11, 1184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_172:
+// rs1_val == 0x000000000023FEB7
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x23feb7;
+li x10, 0x23feb7
+grevi x11, x10, 7
+sw x11, 1192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_173:
+// rs1_val == 0x0000000000171685
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x171685;
+li x10, 0x171685
+grevi x11, x10, 7
+sw x11, 1200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_174:
+// rs1_val == 0x0000000000098868
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x98868;
+li x10, 0x98868
+grevi x11, x10, 7
+sw x11, 1208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_175:
+// rs1_val == 0x000000000005847F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5847f;
+li x10, 0x5847f
+grevi x11, x10, 7
+sw x11, 1216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_176:
+// rs1_val == 0x0000000000037797
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x37797;
+li x10, 0x37797
+grevi x11, x10, 7
+sw x11, 1224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_177:
+// rs1_val == 0x0000000000015DB9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x15db9;
+li x10, 0x15db9
+grevi x11, x10, 7
+sw x11, 1232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_178:
+// rs1_val == 0x0000000000008735
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x8735;
+li x10, 0x8735
+grevi x11, x10, 7
+sw x11, 1240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_179:
+// rs1_val == 0x0000000000006B68
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6b68;
+li x10, 0x6b68
+grevi x11, x10, 7
+sw x11, 1248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_180:
+// rs1_val == 0x0000000000002F28
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2f28;
+li x10, 0x2f28
+grevi x11, x10, 7
+sw x11, 1256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_181:
+// rs1_val == 0x0000000000001D40
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1d40;
+li x10, 0x1d40
+grevi x11, x10, 7
+sw x11, 1264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_182:
+// rs1_val == 0x0000000000000F26
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf26;
+li x10, 0xf26
+grevi x11, x10, 7
+sw x11, 1272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_183:
+// rs1_val == 0x0000000000000482
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x482;
+li x10, 0x482
+grevi x11, x10, 7
+sw x11, 1280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_184:
+// rs1_val == 0x0000000000000394
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x394;
+li x10, 0x394
+grevi x11, x10, 7
+sw x11, 1288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_185:
+// rs1_val == 0x0000000000000154
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x154;
+li x10, 0x154
+grevi x11, x10, 7
+sw x11, 1296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_186:
+// rs1_val == 0x00000000000000FA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfa;
+li x10, 0xfa
+grevi x11, x10, 7
+sw x11, 1304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_187:
+// rs1_val == 0x0000000000000043
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x43;
+li x10, 0x43
+grevi x11, x10, 7
+sw x11, 1312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_188:
+// rs1_val == 0x0000000000000039
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x39;
+li x10, 0x39
+grevi x11, x10, 7
+sw x11, 1320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_189:
+// rs1_val == 0x0000000000000013
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x13;
+li x10, 0x13
+grevi x11, x10, 7
+sw x11, 1328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_190:
+// rs1_val == 0x000000000000000E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xe;
+li x10, 0xe
+grevi x11, x10, 7
+sw x11, 1336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_191:
+// rs1_val == 0x0000000000000006
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x6;
+li x10, 0x6
+grevi x11, x10, 7
+sw x11, 1344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_192:
+// rs1_val == 0x0000000000000002
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+grevi x11, x10, 7
+sw x11, 1352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_193:
+// rs1_val == 0x0000000000000001
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+grevi x11, x10, 7
+sw x11, 1360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_194:
+// rs1_val == 0x5D68F2012DAF94C2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x5d68f2012daf94c2;
+li x10, 0x5d68f2012daf94c2
+grevi x11, x10, 7
+sw x11, 1368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_195:
+// rs1_val == 0x85986ADB9E044707
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x85986adb9e044707;
+li x10, 0x85986adb9e044707
+grevi x11, x10, 7
+sw x11, 1376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_196:
+// rs1_val == 0xC4BD48204652F62E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xc4bd48204652f62e;
+li x10, 0xc4bd48204652f62e
+grevi x11, x10, 7
+sw x11, 1384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_197:
+// rs1_val == 0xEE4839A13ED7E667
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xee4839a13ed7e667;
+li x10, 0xee4839a13ed7e667
+grevi x11, x10, 7
+sw x11, 1392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_198:
+// rs1_val == 0xF213516D6A013381
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf213516d6a013381;
+li x10, 0xf213516d6a013381
+grevi x11, x10, 7
+sw x11, 1400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_199:
+// rs1_val == 0xF871CFDE6EE84271
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xf871cfde6ee84271;
+li x10, 0xf871cfde6ee84271
+grevi x11, x10, 7
+sw x11, 1408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_200:
+// rs1_val == 0xFD432A19F29C11AE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfd432a19f29c11ae;
+li x10, 0xfd432a19f29c11ae
+grevi x11, x10, 7
+sw x11, 1416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_201:
+// rs1_val == 0xFEE0888FCEB506F7
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfee0888fceb506f7;
+li x10, 0xfee0888fceb506f7
+grevi x11, x10, 7
+sw x11, 1424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_202:
+// rs1_val == 0xFF605EE62A96D06B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff605ee62a96d06b;
+li x10, 0xff605ee62a96d06b
+grevi x11, x10, 7
+sw x11, 1432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_203:
+// rs1_val == 0xFF89799918BB28EA
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xff89799918bb28ea;
+li x10, 0xff89799918bb28ea
+grevi x11, x10, 7
+sw x11, 1440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_204:
+// rs1_val == 0xFFCC6148C6880008
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffcc6148c6880008;
+li x10, 0xffcc6148c6880008
+grevi x11, x10, 7
+sw x11, 1448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_205:
+// rs1_val == 0xFFEB5EA11CE80B13
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffeb5ea11ce80b13;
+li x10, 0xffeb5ea11ce80b13
+grevi x11, x10, 7
+sw x11, 1456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_206:
+// rs1_val == 0xFFF039F699EF1858
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfff039f699ef1858;
+li x10, 0xfff039f699ef1858
+grevi x11, x10, 7
+sw x11, 1464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_207:
+// rs1_val == 0xFFFBEA615FC9EBA5
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffbea615fc9eba5;
+li x10, 0xfffbea615fc9eba5
+grevi x11, x10, 7
+sw x11, 1472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_208:
+// rs1_val == 0xFFFC8D619136580C
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffc8d619136580c;
+li x10, 0xfffc8d619136580c
+grevi x11, x10, 7
+sw x11, 1480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_209:
+// rs1_val == 0xFFFE46462651F638
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffe46462651f638;
+li x10, 0xfffe46462651f638
+grevi x11, x10, 7
+sw x11, 1488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_210:
+// rs1_val == 0xFFFF1C79DAE98555
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffff1c79dae98555;
+li x10, 0xffff1c79dae98555
+grevi x11, x10, 7
+sw x11, 1496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_211:
+// rs1_val == 0xFFFF8E6F889263CF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffff8e6f889263cf;
+li x10, 0xffff8e6f889263cf
+grevi x11, x10, 7
+sw x11, 1504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_212:
+// rs1_val == 0xFFFFDEE2A86B8A6F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffdee2a86b8a6f;
+li x10, 0xffffdee2a86b8a6f
+grevi x11, x10, 7
+sw x11, 1512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_213:
+// rs1_val == 0xFFFFE2AFD167533B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffe2afd167533b;
+li x10, 0xffffe2afd167533b
+grevi x11, x10, 7
+sw x11, 1520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_214:
+// rs1_val == 0xFFFFF1A07F216823
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffff1a07f216823;
+li x10, 0xfffff1a07f216823
+grevi x11, x10, 7
+sw x11, 1528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_215:
+// rs1_val == 0xFFFFF9090973E89D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffff9090973e89d;
+li x10, 0xfffff9090973e89d
+grevi x11, x10, 7
+sw x11, 1536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_216:
+// rs1_val == 0xFFFFFC3769B1DCC0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffc3769b1dcc0;
+li x10, 0xfffffc3769b1dcc0
+grevi x11, x10, 7
+sw x11, 1544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_217:
+// rs1_val == 0xFFFFFEB8396BA83B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffeb8396ba83b;
+li x10, 0xfffffeb8396ba83b
+grevi x11, x10, 7
+sw x11, 1552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_218:
+// rs1_val == 0xFFFFFF4F280B11FE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffff4f280b11fe;
+li x10, 0xffffff4f280b11fe
+grevi x11, x10, 7
+sw x11, 1560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_219:
+// rs1_val == 0xFFFFFF85D814D576
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffff85d814d576;
+li x10, 0xffffff85d814d576
+grevi x11, x10, 7
+sw x11, 1568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_220:
+// rs1_val == 0xFFFFFFCC95A4D258
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffcc95a4d258;
+li x10, 0xffffffcc95a4d258
+grevi x11, x10, 7
+sw x11, 1576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_221:
+// rs1_val == 0xFFFFFFE610A37559
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffe610a37559;
+li x10, 0xffffffe610a37559
+grevi x11, x10, 7
+sw x11, 1584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_222:
+// rs1_val == 0xFFFFFFF66F9FB998
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffff66f9fb998;
+li x10, 0xfffffff66f9fb998
+grevi x11, x10, 7
+sw x11, 1592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_223:
+// rs1_val == 0xFFFFFFFB8C8A18B3
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffb8c8a18b3;
+li x10, 0xfffffffb8c8a18b3
+grevi x11, x10, 7
+sw x11, 1600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_224:
+// rs1_val == 0xFFFFFFFC507A2561
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffc507a2561;
+li x10, 0xfffffffc507a2561
+grevi x11, x10, 7
+sw x11, 1608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_225:
+// rs1_val == 0xFFFFFFFEE5F0307F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffee5f0307f;
+li x10, 0xfffffffee5f0307f
+grevi x11, x10, 7
+sw x11, 1616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_226:
+// rs1_val == 0xFFFFFFFF5DBBB7CF
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffff5dbbb7cf;
+li x10, 0xffffffff5dbbb7cf
+grevi x11, x10, 7
+sw x11, 1624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_227:
+// rs1_val == 0xFFFFFFFF8D884510
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffff8d884510;
+li x10, 0xffffffff8d884510
+grevi x11, x10, 7
+sw x11, 1632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_228:
+// rs1_val == 0xFFFFFFFFD0E58651
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffd0e58651;
+li x10, 0xffffffffd0e58651
+grevi x11, x10, 7
+sw x11, 1640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_229:
+// rs1_val == 0xFFFFFFFFE24C0602
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffe24c0602;
+li x10, 0xffffffffe24c0602
+grevi x11, x10, 7
+sw x11, 1648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_230:
+// rs1_val == 0xFFFFFFFFF109C208
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffff109c208;
+li x10, 0xfffffffff109c208
+grevi x11, x10, 7
+sw x11, 1656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_231:
+// rs1_val == 0xFFFFFFFFFB54AA23
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffb54aa23;
+li x10, 0xfffffffffb54aa23
+grevi x11, x10, 7
+sw x11, 1664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_232:
+// rs1_val == 0xFFFFFFFFFD02FC91
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffd02fc91;
+li x10, 0xfffffffffd02fc91
+grevi x11, x10, 7
+sw x11, 1672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_233:
+// rs1_val == 0xFFFFFFFFFE29D2A0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffe29d2a0;
+li x10, 0xfffffffffe29d2a0
+grevi x11, x10, 7
+sw x11, 1680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_234:
+// rs1_val == 0xFFFFFFFFFF7F6F5E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffff7f6f5e;
+li x10, 0xffffffffff7f6f5e
+grevi x11, x10, 7
+sw x11, 1688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_235:
+// rs1_val == 0xFFFFFFFFFF9104D1
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffff9104d1;
+li x10, 0xffffffffff9104d1
+grevi x11, x10, 7
+sw x11, 1696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_236:
+// rs1_val == 0xFFFFFFFFFFCADB0B
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffcadb0b;
+li x10, 0xffffffffffcadb0b
+grevi x11, x10, 7
+sw x11, 1704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_237:
+// rs1_val == 0xFFFFFFFFFFEEC2B4
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffeec2b4;
+li x10, 0xffffffffffeec2b4
+grevi x11, x10, 7
+sw x11, 1712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_238:
+// rs1_val == 0xFFFFFFFFFFF49E5F
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffff49e5f;
+li x10, 0xfffffffffff49e5f
+grevi x11, x10, 7
+sw x11, 1720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_239:
+// rs1_val == 0xFFFFFFFFFFFAE2EE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffae2ee;
+li x10, 0xfffffffffffae2ee
+grevi x11, x10, 7
+sw x11, 1728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_240:
+// rs1_val == 0xFFFFFFFFFFFC7F0E
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffc7f0e;
+li x10, 0xfffffffffffc7f0e
+grevi x11, x10, 7
+sw x11, 1736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_241:
+// rs1_val == 0xFFFFFFFFFFFE3410
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffe3410;
+li x10, 0xfffffffffffe3410
+grevi x11, x10, 7
+sw x11, 1744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_242:
+// rs1_val == 0xFFFFFFFFFFFF6E0A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffff6e0a;
+li x10, 0xffffffffffff6e0a
+grevi x11, x10, 7
+sw x11, 1752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_243:
+// rs1_val == 0xFFFFFFFFFFFFB32A
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffb32a;
+li x10, 0xffffffffffffb32a
+grevi x11, x10, 7
+sw x11, 1760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_244:
+// rs1_val == 0xFFFFFFFFFFFFC384
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffc384;
+li x10, 0xffffffffffffc384
+grevi x11, x10, 7
+sw x11, 1768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_245:
+// rs1_val == 0xFFFFFFFFFFFFEC1D
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffec1d;
+li x10, 0xffffffffffffec1d
+grevi x11, x10, 7
+sw x11, 1776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_246:
+// rs1_val == 0xFFFFFFFFFFFFF3F0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffff3f0;
+li x10, 0xfffffffffffff3f0
+grevi x11, x10, 7
+sw x11, 1784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_247:
+// rs1_val == 0xFFFFFFFFFFFFFB13
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffb13;
+li x10, 0xfffffffffffffb13
+grevi x11, x10, 7
+sw x11, 1792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_248:
+// rs1_val == 0xFFFFFFFFFFFFFC31
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffc31;
+li x10, 0xfffffffffffffc31
+grevi x11, x10, 7
+sw x11, 1800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_249:
+// rs1_val == 0xFFFFFFFFFFFFFE44
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffe44;
+li x10, 0xfffffffffffffe44
+grevi x11, x10, 7
+sw x11, 1808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_250:
+// rs1_val == 0xFFFFFFFFFFFFFF58
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffff58;
+li x10, 0xffffffffffffff58
+grevi x11, x10, 7
+sw x11, 1816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_251:
+// rs1_val == 0xFFFFFFFFFFFFFFB0
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffb0;
+li x10, 0xffffffffffffffb0
+grevi x11, x10, 7
+sw x11, 1824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_252:
+// rs1_val == 0xFFFFFFFFFFFFFFC6
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffc6;
+li x10, 0xffffffffffffffc6
+grevi x11, x10, 7
+sw x11, 1832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_253:
+// rs1_val == 0xFFFFFFFFFFFFFFE8
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xffffffffffffffe8;
+li x10, 0xffffffffffffffe8
+grevi x11, x10, 7
+sw x11, 1840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_254:
+// rs1_val == 0xFFFFFFFFFFFFFFF2
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffff2;
+li x10, 0xfffffffffffffff2
+grevi x11, x10, 7
+sw x11, 1848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_255:
+// rs1_val == 0xFFFFFFFFFFFFFFF9
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffff9;
+li x10, 0xfffffffffffffff9
+grevi x11, x10, 7
+sw x11, 1856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_256:
+// rs1_val == 0xFFFFFFFFFFFFFFFD
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+grevi x11, x10, 7
+sw x11, 1864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_257:
+// rs1_val == 0xFFFFFFFFFFFFFFFE
+// opcode: grevi ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+grevi x11, x10, 7
+sw x11, 1872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_258:
+// rs1_val == 0x9480000000000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x9480000000000000;
+li x10, 0x9480000000000000
+grevi x11, x10, 7
+sw x11, 1880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_259:
+// rs1_val == 0x77B0000000000000
+// opcode: grevi ; op1:x10; dest:x11; op1val:0x77b0000000000000;
+li x10, 0x77b0000000000000
+grevi x11, x10, 7
+sw x11, 1888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x15_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x15_1:
+ .fill 23*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 237*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rol-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rol-01.S
new file mode 100644
index 000000000..945868cea
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rol-01.S
@@ -0,0 +1,2716 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the rol instruction of the RISC-V extension for the rol covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",rol)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",rol)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",rol)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",rol)
+
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x27, rs2==x27, rd==x18, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: rol ; op1:x27; op2:x27; dest:x18; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(rol, x18, x27, x27, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x1, 0, x5)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x10, rs2==x10, rd==x10, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: rol ; op1:x10; op2:x10; dest:x10; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(rol, x10, x10, x10, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x1, 8, x5)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x7, rs2==x11, rd==x29, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: rol ; op1:x7; op2:x11; dest:x29; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(rol, x29, x7, x11, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x1, 16, x5)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x3, rs2==x29, rd==x3, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: rol ; op1:x3; op2:x29; dest:x3; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(rol, x3, x3, x29, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x1, 24, x5)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x11, rs2==x12, rd==x12, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: rol ; op1:x11; op2:x12; dest:x12; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(rol, x12, x11, x12, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x1, 32, x5)
+
+inst_5:
+// rs1==x13, rs2==x22, rd==x20, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: rol ; op1:x13; op2:x22; dest:x20; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(rol, x20, x13, x22, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x1, 40, x5)
+
+inst_6:
+// rs1==x21, rs2==x19, rd==x9, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: rol ; op1:x21; op2:x19; dest:x9; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(rol, x9, x21, x19, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x1, 48, x5)
+
+inst_7:
+// rs1==x29, rs2==x0, rd==x23, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: rol ; op1:x29; op2:x0; dest:x23; op1val:0x2405b307cec7313a; op2val:0x0
+TEST_RR_OP(rol, x23, x29, x0, 0x0000000000000000, 0x2405b307cec7313a, 0x0, x1, 56, x5)
+
+inst_8:
+// rs1==x0, rs2==x23, rd==x28, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: rol ; op1:x0; op2:x23; dest:x28; op1val:0x0; op2val:0x8200000000000000
+TEST_RR_OP(rol, x28, x0, x23, 0x0000000000000000, 0x0, 0x8200000000000000, x1, 64, x5)
+
+inst_9:
+// rs1==x15, rs2==x20, rd==x25, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: rol ; op1:x15; op2:x20; dest:x25; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(rol, x25, x15, x20, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x1, 72, x5)
+
+inst_10:
+// rs1==x30, rs2==x9, rd==x11, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: rol ; op1:x30; op2:x9; dest:x11; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(rol, x11, x30, x9, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x1, 80, x5)
+
+inst_11:
+// rs1==x16, rs2==x31, rd==x7, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: rol ; op1:x16; op2:x31; dest:x7; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(rol, x7, x16, x31, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x1, 88, x5)
+
+inst_12:
+// rs1==x6, rs2==x30, rd==x27, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: rol ; op1:x6; op2:x30; dest:x27; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(rol, x27, x6, x30, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x1, 96, x5)
+
+inst_13:
+// rs1==x24, rs2==x2, rd==x26, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: rol ; op1:x24; op2:x2; dest:x26; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(rol, x26, x24, x2, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x1, 104, x5)
+
+inst_14:
+// rs1==x28, rs2==x4, rd==x6, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: rol ; op1:x28; op2:x4; dest:x6; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(rol, x6, x28, x4, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x1, 112, x5)
+
+inst_15:
+// rs1==x22, rs2==x18, rd==x2, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: rol ; op1:x22; op2:x18; dest:x2; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(rol, x2, x22, x18, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x1, 120, x5)
+
+inst_16:
+// rs1==x17, rs2==x13, rd==x4, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: rol ; op1:x17; op2:x13; dest:x4; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(rol, x4, x17, x13, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x1, 128, x5)
+
+inst_17:
+// rs1==x20, rs2==x14, rd==x17, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: rol ; op1:x20; op2:x14; dest:x17; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(rol, x17, x20, x14, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x1, 136, x27)
+RVTEST_SIGBASE( x20,signature_x20_0)
+
+inst_18:
+// rs1==x2, rs2==x21, rd==x24, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: rol ; op1:x2; op2:x21; dest:x24; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(rol, x24, x2, x21, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x20, 0, x27)
+
+inst_19:
+// rs1==x23, rs2==x17, rd==x5, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: rol ; op1:x23; op2:x17; dest:x5; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(rol, x5, x23, x17, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x20, 8, x27)
+
+inst_20:
+// rs1==x14, rs2==x3, rd==x16, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: rol ; op1:x14; op2:x3; dest:x16; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(rol, x16, x14, x3, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x20, 16, x27)
+
+inst_21:
+// rs1==x25, rs2==x24, rd==x15, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: rol ; op1:x25; op2:x24; dest:x15; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(rol, x15, x25, x24, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x20, 24, x27)
+
+inst_22:
+// rs1==x1, rs2==x25, rd==x22, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: rol ; op1:x1; op2:x25; dest:x22; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(rol, x22, x1, x25, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x20, 32, x27)
+
+inst_23:
+// rs1==x4, rs2==x16, rd==x30, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: rol ; op1:x4; op2:x16; dest:x30; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(rol, x30, x4, x16, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x20, 40, x27)
+
+inst_24:
+// rs1==x31, rs2==x8, rd==x0, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: rol ; op1:x31; op2:x8; dest:x0; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(rol, x0, x31, x8, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x20, 48, x27)
+
+inst_25:
+// rs1==x12, rs2==x15, rd==x19, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: rol ; op1:x12; op2:x15; dest:x19; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(rol, x19, x12, x15, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x20, 56, x27)
+
+inst_26:
+// rs1==x18, rs2==x5, rd==x8, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: rol ; op1:x18; op2:x5; dest:x8; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(rol, x8, x18, x5, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x20, 64, x27)
+
+inst_27:
+// rs1==x8, rs2==x26, rd==x14, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: rol ; op1:x8; op2:x26; dest:x14; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(rol, x14, x8, x26, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x20, 72, x27)
+
+inst_28:
+// rs1==x19, rs2==x6, rd==x13, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: rol ; op1:x19; op2:x6; dest:x13; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(rol, x13, x19, x6, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x20, 80, x27)
+
+inst_29:
+// rs1==x9, rs2==x7, rd==x1, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: rol ; op1:x9; op2:x7; dest:x1; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(rol, x1, x9, x7, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x20, 88, x27)
+
+inst_30:
+// rs1==x26, rs2==x28, rd==x31, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: rol ; op1:x26; op2:x28; dest:x31; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(rol, x31, x26, x28, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x20, 96, x27)
+
+inst_31:
+// rs1==x5, rs2==x1, rd==x21, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: rol ; op1:x5; op2:x1; dest:x21; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(rol, x21, x5, x1, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x20, 104, x27)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x20, 112, x27)
+RVTEST_SIGBASE( x1,signature_x1_2)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x1, 0, x2)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x1, 8, x2)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x1, 16, x2)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x1, 24, x2)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x1, 32, x2)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x1, 40, x2)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x1, 48, x2)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x1, 56, x2)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x1, 64, x2)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x1, 72, x2)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x1, 80, x2)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x1, 88, x2)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x1, 96, x2)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x1, 104, x2)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x1, 112, x2)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x1, 120, x2)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x1, 128, x2)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x1, 136, x2)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x1, 144, x2)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x1, 152, x2)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x1, 160, x2)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x1, 168, x2)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x1, 176, x2)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x1, 184, x2)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x1, 192, x2)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x1, 200, x2)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x1, 208, x2)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x1, 216, x2)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x1, 224, x2)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x1, 232, x2)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x1, 240, x2)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x1, 248, x2)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x1, 256, x2)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x1, 264, x2)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x1, 272, x2)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x1, 280, x2)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x1, 288, x2)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x1, 296, x2)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x1, 304, x2)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x1, 312, x2)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x1, 320, x2)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x1, 328, x2)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x1, 336, x2)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x1, 344, x2)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x1, 352, x2)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x1, 360, x2)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x1, 368, x2)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x1, 376, x2)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x1, 384, x2)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x1, 392, x2)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x1, 400, x2)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x1, 408, x2)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x1, 416, x2)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x1, 424, x2)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x1, 432, x2)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x1, 440, x2)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x1, 448, x2)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x1, 456, x2)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x1, 464, x2)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x1, 472, x2)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x1, 480, x2)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x1, 488, x2)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x1, 496, x2)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x1, 504, x2)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x1, 512, x2)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x1, 520, x2)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x1, 528, x2)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x1, 536, x2)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x1, 544, x2)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x1, 552, x2)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x1, 560, x2)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x1, 568, x2)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x1, 576, x2)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x1, 584, x2)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x1, 592, x2)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x1, 600, x2)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x1, 608, x2)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x1, 616, x2)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x1, 624, x2)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x1, 632, x2)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x1, 640, x2)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x1, 648, x2)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x1, 656, x2)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x1, 664, x2)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x1, 672, x2)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x1, 680, x2)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x1, 688, x2)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x1, 696, x2)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x1, 704, x2)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x1, 712, x2)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x1, 720, x2)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x1, 728, x2)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x1, 736, x2)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x1, 744, x2)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x1, 752, x2)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x1, 760, x2)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x1, 768, x2)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x1, 776, x2)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x1, 784, x2)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x1, 792, x2)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x1, 800, x2)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x1, 808, x2)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x1, 816, x2)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x1, 824, x2)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x1, 832, x2)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x1, 840, x2)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x1, 848, x2)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x1, 856, x2)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x1, 864, x2)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x1, 872, x2)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x1, 880, x2)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x1, 888, x2)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x1, 896, x2)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x1, 904, x2)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x1, 912, x2)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x1, 920, x2)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x1, 928, x2)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x1, 936, x2)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x1, 944, x2)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x1, 952, x2)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x1, 960, x2)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x1, 968, x2)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x1, 976, x2)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x1, 984, x2)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x1, 992, x2)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x1, 1000, x2)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x1, 1008, x2)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x1, 1016, x2)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x1, 1024, x2)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x1, 1032, x2)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x1, 1040, x2)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x1, 1048, x2)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x1, 1056, x2)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x1, 1064, x2)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x1, 1072, x2)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x1, 1080, x2)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x1, 1088, x2)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x1, 1096, x2)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x1, 1104, x2)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x1, 1112, x2)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x1, 1120, x2)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x1, 1128, x2)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x1, 1136, x2)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x1, 1144, x2)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x1, 1152, x2)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x1, 1160, x2)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x1, 1168, x2)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x1, 1176, x2)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x1, 1184, x2)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x1, 1192, x2)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x1, 1200, x2)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x1, 1208, x2)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x1, 1216, x2)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x1, 1224, x2)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x1, 1232, x2)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x1, 1240, x2)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x1, 1248, x2)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x1, 1256, x2)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x1, 1264, x2)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x1, 1272, x2)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x1, 1280, x2)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x1, 1288, x2)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x1, 1296, x2)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x1, 1304, x2)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x1, 1312, x2)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x1, 1320, x2)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x1, 1328, x2)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x1, 1336, x2)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x1, 1344, x2)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x1, 1352, x2)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x1, 1360, x2)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x1, 1368, x2)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x1, 1376, x2)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x1, 1384, x2)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x1, 1392, x2)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x1, 1400, x2)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x1, 1408, x2)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x1, 1416, x2)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x1, 1424, x2)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x1, 1432, x2)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x1, 1440, x2)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x1, 1448, x2)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x1, 1456, x2)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x1, 1464, x2)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x1, 1472, x2)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x1, 1480, x2)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x1, 1488, x2)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x1, 1496, x2)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x1, 1504, x2)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x1, 1512, x2)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x1, 1520, x2)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x1, 1528, x2)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x1, 1536, x2)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x1, 1544, x2)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x1, 1552, x2)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x1, 1560, x2)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x1, 1568, x2)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x1, 1576, x2)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x1, 1584, x2)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x1, 1592, x2)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x1, 1600, x2)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x1, 1608, x2)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x1, 1616, x2)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x1, 1624, x2)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x1, 1632, x2)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x1, 1640, x2)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x1, 1648, x2)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x1, 1656, x2)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x1, 1664, x2)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x1, 1672, x2)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x1, 1680, x2)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x1, 1688, x2)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x1, 1696, x2)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x1, 1704, x2)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x1, 1712, x2)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x1, 1720, x2)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x1, 1728, x2)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x1, 1736, x2)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x1, 1744, x2)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x1, 1752, x2)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x1, 1760, x2)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x1, 1768, x2)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x1, 1776, x2)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x1, 1784, x2)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x1, 1792, x2)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x1, 1800, x2)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x1, 1808, x2)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x1, 1816, x2)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x1, 1824, x2)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x1, 1832, x2)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x1, 1840, x2)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x1, 1848, x2)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x1, 1856, x2)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x1, 1864, x2)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x1, 1872, x2)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x1, 1880, x2)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x1, 1888, x2)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x1, 1896, x2)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x1, 1904, x2)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x1, 1912, x2)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x1, 1920, x2)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x1, 1928, x2)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x1, 1936, x2)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x1, 1944, x2)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x1, 1952, x2)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x1, 1960, x2)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x1, 1968, x2)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x1, 1976, x2)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x1, 1984, x2)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x1, 1992, x2)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x1, 2000, x2)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x1, 2008, x2)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x1, 2016, x2)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x1, 2024, x2)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x1, 2032, x2)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x1, 2040, x2)
+RVTEST_SIGBASE( x1,signature_x1_3)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x1, 0, x2)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x1, 8, x2)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x1, 16, x2)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x1, 24, x2)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x1, 32, x2)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x1, 40, x2)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x1, 48, x2)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x1, 56, x2)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x1, 64, x2)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x1, 72, x2)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x1, 80, x2)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x1, 88, x2)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x1, 96, x2)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x1, 104, x2)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x1, 112, x2)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x1, 120, x2)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x1, 128, x2)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x1, 136, x2)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x1, 144, x2)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x1, 152, x2)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x1, 160, x2)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x1, 168, x2)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x1, 176, x2)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x1, 184, x2)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x1, 192, x2)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x1, 200, x2)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x1, 208, x2)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x1, 216, x2)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x1, 224, x2)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x1, 232, x2)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x1, 240, x2)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x1, 248, x2)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x1, 256, x2)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x1, 264, x2)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x1, 272, x2)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x1, 280, x2)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x1, 288, x2)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x1, 296, x2)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x1, 304, x2)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x1, 312, x2)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x1, 320, x2)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x1, 328, x2)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x1, 336, x2)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x1, 344, x2)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x1, 352, x2)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x1, 360, x2)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x1, 368, x2)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x1, 376, x2)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x1, 384, x2)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x1, 392, x2)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x1, 400, x2)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x1, 408, x2)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x1, 416, x2)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x1, 424, x2)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x1, 432, x2)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x1, 440, x2)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x1, 448, x2)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x1, 456, x2)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x1, 464, x2)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x1, 472, x2)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x1, 480, x2)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x1, 488, x2)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x1, 496, x2)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x1, 504, x2)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x1, 512, x2)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x1, 520, x2)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x1, 528, x2)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x1, 536, x2)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x1, 544, x2)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x1, 552, x2)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x1, 560, x2)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x1, 568, x2)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x1, 576, x2)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x1, 584, x2)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x1, 592, x2)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x1, 600, x2)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x1, 608, x2)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x1, 616, x2)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x1, 624, x2)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x1, 632, x2)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x1, 640, x2)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x1, 648, x2)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x1, 656, x2)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x1, 664, x2)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x1, 672, x2)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x1, 680, x2)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x1, 688, x2)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x1, 696, x2)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x1, 704, x2)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x1, 712, x2)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x1, 720, x2)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x1, 728, x2)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x1, 736, x2)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x1, 744, x2)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x1, 752, x2)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x1, 760, x2)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x1, 768, x2)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x1, 776, x2)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x1, 784, x2)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x1, 792, x2)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x1, 800, x2)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x1, 808, x2)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x1, 816, x2)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x1, 824, x2)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x1, 832, x2)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x1, 840, x2)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x1, 848, x2)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x1, 856, x2)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x1, 864, x2)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x1, 872, x2)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x1, 880, x2)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x1, 888, x2)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x1, 896, x2)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x1, 904, x2)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x1, 912, x2)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x1, 920, x2)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x1, 928, x2)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x1, 936, x2)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x1, 944, x2)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x1, 952, x2)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x1, 960, x2)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x1, 968, x2)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x1, 976, x2)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x1, 984, x2)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x1, 992, x2)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x1, 1000, x2)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x1, 1008, x2)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x1, 1016, x2)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x1, 1024, x2)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x1, 1032, x2)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x1, 1040, x2)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x1, 1048, x2)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x1, 1056, x2)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x1, 1064, x2)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x1, 1072, x2)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x1, 1080, x2)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x1, 1088, x2)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x1, 1096, x2)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x1, 1104, x2)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x1, 1112, x2)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x1, 1120, x2)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x1, 1128, x2)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x1, 1136, x2)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x1, 1144, x2)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x1, 1152, x2)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x1, 1160, x2)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x1, 1168, x2)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x1, 1176, x2)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x1, 1184, x2)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x1, 1192, x2)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x1, 1200, x2)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x1, 1208, x2)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x1, 1216, x2)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x1, 1224, x2)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x1, 1232, x2)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x1, 1240, x2)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x1, 1248, x2)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x1, 1256, x2)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x1, 1264, x2)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x1, 1272, x2)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x1, 1280, x2)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x1, 1288, x2)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x1, 1296, x2)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x1, 1304, x2)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x1, 1312, x2)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x1, 1320, x2)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x1, 1328, x2)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x1, 1336, x2)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x1, 1344, x2)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x1, 1352, x2)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x1, 1360, x2)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x1, 1368, x2)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x1, 1376, x2)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x1, 1384, x2)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x1, 1392, x2)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x1, 1400, x2)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x1, 1408, x2)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x1, 1416, x2)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x1, 1424, x2)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x1, 1432, x2)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x1, 1440, x2)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x1, 1448, x2)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x1, 1456, x2)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x1, 1464, x2)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x1, 1472, x2)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x1, 1480, x2)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x1, 1488, x2)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x1, 1496, x2)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x1, 1504, x2)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x1, 1512, x2)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x1, 1520, x2)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x1, 1528, x2)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x1, 1536, x2)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x1, 1544, x2)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x1, 1552, x2)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x1, 1560, x2)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x1, 1568, x2)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x1, 1576, x2)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x1, 1584, x2)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x1, 1592, x2)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x1, 1600, x2)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x1, 1608, x2)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x1, 1616, x2)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x1, 1624, x2)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x1, 1632, x2)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x1, 1640, x2)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x1, 1648, x2)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x1, 1656, x2)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x1, 1664, x2)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x1, 1672, x2)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x1, 1680, x2)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x1, 1688, x2)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x1, 1696, x2)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x1, 1704, x2)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x1, 1712, x2)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x1, 1720, x2)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x1, 1728, x2)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x1, 1736, x2)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x1, 1744, x2)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x1, 1752, x2)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x1, 1760, x2)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x1, 1768, x2)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x1, 1776, x2)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x1, 1784, x2)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x1, 1792, x2)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x1, 1800, x2)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x1, 1808, x2)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x1, 1816, x2)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x1, 1824, x2)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x1, 1832, x2)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x1, 1840, x2)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x1, 1848, x2)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x1, 1856, x2)
+
+inst_522:
+// rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x1, 1864, x2)
+
+inst_523:
+// rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x1, 1872, x2)
+
+inst_524:
+// rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: rol ; op1:x10; op2:x11; dest:x12; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(rol, x12, x10, x11, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x1, 1880, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x1_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 18*(XLEN/32),4,0xdeadbeef
+
+
+signature_x20_0:
+ .fill 15*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_2:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_3:
+ .fill 236*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rolw-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rolw-01.S
new file mode 100644
index 000000000..f34961f3b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rolw-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the rolw instruction of the RISC-V extension for the rolw covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",rolw)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",rolw)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",rolw)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKb.*);def TEST_CASE_1=True;",rolw)
+
+RVTEST_SIGBASE( x6,signature_x6_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x31, rs2==x31, rd==x27, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: rolw ; op1:x31; op2:x31; dest:x27; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(rolw, x27, x31, x31, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x6, 0, x2)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x25, rs2==x25, rd==x25, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: rolw ; op1:x25; op2:x25; dest:x25; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(rolw, x25, x25, x25, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x6, 8, x2)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x17, rs2==x3, rd==x9, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: rolw ; op1:x17; op2:x3; dest:x9; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(rolw, x9, x17, x3, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x6, 16, x2)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x19, rs2==x16, rd==x19, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: rolw ; op1:x19; op2:x16; dest:x19; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(rolw, x19, x19, x16, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x6, 24, x2)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x30, rs2==x18, rd==x18, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: rolw ; op1:x30; op2:x18; dest:x18; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(rolw, x18, x30, x18, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x6, 32, x2)
+
+inst_5:
+// rs1==x14, rs2==x7, rd==x16, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: rolw ; op1:x14; op2:x7; dest:x16; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(rolw, x16, x14, x7, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x6, 40, x2)
+
+inst_6:
+// rs1==x29, rs2==x21, rd==x4, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: rolw ; op1:x29; op2:x21; dest:x4; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(rolw, x4, x29, x21, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x6, 48, x2)
+
+inst_7:
+// rs1==x5, rs2==x26, rd==x14, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: rolw ; op1:x5; op2:x26; dest:x14; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(rolw, x14, x5, x26, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x6, 56, x2)
+
+inst_8:
+// rs1==x8, rs2==x20, rd==x5, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: rolw ; op1:x8; op2:x20; dest:x5; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(rolw, x5, x8, x20, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x6, 64, x2)
+
+inst_9:
+// rs1==x12, rs2==x11, rd==x30, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: rolw ; op1:x12; op2:x11; dest:x30; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(rolw, x30, x12, x11, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x6, 72, x2)
+
+inst_10:
+// rs1==x22, rs2==x28, rd==x21, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: rolw ; op1:x22; op2:x28; dest:x21; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(rolw, x21, x22, x28, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x6, 80, x2)
+
+inst_11:
+// rs1==x0, rs2==x9, rd==x3, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: rolw ; op1:x0; op2:x9; dest:x3; op1val:0x0; op2val:0x1940000000000000
+TEST_RR_OP(rolw, x3, x0, x9, 0x0000000000000000, 0x0, 0x1940000000000000, x6, 88, x2)
+
+inst_12:
+// rs1==x3, rs2==x30, rd==x13, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: rolw ; op1:x3; op2:x30; dest:x13; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(rolw, x13, x3, x30, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x6, 96, x2)
+
+inst_13:
+// rs1==x15, rs2==x29, rd==x17, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: rolw ; op1:x15; op2:x29; dest:x17; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(rolw, x17, x15, x29, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x6, 104, x2)
+
+inst_14:
+// rs1==x7, rs2==x19, rd==x10, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: rolw ; op1:x7; op2:x19; dest:x10; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(rolw, x10, x7, x19, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x6, 112, x2)
+
+inst_15:
+// rs1==x27, rs2==x10, rd==x7, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: rolw ; op1:x27; op2:x10; dest:x7; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(rolw, x7, x27, x10, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x6, 120, x2)
+
+inst_16:
+// rs1==x9, rs2==x1, rd==x12, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: rolw ; op1:x9; op2:x1; dest:x12; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(rolw, x12, x9, x1, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x6, 128, x2)
+
+inst_17:
+// rs1==x21, rs2==x12, rd==x2, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: rolw ; op1:x21; op2:x12; dest:x2; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(rolw, x2, x21, x12, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x6, 136, x7)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_18:
+// rs1==x11, rs2==x0, rd==x1, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: rolw ; op1:x11; op2:x0; dest:x1; op1val:0x718e177de812dd49; op2val:0x0
+TEST_RR_OP(rolw, x1, x11, x0, 0x0000000000000000, 0x718e177de812dd49, 0x0, x3, 0, x7)
+
+inst_19:
+// rs1==x26, rs2==x2, rd==x15, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: rolw ; op1:x26; op2:x2; dest:x15; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(rolw, x15, x26, x2, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x3, 8, x7)
+
+inst_20:
+// rs1==x13, rs2==x6, rd==x22, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: rolw ; op1:x13; op2:x6; dest:x22; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(rolw, x22, x13, x6, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x3, 16, x7)
+
+inst_21:
+// rs1==x28, rs2==x14, rd==x29, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: rolw ; op1:x28; op2:x14; dest:x29; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(rolw, x29, x28, x14, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x3, 24, x7)
+
+inst_22:
+// rs1==x2, rs2==x24, rd==x20, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: rolw ; op1:x2; op2:x24; dest:x20; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(rolw, x20, x2, x24, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x3, 32, x7)
+
+inst_23:
+// rs1==x20, rs2==x4, rd==x0, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: rolw ; op1:x20; op2:x4; dest:x0; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(rolw, x0, x20, x4, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x3, 40, x7)
+
+inst_24:
+// rs1==x4, rs2==x5, rd==x23, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: rolw ; op1:x4; op2:x5; dest:x23; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(rolw, x23, x4, x5, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x3, 48, x7)
+
+inst_25:
+// rs1==x23, rs2==x13, rd==x31, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: rolw ; op1:x23; op2:x13; dest:x31; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(rolw, x31, x23, x13, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x3, 56, x7)
+
+inst_26:
+// rs1==x24, rs2==x8, rd==x11, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: rolw ; op1:x24; op2:x8; dest:x11; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(rolw, x11, x24, x8, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x3, 64, x7)
+
+inst_27:
+// rs1==x18, rs2==x17, rd==x24, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: rolw ; op1:x18; op2:x17; dest:x24; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(rolw, x24, x18, x17, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x3, 72, x7)
+
+inst_28:
+// rs1==x10, rs2==x15, rd==x26, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: rolw ; op1:x10; op2:x15; dest:x26; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(rolw, x26, x10, x15, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x3, 80, x7)
+
+inst_29:
+// rs1==x6, rs2==x22, rd==x8, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: rolw ; op1:x6; op2:x22; dest:x8; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(rolw, x8, x6, x22, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x3, 88, x7)
+
+inst_30:
+// rs1==x16, rs2==x27, rd==x28, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: rolw ; op1:x16; op2:x27; dest:x28; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(rolw, x28, x16, x27, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x3, 96, x7)
+
+inst_31:
+// rs1==x1, rs2==x23, rd==x6, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: rolw ; op1:x1; op2:x23; dest:x6; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(rolw, x6, x1, x23, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x3, 104, x7)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x3, 112, x7)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x3, 120, x7)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x3, 128, x7)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x3, 136, x7)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x3, 144, x7)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x3, 152, x7)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x3, 160, x7)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x3, 168, x7)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x3, 176, x7)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x3, 184, x7)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x3, 192, x7)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x3, 200, x7)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x3, 208, x7)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x3, 216, x7)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x3, 224, x7)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x3, 232, x7)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x3, 240, x7)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x3, 248, x7)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x3, 256, x7)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x3, 264, x7)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x3, 272, x7)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x3, 280, x7)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x3, 288, x7)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x3, 296, x7)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x3, 304, x7)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x3, 312, x7)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x3, 320, x7)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x3, 328, x7)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x3, 336, x7)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x3, 344, x7)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x3, 352, x7)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x3, 360, x7)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x3, 368, x7)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x3, 376, x7)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x3, 384, x7)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x3, 392, x7)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x3, 400, x7)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x3, 408, x7)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x3, 416, x7)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x3, 424, x7)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x3, 432, x7)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x3, 440, x7)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x3, 448, x7)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x3, 456, x7)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x3, 464, x7)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x3, 472, x7)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x3, 480, x7)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x3, 488, x7)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x3, 496, x7)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x3, 504, x7)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x3, 512, x7)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x3, 520, x7)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x3, 528, x7)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x3, 536, x7)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x3, 544, x7)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x3, 552, x7)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x3, 560, x7)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x3, 568, x7)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x3, 576, x7)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x3, 584, x7)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x3, 592, x7)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x3, 600, x7)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x3, 608, x7)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x3, 616, x7)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x3, 624, x7)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x3, 632, x7)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x3, 640, x7)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x3, 648, x7)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x3, 656, x7)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x3, 664, x7)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x3, 672, x7)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x3, 680, x7)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x3, 688, x7)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x3, 696, x7)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x3, 704, x7)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x3, 712, x7)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x3, 720, x7)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x3, 728, x7)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x3, 736, x7)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x3, 744, x7)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x3, 752, x7)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x3, 760, x7)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x3, 768, x7)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x3, 776, x7)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x3, 784, x7)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x3, 792, x7)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x3, 800, x7)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x3, 808, x7)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x3, 816, x7)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x3, 824, x7)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x3, 832, x7)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x3, 840, x7)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x3, 848, x7)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x3, 856, x7)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x3, 864, x7)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x3, 872, x7)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x3, 880, x7)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x3, 888, x7)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x3, 896, x7)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x3, 904, x7)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x3, 912, x7)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x3, 920, x7)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x3, 928, x7)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x3, 936, x7)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x3, 944, x7)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x3, 952, x7)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x3, 960, x7)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x3, 968, x7)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x3, 976, x7)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x3, 984, x7)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x3, 992, x7)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x3, 1000, x7)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x3, 1008, x7)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x3, 1016, x7)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x3, 1024, x7)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x3, 1032, x7)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x3, 1040, x7)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x3, 1048, x7)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x3, 1056, x7)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x3, 1064, x7)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x3, 1072, x7)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x3, 1080, x7)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x3, 1088, x7)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x3, 1096, x7)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x3, 1104, x7)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x3, 1112, x7)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x3, 1120, x7)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x3, 1128, x7)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x3, 1136, x7)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x3, 1144, x7)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x3, 1152, x7)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x3, 1160, x7)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x3, 1168, x7)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x3, 1176, x7)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x3, 1184, x7)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x3, 1192, x7)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x3, 1200, x7)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x3, 1208, x7)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x3, 1216, x7)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x3, 1224, x7)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x3, 1232, x7)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x3, 1240, x7)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x3, 1248, x7)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x3, 1256, x7)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x3, 1264, x7)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x3, 1272, x7)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x3, 1280, x7)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x3, 1288, x7)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x3, 1296, x7)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x3, 1304, x7)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x3, 1312, x7)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x3, 1320, x7)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x3, 1328, x7)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x3, 1336, x7)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x3, 1344, x7)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x3, 1352, x7)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x3, 1360, x7)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x3, 1368, x7)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x3, 1376, x7)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x3, 1384, x7)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x3, 1392, x7)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x3, 1400, x7)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x3, 1408, x7)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x3, 1416, x7)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x3, 1424, x7)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x3, 1432, x7)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x3, 1440, x7)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x3, 1448, x7)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x3, 1456, x7)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x3, 1464, x7)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x3, 1472, x7)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x3, 1480, x7)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x3, 1488, x7)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x3, 1496, x7)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x3, 1504, x7)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x3, 1512, x7)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x3, 1520, x7)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x3, 1528, x7)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x3, 1536, x7)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x3, 1544, x7)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x3, 1552, x7)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x3, 1560, x7)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x3, 1568, x7)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x3, 1576, x7)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x3, 1584, x7)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x3, 1592, x7)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x3, 1600, x7)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x3, 1608, x7)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x3, 1616, x7)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x3, 1624, x7)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x3, 1632, x7)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x3, 1640, x7)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x3, 1648, x7)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x3, 1656, x7)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x3, 1664, x7)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x3, 1672, x7)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x3, 1680, x7)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x3, 1688, x7)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x3, 1696, x7)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x3, 1704, x7)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x3, 1712, x7)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x3, 1720, x7)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x3, 1728, x7)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x3, 1736, x7)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x3, 1744, x7)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x3, 1752, x7)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x3, 1760, x7)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x3, 1768, x7)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x3, 1776, x7)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x3, 1784, x7)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x3, 1792, x7)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x3, 1800, x7)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x3, 1808, x7)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x3, 1816, x7)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x3, 1824, x7)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x3, 1832, x7)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x3, 1840, x7)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x3, 1848, x7)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x3, 1856, x7)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x3, 1864, x7)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x3, 1872, x7)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x3, 1880, x7)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x3, 1888, x7)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x3, 1896, x7)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x3, 1904, x7)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x3, 1912, x7)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x3, 1920, x7)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x3, 1928, x7)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x3, 1936, x7)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x3, 1944, x7)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x3, 1952, x7)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x3, 1960, x7)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x3, 1968, x7)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x3, 1976, x7)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x3, 1984, x7)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x3, 1992, x7)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x3, 2000, x7)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x3, 2008, x7)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x3, 2016, x7)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x3, 2024, x7)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x3, 2032, x7)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x3, 2040, x7)
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x3, 0, x7)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x3, 8, x7)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x3, 16, x7)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x3, 24, x7)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x3, 32, x7)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x3, 40, x7)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x3, 48, x7)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x3, 56, x7)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x3, 64, x7)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x3, 72, x7)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x3, 80, x7)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x3, 88, x7)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x3, 96, x7)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x3, 104, x7)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x3, 112, x7)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x3, 120, x7)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x3, 128, x7)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x3, 136, x7)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x3, 144, x7)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x3, 152, x7)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x3, 160, x7)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x3, 168, x7)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x3, 176, x7)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x3, 184, x7)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x3, 192, x7)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x3, 200, x7)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x3, 208, x7)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x3, 216, x7)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x3, 224, x7)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x3, 232, x7)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x3, 240, x7)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x3, 248, x7)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x3, 256, x7)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x3, 264, x7)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x3, 272, x7)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x3, 280, x7)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x3, 288, x7)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x3, 296, x7)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x3, 304, x7)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x3, 312, x7)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x3, 320, x7)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x3, 328, x7)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x3, 336, x7)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x3, 344, x7)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x3, 352, x7)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x3, 360, x7)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x3, 368, x7)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x3, 376, x7)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x3, 384, x7)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x3, 392, x7)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x3, 400, x7)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x3, 408, x7)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x3, 416, x7)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x3, 424, x7)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x3, 432, x7)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x3, 440, x7)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x3, 448, x7)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x3, 456, x7)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x3, 464, x7)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x3, 472, x7)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x3, 480, x7)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x3, 488, x7)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x3, 496, x7)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x3, 504, x7)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x3, 512, x7)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x3, 520, x7)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x3, 528, x7)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x3, 536, x7)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x3, 544, x7)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x3, 552, x7)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x3, 560, x7)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x3, 568, x7)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x3, 576, x7)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x3, 584, x7)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x3, 592, x7)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x3, 600, x7)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x3, 608, x7)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x3, 616, x7)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x3, 624, x7)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x3, 632, x7)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x3, 640, x7)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x3, 648, x7)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x3, 656, x7)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x3, 664, x7)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x3, 672, x7)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x3, 680, x7)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x3, 688, x7)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x3, 696, x7)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x3, 704, x7)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x3, 712, x7)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x3, 720, x7)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x3, 728, x7)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x3, 736, x7)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x3, 744, x7)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x3, 752, x7)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x3, 760, x7)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x3, 768, x7)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x3, 776, x7)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x3, 784, x7)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x3, 792, x7)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x3, 800, x7)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x3, 808, x7)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x3, 816, x7)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x3, 824, x7)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x3, 832, x7)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x3, 840, x7)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x3, 848, x7)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x3, 856, x7)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x3, 864, x7)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x3, 872, x7)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x3, 880, x7)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x3, 888, x7)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x3, 896, x7)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x3, 904, x7)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x3, 912, x7)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x3, 920, x7)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x3, 928, x7)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x3, 936, x7)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x3, 944, x7)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x3, 952, x7)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x3, 960, x7)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x3, 968, x7)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x3, 976, x7)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x3, 984, x7)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x3, 992, x7)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x3, 1000, x7)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x3, 1008, x7)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x3, 1016, x7)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x3, 1024, x7)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x3, 1032, x7)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x3, 1040, x7)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x3, 1048, x7)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x3, 1056, x7)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x3, 1064, x7)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x3, 1072, x7)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x3, 1080, x7)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x3, 1088, x7)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x3, 1096, x7)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x3, 1104, x7)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x3, 1112, x7)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x3, 1120, x7)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x3, 1128, x7)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x3, 1136, x7)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x3, 1144, x7)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x3, 1152, x7)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x3, 1160, x7)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x3, 1168, x7)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x3, 1176, x7)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x3, 1184, x7)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x3, 1192, x7)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x3, 1200, x7)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x3, 1208, x7)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x3, 1216, x7)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x3, 1224, x7)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x3, 1232, x7)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x3, 1240, x7)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x3, 1248, x7)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x3, 1256, x7)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x3, 1264, x7)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x3, 1272, x7)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x3, 1280, x7)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x3, 1288, x7)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x3, 1296, x7)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x3, 1304, x7)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x3, 1312, x7)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x3, 1320, x7)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x3, 1328, x7)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x3, 1336, x7)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x3, 1344, x7)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x3, 1352, x7)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x3, 1360, x7)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x3, 1368, x7)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x3, 1376, x7)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x3, 1384, x7)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x3, 1392, x7)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x3, 1400, x7)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x3, 1408, x7)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x3, 1416, x7)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x3, 1424, x7)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x3, 1432, x7)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x3, 1440, x7)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x3, 1448, x7)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x3, 1456, x7)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x3, 1464, x7)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x3, 1472, x7)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x3, 1480, x7)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x3, 1488, x7)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x3, 1496, x7)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x3, 1504, x7)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x3, 1512, x7)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x3, 1520, x7)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x3, 1528, x7)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x3, 1536, x7)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x3, 1544, x7)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x3, 1552, x7)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x3, 1560, x7)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x3, 1568, x7)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x3, 1576, x7)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x3, 1584, x7)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x3, 1592, x7)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x3, 1600, x7)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x3, 1608, x7)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x3, 1616, x7)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x3, 1624, x7)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x3, 1632, x7)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x3, 1640, x7)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x3, 1648, x7)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x3, 1656, x7)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x3, 1664, x7)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x3, 1672, x7)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x3, 1680, x7)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x3, 1688, x7)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x3, 1696, x7)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x3, 1704, x7)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x3, 1712, x7)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x3, 1720, x7)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x3, 1728, x7)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x3, 1736, x7)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x3, 1744, x7)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x3, 1752, x7)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x3, 1760, x7)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x3, 1768, x7)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x3, 1776, x7)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x3, 1784, x7)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x3, 1792, x7)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x3, 1800, x7)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x3, 1808, x7)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x3, 1816, x7)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x3, 1824, x7)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x3, 1832, x7)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x3, 1840, x7)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x3, 1848, x7)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x3, 1856, x7)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x3, 1864, x7)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x3, 1872, x7)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x3, 1880, x7)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x3, 1888, x7)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x3, 1896, x7)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x3, 1904, x7)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x3, 1912, x7)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x3, 1920, x7)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x3, 1928, x7)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x3, 1936, x7)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x3, 1944, x7)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x3, 1952, x7)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x3, 1960, x7)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x3, 1968, x7)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x3, 1976, x7)
+
+inst_522:
+// rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x3, 1984, x7)
+
+inst_523:
+// rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x3, 1992, x7)
+
+inst_524:
+// rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: rolw ; op1:x10; op2:x11; dest:x12; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(rolw, x12, x10, x11, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x3, 2000, x7)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x6_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_1:
+ .fill 18*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 251*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/ror-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/ror-01.S
new file mode 100644
index 000000000..e54d69fae
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/ror-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the ror instruction of the RISC-V extension for the ror covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",ror)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",ror)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",ror)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",ror)
+
+RVTEST_SIGBASE( x5,signature_x5_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x28, rs2==x28, rd==x19, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: ror ; op1:x28; op2:x28; dest:x19; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(ror, x19, x28, x28, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x5, 0, x10)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x6, rs2==x6, rd==x6, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: ror ; op1:x6; op2:x6; dest:x6; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(ror, x6, x6, x6, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x5, 8, x10)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x0, rs2==x15, rd==x22, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: ror ; op1:x0; op2:x15; dest:x22; op1val:0x0; op2val:0x8000000000000000
+TEST_RR_OP(ror, x22, x0, x15, 0x0000000000000000, 0x0, 0x8000000000000000, x5, 16, x10)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x18, rs2==x29, rd==x18, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: ror ; op1:x18; op2:x29; dest:x18; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(ror, x18, x18, x29, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x5, 24, x10)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x16, rs2==x21, rd==x21, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: ror ; op1:x16; op2:x21; dest:x21; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(ror, x21, x16, x21, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x5, 32, x10)
+
+inst_5:
+// rs1==x13, rs2==x17, rd==x9, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: ror ; op1:x13; op2:x17; dest:x9; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(ror, x9, x13, x17, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x5, 40, x10)
+
+inst_6:
+// rs1==x29, rs2==x24, rd==x14, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: ror ; op1:x29; op2:x24; dest:x14; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(ror, x14, x29, x24, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x5, 48, x10)
+
+inst_7:
+// rs1==x30, rs2==x7, rd==x15, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: ror ; op1:x30; op2:x7; dest:x15; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(ror, x15, x30, x7, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x5, 56, x10)
+
+inst_8:
+// rs1==x27, rs2==x8, rd==x16, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: ror ; op1:x27; op2:x8; dest:x16; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(ror, x16, x27, x8, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x5, 64, x10)
+
+inst_9:
+// rs1==x22, rs2==x19, rd==x31, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: ror ; op1:x22; op2:x19; dest:x31; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(ror, x31, x22, x19, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x5, 72, x10)
+
+inst_10:
+// rs1==x11, rs2==x23, rd==x24, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: ror ; op1:x11; op2:x23; dest:x24; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(ror, x24, x11, x23, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x5, 80, x10)
+
+inst_11:
+// rs1==x9, rs2==x30, rd==x26, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: ror ; op1:x9; op2:x30; dest:x26; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(ror, x26, x9, x30, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x5, 88, x10)
+
+inst_12:
+// rs1==x31, rs2==x27, rd==x25, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: ror ; op1:x31; op2:x27; dest:x25; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(ror, x25, x31, x27, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x5, 96, x10)
+
+inst_13:
+// rs1==x15, rs2==x25, rd==x30, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: ror ; op1:x15; op2:x25; dest:x30; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(ror, x30, x15, x25, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x5, 104, x10)
+
+inst_14:
+// rs1==x21, rs2==x16, rd==x7, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: ror ; op1:x21; op2:x16; dest:x7; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(ror, x7, x21, x16, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x5, 112, x10)
+
+inst_15:
+// rs1==x2, rs2==x11, rd==x8, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: ror ; op1:x2; op2:x11; dest:x8; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(ror, x8, x2, x11, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x5, 120, x10)
+
+inst_16:
+// rs1==x12, rs2==x13, rd==x2, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: ror ; op1:x12; op2:x13; dest:x2; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(ror, x2, x12, x13, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x5, 128, x10)
+
+inst_17:
+// rs1==x3, rs2==x31, rd==x28, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: ror ; op1:x3; op2:x31; dest:x28; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(ror, x28, x3, x31, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x5, 136, x10)
+
+inst_18:
+// rs1==x20, rs2==x1, rd==x4, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: ror ; op1:x20; op2:x1; dest:x4; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(ror, x4, x20, x1, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x5, 144, x10)
+RVTEST_SIGBASE( x6,signature_x6_0)
+
+inst_19:
+// rs1==x23, rs2==x0, rd==x3, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: ror ; op1:x23; op2:x0; dest:x3; op1val:0x42bea7753d32d01e; op2val:0x0
+TEST_RR_OP(ror, x3, x23, x0, 0x0000000000000000, 0x42bea7753d32d01e, 0x0, x6, 0, x15)
+
+inst_20:
+// rs1==x26, rs2==x2, rd==x12, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: ror ; op1:x26; op2:x2; dest:x12; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(ror, x12, x26, x2, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x6, 8, x15)
+
+inst_21:
+// rs1==x24, rs2==x4, rd==x0, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: ror ; op1:x24; op2:x4; dest:x0; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(ror, x0, x24, x4, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x6, 16, x15)
+
+inst_22:
+// rs1==x19, rs2==x20, rd==x5, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: ror ; op1:x19; op2:x20; dest:x5; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(ror, x5, x19, x20, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x6, 24, x15)
+
+inst_23:
+// rs1==x1, rs2==x3, rd==x23, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: ror ; op1:x1; op2:x3; dest:x23; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(ror, x23, x1, x3, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x6, 32, x15)
+
+inst_24:
+// rs1==x7, rs2==x5, rd==x20, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: ror ; op1:x7; op2:x5; dest:x20; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(ror, x20, x7, x5, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x6, 40, x15)
+
+inst_25:
+// rs1==x5, rs2==x26, rd==x11, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: ror ; op1:x5; op2:x26; dest:x11; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(ror, x11, x5, x26, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x6, 48, x15)
+
+inst_26:
+// rs1==x14, rs2==x18, rd==x1, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: ror ; op1:x14; op2:x18; dest:x1; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(ror, x1, x14, x18, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x6, 56, x15)
+
+inst_27:
+// rs1==x17, rs2==x14, rd==x29, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: ror ; op1:x17; op2:x14; dest:x29; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(ror, x29, x17, x14, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x6, 64, x15)
+
+inst_28:
+// rs1==x25, rs2==x22, rd==x27, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: ror ; op1:x25; op2:x22; dest:x27; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(ror, x27, x25, x22, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x6, 72, x15)
+
+inst_29:
+// rs1==x8, rs2==x10, rd==x17, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: ror ; op1:x8; op2:x10; dest:x17; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(ror, x17, x8, x10, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x6, 80, x15)
+
+inst_30:
+// rs1==x4, rs2==x12, rd==x13, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: ror ; op1:x4; op2:x12; dest:x13; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(ror, x13, x4, x12, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x6, 88, x15)
+
+inst_31:
+// rs1==x10, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: ror ; op1:x10; op2:x16; dest:x5; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(ror, x5, x10, x16, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x6, 96, x15)
+
+inst_32:
+// rs2==x9, rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: ror ; op1:x31; op2:x9; dest:x20; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(ror, x20, x31, x9, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x6, 104, x15)
+
+inst_33:
+// rd==x10, rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: ror ; op1:x20; op2:x19; dest:x10; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(ror, x10, x20, x19, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x6, 112, x15)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x6, 120, x15)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x6, 128, x15)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x6, 136, x15)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x6, 144, x15)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x6, 152, x15)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x6, 160, x15)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x6, 168, x15)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x6, 176, x15)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x6, 184, x15)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x6, 192, x15)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x6, 200, x15)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x6, 208, x15)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x6, 216, x15)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x6, 224, x15)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x6, 232, x15)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x6, 240, x15)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x6, 248, x15)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x6, 256, x15)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x6, 264, x15)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x6, 272, x15)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x6, 280, x15)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x6, 288, x15)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x6, 296, x15)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x6, 304, x15)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x6, 312, x15)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x6, 320, x15)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x6, 328, x15)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x6, 336, x15)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x6, 344, x15)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x6, 352, x15)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x6, 360, x15)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x6, 368, x15)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x6, 376, x15)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x6, 384, x15)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x6, 392, x15)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x6, 400, x15)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x6, 408, x15)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x6, 416, x15)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x6, 424, x15)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x6, 432, x15)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x6, 440, x15)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x6, 448, x15)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x6, 456, x15)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x6, 464, x15)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x6, 472, x15)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x6, 480, x15)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x6, 488, x15)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x6, 496, x15)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x6, 504, x15)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x6, 512, x15)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x6, 520, x15)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x6, 528, x15)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x6, 536, x15)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x6, 544, x15)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x6, 552, x15)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x6, 560, x15)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x6, 568, x15)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x6, 576, x15)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x6, 584, x15)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x6, 592, x15)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x6, 600, x15)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x6, 608, x15)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x6, 616, x15)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x6, 624, x15)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x6, 632, x15)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x6, 640, x15)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x6, 648, x15)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x6, 656, x15)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x6, 664, x15)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x6, 672, x15)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x6, 680, x15)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x6, 688, x15)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x6, 696, x15)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x6, 704, x15)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x6, 712, x15)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x6, 720, x15)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x6, 728, x15)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x6, 736, x15)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x6, 744, x15)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x6, 752, x15)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x6, 760, x15)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x6, 768, x15)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x6, 776, x15)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x6, 784, x15)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x6, 792, x15)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x6, 800, x15)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x6, 808, x15)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x6, 816, x15)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x6, 824, x15)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x6, 832, x15)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x6, 840, x15)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x6, 848, x15)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x6, 856, x15)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x6, 864, x15)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x6, 872, x15)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x6, 880, x15)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x6, 888, x15)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x6, 896, x15)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x6, 904, x15)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x6, 912, x15)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x6, 920, x15)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x6, 928, x15)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x6, 936, x15)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x6, 944, x15)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x6, 952, x15)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x6, 960, x15)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x6, 968, x15)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x6, 976, x15)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x6, 984, x15)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x6, 992, x15)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x6, 1000, x15)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x6, 1008, x15)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x6, 1016, x15)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x6, 1024, x15)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x6, 1032, x15)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x6, 1040, x15)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x6, 1048, x15)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x6, 1056, x15)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x6, 1064, x15)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x6, 1072, x15)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x6, 1080, x15)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x6, 1088, x15)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x6, 1096, x15)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x6, 1104, x15)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x6, 1112, x15)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x6, 1120, x15)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x6, 1128, x15)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x6, 1136, x15)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x6, 1144, x15)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x6, 1152, x15)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x6, 1160, x15)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x6, 1168, x15)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x6, 1176, x15)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x6, 1184, x15)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x6, 1192, x15)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x6, 1200, x15)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x6, 1208, x15)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x6, 1216, x15)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x6, 1224, x15)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x6, 1232, x15)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x6, 1240, x15)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x6, 1248, x15)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x6, 1256, x15)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x6, 1264, x15)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x6, 1272, x15)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x6, 1280, x15)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x6, 1288, x15)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x6, 1296, x15)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x6, 1304, x15)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x6, 1312, x15)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x6, 1320, x15)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x6, 1328, x15)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x6, 1336, x15)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x6, 1344, x15)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x6, 1352, x15)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x6, 1360, x15)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x6, 1368, x15)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x6, 1376, x15)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x6, 1384, x15)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x6, 1392, x15)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x6, 1400, x15)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x6, 1408, x15)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x6, 1416, x15)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x6, 1424, x15)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x6, 1432, x15)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x6, 1440, x15)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x6, 1448, x15)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x6, 1456, x15)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x6, 1464, x15)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x6, 1472, x15)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x6, 1480, x15)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x6, 1488, x15)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x6, 1496, x15)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x6, 1504, x15)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x6, 1512, x15)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x6, 1520, x15)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x6, 1528, x15)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x6, 1536, x15)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x6, 1544, x15)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x6, 1552, x15)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x6, 1560, x15)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x6, 1568, x15)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x6, 1576, x15)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x6, 1584, x15)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x6, 1592, x15)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x6, 1600, x15)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x6, 1608, x15)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x6, 1616, x15)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x6, 1624, x15)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x6, 1632, x15)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x6, 1640, x15)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x6, 1648, x15)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x6, 1656, x15)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x6, 1664, x15)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x6, 1672, x15)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x6, 1680, x15)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x6, 1688, x15)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x6, 1696, x15)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x6, 1704, x15)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x6, 1712, x15)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x6, 1720, x15)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x6, 1728, x15)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x6, 1736, x15)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x6, 1744, x15)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x6, 1752, x15)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x6, 1760, x15)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x6, 1768, x15)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x6, 1776, x15)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x6, 1784, x15)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x6, 1792, x15)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x6, 1800, x15)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x6, 1808, x15)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x6, 1816, x15)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x6, 1824, x15)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x6, 1832, x15)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x6, 1840, x15)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x6, 1848, x15)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x6, 1856, x15)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x6, 1864, x15)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x6, 1872, x15)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x6, 1880, x15)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x6, 1888, x15)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x6, 1896, x15)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x6, 1904, x15)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x6, 1912, x15)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x6, 1920, x15)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x6, 1928, x15)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x6, 1936, x15)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x6, 1944, x15)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x6, 1952, x15)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x6, 1960, x15)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x6, 1968, x15)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x6, 1976, x15)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x6, 1984, x15)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x6, 1992, x15)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x6, 2000, x15)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x6, 2008, x15)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x6, 2016, x15)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x6, 2024, x15)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x6, 2032, x15)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x6, 2040, x15)
+RVTEST_SIGBASE( x6,signature_x6_1)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x6, 0, x15)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x6, 8, x15)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x6, 16, x15)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x6, 24, x15)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x6, 32, x15)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x6, 40, x15)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x6, 48, x15)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x6, 56, x15)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x6, 64, x15)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x6, 72, x15)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x6, 80, x15)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x6, 88, x15)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x6, 96, x15)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x6, 104, x15)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x6, 112, x15)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x6, 120, x15)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x6, 128, x15)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x6, 136, x15)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x6, 144, x15)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x6, 152, x15)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x6, 160, x15)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x6, 168, x15)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x6, 176, x15)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x6, 184, x15)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x6, 192, x15)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x6, 200, x15)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x6, 208, x15)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x6, 216, x15)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x6, 224, x15)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x6, 232, x15)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x6, 240, x15)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x6, 248, x15)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x6, 256, x15)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x6, 264, x15)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x6, 272, x15)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x6, 280, x15)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x6, 288, x15)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x6, 296, x15)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x6, 304, x15)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x6, 312, x15)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x6, 320, x15)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x6, 328, x15)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x6, 336, x15)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x6, 344, x15)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x6, 352, x15)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x6, 360, x15)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x6, 368, x15)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x6, 376, x15)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x6, 384, x15)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x6, 392, x15)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x6, 400, x15)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x6, 408, x15)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x6, 416, x15)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x6, 424, x15)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x6, 432, x15)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x6, 440, x15)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x6, 448, x15)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x6, 456, x15)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x6, 464, x15)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x6, 472, x15)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x6, 480, x15)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x6, 488, x15)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x6, 496, x15)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x6, 504, x15)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x6, 512, x15)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x6, 520, x15)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x6, 528, x15)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x6, 536, x15)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x6, 544, x15)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x6, 552, x15)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x6, 560, x15)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x6, 568, x15)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x6, 576, x15)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x6, 584, x15)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x6, 592, x15)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x6, 600, x15)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x6, 608, x15)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x6, 616, x15)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x6, 624, x15)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x6, 632, x15)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x6, 640, x15)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x6, 648, x15)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x6, 656, x15)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x6, 664, x15)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x6, 672, x15)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x6, 680, x15)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x6, 688, x15)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x6, 696, x15)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x6, 704, x15)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x6, 712, x15)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x6, 720, x15)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x6, 728, x15)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x6, 736, x15)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x6, 744, x15)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x6, 752, x15)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x6, 760, x15)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x6, 768, x15)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x6, 776, x15)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x6, 784, x15)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x6, 792, x15)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x6, 800, x15)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x6, 808, x15)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x6, 816, x15)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x6, 824, x15)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x6, 832, x15)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x6, 840, x15)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x6, 848, x15)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x6, 856, x15)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x6, 864, x15)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x6, 872, x15)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x6, 880, x15)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x6, 888, x15)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x6, 896, x15)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x6, 904, x15)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x6, 912, x15)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x6, 920, x15)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x6, 928, x15)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x6, 936, x15)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x6, 944, x15)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x6, 952, x15)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x6, 960, x15)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x6, 968, x15)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x6, 976, x15)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x6, 984, x15)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x6, 992, x15)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x6, 1000, x15)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x6, 1008, x15)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x6, 1016, x15)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x6, 1024, x15)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x6, 1032, x15)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x6, 1040, x15)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x6, 1048, x15)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x6, 1056, x15)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x6, 1064, x15)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x6, 1072, x15)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x6, 1080, x15)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x6, 1088, x15)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x6, 1096, x15)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x6, 1104, x15)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x6, 1112, x15)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x6, 1120, x15)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x6, 1128, x15)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x6, 1136, x15)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x6, 1144, x15)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x6, 1152, x15)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x6, 1160, x15)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x6, 1168, x15)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x6, 1176, x15)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x6, 1184, x15)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x6, 1192, x15)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x6, 1200, x15)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x6, 1208, x15)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x6, 1216, x15)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x6, 1224, x15)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x6, 1232, x15)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x6, 1240, x15)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x6, 1248, x15)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x6, 1256, x15)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x6, 1264, x15)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x6, 1272, x15)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x6, 1280, x15)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x6, 1288, x15)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x6, 1296, x15)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x6, 1304, x15)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x6, 1312, x15)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x6, 1320, x15)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x6, 1328, x15)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x6, 1336, x15)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x6, 1344, x15)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x6, 1352, x15)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x6, 1360, x15)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x6, 1368, x15)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x6, 1376, x15)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x6, 1384, x15)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x6, 1392, x15)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x6, 1400, x15)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x6, 1408, x15)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x6, 1416, x15)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x6, 1424, x15)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x6, 1432, x15)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x6, 1440, x15)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x6, 1448, x15)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x6, 1456, x15)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x6, 1464, x15)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x6, 1472, x15)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x6, 1480, x15)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x6, 1488, x15)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x6, 1496, x15)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x6, 1504, x15)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x6, 1512, x15)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x6, 1520, x15)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x6, 1528, x15)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x6, 1536, x15)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x6, 1544, x15)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x6, 1552, x15)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x6, 1560, x15)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x6, 1568, x15)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x6, 1576, x15)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x6, 1584, x15)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x6, 1592, x15)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x6, 1600, x15)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x6, 1608, x15)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x6, 1616, x15)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x6, 1624, x15)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x6, 1632, x15)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x6, 1640, x15)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x6, 1648, x15)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x6, 1656, x15)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x6, 1664, x15)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x6, 1672, x15)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x6, 1680, x15)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x6, 1688, x15)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x6, 1696, x15)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x6, 1704, x15)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x6, 1712, x15)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x6, 1720, x15)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x6, 1728, x15)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x6, 1736, x15)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x6, 1744, x15)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x6, 1752, x15)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x6, 1760, x15)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x6, 1768, x15)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x6, 1776, x15)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x6, 1784, x15)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x6, 1792, x15)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x6, 1800, x15)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x6, 1808, x15)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x6, 1816, x15)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x6, 1824, x15)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x6, 1832, x15)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x6, 1840, x15)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x6, 1848, x15)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x6, 1856, x15)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x6, 1864, x15)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x6, 1872, x15)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x6, 1880, x15)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x6, 1888, x15)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x6, 1896, x15)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x6, 1904, x15)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x6, 1912, x15)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x6, 1920, x15)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x6, 1928, x15)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x6, 1936, x15)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x6, 1944, x15)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x6, 1952, x15)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x6, 1960, x15)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x6, 1968, x15)
+
+inst_522:
+// rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x6, 1976, x15)
+
+inst_523:
+// rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x6, 1984, x15)
+
+inst_524:
+// rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: ror ; op1:x10; op2:x11; dest:x12; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(ror, x12, x10, x11, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x6, 1992, x15)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x5_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_1:
+ .fill 250*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rori-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rori-01.S
new file mode 100644
index 000000000..64b60a7f1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rori-01.S
@@ -0,0 +1,1531 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the rori instruction of the RISC-V extension for the rori covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",rori)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",rori)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",rori)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",rori)
+
+RVTEST_SIGBASE( x8,signature_x8_1)
+
+inst_0:
+// rs1 != rd, rs1==x22, rd==x16, rs1_val == 0xFFFFFFFFFFFFFFFF and imm_val == 0x36
+// opcode: rori ; op1:x22; dest:x16; op1val:0xffffffffffffffff; immval:0x36
+TEST_IMM_OP( rori, x16, x22, 0x0000000000000000, 0xffffffffffffffff, 0x36, x8, 0, x11)
+
+inst_1:
+// rs1 == rd, rs1==x0, rd==x0, imm_val == 0x00 and rs1_val == 0xCADB5BEC61250888
+// opcode: rori ; op1:x0; dest:x0; op1val:0x0; immval:0x0
+TEST_IMM_OP( rori, x0, x0, 0x0000000000000000, 0x0, 0x0, x8, 8, x11)
+
+inst_2:
+// rs1==x30, rd==x25, imm_val == 0x20 and rs1_val == 0xE917333212AF8F73
+// opcode: rori ; op1:x30; dest:x25; op1val:0xe917333212af8f73; immval:0x20
+TEST_IMM_OP( rori, x25, x30, 0x0000000000000000, 0xe917333212af8f73, 0x20, x8, 16, x11)
+
+inst_3:
+// rs1==x24, rd==x4, imm_val == 0x10 and rs1_val == 0xCC381E1007E8BF65
+// opcode: rori ; op1:x24; dest:x4; op1val:0xcc381e1007e8bf65; immval:0x10
+TEST_IMM_OP( rori, x4, x24, 0x0000000000000000, 0xcc381e1007e8bf65, 0x10, x8, 24, x11)
+
+inst_4:
+// rs1==x25, rd==x20, imm_val == 0x18 and rs1_val == 0xFAE216DC58F45328
+// opcode: rori ; op1:x25; dest:x20; op1val:0xfae216dc58f45328; immval:0x18
+TEST_IMM_OP( rori, x20, x25, 0x0000000000000000, 0xfae216dc58f45328, 0x18, x8, 32, x11)
+
+inst_5:
+// rs1==x2, rd==x7, imm_val == 0x1C and rs1_val == 0xE6A56AE617C67895
+// opcode: rori ; op1:x2; dest:x7; op1val:0xe6a56ae617c67895; immval:0x1c
+TEST_IMM_OP( rori, x7, x2, 0x0000000000000000, 0xe6a56ae617c67895, 0x1c, x8, 40, x11)
+
+inst_6:
+// rs1==x21, rd==x24, imm_val == 0x22 and rs1_val == 0x6AEB7DBD0A095049
+// opcode: rori ; op1:x21; dest:x24; op1val:0x6aeb7dbd0a095049; immval:0x22
+TEST_IMM_OP( rori, x24, x21, 0x0000000000000000, 0x6aeb7dbd0a095049, 0x22, x8, 48, x11)
+
+inst_7:
+// rs1==x12, rd==x1, imm_val == 0x0D and rs1_val == 0xF644D360EFB8C545
+// opcode: rori ; op1:x12; dest:x1; op1val:0xf644d360efb8c545; immval:0xd
+TEST_IMM_OP( rori, x1, x12, 0x0000000000000000, 0xf644d360efb8c545, 0xd, x8, 56, x11)
+
+inst_8:
+// rs1==x19, rd==x14, rs1_val == 0x0000000000000000 and imm_val == 0x1E
+// opcode: rori ; op1:x19; dest:x14; op1val:0x0; immval:0x1e
+TEST_IMM_OP( rori, x14, x19, 0x0000000000000000, 0x0, 0x1e, x8, 64, x11)
+
+inst_9:
+// rs1==x29, rd==x27, rs1_val == 0x8000000000000000 and imm_val == 0x22
+// opcode: rori ; op1:x29; dest:x27; op1val:0x8000000000000000; immval:0x22
+TEST_IMM_OP( rori, x27, x29, 0x0000000000000000, 0x8000000000000000, 0x22, x8, 72, x11)
+
+inst_10:
+// rs1==x4, rd==x22, rs1_val == 0xC000000000000000 and imm_val == 0x10
+// opcode: rori ; op1:x4; dest:x22; op1val:0xc000000000000000; immval:0x10
+TEST_IMM_OP( rori, x22, x4, 0x0000000000000000, 0xc000000000000000, 0x10, x8, 80, x11)
+
+inst_11:
+// rs1==x15, rd==x30, rs1_val == 0x6000000000000000 and imm_val == 0x00
+// opcode: rori ; op1:x15; dest:x30; op1val:0x6000000000000000; immval:0x0
+TEST_IMM_OP( rori, x30, x15, 0x0000000000000000, 0x6000000000000000, 0x0, x8, 88, x11)
+
+inst_12:
+// rs1==x10, rd==x21, rs1_val == 0xF000000000000000 and imm_val == 0x20
+// opcode: rori ; op1:x10; dest:x21; op1val:0xf000000000000000; immval:0x20
+TEST_IMM_OP( rori, x21, x10, 0x0000000000000000, 0xf000000000000000, 0x20, x8, 96, x11)
+
+inst_13:
+// rs1==x6, rd==x29, rs1_val == 0x1800000000000000 and imm_val == 0x1B
+// opcode: rori ; op1:x6; dest:x29; op1val:0x1800000000000000; immval:0x1b
+TEST_IMM_OP( rori, x29, x6, 0x0000000000000000, 0x1800000000000000, 0x1b, x8, 104, x11)
+
+inst_14:
+// rs1==x3, rd==x26, rs1_val == 0x4400000000000000 and imm_val == 0x38
+// opcode: rori ; op1:x3; dest:x26; op1val:0x4400000000000000; immval:0x38
+TEST_IMM_OP( rori, x26, x3, 0x0000000000000000, 0x4400000000000000, 0x38, x8, 112, x11)
+
+inst_15:
+// rs1==x23, rd==x15, rs1_val == 0x3E00000000000000 and imm_val == 0x05
+// opcode: rori ; op1:x23; dest:x15; op1val:0x3e00000000000000; immval:0x5
+TEST_IMM_OP( rori, x15, x23, 0x0000000000000000, 0x3e00000000000000, 0x5, x8, 120, x11)
+
+inst_16:
+// rs1==x16, rd==x12, rs1_val == 0x3500000000000000 and imm_val == 0x14
+// opcode: rori ; op1:x16; dest:x12; op1val:0x3500000000000000; immval:0x14
+TEST_IMM_OP( rori, x12, x16, 0x0000000000000000, 0x3500000000000000, 0x14, x8, 128, x11)
+
+inst_17:
+// rs1==x31, rd==x23, rs1_val == 0x6F80000000000000 and imm_val == 0x38
+// opcode: rori ; op1:x31; dest:x23; op1val:0x6f80000000000000; immval:0x38
+TEST_IMM_OP( rori, x23, x31, 0x0000000000000000, 0x6f80000000000000, 0x38, x8, 136, x11)
+
+inst_18:
+// rs1==x5, rd==x19, rs1_val == 0x4EC0000000000000 and imm_val == 0x2D
+// opcode: rori ; op1:x5; dest:x19; op1val:0x4ec0000000000000; immval:0x2d
+TEST_IMM_OP( rori, x19, x5, 0x0000000000000000, 0x4ec0000000000000, 0x2d, x8, 144, x11)
+
+inst_19:
+// rs1==x9, rd==x28, rs1_val == 0x1E20000000000000 and imm_val == 0x3D
+// opcode: rori ; op1:x9; dest:x28; op1val:0x1e20000000000000; immval:0x3d
+TEST_IMM_OP( rori, x28, x9, 0x0000000000000000, 0x1e20000000000000, 0x3d, x8, 152, x11)
+
+inst_20:
+// rs1==x26, rd==x18, rs1_val == 0x1910000000000000 and imm_val == 0x1D
+// opcode: rori ; op1:x26; dest:x18; op1val:0x1910000000000000; immval:0x1d
+TEST_IMM_OP( rori, x18, x26, 0x0000000000000000, 0x1910000000000000, 0x1d, x8, 160, x11)
+
+inst_21:
+// rs1==x13, rd==x3, rs1_val == 0x1248000000000000 and imm_val == 0x23
+// opcode: rori ; op1:x13; dest:x3; op1val:0x1248000000000000; immval:0x23
+TEST_IMM_OP( rori, x3, x13, 0x0000000000000000, 0x1248000000000000, 0x23, x8, 168, x4)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_22:
+// rs1==x27, rd==x10, rs1_val == 0xBF84000000000000 and imm_val == 0x29
+// opcode: rori ; op1:x27; dest:x10; op1val:0xbf84000000000000; immval:0x29
+TEST_IMM_OP( rori, x10, x27, 0x0000000000000000, 0xbf84000000000000, 0x29, x3, 0, x4)
+
+inst_23:
+// rs1==x11, rd==x17, rs1_val == 0xC116000000000000 and imm_val == 0x13
+// opcode: rori ; op1:x11; dest:x17; op1val:0xc116000000000000; immval:0x13
+TEST_IMM_OP( rori, x17, x11, 0x0000000000000000, 0xc116000000000000, 0x13, x3, 8, x4)
+
+inst_24:
+// rs1==x18, rd==x13, rs1_val == 0xD631000000000000 and imm_val == 0x2E
+// opcode: rori ; op1:x18; dest:x13; op1val:0xd631000000000000; immval:0x2e
+TEST_IMM_OP( rori, x13, x18, 0x0000000000000000, 0xd631000000000000, 0x2e, x3, 16, x4)
+
+inst_25:
+// rs1==x28, rd==x9, rs1_val == 0x17B2800000000000 and imm_val == 0x1F
+// opcode: rori ; op1:x28; dest:x9; op1val:0x17b2800000000000; immval:0x1f
+TEST_IMM_OP( rori, x9, x28, 0x0000000000000000, 0x17b2800000000000, 0x1f, x3, 24, x4)
+
+inst_26:
+// rs1==x17, rd==x5, rs1_val == 0x9568400000000000 and imm_val == 0x01
+// opcode: rori ; op1:x17; dest:x5; op1val:0x9568400000000000; immval:0x1
+TEST_IMM_OP( rori, x5, x17, 0x0000000000000000, 0x9568400000000000, 0x1, x3, 32, x4)
+
+inst_27:
+// rs1==x1, rd==x11, rs1_val == 0x8B06600000000000 and imm_val == 0x2B
+// opcode: rori ; op1:x1; dest:x11; op1val:0x8b06600000000000; immval:0x2b
+TEST_IMM_OP( rori, x11, x1, 0x0000000000000000, 0x8b06600000000000, 0x2b, x3, 40, x4)
+
+inst_28:
+// rs1==x20, rd==x6, rs1_val == 0xB93DF00000000000 and imm_val == 0x00
+// opcode: rori ; op1:x20; dest:x6; op1val:0xb93df00000000000; immval:0x0
+TEST_IMM_OP( rori, x6, x20, 0x0000000000000000, 0xb93df00000000000, 0x0, x3, 48, x4)
+
+inst_29:
+// rs1==x8, rd==x2, rs1_val == 0x88ADB80000000000 and imm_val == 0x1C
+// opcode: rori ; op1:x8; dest:x2; op1val:0x88adb80000000000; immval:0x1c
+TEST_IMM_OP( rori, x2, x8, 0x0000000000000000, 0x88adb80000000000, 0x1c, x3, 56, x4)
+
+inst_30:
+// rs1==x14, rd==x8, rs1_val == 0xE180E40000000000 and imm_val == 0x2E
+// opcode: rori ; op1:x14; dest:x8; op1val:0xe180e40000000000; immval:0x2e
+TEST_IMM_OP( rori, x8, x14, 0x0000000000000000, 0xe180e40000000000, 0x2e, x3, 64, x4)
+
+inst_31:
+// rs1==x7, rd==x31, rs1_val == 0xD5CB7E0000000000 and imm_val == 0x15
+// opcode: rori ; op1:x7; dest:x31; op1val:0xd5cb7e0000000000; immval:0x15
+TEST_IMM_OP( rori, x31, x7, 0x0000000000000000, 0xd5cb7e0000000000, 0x15, x3, 72, x4)
+
+inst_32:
+// rs1_val == 0xA438230000000000 and imm_val == 0x3D
+// opcode: rori ; op1:x10; dest:x11; op1val:0xa438230000000000; immval:0x3d
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xa438230000000000, 0x3d, x3, 80, x4)
+
+inst_33:
+// rs1_val == 0xB9BE488000000000 and imm_val == 0x24
+// opcode: rori ; op1:x10; dest:x11; op1val:0xb9be488000000000; immval:0x24
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xb9be488000000000, 0x24, x3, 88, x4)
+
+inst_34:
+// rs1_val == 0xE5ABA74000000000 and imm_val == 0x2F
+// opcode: rori ; op1:x10; dest:x11; op1val:0xe5aba74000000000; immval:0x2f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xe5aba74000000000, 0x2f, x3, 96, x4)
+
+inst_35:
+// rs1_val == 0xF2124BA000000000 and imm_val == 0x06
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf2124ba000000000; immval:0x6
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf2124ba000000000, 0x6, x3, 104, x4)
+
+inst_36:
+// rs1_val == 0x96EBEC5000000000 and imm_val == 0x23
+// opcode: rori ; op1:x10; dest:x11; op1val:0x96ebec5000000000; immval:0x23
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x96ebec5000000000, 0x23, x3, 112, x4)
+
+inst_37:
+// rs1_val == 0x6CA53BC800000000 and imm_val == 0x23
+// opcode: rori ; op1:x10; dest:x11; op1val:0x6ca53bc800000000; immval:0x23
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x6ca53bc800000000, 0x23, x3, 120, x4)
+
+inst_38:
+// rs1_val == 0x035FF31C00000000 and imm_val == 0x1C
+// opcode: rori ; op1:x10; dest:x11; op1val:0x35ff31c00000000; immval:0x1c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x35ff31c00000000, 0x1c, x3, 128, x4)
+
+inst_39:
+// rs1_val == 0x8B38E95A00000000 and imm_val == 0x0D
+// opcode: rori ; op1:x10; dest:x11; op1val:0x8b38e95a00000000; immval:0xd
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x8b38e95a00000000, 0xd, x3, 136, x4)
+
+inst_40:
+// rs1_val == 0x0B21BBBB00000000 and imm_val == 0x1A
+// opcode: rori ; op1:x10; dest:x11; op1val:0xb21bbbb00000000; immval:0x1a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xb21bbbb00000000, 0x1a, x3, 144, x4)
+
+inst_41:
+// rs1_val == 0x9C6FFFDC80000000 and imm_val == 0x36
+// opcode: rori ; op1:x10; dest:x11; op1val:0x9c6fffdc80000000; immval:0x36
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x9c6fffdc80000000, 0x36, x3, 152, x4)
+
+inst_42:
+// rs1_val == 0x8217FFBE40000000 and imm_val == 0x03
+// opcode: rori ; op1:x10; dest:x11; op1val:0x8217ffbe40000000; immval:0x3
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x8217ffbe40000000, 0x3, x3, 160, x4)
+
+inst_43:
+// rs1_val == 0x60E68CB720000000 and imm_val == 0x37
+// opcode: rori ; op1:x10; dest:x11; op1val:0x60e68cb720000000; immval:0x37
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x60e68cb720000000, 0x37, x3, 168, x4)
+
+inst_44:
+// rs1_val == 0xF5D02B2010000000 and imm_val == 0x16
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf5d02b2010000000; immval:0x16
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf5d02b2010000000, 0x16, x3, 176, x4)
+
+inst_45:
+// rs1_val == 0x4204DE9838000000 and imm_val == 0x2A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x4204de9838000000; immval:0x2a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x4204de9838000000, 0x2a, x3, 184, x4)
+
+inst_46:
+// rs1_val == 0xF6B1F180F4000000 and imm_val == 0x0E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf6b1f180f4000000; immval:0xe
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf6b1f180f4000000, 0xe, x3, 192, x4)
+
+inst_47:
+// rs1_val == 0xF5BB75A166000000 and imm_val == 0x31
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf5bb75a166000000; immval:0x31
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf5bb75a166000000, 0x31, x3, 200, x4)
+
+inst_48:
+// rs1_val == 0xAA5B397039000000 and imm_val == 0x2E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xaa5b397039000000; immval:0x2e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xaa5b397039000000, 0x2e, x3, 208, x4)
+
+inst_49:
+// rs1_val == 0x0E7BD5B154800000 and imm_val == 0x21
+// opcode: rori ; op1:x10; dest:x11; op1val:0xe7bd5b154800000; immval:0x21
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xe7bd5b154800000, 0x21, x3, 216, x4)
+
+inst_50:
+// rs1_val == 0xB7A2A2301A400000 and imm_val == 0x0A
+// opcode: rori ; op1:x10; dest:x11; op1val:0xb7a2a2301a400000; immval:0xa
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xb7a2a2301a400000, 0xa, x3, 224, x4)
+
+inst_51:
+// rs1_val == 0x29EF41AF7B600000 and imm_val == 0x31
+// opcode: rori ; op1:x10; dest:x11; op1val:0x29ef41af7b600000; immval:0x31
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x29ef41af7b600000, 0x31, x3, 232, x4)
+
+inst_52:
+// rs1_val == 0xDD8AB0BCEFB00000 and imm_val == 0x3C
+// opcode: rori ; op1:x10; dest:x11; op1val:0xdd8ab0bcefb00000; immval:0x3c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xdd8ab0bcefb00000, 0x3c, x3, 240, x4)
+
+inst_53:
+// rs1_val == 0xFA3B344326080000 and imm_val == 0x35
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfa3b344326080000; immval:0x35
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfa3b344326080000, 0x35, x3, 248, x4)
+
+inst_54:
+// rs1_val == 0xBF06387955040000 and imm_val == 0x0A
+// opcode: rori ; op1:x10; dest:x11; op1val:0xbf06387955040000; immval:0xa
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xbf06387955040000, 0xa, x3, 256, x4)
+
+inst_55:
+// rs1_val == 0x7D49F3CA79FA0000 and imm_val == 0x06
+// opcode: rori ; op1:x10; dest:x11; op1val:0x7d49f3ca79fa0000; immval:0x6
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x7d49f3ca79fa0000, 0x6, x3, 264, x4)
+
+inst_56:
+// rs1_val == 0xAAB48A1C0F230000 and imm_val == 0x14
+// opcode: rori ; op1:x10; dest:x11; op1val:0xaab48a1c0f230000; immval:0x14
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xaab48a1c0f230000, 0x14, x3, 272, x4)
+
+inst_57:
+// rs1_val == 0xA25E549735CB8000 and imm_val == 0x11
+// opcode: rori ; op1:x10; dest:x11; op1val:0xa25e549735cb8000; immval:0x11
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xa25e549735cb8000, 0x11, x3, 280, x4)
+
+inst_58:
+// rs1_val == 0x49E43C96F2344000 and imm_val == 0x0E
+// opcode: rori ; op1:x10; dest:x11; op1val:0x49e43c96f2344000; immval:0xe
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x49e43c96f2344000, 0xe, x3, 288, x4)
+
+inst_59:
+// rs1_val == 0x971662E94AAA2000 and imm_val == 0x36
+// opcode: rori ; op1:x10; dest:x11; op1val:0x971662e94aaa2000; immval:0x36
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x971662e94aaa2000, 0x36, x3, 296, x4)
+
+inst_60:
+// rs1_val == 0xFA51CD1D4D2B5000 and imm_val == 0x1C
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfa51cd1d4d2b5000; immval:0x1c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfa51cd1d4d2b5000, 0x1c, x3, 304, x4)
+
+inst_61:
+// rs1_val == 0xEBC398261A02E800 and imm_val == 0x07
+// opcode: rori ; op1:x10; dest:x11; op1val:0xebc398261a02e800; immval:0x7
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xebc398261a02e800, 0x7, x3, 312, x4)
+
+inst_62:
+// rs1_val == 0x5334BAB9CA6C0400 and imm_val == 0x0B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5334bab9ca6c0400; immval:0xb
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5334bab9ca6c0400, 0xb, x3, 320, x4)
+
+inst_63:
+// rs1_val == 0xEC133026333BC200 and imm_val == 0x2B
+// opcode: rori ; op1:x10; dest:x11; op1val:0xec133026333bc200; immval:0x2b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xec133026333bc200, 0x2b, x3, 328, x4)
+
+inst_64:
+// rs1_val == 0x82CC710F0F1C6B00 and imm_val == 0x19
+// opcode: rori ; op1:x10; dest:x11; op1val:0x82cc710f0f1c6b00; immval:0x19
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x82cc710f0f1c6b00, 0x19, x3, 336, x4)
+
+inst_65:
+// rs1_val == 0x7AA3D594C52CFC80 and imm_val == 0x1A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x7aa3d594c52cfc80; immval:0x1a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x7aa3d594c52cfc80, 0x1a, x3, 344, x4)
+
+inst_66:
+// rs1_val == 0x29DB927E9836F5C0 and imm_val == 0x2F
+// opcode: rori ; op1:x10; dest:x11; op1val:0x29db927e9836f5c0; immval:0x2f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x29db927e9836f5c0, 0x2f, x3, 352, x4)
+
+inst_67:
+// rs1_val == 0x0DA598F1DCB160E0 and imm_val == 0x12
+// opcode: rori ; op1:x10; dest:x11; op1val:0xda598f1dcb160e0; immval:0x12
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xda598f1dcb160e0, 0x12, x3, 360, x4)
+
+inst_68:
+// rs1_val == 0xD45AF1CB0CAAE1D0 and imm_val == 0x1D
+// opcode: rori ; op1:x10; dest:x11; op1val:0xd45af1cb0caae1d0; immval:0x1d
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xd45af1cb0caae1d0, 0x1d, x3, 368, x4)
+
+inst_69:
+// rs1_val == 0x25B37C62314026E8 and imm_val == 0x3A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x25b37c62314026e8; immval:0x3a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x25b37c62314026e8, 0x3a, x3, 376, x4)
+
+inst_70:
+// rs1_val == 0x7FBFA447FC8A89F4 and imm_val == 0x3D
+// opcode: rori ; op1:x10; dest:x11; op1val:0x7fbfa447fc8a89f4; immval:0x3d
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x7fbfa447fc8a89f4, 0x3d, x3, 384, x4)
+
+inst_71:
+// rs1_val == 0xC36673FE4902E9CE and imm_val == 0x01
+// opcode: rori ; op1:x10; dest:x11; op1val:0xc36673fe4902e9ce; immval:0x1
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xc36673fe4902e9ce, 0x1, x3, 392, x4)
+
+inst_72:
+// rs1_val == 0x44DCDA6A797D76DF and imm_val == 0x2C
+// opcode: rori ; op1:x10; dest:x11; op1val:0x44dcda6a797d76df; immval:0x2c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x44dcda6a797d76df, 0x2c, x3, 400, x4)
+
+inst_73:
+// imm_val == 0x18 and rs1_val == 0x0B27C3726F2BF862
+// opcode: rori ; op1:x10; dest:x11; op1val:0xb27c3726f2bf862; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xb27c3726f2bf862, 0x18, x3, 408, x4)
+
+inst_74:
+// imm_val == 0x01 and rs1_val == 0x20D68CEC58FC0342
+// opcode: rori ; op1:x10; dest:x11; op1val:0x20d68cec58fc0342; immval:0x1
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x20d68cec58fc0342, 0x1, x3, 416, x4)
+
+inst_75:
+// imm_val == 0x13 and rs1_val == 0x636A75E39A6DA5B1
+// opcode: rori ; op1:x10; dest:x11; op1val:0x636a75e39a6da5b1; immval:0x13
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x636a75e39a6da5b1, 0x13, x3, 424, x4)
+
+inst_76:
+// imm_val == 0x37 and rs1_val == 0x37E0DE00280088DB
+// opcode: rori ; op1:x10; dest:x11; op1val:0x37e0de00280088db; immval:0x37
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x37e0de00280088db, 0x37, x3, 432, x4)
+
+inst_77:
+// imm_val == 0x0F and rs1_val == 0x1CA7BD1F0D770F3C
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1ca7bd1f0d770f3c; immval:0xf
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1ca7bd1f0d770f3c, 0xf, x3, 440, x4)
+
+inst_78:
+// imm_val == 0x1F and rs1_val == 0x5536B8D863C2504C
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5536b8d863c2504c; immval:0x1f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5536b8d863c2504c, 0x1f, x3, 448, x4)
+
+inst_79:
+// imm_val == 0x3F and rs1_val == 0x4E6EE408C61B1FBF
+// opcode: rori ; op1:x10; dest:x11; op1val:0x4e6ee408c61b1fbf; immval:0x3f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x4e6ee408c61b1fbf, 0x3f, x3, 456, x4)
+
+inst_80:
+// rs1_val == 0xC215E193118E5332 and imm_val == 0x05
+// opcode: rori ; op1:x10; dest:x11; op1val:0xc215e193118e5332; immval:0x5
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xc215e193118e5332, 0x5, x3, 464, x4)
+
+inst_81:
+// rs1_val == 0x75EE935F65CB60C1 and imm_val == 0x0B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x75ee935f65cb60c1; immval:0xb
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x75ee935f65cb60c1, 0xb, x3, 472, x4)
+
+inst_82:
+// rs1_val == 0x09C161626CE859BB and imm_val == 0x28
+// opcode: rori ; op1:x10; dest:x11; op1val:0x9c161626ce859bb; immval:0x28
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x9c161626ce859bb, 0x28, x3, 480, x4)
+
+inst_83:
+// rs1_val == 0xA4053175342F57C7 and imm_val == 0x2C
+// opcode: rori ; op1:x10; dest:x11; op1val:0xa4053175342f57c7; immval:0x2c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xa4053175342f57c7, 0x2c, x3, 488, x4)
+
+inst_84:
+// rs1_val == 0x499006C897933E6F and imm_val == 0x36
+// opcode: rori ; op1:x10; dest:x11; op1val:0x499006c897933e6f; immval:0x36
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x499006c897933e6f, 0x36, x3, 496, x4)
+
+inst_85:
+// rs1_val == 0xC5DD85CA5B064A1F and imm_val == 0x1F
+// opcode: rori ; op1:x10; dest:x11; op1val:0xc5dd85ca5b064a1f; immval:0x1f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xc5dd85ca5b064a1f, 0x1f, x3, 504, x4)
+
+inst_86:
+// rs1_val == 0x6CC30F7242302B3F and imm_val == 0x1E
+// opcode: rori ; op1:x10; dest:x11; op1val:0x6cc30f7242302b3f; immval:0x1e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x6cc30f7242302b3f, 0x1e, x3, 512, x4)
+
+inst_87:
+// rs1_val == 0xAF1DBF276CE4747F and imm_val == 0x1B
+// opcode: rori ; op1:x10; dest:x11; op1val:0xaf1dbf276ce4747f; immval:0x1b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xaf1dbf276ce4747f, 0x1b, x3, 520, x4)
+
+inst_88:
+// rs1_val == 0x25784F4FBD0608FF and imm_val == 0x21
+// opcode: rori ; op1:x10; dest:x11; op1val:0x25784f4fbd0608ff; immval:0x21
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x25784f4fbd0608ff, 0x21, x3, 528, x4)
+
+inst_89:
+// rs1_val == 0x805A391B604C85FF and imm_val == 0x14
+// opcode: rori ; op1:x10; dest:x11; op1val:0x805a391b604c85ff; immval:0x14
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x805a391b604c85ff, 0x14, x3, 536, x4)
+
+inst_90:
+// rs1_val == 0xCC7EB77D4BEB1BFF and imm_val == 0x04
+// opcode: rori ; op1:x10; dest:x11; op1val:0xcc7eb77d4beb1bff; immval:0x4
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xcc7eb77d4beb1bff, 0x4, x3, 544, x4)
+
+inst_91:
+// rs1_val == 0xAB647BCA3919F7FF and imm_val == 0x1A
+// opcode: rori ; op1:x10; dest:x11; op1val:0xab647bca3919f7ff; immval:0x1a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xab647bca3919f7ff, 0x1a, x3, 552, x4)
+
+inst_92:
+// rs1_val == 0x7F1E7F8627B22FFF and imm_val == 0x3C
+// opcode: rori ; op1:x10; dest:x11; op1val:0x7f1e7f8627b22fff; immval:0x3c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x7f1e7f8627b22fff, 0x3c, x3, 560, x4)
+
+inst_93:
+// rs1_val == 0x51D6D6DA01769FFF and imm_val == 0x2A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x51d6d6da01769fff; immval:0x2a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x51d6d6da01769fff, 0x2a, x3, 568, x4)
+
+inst_94:
+// rs1_val == 0xD5A2038FDA04BFFF and imm_val == 0x04
+// opcode: rori ; op1:x10; dest:x11; op1val:0xd5a2038fda04bfff; immval:0x4
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xd5a2038fda04bfff, 0x4, x3, 576, x4)
+
+inst_95:
+// rs1_val == 0x784ABEBBF03B7FFF and imm_val == 0x2E
+// opcode: rori ; op1:x10; dest:x11; op1val:0x784abebbf03b7fff; immval:0x2e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x784abebbf03b7fff, 0x2e, x3, 584, x4)
+
+inst_96:
+// rs1_val == 0x44D988FBE81EFFFF and imm_val == 0x09
+// opcode: rori ; op1:x10; dest:x11; op1val:0x44d988fbe81effff; immval:0x9
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x44d988fbe81effff, 0x9, x3, 592, x4)
+
+inst_97:
+// rs1_val == 0x6875944E1F19FFFF and imm_val == 0x26
+// opcode: rori ; op1:x10; dest:x11; op1val:0x6875944e1f19ffff; immval:0x26
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x6875944e1f19ffff, 0x26, x3, 600, x4)
+
+inst_98:
+// rs1_val == 0xFF7746E52063FFFF and imm_val == 0x27
+// opcode: rori ; op1:x10; dest:x11; op1val:0xff7746e52063ffff; immval:0x27
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xff7746e52063ffff, 0x27, x3, 608, x4)
+
+inst_99:
+// rs1_val == 0x17B8B123A527FFFF and imm_val == 0x00
+// opcode: rori ; op1:x10; dest:x11; op1val:0x17b8b123a527ffff; immval:0x0
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x17b8b123a527ffff, 0x0, x3, 616, x4)
+
+inst_100:
+// rs1_val == 0x70890268F88FFFFF and imm_val == 0x2B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x70890268f88fffff; immval:0x2b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x70890268f88fffff, 0x2b, x3, 624, x4)
+
+inst_101:
+// rs1_val == 0x6DDC74E6119FFFFF and imm_val == 0x04
+// opcode: rori ; op1:x10; dest:x11; op1val:0x6ddc74e6119fffff; immval:0x4
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x6ddc74e6119fffff, 0x4, x3, 632, x4)
+
+inst_102:
+// rs1_val == 0x39BE2172E6BFFFFF and imm_val == 0x15
+// opcode: rori ; op1:x10; dest:x11; op1val:0x39be2172e6bfffff; immval:0x15
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x39be2172e6bfffff, 0x15, x3, 640, x4)
+
+inst_103:
+// rs1_val == 0xC99324582A7FFFFF and imm_val == 0x0E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xc99324582a7fffff; immval:0xe
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xc99324582a7fffff, 0xe, x3, 648, x4)
+
+inst_104:
+// rs1_val == 0x4B9A6C802EFFFFFF and imm_val == 0x18
+// opcode: rori ; op1:x10; dest:x11; op1val:0x4b9a6c802effffff; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x4b9a6c802effffff, 0x18, x3, 656, x4)
+
+inst_105:
+// rs1_val == 0x9541240E59FFFFFF and imm_val == 0x2B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x9541240e59ffffff; immval:0x2b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x9541240e59ffffff, 0x2b, x3, 664, x4)
+
+inst_106:
+// rs1_val == 0xB3A8D61293FFFFFF and imm_val == 0x04
+// opcode: rori ; op1:x10; dest:x11; op1val:0xb3a8d61293ffffff; immval:0x4
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xb3a8d61293ffffff, 0x4, x3, 672, x4)
+
+inst_107:
+// rs1_val == 0x9E03793FD7FFFFFF and imm_val == 0x05
+// opcode: rori ; op1:x10; dest:x11; op1val:0x9e03793fd7ffffff; immval:0x5
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x9e03793fd7ffffff, 0x5, x3, 680, x4)
+
+inst_108:
+// rs1_val == 0x7F1071ECAFFFFFFF and imm_val == 0x1B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x7f1071ecafffffff; immval:0x1b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x7f1071ecafffffff, 0x1b, x3, 688, x4)
+
+inst_109:
+// rs1_val == 0xF8A75516DFFFFFFF and imm_val == 0x1E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf8a75516dfffffff; immval:0x1e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf8a75516dfffffff, 0x1e, x3, 696, x4)
+
+inst_110:
+// rs1_val == 0xB76D454DBFFFFFFF and imm_val == 0x11
+// opcode: rori ; op1:x10; dest:x11; op1val:0xb76d454dbfffffff; immval:0x11
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xb76d454dbfffffff, 0x11, x3, 704, x4)
+
+inst_111:
+// rs1_val == 0xB494A73D7FFFFFFF and imm_val == 0x2F
+// opcode: rori ; op1:x10; dest:x11; op1val:0xb494a73d7fffffff; immval:0x2f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xb494a73d7fffffff, 0x2f, x3, 712, x4)
+
+inst_112:
+// rs1_val == 0xC28CB594FFFFFFFF and imm_val == 0x2C
+// opcode: rori ; op1:x10; dest:x11; op1val:0xc28cb594ffffffff; immval:0x2c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xc28cb594ffffffff, 0x2c, x3, 720, x4)
+
+inst_113:
+// rs1_val == 0x69DA8A2DFFFFFFFF and imm_val == 0x20
+// opcode: rori ; op1:x10; dest:x11; op1val:0x69da8a2dffffffff; immval:0x20
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x69da8a2dffffffff, 0x20, x3, 728, x4)
+
+inst_114:
+// rs1_val == 0x40F27003FFFFFFFF and imm_val == 0x14
+// opcode: rori ; op1:x10; dest:x11; op1val:0x40f27003ffffffff; immval:0x14
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x40f27003ffffffff, 0x14, x3, 736, x4)
+
+inst_115:
+// rs1_val == 0xB2B8AF97FFFFFFFF and imm_val == 0x38
+// opcode: rori ; op1:x10; dest:x11; op1val:0xb2b8af97ffffffff; immval:0x38
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xb2b8af97ffffffff, 0x38, x3, 744, x4)
+
+inst_116:
+// rs1_val == 0x24496FEFFFFFFFFF and imm_val == 0x3F
+// opcode: rori ; op1:x10; dest:x11; op1val:0x24496fefffffffff; immval:0x3f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x24496fefffffffff, 0x3f, x3, 752, x4)
+
+inst_117:
+// rs1_val == 0xDE14BFDFFFFFFFFF and imm_val == 0x05
+// opcode: rori ; op1:x10; dest:x11; op1val:0xde14bfdfffffffff; immval:0x5
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xde14bfdfffffffff, 0x5, x3, 760, x4)
+
+inst_118:
+// rs1_val == 0x008EEF3FFFFFFFFF and imm_val == 0x36
+// opcode: rori ; op1:x10; dest:x11; op1val:0x8eef3fffffffff; immval:0x36
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x8eef3fffffffff, 0x36, x3, 768, x4)
+
+inst_119:
+// rs1_val == 0x6E2D707FFFFFFFFF and imm_val == 0x3B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x6e2d707fffffffff; immval:0x3b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x6e2d707fffffffff, 0x3b, x3, 776, x4)
+
+inst_120:
+// rs1_val == 0x5DCF00FFFFFFFFFF and imm_val == 0x10
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5dcf00ffffffffff; immval:0x10
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5dcf00ffffffffff, 0x10, x3, 784, x4)
+
+inst_121:
+// rs1_val == 0x3C5569FFFFFFFFFF and imm_val == 0x18
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3c5569ffffffffff; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3c5569ffffffffff, 0x18, x3, 792, x4)
+
+inst_122:
+// rs1_val == 0x7DA8D3FFFFFFFFFF and imm_val == 0x1E
+// opcode: rori ; op1:x10; dest:x11; op1val:0x7da8d3ffffffffff; immval:0x1e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x7da8d3ffffffffff, 0x1e, x3, 800, x4)
+
+inst_123:
+// rs1_val == 0xE3A707FFFFFFFFFF and imm_val == 0x10
+// opcode: rori ; op1:x10; dest:x11; op1val:0xe3a707ffffffffff; immval:0x10
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xe3a707ffffffffff, 0x10, x3, 808, x4)
+
+inst_124:
+// rs1_val == 0x9B01EFFFFFFFFFFF and imm_val == 0x23
+// opcode: rori ; op1:x10; dest:x11; op1val:0x9b01efffffffffff; immval:0x23
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x9b01efffffffffff, 0x23, x3, 816, x4)
+
+inst_125:
+// rs1_val == 0x5F011FFFFFFFFFFF and imm_val == 0x3A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5f011fffffffffff; immval:0x3a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5f011fffffffffff, 0x3a, x3, 824, x4)
+
+inst_126:
+// rs1_val == 0x2DEDBFFFFFFFFFFF and imm_val == 0x2D
+// opcode: rori ; op1:x10; dest:x11; op1val:0x2dedbfffffffffff; immval:0x2d
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x2dedbfffffffffff, 0x2d, x3, 832, x4)
+
+inst_127:
+// rs1_val == 0x2D377FFFFFFFFFFF and imm_val == 0x25
+// opcode: rori ; op1:x10; dest:x11; op1val:0x2d377fffffffffff; immval:0x25
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x2d377fffffffffff, 0x25, x3, 840, x4)
+
+inst_128:
+// rs1_val == 0xAD44FFFFFFFFFFFF and imm_val == 0x38
+// opcode: rori ; op1:x10; dest:x11; op1val:0xad44ffffffffffff; immval:0x38
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xad44ffffffffffff, 0x38, x3, 848, x4)
+
+inst_129:
+// rs1_val == 0x72C9FFFFFFFFFFFF and imm_val == 0x11
+// opcode: rori ; op1:x10; dest:x11; op1val:0x72c9ffffffffffff; immval:0x11
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x72c9ffffffffffff, 0x11, x3, 856, x4)
+
+inst_130:
+// rs1_val == 0xD1D3FFFFFFFFFFFF and imm_val == 0x21
+// opcode: rori ; op1:x10; dest:x11; op1val:0xd1d3ffffffffffff; immval:0x21
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xd1d3ffffffffffff, 0x21, x3, 864, x4)
+
+inst_131:
+// rs1_val == 0x5057FFFFFFFFFFFF and imm_val == 0x0F
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5057ffffffffffff; immval:0xf
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5057ffffffffffff, 0xf, x3, 872, x4)
+
+inst_132:
+// rs1_val == 0x5D2FFFFFFFFFFFFF and imm_val == 0x37
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5d2fffffffffffff; immval:0x37
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5d2fffffffffffff, 0x37, x3, 880, x4)
+
+inst_133:
+// rs1_val == 0xE5DFFFFFFFFFFFFF and imm_val == 0x36
+// opcode: rori ; op1:x10; dest:x11; op1val:0xe5dfffffffffffff; immval:0x36
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xe5dfffffffffffff, 0x36, x3, 888, x4)
+
+inst_134:
+// rs1_val == 0xD9BFFFFFFFFFFFFF and imm_val == 0x1D
+// opcode: rori ; op1:x10; dest:x11; op1val:0xd9bfffffffffffff; immval:0x1d
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xd9bfffffffffffff, 0x1d, x3, 896, x4)
+
+inst_135:
+// rs1_val == 0x237FFFFFFFFFFFFF and imm_val == 0x20
+// opcode: rori ; op1:x10; dest:x11; op1val:0x237fffffffffffff; immval:0x20
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x237fffffffffffff, 0x20, x3, 904, x4)
+
+inst_136:
+// rs1_val == 0x72FFFFFFFFFFFFFF and imm_val == 0x37
+// opcode: rori ; op1:x10; dest:x11; op1val:0x72ffffffffffffff; immval:0x37
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x72ffffffffffffff, 0x37, x3, 912, x4)
+
+inst_137:
+// rs1_val == 0xDDFFFFFFFFFFFFFF and imm_val == 0x21
+// opcode: rori ; op1:x10; dest:x11; op1val:0xddffffffffffffff; immval:0x21
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xddffffffffffffff, 0x21, x3, 920, x4)
+
+inst_138:
+// rs1_val == 0x43FFFFFFFFFFFFFF and imm_val == 0x12
+// opcode: rori ; op1:x10; dest:x11; op1val:0x43ffffffffffffff; immval:0x12
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x43ffffffffffffff, 0x12, x3, 928, x4)
+
+inst_139:
+// rs1_val == 0x27FFFFFFFFFFFFFF and imm_val == 0x01
+// opcode: rori ; op1:x10; dest:x11; op1val:0x27ffffffffffffff; immval:0x1
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x27ffffffffffffff, 0x1, x3, 936, x4)
+
+inst_140:
+// rs1_val == 0x4FFFFFFFFFFFFFFF and imm_val == 0x03
+// opcode: rori ; op1:x10; dest:x11; op1val:0x4fffffffffffffff; immval:0x3
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x4fffffffffffffff, 0x3, x3, 944, x4)
+
+inst_141:
+// rs1_val == 0x1FFFFFFFFFFFFFFF and imm_val == 0x1B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1fffffffffffffff; immval:0x1b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1fffffffffffffff, 0x1b, x3, 952, x4)
+
+inst_142:
+// rs1_val == 0x3FFFFFFFFFFFFFFF and imm_val == 0x17
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3fffffffffffffff; immval:0x17
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3fffffffffffffff, 0x17, x3, 960, x4)
+
+inst_143:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and imm_val == 0x12
+// opcode: rori ; op1:x10; dest:x11; op1val:0x7fffffffffffffff; immval:0x12
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x7fffffffffffffff, 0x12, x3, 968, x4)
+
+inst_144:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and imm_val == 0x17
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffffffff; immval:0x17
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffffffff, 0x17, x3, 976, x4)
+
+inst_145:
+// imm_val == 0x22 and rs1_val == 0xF91ACB8D9279B1E9
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf91acb8d9279b1e9; immval:0x22
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf91acb8d9279b1e9, 0x22, x3, 984, x4)
+
+inst_146:
+// imm_val == 0x13 and rs1_val == 0x482EA7602D1EF7BF
+// opcode: rori ; op1:x10; dest:x11; op1val:0x482ea7602d1ef7bf; immval:0x13
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x482ea7602d1ef7bf, 0x13, x3, 992, x4)
+
+inst_147:
+// imm_val == 0x0B and rs1_val == 0x3FC2A9087219C1DA
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3fc2a9087219c1da; immval:0xb
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3fc2a9087219c1da, 0xb, x3, 1000, x4)
+
+inst_148:
+// imm_val == 0x04 and rs1_val == 0x11B41900043E3EF5
+// opcode: rori ; op1:x10; dest:x11; op1val:0x11b41900043e3ef5; immval:0x4
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x11b41900043e3ef5, 0x4, x3, 1008, x4)
+
+inst_149:
+// imm_val == 0x02 and rs1_val == 0xEA3A0683EAD81DCD
+// opcode: rori ; op1:x10; dest:x11; op1val:0xea3a0683ead81dcd; immval:0x2
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xea3a0683ead81dcd, 0x2, x3, 1016, x4)
+
+inst_150:
+// imm_val == 0x01 and rs1_val == 0x12FAD8029D42F670
+// opcode: rori ; op1:x10; dest:x11; op1val:0x12fad8029d42f670; immval:0x1
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x12fad8029d42f670, 0x1, x3, 1024, x4)
+
+inst_151:
+// imm_val == 0x00 and rs1_val == 0xFA285A0DB869135C
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfa285a0db869135c; immval:0x0
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfa285a0db869135c, 0x0, x3, 1032, x4)
+
+inst_152:
+// rs1_val == 0x852395744B1E943F and imm_val == 0x16
+// opcode: rori ; op1:x10; dest:x11; op1val:0x852395744b1e943f; immval:0x16
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x852395744b1e943f, 0x16, x3, 1040, x4)
+
+inst_153:
+// rs1_val == 0x6BBA8D2141C9886F and imm_val == 0x3E
+// opcode: rori ; op1:x10; dest:x11; op1val:0x6bba8d2141c9886f; immval:0x3e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x6bba8d2141c9886f, 0x3e, x3, 1048, x4)
+
+inst_154:
+// rs1_val == 0x3D65693B3D0840FC and imm_val == 0x32
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3d65693b3d0840fc; immval:0x32
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3d65693b3d0840fc, 0x32, x3, 1056, x4)
+
+inst_155:
+// rs1_val == 0x19E803191BEA8594 and imm_val == 0x20
+// opcode: rori ; op1:x10; dest:x11; op1val:0x19e803191bea8594; immval:0x20
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x19e803191bea8594, 0x20, x3, 1064, x4)
+
+inst_156:
+// rs1_val == 0x0C2282666BE49EE8 and imm_val == 0x0D
+// opcode: rori ; op1:x10; dest:x11; op1val:0xc2282666be49ee8; immval:0xd
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xc2282666be49ee8, 0xd, x3, 1072, x4)
+
+inst_157:
+// rs1_val == 0x07862EACE1D73010 and imm_val == 0x0A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x7862eace1d73010; immval:0xa
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x7862eace1d73010, 0xa, x3, 1080, x4)
+
+inst_158:
+// rs1_val == 0x033C1A7FAFDD8734 and imm_val == 0x31
+// opcode: rori ; op1:x10; dest:x11; op1val:0x33c1a7fafdd8734; immval:0x31
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x33c1a7fafdd8734, 0x31, x3, 1088, x4)
+
+inst_159:
+// rs1_val == 0x0104A795BD4AEAB1 and imm_val == 0x19
+// opcode: rori ; op1:x10; dest:x11; op1val:0x104a795bd4aeab1; immval:0x19
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x104a795bd4aeab1, 0x19, x3, 1096, x4)
+
+inst_160:
+// rs1_val == 0x0096C6C8B9B338EC and imm_val == 0x14
+// opcode: rori ; op1:x10; dest:x11; op1val:0x96c6c8b9b338ec; immval:0x14
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x96c6c8b9b338ec, 0x14, x3, 1104, x4)
+
+inst_161:
+// rs1_val == 0x00775505E88E7530 and imm_val == 0x1F
+// opcode: rori ; op1:x10; dest:x11; op1val:0x775505e88e7530; immval:0x1f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x775505e88e7530, 0x1f, x3, 1112, x4)
+
+inst_162:
+// rs1_val == 0x00356991A0931ED5 and imm_val == 0x27
+// opcode: rori ; op1:x10; dest:x11; op1val:0x356991a0931ed5; immval:0x27
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x356991a0931ed5, 0x27, x3, 1120, x4)
+
+inst_163:
+// rs1_val == 0x00174145DDD4A055 and imm_val == 0x17
+// opcode: rori ; op1:x10; dest:x11; op1val:0x174145ddd4a055; immval:0x17
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x174145ddd4a055, 0x17, x3, 1128, x4)
+
+inst_164:
+// rs1_val == 0x000F19FDD5157E9E and imm_val == 0x11
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf19fdd5157e9e; immval:0x11
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf19fdd5157e9e, 0x11, x3, 1136, x4)
+
+inst_165:
+// rs1_val == 0x0005D99A20918FA8 and imm_val == 0x3D
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5d99a20918fa8; immval:0x3d
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5d99a20918fa8, 0x3d, x3, 1144, x4)
+
+inst_166:
+// rs1_val == 0x00032C075F27FF09 and imm_val == 0x3A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x32c075f27ff09; immval:0x3a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x32c075f27ff09, 0x3a, x3, 1152, x4)
+
+inst_167:
+// rs1_val == 0x0001BCE703F8670E and imm_val == 0x2F
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1bce703f8670e; immval:0x2f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1bce703f8670e, 0x2f, x3, 1160, x4)
+
+inst_168:
+// rs1_val == 0x00009B8B356F8BD2 and imm_val == 0x1F
+// opcode: rori ; op1:x10; dest:x11; op1val:0x9b8b356f8bd2; immval:0x1f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x9b8b356f8bd2, 0x1f, x3, 1168, x4)
+
+inst_169:
+// rs1_val == 0x0000545212CA3F71 and imm_val == 0x0B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x545212ca3f71; immval:0xb
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x545212ca3f71, 0xb, x3, 1176, x4)
+
+inst_170:
+// rs1_val == 0x00003090D48DD9F4 and imm_val == 0x31
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3090d48dd9f4; immval:0x31
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3090d48dd9f4, 0x31, x3, 1184, x4)
+
+inst_171:
+// rs1_val == 0x00001DD8027385CA and imm_val == 0x2A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1dd8027385ca; immval:0x2a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1dd8027385ca, 0x2a, x3, 1192, x4)
+
+inst_172:
+// rs1_val == 0x0000082236971E1C and imm_val == 0x21
+// opcode: rori ; op1:x10; dest:x11; op1val:0x82236971e1c; immval:0x21
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x82236971e1c, 0x21, x3, 1200, x4)
+
+inst_173:
+// rs1_val == 0x000004440AC793F6 and imm_val == 0x12
+// opcode: rori ; op1:x10; dest:x11; op1val:0x4440ac793f6; immval:0x12
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x4440ac793f6, 0x12, x3, 1208, x4)
+
+inst_174:
+// rs1_val == 0x000003D5FEEF16EA and imm_val == 0x0C
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3d5feef16ea; immval:0xc
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3d5feef16ea, 0xc, x3, 1216, x4)
+
+inst_175:
+// rs1_val == 0x0000010735F11AF3 and imm_val == 0x32
+// opcode: rori ; op1:x10; dest:x11; op1val:0x10735f11af3; immval:0x32
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x10735f11af3, 0x32, x3, 1224, x4)
+
+inst_176:
+// rs1_val == 0x000000ACFF769E38 and imm_val == 0x02
+// opcode: rori ; op1:x10; dest:x11; op1val:0xacff769e38; immval:0x2
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xacff769e38, 0x2, x3, 1232, x4)
+
+inst_177:
+// rs1_val == 0x000000764511488A and imm_val == 0x26
+// opcode: rori ; op1:x10; dest:x11; op1val:0x764511488a; immval:0x26
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x764511488a, 0x26, x3, 1240, x4)
+
+inst_178:
+// rs1_val == 0x0000002DFD74106A and imm_val == 0x00
+// opcode: rori ; op1:x10; dest:x11; op1val:0x2dfd74106a; immval:0x0
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x2dfd74106a, 0x0, x3, 1248, x4)
+
+inst_179:
+// rs1_val == 0x000000101DD377C0 and imm_val == 0x35
+// opcode: rori ; op1:x10; dest:x11; op1val:0x101dd377c0; immval:0x35
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x101dd377c0, 0x35, x3, 1256, x4)
+
+inst_180:
+// rs1_val == 0x0000000A6B52B08E and imm_val == 0x31
+// opcode: rori ; op1:x10; dest:x11; op1val:0xa6b52b08e; immval:0x31
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xa6b52b08e, 0x31, x3, 1264, x4)
+
+inst_181:
+// rs1_val == 0x00000004FC3B66FB and imm_val == 0x10
+// opcode: rori ; op1:x10; dest:x11; op1val:0x4fc3b66fb; immval:0x10
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x4fc3b66fb, 0x10, x3, 1272, x4)
+
+inst_182:
+// rs1_val == 0x00000002728A6FD0 and imm_val == 0x18
+// opcode: rori ; op1:x10; dest:x11; op1val:0x2728a6fd0; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x2728a6fd0, 0x18, x3, 1280, x4)
+
+inst_183:
+// rs1_val == 0x00000001AE9CA08C and imm_val == 0x18
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1ae9ca08c; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1ae9ca08c, 0x18, x3, 1288, x4)
+
+inst_184:
+// rs1_val == 0x00000000CC099A1F and imm_val == 0x16
+// opcode: rori ; op1:x10; dest:x11; op1val:0xcc099a1f; immval:0x16
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xcc099a1f, 0x16, x3, 1296, x4)
+
+inst_185:
+// rs1_val == 0x0000000042CDF2B0 and imm_val == 0x3B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x42cdf2b0; immval:0x3b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x42cdf2b0, 0x3b, x3, 1304, x4)
+
+inst_186:
+// rs1_val == 0x000000002274EA19 and imm_val == 0x0C
+// opcode: rori ; op1:x10; dest:x11; op1val:0x2274ea19; immval:0xc
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x2274ea19, 0xc, x3, 1312, x4)
+
+inst_187:
+// rs1_val == 0x00000000120EF165 and imm_val == 0x0F
+// opcode: rori ; op1:x10; dest:x11; op1val:0x120ef165; immval:0xf
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x120ef165, 0xf, x3, 1320, x4)
+
+inst_188:
+// rs1_val == 0x000000000D2454F2 and imm_val == 0x34
+// opcode: rori ; op1:x10; dest:x11; op1val:0xd2454f2; immval:0x34
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xd2454f2, 0x34, x3, 1328, x4)
+
+inst_189:
+// rs1_val == 0x00000000063E9BEE and imm_val == 0x27
+// opcode: rori ; op1:x10; dest:x11; op1val:0x63e9bee; immval:0x27
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x63e9bee, 0x27, x3, 1336, x4)
+
+inst_190:
+// rs1_val == 0x00000000034C7CD0 and imm_val == 0x22
+// opcode: rori ; op1:x10; dest:x11; op1val:0x34c7cd0; immval:0x22
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x34c7cd0, 0x22, x3, 1344, x4)
+
+inst_191:
+// rs1_val == 0x0000000001777310 and imm_val == 0x19
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1777310; immval:0x19
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1777310, 0x19, x3, 1352, x4)
+
+inst_192:
+// rs1_val == 0x0000000000D11609 and imm_val == 0x32
+// opcode: rori ; op1:x10; dest:x11; op1val:0xd11609; immval:0x32
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xd11609, 0x32, x3, 1360, x4)
+
+inst_193:
+// rs1_val == 0x0000000000680BE0 and imm_val == 0x06
+// opcode: rori ; op1:x10; dest:x11; op1val:0x680be0; immval:0x6
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x680be0, 0x6, x3, 1368, x4)
+
+inst_194:
+// rs1_val == 0x0000000000294B16 and imm_val == 0x00
+// opcode: rori ; op1:x10; dest:x11; op1val:0x294b16; immval:0x0
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x294b16, 0x0, x3, 1376, x4)
+
+inst_195:
+// rs1_val == 0x0000000000128D1B and imm_val == 0x02
+// opcode: rori ; op1:x10; dest:x11; op1val:0x128d1b; immval:0x2
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x128d1b, 0x2, x3, 1384, x4)
+
+inst_196:
+// rs1_val == 0x0000000000089A12 and imm_val == 0x25
+// opcode: rori ; op1:x10; dest:x11; op1val:0x89a12; immval:0x25
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x89a12, 0x25, x3, 1392, x4)
+
+inst_197:
+// rs1_val == 0x000000000005D25B and imm_val == 0x0D
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5d25b; immval:0xd
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5d25b, 0xd, x3, 1400, x4)
+
+inst_198:
+// rs1_val == 0x000000000003A2C3 and imm_val == 0x24
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3a2c3; immval:0x24
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3a2c3, 0x24, x3, 1408, x4)
+
+inst_199:
+// rs1_val == 0x00000000000102FD and imm_val == 0x28
+// opcode: rori ; op1:x10; dest:x11; op1val:0x102fd; immval:0x28
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x102fd, 0x28, x3, 1416, x4)
+
+inst_200:
+// rs1_val == 0x000000000000A6B3 and imm_val == 0x0A
+// opcode: rori ; op1:x10; dest:x11; op1val:0xa6b3; immval:0xa
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xa6b3, 0xa, x3, 1424, x4)
+
+inst_201:
+// rs1_val == 0x0000000000005238 and imm_val == 0x23
+// opcode: rori ; op1:x10; dest:x11; op1val:0x5238; immval:0x23
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x5238, 0x23, x3, 1432, x4)
+
+inst_202:
+// rs1_val == 0x000000000000222A and imm_val == 0x0A
+// opcode: rori ; op1:x10; dest:x11; op1val:0x222a; immval:0xa
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x222a, 0xa, x3, 1440, x4)
+
+inst_203:
+// rs1_val == 0x0000000000001161 and imm_val == 0x25
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1161; immval:0x25
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1161, 0x25, x3, 1448, x4)
+
+inst_204:
+// rs1_val == 0x0000000000000DB9 and imm_val == 0x19
+// opcode: rori ; op1:x10; dest:x11; op1val:0xdb9; immval:0x19
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xdb9, 0x19, x3, 1456, x4)
+
+inst_205:
+// rs1_val == 0x00000000000004C1 and imm_val == 0x29
+// opcode: rori ; op1:x10; dest:x11; op1val:0x4c1; immval:0x29
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x4c1, 0x29, x3, 1464, x4)
+
+inst_206:
+// rs1_val == 0x0000000000000390 and imm_val == 0x03
+// opcode: rori ; op1:x10; dest:x11; op1val:0x390; immval:0x3
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x390, 0x3, x3, 1472, x4)
+
+inst_207:
+// rs1_val == 0x00000000000001D4 and imm_val == 0x18
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1d4; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1d4, 0x18, x3, 1480, x4)
+
+inst_208:
+// rs1_val == 0x00000000000000A7 and imm_val == 0x08
+// opcode: rori ; op1:x10; dest:x11; op1val:0xa7; immval:0x8
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xa7, 0x8, x3, 1488, x4)
+
+inst_209:
+// rs1_val == 0x0000000000000079 and imm_val == 0x14
+// opcode: rori ; op1:x10; dest:x11; op1val:0x79; immval:0x14
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x79, 0x14, x3, 1496, x4)
+
+inst_210:
+// rs1_val == 0x000000000000002C and imm_val == 0x32
+// opcode: rori ; op1:x10; dest:x11; op1val:0x2c; immval:0x32
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x2c, 0x32, x3, 1504, x4)
+
+inst_211:
+// rs1_val == 0x000000000000001D and imm_val == 0x05
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1d; immval:0x5
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1d, 0x5, x3, 1512, x4)
+
+inst_212:
+// rs1_val == 0x000000000000000C and imm_val == 0x26
+// opcode: rori ; op1:x10; dest:x11; op1val:0xc; immval:0x26
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xc, 0x26, x3, 1520, x4)
+
+inst_213:
+// rs1_val == 0x0000000000000006 and imm_val == 0x17
+// opcode: rori ; op1:x10; dest:x11; op1val:0x6; immval:0x17
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x6, 0x17, x3, 1528, x4)
+
+inst_214:
+// rs1_val == 0x0000000000000003 and imm_val == 0x3C
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3; immval:0x3c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3, 0x3c, x3, 1536, x4)
+
+inst_215:
+// rs1_val == 0x0000000000000001 and imm_val == 0x18
+// opcode: rori ; op1:x10; dest:x11; op1val:0x1; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x1, 0x18, x3, 1544, x4)
+
+inst_216:
+// rs1_val == 0x0000000000000000 and imm_val == 0x3B
+// opcode: rori ; op1:x10; dest:x11; op1val:0x0; immval:0x3b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x0, 0x3b, x3, 1552, x4)
+
+inst_217:
+// imm_val == 0x1C and rs1_val == 0xFC7C6D0A352C006F
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfc7c6d0a352c006f; immval:0x1c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfc7c6d0a352c006f, 0x1c, x3, 1560, x4)
+
+inst_218:
+// imm_val == 0x2C and rs1_val == 0x976AD220146A3673
+// opcode: rori ; op1:x10; dest:x11; op1val:0x976ad220146a3673; immval:0x2c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x976ad220146a3673, 0x2c, x3, 1568, x4)
+
+inst_219:
+// imm_val == 0x37 and rs1_val == 0xFC6113A3312529DC
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfc6113a3312529dc; immval:0x37
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfc6113a3312529dc, 0x37, x3, 1576, x4)
+
+inst_220:
+// imm_val == 0x3B and rs1_val == 0x242A809B7A3209FE
+// opcode: rori ; op1:x10; dest:x11; op1val:0x242a809b7a3209fe; immval:0x3b
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x242a809b7a3209fe, 0x3b, x3, 1584, x4)
+
+inst_221:
+// imm_val == 0x3C and rs1_val == 0xE380A1764A104E66
+// opcode: rori ; op1:x10; dest:x11; op1val:0xe380a1764a104e66; immval:0x3c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xe380a1764a104e66, 0x3c, x3, 1592, x4)
+
+inst_222:
+// imm_val == 0x3E and rs1_val == 0xA0E0BD86D4551408
+// opcode: rori ; op1:x10; dest:x11; op1val:0xa0e0bd86d4551408; immval:0x3e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xa0e0bd86d4551408, 0x3e, x3, 1600, x4)
+
+inst_223:
+// imm_val == 0x3F and rs1_val == 0xAFE08A13086C1B78
+// opcode: rori ; op1:x10; dest:x11; op1val:0xafe08a13086c1b78; immval:0x3f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xafe08a13086c1b78, 0x3f, x3, 1608, x4)
+
+inst_224:
+// rs1_val == 0x3CC279B3BD59213F and imm_val == 0x29
+// opcode: rori ; op1:x10; dest:x11; op1val:0x3cc279b3bd59213f; immval:0x29
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x3cc279b3bd59213f, 0x29, x3, 1616, x4)
+
+inst_225:
+// rs1_val == 0x941060376C5E1579 and imm_val == 0x13
+// opcode: rori ; op1:x10; dest:x11; op1val:0x941060376c5e1579; immval:0x13
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0x941060376c5e1579, 0x13, x3, 1624, x4)
+
+inst_226:
+// rs1_val == 0xC9EA3210E5DF7F0B and imm_val == 0x3A
+// opcode: rori ; op1:x10; dest:x11; op1val:0xc9ea3210e5df7f0b; immval:0x3a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xc9ea3210e5df7f0b, 0x3a, x3, 1632, x4)
+
+inst_227:
+// rs1_val == 0xE9E93D5257DDE0F0 and imm_val == 0x21
+// opcode: rori ; op1:x10; dest:x11; op1val:0xe9e93d5257dde0f0; immval:0x21
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xe9e93d5257dde0f0, 0x21, x3, 1640, x4)
+
+inst_228:
+// rs1_val == 0xF048E341C64C47E8 and imm_val == 0x39
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf048e341c64c47e8; immval:0x39
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf048e341c64c47e8, 0x39, x3, 1648, x4)
+
+inst_229:
+// rs1_val == 0xF969730123A92480 and imm_val == 0x37
+// opcode: rori ; op1:x10; dest:x11; op1val:0xf969730123a92480; immval:0x37
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xf969730123a92480, 0x37, x3, 1656, x4)
+
+inst_230:
+// rs1_val == 0xFC20CE1CD55D1CE8 and imm_val == 0x3E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfc20ce1cd55d1ce8; immval:0x3e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfc20ce1cd55d1ce8, 0x3e, x3, 1664, x4)
+
+inst_231:
+// rs1_val == 0xFED775C526EA42ED and imm_val == 0x3A
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfed775c526ea42ed; immval:0x3a
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfed775c526ea42ed, 0x3a, x3, 1672, x4)
+
+inst_232:
+// rs1_val == 0xFF01DFA30CF25924 and imm_val == 0x0B
+// opcode: rori ; op1:x10; dest:x11; op1val:0xff01dfa30cf25924; immval:0xb
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xff01dfa30cf25924, 0xb, x3, 1680, x4)
+
+inst_233:
+// rs1_val == 0xFF912F0A7046AB61 and imm_val == 0x08
+// opcode: rori ; op1:x10; dest:x11; op1val:0xff912f0a7046ab61; immval:0x8
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xff912f0a7046ab61, 0x8, x3, 1688, x4)
+
+inst_234:
+// rs1_val == 0xFFCA96C9D43DB43F and imm_val == 0x00
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffca96c9d43db43f; immval:0x0
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffca96c9d43db43f, 0x0, x3, 1696, x4)
+
+inst_235:
+// rs1_val == 0xFFEB4B49194135A5 and imm_val == 0x35
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffeb4b49194135a5; immval:0x35
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffeb4b49194135a5, 0x35, x3, 1704, x4)
+
+inst_236:
+// rs1_val == 0xFFF1A2ADB3A63FA4 and imm_val == 0x38
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfff1a2adb3a63fa4; immval:0x38
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfff1a2adb3a63fa4, 0x38, x3, 1712, x4)
+
+inst_237:
+// rs1_val == 0xFFF8306E89E6156C and imm_val == 0x3E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfff8306e89e6156c; immval:0x3e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfff8306e89e6156c, 0x3e, x3, 1720, x4)
+
+inst_238:
+// rs1_val == 0xFFFDA6CA22C13476 and imm_val == 0x2C
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffda6ca22c13476; immval:0x2c
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffda6ca22c13476, 0x2c, x3, 1728, x4)
+
+inst_239:
+// rs1_val == 0xFFFE03B4AC9E9033 and imm_val == 0x33
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffe03b4ac9e9033; immval:0x33
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffe03b4ac9e9033, 0x33, x3, 1736, x4)
+
+inst_240:
+// rs1_val == 0xFFFF3AD31011EEB5 and imm_val == 0x3E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffff3ad31011eeb5; immval:0x3e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffff3ad31011eeb5, 0x3e, x3, 1744, x4)
+
+inst_241:
+// rs1_val == 0xFFFF90F48525E8A9 and imm_val == 0x3F
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffff90f48525e8a9; immval:0x3f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffff90f48525e8a9, 0x3f, x3, 1752, x4)
+
+inst_242:
+// rs1_val == 0xFFFFD6E6BC7F85E3 and imm_val == 0x22
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffd6e6bc7f85e3; immval:0x22
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffd6e6bc7f85e3, 0x22, x3, 1760, x4)
+
+inst_243:
+// rs1_val == 0xFFFFE7F6AC60E057 and imm_val == 0x1E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffe7f6ac60e057; immval:0x1e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffe7f6ac60e057, 0x1e, x3, 1768, x4)
+
+inst_244:
+// rs1_val == 0xFFFFF12863FD8180 and imm_val == 0x3F
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffff12863fd8180; immval:0x3f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffff12863fd8180, 0x3f, x3, 1776, x4)
+
+inst_245:
+// rs1_val == 0xFFFFFB5472B3CB0C and imm_val == 0x14
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffb5472b3cb0c; immval:0x14
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffb5472b3cb0c, 0x14, x3, 1784, x4)
+
+inst_246:
+// rs1_val == 0xFFFFFD8D3E1C8522 and imm_val == 0x21
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffd8d3e1c8522; immval:0x21
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffd8d3e1c8522, 0x21, x3, 1792, x4)
+
+inst_247:
+// rs1_val == 0xFFFFFE8F54E77CDC and imm_val == 0x28
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffe8f54e77cdc; immval:0x28
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffe8f54e77cdc, 0x28, x3, 1800, x4)
+
+inst_248:
+// rs1_val == 0xFFFFFF048B7B5379 and imm_val == 0x05
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffff048b7b5379; immval:0x5
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffff048b7b5379, 0x5, x3, 1808, x4)
+
+inst_249:
+// rs1_val == 0xFFFFFF856F4930C9 and imm_val == 0x00
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffff856f4930c9; immval:0x0
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffff856f4930c9, 0x0, x3, 1816, x4)
+
+inst_250:
+// rs1_val == 0xFFFFFFDCC5D97467 and imm_val == 0x29
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffdcc5d97467; immval:0x29
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffdcc5d97467, 0x29, x3, 1824, x4)
+
+inst_251:
+// rs1_val == 0xFFFFFFE5C70AFC93 and imm_val == 0x3D
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffe5c70afc93; immval:0x3d
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffe5c70afc93, 0x3d, x3, 1832, x4)
+
+inst_252:
+// rs1_val == 0xFFFFFFF6A911655F and imm_val == 0x16
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffff6a911655f; immval:0x16
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffff6a911655f, 0x16, x3, 1840, x4)
+
+inst_253:
+// rs1_val == 0xFFFFFFF974AB0A39 and imm_val == 0x15
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffff974ab0a39; immval:0x15
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffff974ab0a39, 0x15, x3, 1848, x4)
+
+inst_254:
+// rs1_val == 0xFFFFFFFCDD68F202 and imm_val == 0x22
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffcdd68f202; immval:0x22
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffcdd68f202, 0x22, x3, 1856, x4)
+
+inst_255:
+// rs1_val == 0xFFFFFFFE24BD4821 and imm_val == 0x16
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffe24bd4821; immval:0x16
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffe24bd4821, 0x16, x3, 1864, x4)
+
+inst_256:
+// rs1_val == 0xFFFFFFFF3ED7E667 and imm_val == 0x23
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffff3ed7e667; immval:0x23
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffff3ed7e667, 0x23, x3, 1872, x4)
+
+inst_257:
+// rs1_val == 0xFFFFFFFFB871CFDF and imm_val == 0x39
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffb871cfdf; immval:0x39
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffb871cfdf, 0x39, x3, 1880, x4)
+
+inst_258:
+// rs1_val == 0xFFFFFFFFD29C11AE and imm_val == 0x37
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffd29c11ae; immval:0x37
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffd29c11ae, 0x37, x3, 1888, x4)
+
+inst_259:
+// rs1_val == 0xFFFFFFFFE109799A and imm_val == 0x18
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffe109799a; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffe109799a, 0x18, x3, 1896, x4)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFF4E80B13 and imm_val == 0x0C
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffff4e80b13; immval:0xc
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffff4e80b13, 0xc, x3, 1904, x4)
+
+inst_261:
+// rs1_val == 0xFFFFFFFFF9B7EA62 and imm_val == 0x13
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffff9b7ea62; immval:0x13
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffff9b7ea62, 0x13, x3, 1912, x4)
+
+inst_262:
+// rs1_val == 0xFFFFFFFFFC51F638 and imm_val == 0x2F
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffc51f638; immval:0x2f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffc51f638, 0x2f, x3, 1920, x4)
+
+inst_263:
+// rs1_val == 0xFFFFFFFFFE9263CF and imm_val == 0x0A
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffe9263cf; immval:0xa
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffe9263cf, 0xa, x3, 1928, x4)
+
+inst_264:
+// rs1_val == 0xFFFFFFFFFF216823 and imm_val == 0x09
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffff216823; immval:0x9
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffff216823, 0x9, x3, 1936, x4)
+
+inst_265:
+// rs1_val == 0xFFFFFFFFFF861438 and imm_val == 0x04
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffff861438; immval:0x4
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffff861438, 0x4, x3, 1944, x4)
+
+inst_266:
+// rs1_val == 0xFFFFFFFFFFD8C9D0 and imm_val == 0x34
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffd8c9d0; immval:0x34
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffd8c9d0, 0x34, x3, 1952, x4)
+
+inst_267:
+// rs1_val == 0xFFFFFFFFFFE4D576 and imm_val == 0x14
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffe4d576; immval:0x14
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffe4d576, 0x14, x3, 1960, x4)
+
+inst_268:
+// rs1_val == 0xFFFFFFFFFFF18C67 and imm_val == 0x29
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffff18c67; immval:0x29
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffff18c67, 0x29, x3, 1968, x4)
+
+inst_269:
+// rs1_val == 0xFFFFFFFFFFFBB998 and imm_val == 0x08
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffbb998; immval:0x8
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffbb998, 0x8, x3, 1976, x4)
+
+inst_270:
+// rs1_val == 0xFFFFFFFFFFFC2561 and imm_val == 0x39
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffc2561; immval:0x39
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffc2561, 0x39, x3, 1984, x4)
+
+inst_271:
+// rs1_val == 0xFFFFFFFFFFFEEAB5 and imm_val == 0x1E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffeeab5; immval:0x1e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffeeab5, 0x1e, x3, 1992, x4)
+
+inst_272:
+// rs1_val == 0xFFFFFFFFFFFF0651 and imm_val == 0x26
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffff0651; immval:0x26
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffff0651, 0x26, x3, 2000, x4)
+
+inst_273:
+// rs1_val == 0xFFFFFFFFFFFF90E4 and imm_val == 0x18
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffff90e4; immval:0x18
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffff90e4, 0x18, x3, 2008, x4)
+
+inst_274:
+// rs1_val == 0xFFFFFFFFFFFFCA23 and imm_val == 0x00
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffffca23; immval:0x0
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffffca23, 0x0, x3, 2016, x4)
+
+inst_275:
+// rs1_val == 0xFFFFFFFFFFFFE2A0 and imm_val == 0x30
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffffe2a0; immval:0x30
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffffe2a0, 0x30, x3, 2024, x4)
+
+inst_276:
+// rs1_val == 0xFFFFFFFFFFFFF2CC and imm_val == 0x1E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffff2cc; immval:0x1e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffff2cc, 0x1e, x3, 2032, x4)
+
+inst_277:
+// rs1_val == 0xFFFFFFFFFFFFFAB4 and imm_val == 0x11
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffffab4; immval:0x11
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffffab4, 0x11, x3, 2040, x4)
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_278:
+// rs1_val == 0xFFFFFFFFFFFFFCEE and imm_val == 0x26
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffffcee; immval:0x26
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffffcee, 0x26, x3, 0, x4)
+
+inst_279:
+// rs1_val == 0xFFFFFFFFFFFFFE04 and imm_val == 0x21
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffffe04; immval:0x21
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffffe04, 0x21, x3, 8, x4)
+
+inst_280:
+// rs1_val == 0xFFFFFFFFFFFFFF2A and imm_val == 0x30
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffffff2a; immval:0x30
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffffff2a, 0x30, x3, 16, x4)
+
+inst_281:
+// rs1_val == 0xFFFFFFFFFFFFFF9D and imm_val == 0x11
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffffff9d; immval:0x11
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffffff9d, 0x11, x3, 24, x4)
+
+inst_282:
+// rs1_val == 0xFFFFFFFFFFFFFFC7 and imm_val == 0x2E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffffffc7; immval:0x2e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffffffc7, 0x2e, x3, 32, x4)
+
+inst_283:
+// rs1_val == 0xFFFFFFFFFFFFFFE4 and imm_val == 0x1F
+// opcode: rori ; op1:x10; dest:x11; op1val:0xffffffffffffffe4; immval:0x1f
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xffffffffffffffe4, 0x1f, x3, 40, x4)
+
+inst_284:
+// rs1_val == 0xFFFFFFFFFFFFFFF2 and imm_val == 0x3E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffffff2; immval:0x3e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffffff2, 0x3e, x3, 48, x4)
+
+inst_285:
+// rs1_val == 0xFFFFFFFFFFFFFFF8 and imm_val == 0x14
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffffff8; immval:0x14
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffffff8, 0x14, x3, 56, x4)
+
+inst_286:
+// rs1_val == 0xFFFFFFFFFFFFFFFD and imm_val == 0x3E
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffffffd; immval:0x3e
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffffffd, 0x3e, x3, 64, x4)
+
+inst_287:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and imm_val == 0x01
+// opcode: rori ; op1:x10; dest:x11; op1val:0xfffffffffffffffe; immval:0x1
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xfffffffffffffffe, 0x1, x3, 72, x4)
+
+inst_288:
+// imm_val == 0x00 and rs1_val == 0xCADB5BEC61250888
+// opcode: rori ; op1:x10; dest:x11; op1val:0xcadb5bec61250888; immval:0x0
+TEST_IMM_OP( rori, x11, x10, 0x0000000000000000, 0xcadb5bec61250888, 0x0, x3, 80, x4)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x8_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x8_1:
+ .fill 22*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 11*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/roriw-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/roriw-01.S
new file mode 100644
index 000000000..f9d6a21ac
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/roriw-01.S
@@ -0,0 +1,1516 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the roriw instruction of the RISC-V extension for the roriw covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",roriw)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",roriw)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",roriw)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKb.*);def TEST_CASE_1=True;",roriw)
+
+RVTEST_SIGBASE( x18,signature_x18_1)
+
+inst_0:
+// rs1 != rd, rs1==x16, rd==x20, rs1_val == 0xFFFFFFFFFFFFFFFF and imm_val == 0x1B
+// opcode: roriw ; op1:x16; dest:x20; op1val:0xffffffffffffffff; immval:0x1b
+TEST_IMM_OP( roriw, x20, x16, 0x0000000000000000, 0xffffffffffffffff, 0x1b, x18, 0, x6)
+
+inst_1:
+// rs1 == rd, rs1==x17, rd==x17, imm_val == 0x00 and rs1_val == 0xE917333212AF8F73
+// opcode: roriw ; op1:x17; dest:x17; op1val:0xe917333212af8f73; immval:0x0
+TEST_IMM_OP( roriw, x17, x17, 0x0000000000000000, 0xe917333212af8f73, 0x0, x18, 8, x6)
+
+inst_2:
+// rs1==x3, rd==x1, imm_val == 0x10 and rs1_val == 0xCC381E1007E8BF65
+// opcode: roriw ; op1:x3; dest:x1; op1val:0xcc381e1007e8bf65; immval:0x10
+TEST_IMM_OP( roriw, x1, x3, 0x0000000000000000, 0xcc381e1007e8bf65, 0x10, x18, 16, x6)
+
+inst_3:
+// rs1==x30, rd==x19, imm_val == 0x18 and rs1_val == 0xFAE216DC58F45328
+// opcode: roriw ; op1:x30; dest:x19; op1val:0xfae216dc58f45328; immval:0x18
+TEST_IMM_OP( roriw, x19, x30, 0x0000000000000000, 0xfae216dc58f45328, 0x18, x18, 24, x6)
+
+inst_4:
+// rs1==x2, rd==x22, imm_val == 0x0C and rs1_val == 0xE6A56AE617C67895
+// opcode: roriw ; op1:x2; dest:x22; op1val:0xe6a56ae617c67895; immval:0xc
+TEST_IMM_OP( roriw, x22, x2, 0x0000000000000000, 0xe6a56ae617c67895, 0xc, x18, 32, x6)
+
+inst_5:
+// rs1==x25, rd==x3, imm_val == 0x12 and rs1_val == 0x6AEB7DBD0A095049
+// opcode: roriw ; op1:x25; dest:x3; op1val:0x6aeb7dbd0a095049; immval:0x12
+TEST_IMM_OP( roriw, x3, x25, 0x0000000000000000, 0x6aeb7dbd0a095049, 0x12, x18, 40, x6)
+
+inst_6:
+// rs1==x19, rd==x31, imm_val == 0x07 and rs1_val == 0xF644D360EFB8C545
+// opcode: roriw ; op1:x19; dest:x31; op1val:0xf644d360efb8c545; immval:0x7
+TEST_IMM_OP( roriw, x31, x19, 0x0000000000000000, 0xf644d360efb8c545, 0x7, x18, 48, x6)
+
+inst_7:
+// rs1==x8, rd==x25, rs1_val == 0x0000000000000000 and imm_val == 0x0F
+// opcode: roriw ; op1:x8; dest:x25; op1val:0x0; immval:0xf
+TEST_IMM_OP( roriw, x25, x8, 0x0000000000000000, 0x0, 0xf, x18, 56, x6)
+
+inst_8:
+// rs1==x22, rd==x14, rs1_val == 0x8000000000000000 and imm_val == 0x11
+// opcode: roriw ; op1:x22; dest:x14; op1val:0x8000000000000000; immval:0x11
+TEST_IMM_OP( roriw, x14, x22, 0x0000000000000000, 0x8000000000000000, 0x11, x18, 64, x6)
+
+inst_9:
+// rs1==x28, rd==x12, rs1_val == 0xC000000000000000 and imm_val == 0x08
+// opcode: roriw ; op1:x28; dest:x12; op1val:0xc000000000000000; immval:0x8
+TEST_IMM_OP( roriw, x12, x28, 0x0000000000000000, 0xc000000000000000, 0x8, x18, 72, x6)
+
+inst_10:
+// rs1==x23, rd==x5, rs1_val == 0x6000000000000000 and imm_val == 0x00
+// opcode: roriw ; op1:x23; dest:x5; op1val:0x6000000000000000; immval:0x0
+TEST_IMM_OP( roriw, x5, x23, 0x0000000000000000, 0x6000000000000000, 0x0, x18, 80, x6)
+
+inst_11:
+// rs1==x14, rd==x4, rs1_val == 0xF000000000000000 and imm_val == 0x10
+// opcode: roriw ; op1:x14; dest:x4; op1val:0xf000000000000000; immval:0x10
+TEST_IMM_OP( roriw, x4, x14, 0x0000000000000000, 0xf000000000000000, 0x10, x18, 88, x6)
+
+inst_12:
+// rs1==x4, rd==x26, rs1_val == 0x1800000000000000 and imm_val == 0x0D
+// opcode: roriw ; op1:x4; dest:x26; op1val:0x1800000000000000; immval:0xd
+TEST_IMM_OP( roriw, x26, x4, 0x0000000000000000, 0x1800000000000000, 0xd, x18, 96, x6)
+
+inst_13:
+// rs1==x13, rd==x16, rs1_val == 0x4400000000000000 and imm_val == 0x1C
+// opcode: roriw ; op1:x13; dest:x16; op1val:0x4400000000000000; immval:0x1c
+TEST_IMM_OP( roriw, x16, x13, 0x0000000000000000, 0x4400000000000000, 0x1c, x18, 104, x6)
+
+inst_14:
+// rs1==x27, rd==x11, rs1_val == 0x3E00000000000000 and imm_val == 0x02
+// opcode: roriw ; op1:x27; dest:x11; op1val:0x3e00000000000000; immval:0x2
+TEST_IMM_OP( roriw, x11, x27, 0x0000000000000000, 0x3e00000000000000, 0x2, x18, 112, x6)
+
+inst_15:
+// rs1==x20, rd==x7, rs1_val == 0x3500000000000000 and imm_val == 0x0A
+// opcode: roriw ; op1:x20; dest:x7; op1val:0x3500000000000000; immval:0xa
+TEST_IMM_OP( roriw, x7, x20, 0x0000000000000000, 0x3500000000000000, 0xa, x18, 120, x6)
+
+inst_16:
+// rs1==x11, rd==x30, rs1_val == 0x6F80000000000000 and imm_val == 0x1C
+// opcode: roriw ; op1:x11; dest:x30; op1val:0x6f80000000000000; immval:0x1c
+TEST_IMM_OP( roriw, x30, x11, 0x0000000000000000, 0x6f80000000000000, 0x1c, x18, 128, x6)
+
+inst_17:
+// rs1==x1, rd==x28, rs1_val == 0x4EC0000000000000 and imm_val == 0x16
+// opcode: roriw ; op1:x1; dest:x28; op1val:0x4ec0000000000000; immval:0x16
+TEST_IMM_OP( roriw, x28, x1, 0x0000000000000000, 0x4ec0000000000000, 0x16, x18, 136, x6)
+
+inst_18:
+// rs1==x0, rd==x23, rs1_val == 0x1E20000000000000 and imm_val == 0x1E
+// opcode: roriw ; op1:x0; dest:x23; op1val:0x0; immval:0x1e
+TEST_IMM_OP( roriw, x23, x0, 0x0000000000000000, 0x0, 0x1e, x18, 144, x6)
+
+inst_19:
+// rs1==x9, rd==x21, rs1_val == 0x1910000000000000 and imm_val == 0x0E
+// opcode: roriw ; op1:x9; dest:x21; op1val:0x1910000000000000; immval:0xe
+TEST_IMM_OP( roriw, x21, x9, 0x0000000000000000, 0x1910000000000000, 0xe, x18, 152, x6)
+
+inst_20:
+// rs1==x7, rd==x15, rs1_val == 0x1248000000000000 and imm_val == 0x11
+// opcode: roriw ; op1:x7; dest:x15; op1val:0x1248000000000000; immval:0x11
+TEST_IMM_OP( roriw, x15, x7, 0x0000000000000000, 0x1248000000000000, 0x11, x18, 160, x6)
+
+inst_21:
+// rs1==x24, rd==x27, rs1_val == 0xBF84000000000000 and imm_val == 0x14
+// opcode: roriw ; op1:x24; dest:x27; op1val:0xbf84000000000000; immval:0x14
+TEST_IMM_OP( roriw, x27, x24, 0x0000000000000000, 0xbf84000000000000, 0x14, x18, 168, x6)
+
+inst_22:
+// rs1==x10, rd==x6, rs1_val == 0xC116000000000000 and imm_val == 0x09
+// opcode: roriw ; op1:x10; dest:x6; op1val:0xc116000000000000; immval:0x9
+TEST_IMM_OP( roriw, x6, x10, 0x0000000000000000, 0xc116000000000000, 0x9, x18, 176, x3)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_23:
+// rs1==x29, rd==x8, rs1_val == 0xD631000000000000 and imm_val == 0x17
+// opcode: roriw ; op1:x29; dest:x8; op1val:0xd631000000000000; immval:0x17
+TEST_IMM_OP( roriw, x8, x29, 0x0000000000000000, 0xd631000000000000, 0x17, x1, 0, x3)
+
+inst_24:
+// rs1==x6, rd==x10, rs1_val == 0x17B2800000000000 and imm_val == 0x0F
+// opcode: roriw ; op1:x6; dest:x10; op1val:0x17b2800000000000; immval:0xf
+TEST_IMM_OP( roriw, x10, x6, 0x0000000000000000, 0x17b2800000000000, 0xf, x1, 8, x3)
+
+inst_25:
+// rs1==x12, rd==x0, rs1_val == 0x9568400000000000 and imm_val == 0x00
+// opcode: roriw ; op1:x12; dest:x0; op1val:0x9568400000000000; immval:0x0
+TEST_IMM_OP( roriw, x0, x12, 0x0000000000000000, 0x9568400000000000, 0x0, x1, 16, x3)
+
+inst_26:
+// rs1==x18, rd==x13, rs1_val == 0x8B06600000000000 and imm_val == 0x15
+// opcode: roriw ; op1:x18; dest:x13; op1val:0x8b06600000000000; immval:0x15
+TEST_IMM_OP( roriw, x13, x18, 0x0000000000000000, 0x8b06600000000000, 0x15, x1, 24, x3)
+
+inst_27:
+// rs1==x21, rd==x24, rs1_val == 0xB93DF00000000000 and imm_val == 0x00
+// opcode: roriw ; op1:x21; dest:x24; op1val:0xb93df00000000000; immval:0x0
+TEST_IMM_OP( roriw, x24, x21, 0x0000000000000000, 0xb93df00000000000, 0x0, x1, 32, x3)
+
+inst_28:
+// rs1==x15, rd==x9, rs1_val == 0x88ADB80000000000 and imm_val == 0x0E
+// opcode: roriw ; op1:x15; dest:x9; op1val:0x88adb80000000000; immval:0xe
+TEST_IMM_OP( roriw, x9, x15, 0x0000000000000000, 0x88adb80000000000, 0xe, x1, 40, x3)
+
+inst_29:
+// rs1==x5, rd==x18, rs1_val == 0xE180E40000000000 and imm_val == 0x17
+// opcode: roriw ; op1:x5; dest:x18; op1val:0xe180e40000000000; immval:0x17
+TEST_IMM_OP( roriw, x18, x5, 0x0000000000000000, 0xe180e40000000000, 0x17, x1, 48, x3)
+
+inst_30:
+// rs1==x26, rd==x29, rs1_val == 0xD5CB7E0000000000 and imm_val == 0x0A
+// opcode: roriw ; op1:x26; dest:x29; op1val:0xd5cb7e0000000000; immval:0xa
+TEST_IMM_OP( roriw, x29, x26, 0x0000000000000000, 0xd5cb7e0000000000, 0xa, x1, 56, x3)
+
+inst_31:
+// rs1==x31, rd==x2, rs1_val == 0xA438230000000000 and imm_val == 0x1E
+// opcode: roriw ; op1:x31; dest:x2; op1val:0xa438230000000000; immval:0x1e
+TEST_IMM_OP( roriw, x2, x31, 0x0000000000000000, 0xa438230000000000, 0x1e, x1, 64, x3)
+
+inst_32:
+// rs1_val == 0xB9BE488000000000 and imm_val == 0x12
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xb9be488000000000; immval:0x12
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xb9be488000000000, 0x12, x1, 72, x3)
+
+inst_33:
+// rs1_val == 0xE5ABA74000000000 and imm_val == 0x17
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xe5aba74000000000; immval:0x17
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xe5aba74000000000, 0x17, x1, 80, x3)
+
+inst_34:
+// rs1_val == 0xF2124BA000000000 and imm_val == 0x03
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xf2124ba000000000; immval:0x3
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xf2124ba000000000, 0x3, x1, 88, x3)
+
+inst_35:
+// rs1_val == 0x96EBEC5000000000 and imm_val == 0x11
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x96ebec5000000000; immval:0x11
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x96ebec5000000000, 0x11, x1, 96, x3)
+
+inst_36:
+// rs1_val == 0x6CA53BC800000000 and imm_val == 0x11
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x6ca53bc800000000; immval:0x11
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x6ca53bc800000000, 0x11, x1, 104, x3)
+
+inst_37:
+// rs1_val == 0x035FF31C00000000 and imm_val == 0x0E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x35ff31c00000000; immval:0xe
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x35ff31c00000000, 0xe, x1, 112, x3)
+
+inst_38:
+// rs1_val == 0x8B38E95A00000000 and imm_val == 0x06
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x8b38e95a00000000; immval:0x6
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x8b38e95a00000000, 0x6, x1, 120, x3)
+
+inst_39:
+// rs1_val == 0x0B21BBBB00000000 and imm_val == 0x0D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xb21bbbb00000000; immval:0xd
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xb21bbbb00000000, 0xd, x1, 128, x3)
+
+inst_40:
+// rs1_val == 0x9C6FFFDC80000000 and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x9c6fffdc80000000; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x9c6fffdc80000000, 0x1b, x1, 136, x3)
+
+inst_41:
+// rs1_val == 0x8217FFBE40000000 and imm_val == 0x01
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x8217ffbe40000000; immval:0x1
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x8217ffbe40000000, 0x1, x1, 144, x3)
+
+inst_42:
+// rs1_val == 0x60E68CB720000000 and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x60e68cb720000000; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x60e68cb720000000, 0x1b, x1, 152, x3)
+
+inst_43:
+// rs1_val == 0xF5D02B2010000000 and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xf5d02b2010000000; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xf5d02b2010000000, 0xb, x1, 160, x3)
+
+inst_44:
+// rs1_val == 0x4204DE9838000000 and imm_val == 0x15
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x4204de9838000000; immval:0x15
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x4204de9838000000, 0x15, x1, 168, x3)
+
+inst_45:
+// rs1_val == 0xF6B1F180F4000000 and imm_val == 0x07
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xf6b1f180f4000000; immval:0x7
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xf6b1f180f4000000, 0x7, x1, 176, x3)
+
+inst_46:
+// rs1_val == 0xF5BB75A166000000 and imm_val == 0x18
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xf5bb75a166000000; immval:0x18
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xf5bb75a166000000, 0x18, x1, 184, x3)
+
+inst_47:
+// rs1_val == 0xAA5B397039000000 and imm_val == 0x17
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xaa5b397039000000; immval:0x17
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xaa5b397039000000, 0x17, x1, 192, x3)
+
+inst_48:
+// rs1_val == 0x0E7BD5B154800000 and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xe7bd5b154800000; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xe7bd5b154800000, 0x10, x1, 200, x3)
+
+inst_49:
+// rs1_val == 0xB7A2A2301A400000 and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xb7a2a2301a400000; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xb7a2a2301a400000, 0x5, x1, 208, x3)
+
+inst_50:
+// rs1_val == 0x29EF41AF7B600000 and imm_val == 0x18
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x29ef41af7b600000; immval:0x18
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x29ef41af7b600000, 0x18, x1, 216, x3)
+
+inst_51:
+// rs1_val == 0xDD8AB0BCEFB00000 and imm_val == 0x1E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xdd8ab0bcefb00000; immval:0x1e
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xdd8ab0bcefb00000, 0x1e, x1, 224, x3)
+
+inst_52:
+// rs1_val == 0xFA3B344326080000 and imm_val == 0x1A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfa3b344326080000; immval:0x1a
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfa3b344326080000, 0x1a, x1, 232, x3)
+
+inst_53:
+// rs1_val == 0xBF06387955040000 and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xbf06387955040000; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xbf06387955040000, 0x5, x1, 240, x3)
+
+inst_54:
+// rs1_val == 0x7D49F3CA79FA0000 and imm_val == 0x03
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x7d49f3ca79fa0000; immval:0x3
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x7d49f3ca79fa0000, 0x3, x1, 248, x3)
+
+inst_55:
+// rs1_val == 0xAAB48A1C0F230000 and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xaab48a1c0f230000; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xaab48a1c0f230000, 0xa, x1, 256, x3)
+
+inst_56:
+// rs1_val == 0xA25E549735CB8000 and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xa25e549735cb8000; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xa25e549735cb8000, 0x8, x1, 264, x3)
+
+inst_57:
+// rs1_val == 0x49E43C96F2344000 and imm_val == 0x07
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x49e43c96f2344000; immval:0x7
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x49e43c96f2344000, 0x7, x1, 272, x3)
+
+inst_58:
+// rs1_val == 0x971662E94AAA2000 and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x971662e94aaa2000; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x971662e94aaa2000, 0x1b, x1, 280, x3)
+
+inst_59:
+// rs1_val == 0xFA51CD1D4D2B5000 and imm_val == 0x0E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfa51cd1d4d2b5000; immval:0xe
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfa51cd1d4d2b5000, 0xe, x1, 288, x3)
+
+inst_60:
+// rs1_val == 0xEBC398261A02E800 and imm_val == 0x03
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xebc398261a02e800; immval:0x3
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xebc398261a02e800, 0x3, x1, 296, x3)
+
+inst_61:
+// rs1_val == 0x5334BAB9CA6C0400 and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5334bab9ca6c0400; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5334bab9ca6c0400, 0x5, x1, 304, x3)
+
+inst_62:
+// rs1_val == 0xEC133026333BC200 and imm_val == 0x15
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xec133026333bc200; immval:0x15
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xec133026333bc200, 0x15, x1, 312, x3)
+
+inst_63:
+// rs1_val == 0x82CC710F0F1C6B00 and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x82cc710f0f1c6b00; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x82cc710f0f1c6b00, 0xc, x1, 320, x3)
+
+inst_64:
+// rs1_val == 0x7AA3D594C52CFC80 and imm_val == 0x0D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x7aa3d594c52cfc80; immval:0xd
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x7aa3d594c52cfc80, 0xd, x1, 328, x3)
+
+inst_65:
+// rs1_val == 0x29DB927E9836F5C0 and imm_val == 0x17
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x29db927e9836f5c0; immval:0x17
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x29db927e9836f5c0, 0x17, x1, 336, x3)
+
+inst_66:
+// rs1_val == 0x0DA598F1DCB160E0 and imm_val == 0x09
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xda598f1dcb160e0; immval:0x9
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xda598f1dcb160e0, 0x9, x1, 344, x3)
+
+inst_67:
+// rs1_val == 0xD45AF1CB0CAAE1D0 and imm_val == 0x0E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xd45af1cb0caae1d0; immval:0xe
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xd45af1cb0caae1d0, 0xe, x1, 352, x3)
+
+inst_68:
+// rs1_val == 0x25B37C62314026E8 and imm_val == 0x1D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x25b37c62314026e8; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x25b37c62314026e8, 0x1d, x1, 360, x3)
+
+inst_69:
+// rs1_val == 0x7FBFA447FC8A89F4 and imm_val == 0x1E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x7fbfa447fc8a89f4; immval:0x1e
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x7fbfa447fc8a89f4, 0x1e, x1, 368, x3)
+
+inst_70:
+// rs1_val == 0xC36673FE4902E9CE and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xc36673fe4902e9ce; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xc36673fe4902e9ce, 0x0, x1, 376, x3)
+
+inst_71:
+// rs1_val == 0x44DCDA6A797D76DF and imm_val == 0x16
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x44dcda6a797d76df; immval:0x16
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x44dcda6a797d76df, 0x16, x1, 384, x3)
+
+inst_72:
+// imm_val == 0x02 and rs1_val == 0x20D68CEC58FC0342
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x20d68cec58fc0342; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x20d68cec58fc0342, 0x2, x1, 392, x3)
+
+inst_73:
+// imm_val == 0x09 and rs1_val == 0x636A75E39A6DA5B1
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x636a75e39a6da5b1; immval:0x9
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x636a75e39a6da5b1, 0x9, x1, 400, x3)
+
+inst_74:
+// imm_val == 0x1B and rs1_val == 0x37E0DE00280088DB
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x37e0de00280088db; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x37e0de00280088db, 0x1b, x1, 408, x3)
+
+inst_75:
+// imm_val == 0x07 and rs1_val == 0x1CA7BD1F0D770F3C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1ca7bd1f0d770f3c; immval:0x7
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1ca7bd1f0d770f3c, 0x7, x1, 416, x3)
+
+inst_76:
+// imm_val == 0x0F and rs1_val == 0x5536B8D863C2504C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5536b8d863c2504c; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5536b8d863c2504c, 0xf, x1, 424, x3)
+
+inst_77:
+// imm_val == 0x1F and rs1_val == 0x4E6EE408C61B1FBF
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x4e6ee408c61b1fbf; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x4e6ee408c61b1fbf, 0x1f, x1, 432, x3)
+
+inst_78:
+// rs1_val == 0xC215E193118E5332 and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xc215e193118e5332; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xc215e193118e5332, 0x2, x1, 440, x3)
+
+inst_79:
+// rs1_val == 0x75EE935F65CB60C1 and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x75ee935f65cb60c1; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x75ee935f65cb60c1, 0x5, x1, 448, x3)
+
+inst_80:
+// rs1_val == 0x09C161626CE859BB and imm_val == 0x14
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x9c161626ce859bb; immval:0x14
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x9c161626ce859bb, 0x14, x1, 456, x3)
+
+inst_81:
+// rs1_val == 0xA4053175342F57C7 and imm_val == 0x16
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xa4053175342f57c7; immval:0x16
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xa4053175342f57c7, 0x16, x1, 464, x3)
+
+inst_82:
+// rs1_val == 0x499006C897933E6F and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x499006c897933e6f; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x499006c897933e6f, 0x1b, x1, 472, x3)
+
+inst_83:
+// rs1_val == 0xC5DD85CA5B064A1F and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xc5dd85ca5b064a1f; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xc5dd85ca5b064a1f, 0xf, x1, 480, x3)
+
+inst_84:
+// rs1_val == 0x6CC30F7242302B3F and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x6cc30f7242302b3f; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x6cc30f7242302b3f, 0xf, x1, 488, x3)
+
+inst_85:
+// rs1_val == 0xAF1DBF276CE4747F and imm_val == 0x0D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xaf1dbf276ce4747f; immval:0xd
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xaf1dbf276ce4747f, 0xd, x1, 496, x3)
+
+inst_86:
+// rs1_val == 0x25784F4FBD0608FF and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x25784f4fbd0608ff; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x25784f4fbd0608ff, 0x10, x1, 504, x3)
+
+inst_87:
+// rs1_val == 0x805A391B604C85FF and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x805a391b604c85ff; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x805a391b604c85ff, 0xa, x1, 512, x3)
+
+inst_88:
+// rs1_val == 0xCC7EB77D4BEB1BFF and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xcc7eb77d4beb1bff; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xcc7eb77d4beb1bff, 0x2, x1, 520, x3)
+
+inst_89:
+// rs1_val == 0xAB647BCA3919F7FF and imm_val == 0x0D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xab647bca3919f7ff; immval:0xd
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xab647bca3919f7ff, 0xd, x1, 528, x3)
+
+inst_90:
+// rs1_val == 0x7F1E7F8627B22FFF and imm_val == 0x1E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x7f1e7f8627b22fff; immval:0x1e
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x7f1e7f8627b22fff, 0x1e, x1, 536, x3)
+
+inst_91:
+// rs1_val == 0x51D6D6DA01769FFF and imm_val == 0x15
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x51d6d6da01769fff; immval:0x15
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x51d6d6da01769fff, 0x15, x1, 544, x3)
+
+inst_92:
+// rs1_val == 0xD5A2038FDA04BFFF and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xd5a2038fda04bfff; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xd5a2038fda04bfff, 0x2, x1, 552, x3)
+
+inst_93:
+// rs1_val == 0x784ABEBBF03B7FFF and imm_val == 0x17
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x784abebbf03b7fff; immval:0x17
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x784abebbf03b7fff, 0x17, x1, 560, x3)
+
+inst_94:
+// rs1_val == 0x44D988FBE81EFFFF and imm_val == 0x04
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x44d988fbe81effff; immval:0x4
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x44d988fbe81effff, 0x4, x1, 568, x3)
+
+inst_95:
+// rs1_val == 0x6875944E1F19FFFF and imm_val == 0x13
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x6875944e1f19ffff; immval:0x13
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x6875944e1f19ffff, 0x13, x1, 576, x3)
+
+inst_96:
+// rs1_val == 0xFF7746E52063FFFF and imm_val == 0x13
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xff7746e52063ffff; immval:0x13
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xff7746e52063ffff, 0x13, x1, 584, x3)
+
+inst_97:
+// rs1_val == 0x17B8B123A527FFFF and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x17b8b123a527ffff; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x17b8b123a527ffff, 0x0, x1, 592, x3)
+
+inst_98:
+// rs1_val == 0x70890268F88FFFFF and imm_val == 0x15
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x70890268f88fffff; immval:0x15
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x70890268f88fffff, 0x15, x1, 600, x3)
+
+inst_99:
+// rs1_val == 0x6DDC74E6119FFFFF and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x6ddc74e6119fffff; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x6ddc74e6119fffff, 0x2, x1, 608, x3)
+
+inst_100:
+// rs1_val == 0x39BE2172E6BFFFFF and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x39be2172e6bfffff; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x39be2172e6bfffff, 0xa, x1, 616, x3)
+
+inst_101:
+// rs1_val == 0xC99324582A7FFFFF and imm_val == 0x07
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xc99324582a7fffff; immval:0x7
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xc99324582a7fffff, 0x7, x1, 624, x3)
+
+inst_102:
+// rs1_val == 0x4B9A6C802EFFFFFF and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x4b9a6c802effffff; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x4b9a6c802effffff, 0xc, x1, 632, x3)
+
+inst_103:
+// rs1_val == 0x9541240E59FFFFFF and imm_val == 0x15
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x9541240e59ffffff; immval:0x15
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x9541240e59ffffff, 0x15, x1, 640, x3)
+
+inst_104:
+// rs1_val == 0xB3A8D61293FFFFFF and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xb3a8d61293ffffff; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xb3a8d61293ffffff, 0x2, x1, 648, x3)
+
+inst_105:
+// rs1_val == 0x9E03793FD7FFFFFF and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x9e03793fd7ffffff; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x9e03793fd7ffffff, 0x2, x1, 656, x3)
+
+inst_106:
+// rs1_val == 0x7F1071ECAFFFFFFF and imm_val == 0x0D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x7f1071ecafffffff; immval:0xd
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x7f1071ecafffffff, 0xd, x1, 664, x3)
+
+inst_107:
+// rs1_val == 0xF8A75516DFFFFFFF and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xf8a75516dfffffff; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xf8a75516dfffffff, 0xf, x1, 672, x3)
+
+inst_108:
+// rs1_val == 0xB76D454DBFFFFFFF and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xb76d454dbfffffff; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xb76d454dbfffffff, 0x8, x1, 680, x3)
+
+inst_109:
+// rs1_val == 0xB494A73D7FFFFFFF and imm_val == 0x17
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xb494a73d7fffffff; immval:0x17
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xb494a73d7fffffff, 0x17, x1, 688, x3)
+
+inst_110:
+// rs1_val == 0xC28CB594FFFFFFFF and imm_val == 0x16
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xc28cb594ffffffff; immval:0x16
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xc28cb594ffffffff, 0x16, x1, 696, x3)
+
+inst_111:
+// rs1_val == 0x69DA8A2DFFFFFFFF and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x69da8a2dffffffff; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x69da8a2dffffffff, 0x10, x1, 704, x3)
+
+inst_112:
+// rs1_val == 0x40F27003FFFFFFFF and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x40f27003ffffffff; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x40f27003ffffffff, 0xa, x1, 712, x3)
+
+inst_113:
+// rs1_val == 0xB2B8AF97FFFFFFFF and imm_val == 0x1C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xb2b8af97ffffffff; immval:0x1c
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xb2b8af97ffffffff, 0x1c, x1, 720, x3)
+
+inst_114:
+// rs1_val == 0x24496FEFFFFFFFFF and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x24496fefffffffff; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x24496fefffffffff, 0x1f, x1, 728, x3)
+
+inst_115:
+// rs1_val == 0xDE14BFDFFFFFFFFF and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xde14bfdfffffffff; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xde14bfdfffffffff, 0x2, x1, 736, x3)
+
+inst_116:
+// rs1_val == 0x008EEF3FFFFFFFFF and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x8eef3fffffffff; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x8eef3fffffffff, 0x1b, x1, 744, x3)
+
+inst_117:
+// rs1_val == 0x6E2D707FFFFFFFFF and imm_val == 0x1D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x6e2d707fffffffff; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x6e2d707fffffffff, 0x1d, x1, 752, x3)
+
+inst_118:
+// rs1_val == 0x5DCF00FFFFFFFFFF and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5dcf00ffffffffff; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5dcf00ffffffffff, 0x8, x1, 760, x3)
+
+inst_119:
+// rs1_val == 0x3C5569FFFFFFFFFF and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3c5569ffffffffff; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3c5569ffffffffff, 0xc, x1, 768, x3)
+
+inst_120:
+// rs1_val == 0x7DA8D3FFFFFFFFFF and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x7da8d3ffffffffff; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x7da8d3ffffffffff, 0xf, x1, 776, x3)
+
+inst_121:
+// rs1_val == 0xE3A707FFFFFFFFFF and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xe3a707ffffffffff; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xe3a707ffffffffff, 0x8, x1, 784, x3)
+
+inst_122:
+// rs1_val == 0x9B01EFFFFFFFFFFF and imm_val == 0x11
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x9b01efffffffffff; immval:0x11
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x9b01efffffffffff, 0x11, x1, 792, x3)
+
+inst_123:
+// rs1_val == 0x5F011FFFFFFFFFFF and imm_val == 0x1D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5f011fffffffffff; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5f011fffffffffff, 0x1d, x1, 800, x3)
+
+inst_124:
+// rs1_val == 0x2DEDBFFFFFFFFFFF and imm_val == 0x16
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x2dedbfffffffffff; immval:0x16
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x2dedbfffffffffff, 0x16, x1, 808, x3)
+
+inst_125:
+// rs1_val == 0x2D377FFFFFFFFFFF and imm_val == 0x12
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x2d377fffffffffff; immval:0x12
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x2d377fffffffffff, 0x12, x1, 816, x3)
+
+inst_126:
+// rs1_val == 0xAD44FFFFFFFFFFFF and imm_val == 0x1C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xad44ffffffffffff; immval:0x1c
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xad44ffffffffffff, 0x1c, x1, 824, x3)
+
+inst_127:
+// rs1_val == 0x72C9FFFFFFFFFFFF and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x72c9ffffffffffff; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x72c9ffffffffffff, 0x8, x1, 832, x3)
+
+inst_128:
+// rs1_val == 0xD1D3FFFFFFFFFFFF and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xd1d3ffffffffffff; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xd1d3ffffffffffff, 0x10, x1, 840, x3)
+
+inst_129:
+// rs1_val == 0x5057FFFFFFFFFFFF and imm_val == 0x07
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5057ffffffffffff; immval:0x7
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5057ffffffffffff, 0x7, x1, 848, x3)
+
+inst_130:
+// rs1_val == 0x5D2FFFFFFFFFFFFF and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5d2fffffffffffff; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5d2fffffffffffff, 0x1b, x1, 856, x3)
+
+inst_131:
+// rs1_val == 0xE5DFFFFFFFFFFFFF and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xe5dfffffffffffff; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xe5dfffffffffffff, 0x1b, x1, 864, x3)
+
+inst_132:
+// rs1_val == 0xD9BFFFFFFFFFFFFF and imm_val == 0x0E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xd9bfffffffffffff; immval:0xe
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xd9bfffffffffffff, 0xe, x1, 872, x3)
+
+inst_133:
+// rs1_val == 0x237FFFFFFFFFFFFF and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x237fffffffffffff; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x237fffffffffffff, 0x10, x1, 880, x3)
+
+inst_134:
+// rs1_val == 0x72FFFFFFFFFFFFFF and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x72ffffffffffffff; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x72ffffffffffffff, 0x1b, x1, 888, x3)
+
+inst_135:
+// rs1_val == 0xDDFFFFFFFFFFFFFF and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xddffffffffffffff; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xddffffffffffffff, 0x10, x1, 896, x3)
+
+inst_136:
+// rs1_val == 0x43FFFFFFFFFFFFFF and imm_val == 0x09
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x43ffffffffffffff; immval:0x9
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x43ffffffffffffff, 0x9, x1, 904, x3)
+
+inst_137:
+// rs1_val == 0x27FFFFFFFFFFFFFF and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x27ffffffffffffff; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x27ffffffffffffff, 0x0, x1, 912, x3)
+
+inst_138:
+// rs1_val == 0x4FFFFFFFFFFFFFFF and imm_val == 0x01
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x4fffffffffffffff; immval:0x1
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x4fffffffffffffff, 0x1, x1, 920, x3)
+
+inst_139:
+// rs1_val == 0x1FFFFFFFFFFFFFFF and imm_val == 0x0D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1fffffffffffffff; immval:0xd
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1fffffffffffffff, 0xd, x1, 928, x3)
+
+inst_140:
+// rs1_val == 0x3FFFFFFFFFFFFFFF and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3fffffffffffffff; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3fffffffffffffff, 0xb, x1, 936, x3)
+
+inst_141:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and imm_val == 0x09
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x7fffffffffffffff; immval:0x9
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x7fffffffffffffff, 0x9, x1, 944, x3)
+
+inst_142:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffffffff; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffffffff, 0xb, x1, 952, x3)
+
+inst_143:
+// imm_val == 0x12 and rs1_val == 0x482EA7602D1EF7BF
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x482ea7602d1ef7bf; immval:0x12
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x482ea7602d1ef7bf, 0x12, x1, 960, x3)
+
+inst_144:
+// imm_val == 0x0E and rs1_val == 0x3FC2A9087219C1DA
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3fc2a9087219c1da; immval:0xe
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3fc2a9087219c1da, 0xe, x1, 968, x3)
+
+inst_145:
+// imm_val == 0x04 and rs1_val == 0x11B41900043E3EF5
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x11b41900043e3ef5; immval:0x4
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x11b41900043e3ef5, 0x4, x1, 976, x3)
+
+inst_146:
+// imm_val == 0x03 and rs1_val == 0xEA3A0683EAD81DCD
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xea3a0683ead81dcd; immval:0x3
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xea3a0683ead81dcd, 0x3, x1, 984, x3)
+
+inst_147:
+// imm_val == 0x01 and rs1_val == 0x12FAD8029D42F670
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x12fad8029d42f670; immval:0x1
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x12fad8029d42f670, 0x1, x1, 992, x3)
+
+inst_148:
+// imm_val == 0x00 and rs1_val == 0xFA285A0DB869135C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfa285a0db869135c; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfa285a0db869135c, 0x0, x1, 1000, x3)
+
+inst_149:
+// rs1_val == 0x852395744B1E943F and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x852395744b1e943f; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x852395744b1e943f, 0xb, x1, 1008, x3)
+
+inst_150:
+// rs1_val == 0x6BBA8D2141C9886F and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x6bba8d2141c9886f; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x6bba8d2141c9886f, 0x1f, x1, 1016, x3)
+
+inst_151:
+// rs1_val == 0x3D65693B3D0840FC and imm_val == 0x19
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3d65693b3d0840fc; immval:0x19
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3d65693b3d0840fc, 0x19, x1, 1024, x3)
+
+inst_152:
+// rs1_val == 0x19E803191BEA8594 and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x19e803191bea8594; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x19e803191bea8594, 0x10, x1, 1032, x3)
+
+inst_153:
+// rs1_val == 0x0C2282666BE49EE8 and imm_val == 0x06
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xc2282666be49ee8; immval:0x6
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xc2282666be49ee8, 0x6, x1, 1040, x3)
+
+inst_154:
+// rs1_val == 0x07862EACE1D73010 and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x7862eace1d73010; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x7862eace1d73010, 0x5, x1, 1048, x3)
+
+inst_155:
+// rs1_val == 0x033C1A7FAFDD8734 and imm_val == 0x18
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x33c1a7fafdd8734; immval:0x18
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x33c1a7fafdd8734, 0x18, x1, 1056, x3)
+
+inst_156:
+// rs1_val == 0x0104A795BD4AEAB1 and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x104a795bd4aeab1; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x104a795bd4aeab1, 0xc, x1, 1064, x3)
+
+inst_157:
+// rs1_val == 0x0096C6C8B9B338EC and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x96c6c8b9b338ec; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x96c6c8b9b338ec, 0xa, x1, 1072, x3)
+
+inst_158:
+// rs1_val == 0x00775505E88E7530 and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x775505e88e7530; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x775505e88e7530, 0xf, x1, 1080, x3)
+
+inst_159:
+// rs1_val == 0x00356991A0931ED5 and imm_val == 0x13
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x356991a0931ed5; immval:0x13
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x356991a0931ed5, 0x13, x1, 1088, x3)
+
+inst_160:
+// rs1_val == 0x00174145DDD4A055 and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x174145ddd4a055; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x174145ddd4a055, 0xb, x1, 1096, x3)
+
+inst_161:
+// rs1_val == 0x000F19FDD5157E9E and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xf19fdd5157e9e; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xf19fdd5157e9e, 0x8, x1, 1104, x3)
+
+inst_162:
+// rs1_val == 0x0005D99A20918FA8 and imm_val == 0x1E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5d99a20918fa8; immval:0x1e
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5d99a20918fa8, 0x1e, x1, 1112, x3)
+
+inst_163:
+// rs1_val == 0x00032C075F27FF09 and imm_val == 0x1D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x32c075f27ff09; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x32c075f27ff09, 0x1d, x1, 1120, x3)
+
+inst_164:
+// rs1_val == 0x0001BCE703F8670E and imm_val == 0x17
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1bce703f8670e; immval:0x17
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1bce703f8670e, 0x17, x1, 1128, x3)
+
+inst_165:
+// rs1_val == 0x00009B8B356F8BD2 and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x9b8b356f8bd2; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x9b8b356f8bd2, 0xf, x1, 1136, x3)
+
+inst_166:
+// rs1_val == 0x0000545212CA3F71 and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x545212ca3f71; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x545212ca3f71, 0x5, x1, 1144, x3)
+
+inst_167:
+// rs1_val == 0x00003090D48DD9F4 and imm_val == 0x18
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3090d48dd9f4; immval:0x18
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3090d48dd9f4, 0x18, x1, 1152, x3)
+
+inst_168:
+// rs1_val == 0x00001DD8027385CA and imm_val == 0x15
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1dd8027385ca; immval:0x15
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1dd8027385ca, 0x15, x1, 1160, x3)
+
+inst_169:
+// rs1_val == 0x0000082236971E1C and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x82236971e1c; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x82236971e1c, 0x10, x1, 1168, x3)
+
+inst_170:
+// rs1_val == 0x000004440AC793F6 and imm_val == 0x09
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x4440ac793f6; immval:0x9
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x4440ac793f6, 0x9, x1, 1176, x3)
+
+inst_171:
+// rs1_val == 0x000003D5FEEF16EA and imm_val == 0x06
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3d5feef16ea; immval:0x6
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3d5feef16ea, 0x6, x1, 1184, x3)
+
+inst_172:
+// rs1_val == 0x0000010735F11AF3 and imm_val == 0x19
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x10735f11af3; immval:0x19
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x10735f11af3, 0x19, x1, 1192, x3)
+
+inst_173:
+// rs1_val == 0x000000ACFF769E38 and imm_val == 0x01
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xacff769e38; immval:0x1
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xacff769e38, 0x1, x1, 1200, x3)
+
+inst_174:
+// rs1_val == 0x000000764511488A and imm_val == 0x13
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x764511488a; immval:0x13
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x764511488a, 0x13, x1, 1208, x3)
+
+inst_175:
+// rs1_val == 0x0000002DFD74106A and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x2dfd74106a; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x2dfd74106a, 0x0, x1, 1216, x3)
+
+inst_176:
+// rs1_val == 0x000000101DD377C0 and imm_val == 0x1A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x101dd377c0; immval:0x1a
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x101dd377c0, 0x1a, x1, 1224, x3)
+
+inst_177:
+// rs1_val == 0x0000000A6B52B08E and imm_val == 0x18
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xa6b52b08e; immval:0x18
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xa6b52b08e, 0x18, x1, 1232, x3)
+
+inst_178:
+// rs1_val == 0x00000004FC3B66FB and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x4fc3b66fb; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x4fc3b66fb, 0x8, x1, 1240, x3)
+
+inst_179:
+// rs1_val == 0x00000002728A6FD0 and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x2728a6fd0; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x2728a6fd0, 0xc, x1, 1248, x3)
+
+inst_180:
+// rs1_val == 0x00000001AE9CA08C and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1ae9ca08c; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1ae9ca08c, 0xc, x1, 1256, x3)
+
+inst_181:
+// rs1_val == 0x00000000CC099A1F and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xcc099a1f; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xcc099a1f, 0xb, x1, 1264, x3)
+
+inst_182:
+// rs1_val == 0x0000000042CDF2B0 and imm_val == 0x1D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x42cdf2b0; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x42cdf2b0, 0x1d, x1, 1272, x3)
+
+inst_183:
+// rs1_val == 0x000000002274EA19 and imm_val == 0x06
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x2274ea19; immval:0x6
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x2274ea19, 0x6, x1, 1280, x3)
+
+inst_184:
+// rs1_val == 0x00000000120EF165 and imm_val == 0x07
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x120ef165; immval:0x7
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x120ef165, 0x7, x1, 1288, x3)
+
+inst_185:
+// rs1_val == 0x000000000D2454F2 and imm_val == 0x1A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xd2454f2; immval:0x1a
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xd2454f2, 0x1a, x1, 1296, x3)
+
+inst_186:
+// rs1_val == 0x00000000063E9BEE and imm_val == 0x13
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x63e9bee; immval:0x13
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x63e9bee, 0x13, x1, 1304, x3)
+
+inst_187:
+// rs1_val == 0x00000000034C7CD0 and imm_val == 0x11
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x34c7cd0; immval:0x11
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x34c7cd0, 0x11, x1, 1312, x3)
+
+inst_188:
+// rs1_val == 0x0000000001777310 and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1777310; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1777310, 0xc, x1, 1320, x3)
+
+inst_189:
+// rs1_val == 0x0000000000D11609 and imm_val == 0x19
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xd11609; immval:0x19
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xd11609, 0x19, x1, 1328, x3)
+
+inst_190:
+// rs1_val == 0x0000000000680BE0 and imm_val == 0x03
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x680be0; immval:0x3
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x680be0, 0x3, x1, 1336, x3)
+
+inst_191:
+// rs1_val == 0x0000000000294B16 and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x294b16; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x294b16, 0x0, x1, 1344, x3)
+
+inst_192:
+// rs1_val == 0x0000000000128D1B and imm_val == 0x01
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x128d1b; immval:0x1
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x128d1b, 0x1, x1, 1352, x3)
+
+inst_193:
+// rs1_val == 0x0000000000089A12 and imm_val == 0x12
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x89a12; immval:0x12
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x89a12, 0x12, x1, 1360, x3)
+
+inst_194:
+// rs1_val == 0x000000000005D25B and imm_val == 0x06
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5d25b; immval:0x6
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5d25b, 0x6, x1, 1368, x3)
+
+inst_195:
+// rs1_val == 0x000000000003A2C3 and imm_val == 0x12
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3a2c3; immval:0x12
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3a2c3, 0x12, x1, 1376, x3)
+
+inst_196:
+// rs1_val == 0x00000000000102FD and imm_val == 0x14
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x102fd; immval:0x14
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x102fd, 0x14, x1, 1384, x3)
+
+inst_197:
+// rs1_val == 0x000000000000A6B3 and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xa6b3; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xa6b3, 0x5, x1, 1392, x3)
+
+inst_198:
+// rs1_val == 0x0000000000005238 and imm_val == 0x11
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x5238; immval:0x11
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x5238, 0x11, x1, 1400, x3)
+
+inst_199:
+// rs1_val == 0x000000000000222A and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x222a; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x222a, 0x5, x1, 1408, x3)
+
+inst_200:
+// rs1_val == 0x0000000000001161 and imm_val == 0x12
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1161; immval:0x12
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1161, 0x12, x1, 1416, x3)
+
+inst_201:
+// rs1_val == 0x0000000000000DB9 and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xdb9; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xdb9, 0xc, x1, 1424, x3)
+
+inst_202:
+// rs1_val == 0x00000000000004C1 and imm_val == 0x14
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x4c1; immval:0x14
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x4c1, 0x14, x1, 1432, x3)
+
+inst_203:
+// rs1_val == 0x0000000000000390 and imm_val == 0x01
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x390; immval:0x1
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x390, 0x1, x1, 1440, x3)
+
+inst_204:
+// rs1_val == 0x00000000000001D4 and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1d4; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1d4, 0xc, x1, 1448, x3)
+
+inst_205:
+// rs1_val == 0x00000000000000A7 and imm_val == 0x04
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xa7; immval:0x4
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xa7, 0x4, x1, 1456, x3)
+
+inst_206:
+// rs1_val == 0x0000000000000079 and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x79; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x79, 0xa, x1, 1464, x3)
+
+inst_207:
+// rs1_val == 0x000000000000002C and imm_val == 0x19
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x2c; immval:0x19
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x2c, 0x19, x1, 1472, x3)
+
+inst_208:
+// rs1_val == 0x000000000000001D and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1d; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1d, 0x2, x1, 1480, x3)
+
+inst_209:
+// rs1_val == 0x000000000000000C and imm_val == 0x13
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xc; immval:0x13
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xc, 0x13, x1, 1488, x3)
+
+inst_210:
+// rs1_val == 0x0000000000000006 and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x6; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x6, 0xb, x1, 1496, x3)
+
+inst_211:
+// rs1_val == 0x0000000000000003 and imm_val == 0x1E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3; immval:0x1e
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3, 0x1e, x1, 1504, x3)
+
+inst_212:
+// rs1_val == 0x0000000000000001 and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1, 0xc, x1, 1512, x3)
+
+inst_213:
+// rs1_val == 0x0000000000000000 and imm_val == 0x1D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x0; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x0, 0x1d, x1, 1520, x3)
+
+inst_214:
+// imm_val == 0x06 and rs1_val == 0x976AD220146A3673
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x976ad220146a3673; immval:0x6
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x976ad220146a3673, 0x6, x1, 1528, x3)
+
+inst_215:
+// imm_val == 0x14 and rs1_val == 0xFC6113A3312529DC
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfc6113a3312529dc; immval:0x14
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfc6113a3312529dc, 0x14, x1, 1536, x3)
+
+inst_216:
+// imm_val == 0x1A and rs1_val == 0x242A809B7A3209FE
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x242a809b7a3209fe; immval:0x1a
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x242a809b7a3209fe, 0x1a, x1, 1544, x3)
+
+inst_217:
+// imm_val == 0x1D and rs1_val == 0xE380A1764A104E66
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xe380a1764a104e66; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xe380a1764a104e66, 0x1d, x1, 1552, x3)
+
+inst_218:
+// imm_val == 0x1E and rs1_val == 0xA0E0BD86D4551408
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xa0e0bd86d4551408; immval:0x1e
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xa0e0bd86d4551408, 0x1e, x1, 1560, x3)
+
+inst_219:
+// imm_val == 0x1F and rs1_val == 0xAFE08A13086C1B78
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xafe08a13086c1b78; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xafe08a13086c1b78, 0x1f, x1, 1568, x3)
+
+inst_220:
+// rs1_val == 0x3CC279B3BD59213F and imm_val == 0x14
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x3cc279b3bd59213f; immval:0x14
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x3cc279b3bd59213f, 0x14, x1, 1576, x3)
+
+inst_221:
+// rs1_val == 0x941060376C5E1579 and imm_val == 0x09
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x941060376c5e1579; immval:0x9
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x941060376c5e1579, 0x9, x1, 1584, x3)
+
+inst_222:
+// rs1_val == 0xC9EA3210E5DF7F0B and imm_val == 0x1D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xc9ea3210e5df7f0b; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xc9ea3210e5df7f0b, 0x1d, x1, 1592, x3)
+
+inst_223:
+// rs1_val == 0xE9E93D5257DDE0F0 and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xe9e93d5257dde0f0; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xe9e93d5257dde0f0, 0x10, x1, 1600, x3)
+
+inst_224:
+// rs1_val == 0xF048E341C64C47E8 and imm_val == 0x1C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xf048e341c64c47e8; immval:0x1c
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xf048e341c64c47e8, 0x1c, x1, 1608, x3)
+
+inst_225:
+// rs1_val == 0xF969730123A92480 and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xf969730123a92480; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xf969730123a92480, 0x1b, x1, 1616, x3)
+
+inst_226:
+// rs1_val == 0xFC20CE1CD55D1CE8 and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfc20ce1cd55d1ce8; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfc20ce1cd55d1ce8, 0x1f, x1, 1624, x3)
+
+inst_227:
+// rs1_val == 0xFED775C526EA42ED and imm_val == 0x1D
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfed775c526ea42ed; immval:0x1d
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfed775c526ea42ed, 0x1d, x1, 1632, x3)
+
+inst_228:
+// rs1_val == 0xFF01DFA30CF25924 and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xff01dfa30cf25924; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xff01dfa30cf25924, 0x5, x1, 1640, x3)
+
+inst_229:
+// rs1_val == 0xFF912F0A7046AB61 and imm_val == 0x04
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xff912f0a7046ab61; immval:0x4
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xff912f0a7046ab61, 0x4, x1, 1648, x3)
+
+inst_230:
+// rs1_val == 0xFFCA96C9D43DB43F and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffca96c9d43db43f; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffca96c9d43db43f, 0x0, x1, 1656, x3)
+
+inst_231:
+// rs1_val == 0xFFEB4B49194135A5 and imm_val == 0x1A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffeb4b49194135a5; immval:0x1a
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffeb4b49194135a5, 0x1a, x1, 1664, x3)
+
+inst_232:
+// rs1_val == 0xFFF1A2ADB3A63FA4 and imm_val == 0x1C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfff1a2adb3a63fa4; immval:0x1c
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfff1a2adb3a63fa4, 0x1c, x1, 1672, x3)
+
+inst_233:
+// rs1_val == 0xFFF8306E89E6156C and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfff8306e89e6156c; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfff8306e89e6156c, 0x1f, x1, 1680, x3)
+
+inst_234:
+// rs1_val == 0xFFFDA6CA22C13476 and imm_val == 0x16
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffda6ca22c13476; immval:0x16
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffda6ca22c13476, 0x16, x1, 1688, x3)
+
+inst_235:
+// rs1_val == 0xFFFE03B4AC9E9033 and imm_val == 0x19
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffe03b4ac9e9033; immval:0x19
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffe03b4ac9e9033, 0x19, x1, 1696, x3)
+
+inst_236:
+// rs1_val == 0xFFFF3AD31011EEB5 and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffff3ad31011eeb5; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffff3ad31011eeb5, 0x1f, x1, 1704, x3)
+
+inst_237:
+// rs1_val == 0xFFFF90F48525E8A9 and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffff90f48525e8a9; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffff90f48525e8a9, 0x1f, x1, 1712, x3)
+
+inst_238:
+// rs1_val == 0xFFFFD6E6BC7F85E3 and imm_val == 0x11
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffd6e6bc7f85e3; immval:0x11
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffd6e6bc7f85e3, 0x11, x1, 1720, x3)
+
+inst_239:
+// rs1_val == 0xFFFFE7F6AC60E057 and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffe7f6ac60e057; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffe7f6ac60e057, 0xf, x1, 1728, x3)
+
+inst_240:
+// rs1_val == 0xFFFFF12863FD8180 and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffff12863fd8180; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffff12863fd8180, 0x1f, x1, 1736, x3)
+
+inst_241:
+// rs1_val == 0xFFFFFB5472B3CB0C and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffb5472b3cb0c; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffb5472b3cb0c, 0xa, x1, 1744, x3)
+
+inst_242:
+// rs1_val == 0xFFFFFD8D3E1C8522 and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffd8d3e1c8522; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffd8d3e1c8522, 0x10, x1, 1752, x3)
+
+inst_243:
+// rs1_val == 0xFFFFFE8F54E77CDC and imm_val == 0x14
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffe8f54e77cdc; immval:0x14
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffe8f54e77cdc, 0x14, x1, 1760, x3)
+
+inst_244:
+// rs1_val == 0xFFFFFF048B7B5379 and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffff048b7b5379; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffff048b7b5379, 0x2, x1, 1768, x3)
+
+inst_245:
+// rs1_val == 0xFFFFFF856F4930C9 and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffff856f4930c9; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffff856f4930c9, 0x0, x1, 1776, x3)
+
+inst_246:
+// rs1_val == 0xFFFFFFDCC5D97467 and imm_val == 0x14
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffdcc5d97467; immval:0x14
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffdcc5d97467, 0x14, x1, 1784, x3)
+
+inst_247:
+// rs1_val == 0xFFFFFFE5C70AFC93 and imm_val == 0x1E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffe5c70afc93; immval:0x1e
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffe5c70afc93, 0x1e, x1, 1792, x3)
+
+inst_248:
+// rs1_val == 0xFFFFFFF6A911655F and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffff6a911655f; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffff6a911655f, 0xb, x1, 1800, x3)
+
+inst_249:
+// rs1_val == 0xFFFFFFF974AB0A39 and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffff974ab0a39; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffff974ab0a39, 0xa, x1, 1808, x3)
+
+inst_250:
+// rs1_val == 0xFFFFFFFCDD68F202 and imm_val == 0x11
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffcdd68f202; immval:0x11
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffcdd68f202, 0x11, x1, 1816, x3)
+
+inst_251:
+// rs1_val == 0xFFFFFFFE24BD4821 and imm_val == 0x0B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffe24bd4821; immval:0xb
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffe24bd4821, 0xb, x1, 1824, x3)
+
+inst_252:
+// rs1_val == 0xFFFFFFFF3ED7E667 and imm_val == 0x11
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffff3ed7e667; immval:0x11
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffff3ed7e667, 0x11, x1, 1832, x3)
+
+inst_253:
+// rs1_val == 0xFFFFFFFFB871CFDF and imm_val == 0x1C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffb871cfdf; immval:0x1c
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffb871cfdf, 0x1c, x1, 1840, x3)
+
+inst_254:
+// rs1_val == 0xFFFFFFFFD29C11AE and imm_val == 0x1B
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffd29c11ae; immval:0x1b
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffd29c11ae, 0x1b, x1, 1848, x3)
+
+inst_255:
+// rs1_val == 0xFFFFFFFFE109799A and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffe109799a; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffe109799a, 0xc, x1, 1856, x3)
+
+inst_256:
+// rs1_val == 0xFFFFFFFFF4E80B13 and imm_val == 0x06
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffff4e80b13; immval:0x6
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffff4e80b13, 0x6, x1, 1864, x3)
+
+inst_257:
+// rs1_val == 0xFFFFFFFFF9B7EA62 and imm_val == 0x09
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffff9b7ea62; immval:0x9
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffff9b7ea62, 0x9, x1, 1872, x3)
+
+inst_258:
+// rs1_val == 0xFFFFFFFFFC51F638 and imm_val == 0x17
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffc51f638; immval:0x17
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffc51f638, 0x17, x1, 1880, x3)
+
+inst_259:
+// rs1_val == 0xFFFFFFFFFE9263CF and imm_val == 0x05
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffe9263cf; immval:0x5
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffe9263cf, 0x5, x1, 1888, x3)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFF216823 and imm_val == 0x04
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffff216823; immval:0x4
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffff216823, 0x4, x1, 1896, x3)
+
+inst_261:
+// rs1_val == 0xFFFFFFFFFF861438 and imm_val == 0x02
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffff861438; immval:0x2
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffff861438, 0x2, x1, 1904, x3)
+
+inst_262:
+// rs1_val == 0xFFFFFFFFFFD8C9D0 and imm_val == 0x1A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffd8c9d0; immval:0x1a
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffd8c9d0, 0x1a, x1, 1912, x3)
+
+inst_263:
+// rs1_val == 0xFFFFFFFFFFE4D576 and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffe4d576; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffe4d576, 0xa, x1, 1920, x3)
+
+inst_264:
+// rs1_val == 0xFFFFFFFFFFF18C67 and imm_val == 0x14
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffff18c67; immval:0x14
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffff18c67, 0x14, x1, 1928, x3)
+
+inst_265:
+// rs1_val == 0xFFFFFFFFFFFBB998 and imm_val == 0x04
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffbb998; immval:0x4
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffbb998, 0x4, x1, 1936, x3)
+
+inst_266:
+// rs1_val == 0xFFFFFFFFFFFC2561 and imm_val == 0x1C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffc2561; immval:0x1c
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffc2561, 0x1c, x1, 1944, x3)
+
+inst_267:
+// rs1_val == 0xFFFFFFFFFFFEEAB5 and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffeeab5; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffeeab5, 0xf, x1, 1952, x3)
+
+inst_268:
+// rs1_val == 0xFFFFFFFFFFFF0651 and imm_val == 0x13
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffff0651; immval:0x13
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffff0651, 0x13, x1, 1960, x3)
+
+inst_269:
+// rs1_val == 0xFFFFFFFFFFFF90E4 and imm_val == 0x0C
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffff90e4; immval:0xc
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffff90e4, 0xc, x1, 1968, x3)
+
+inst_270:
+// rs1_val == 0xFFFFFFFFFFFFCA23 and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffffca23; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffffca23, 0x0, x1, 1976, x3)
+
+inst_271:
+// rs1_val == 0xFFFFFFFFFFFFE2A0 and imm_val == 0x18
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffffe2a0; immval:0x18
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffffe2a0, 0x18, x1, 1984, x3)
+
+inst_272:
+// rs1_val == 0xFFFFFFFFFFFFF2CC and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffff2cc; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffff2cc, 0xf, x1, 1992, x3)
+
+inst_273:
+// rs1_val == 0xFFFFFFFFFFFFFAB4 and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffffab4; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffffab4, 0x8, x1, 2000, x3)
+
+inst_274:
+// rs1_val == 0xFFFFFFFFFFFFFCEE and imm_val == 0x13
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffffcee; immval:0x13
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffffcee, 0x13, x1, 2008, x3)
+
+inst_275:
+// rs1_val == 0xFFFFFFFFFFFFFE04 and imm_val == 0x10
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffffe04; immval:0x10
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffffe04, 0x10, x1, 2016, x3)
+
+inst_276:
+// rs1_val == 0xFFFFFFFFFFFFFF2A and imm_val == 0x18
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffffff2a; immval:0x18
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffffff2a, 0x18, x1, 2024, x3)
+
+inst_277:
+// rs1_val == 0xFFFFFFFFFFFFFF9D and imm_val == 0x08
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffffff9d; immval:0x8
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffffff9d, 0x8, x1, 2032, x3)
+
+inst_278:
+// rs1_val == 0xFFFFFFFFFFFFFFC7 and imm_val == 0x17
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffffffc7; immval:0x17
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffffffc7, 0x17, x1, 2040, x3)
+RVTEST_SIGBASE( x1,signature_x1_1)
+
+inst_279:
+// rs1_val == 0xFFFFFFFFFFFFFFE4 and imm_val == 0x0F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xffffffffffffffe4; immval:0xf
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xffffffffffffffe4, 0xf, x1, 0, x3)
+
+inst_280:
+// rs1_val == 0xFFFFFFFFFFFFFFF2 and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffffff2; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffffff2, 0x1f, x1, 8, x3)
+
+inst_281:
+// rs1_val == 0xFFFFFFFFFFFFFFF8 and imm_val == 0x0A
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffffff8; immval:0xa
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffffff8, 0xa, x1, 16, x3)
+
+inst_282:
+// rs1_val == 0xFFFFFFFFFFFFFFFD and imm_val == 0x1F
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffffffd; immval:0x1f
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffffffd, 0x1f, x1, 24, x3)
+
+inst_283:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0xfffffffffffffffe; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0xfffffffffffffffe, 0x0, x1, 32, x3)
+
+inst_284:
+// rs1_val == 0x1E20000000000000 and imm_val == 0x1E
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x1e20000000000000; immval:0x1e
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x1e20000000000000, 0x1e, x1, 40, x3)
+
+inst_285:
+// rs1_val == 0x9568400000000000 and imm_val == 0x00
+// opcode: roriw ; op1:x10; dest:x11; op1val:0x9568400000000000; immval:0x0
+TEST_IMM_OP( roriw, x11, x10, 0x0000000000000000, 0x9568400000000000, 0x0, x1, 48, x3)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x18_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x18_1:
+ .fill 23*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_1:
+ .fill 7*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rorw-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rorw-01.S
new file mode 100644
index 000000000..c38ced3ae
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/rorw-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the rorw instruction of the RISC-V extension for the rorw covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",rorw)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",rorw)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",rorw)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKb.*);def TEST_CASE_1=True;",rorw)
+
+RVTEST_SIGBASE( x5,signature_x5_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x31, rs2==x31, rd==x24, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: rorw ; op1:x31; op2:x31; dest:x24; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(rorw, x24, x31, x31, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x5, 0, x12)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x27, rs2==x27, rd==x27, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: rorw ; op1:x27; op2:x27; dest:x27; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(rorw, x27, x27, x27, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x5, 8, x12)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x10, rs2==x22, rd==x15, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: rorw ; op1:x10; op2:x22; dest:x15; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(rorw, x15, x10, x22, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x5, 16, x12)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x7, rs2==x28, rd==x7, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: rorw ; op1:x7; op2:x28; dest:x7; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(rorw, x7, x7, x28, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x5, 24, x12)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x30, rs2==x4, rd==x4, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: rorw ; op1:x30; op2:x4; dest:x4; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(rorw, x4, x30, x4, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x5, 32, x12)
+
+inst_5:
+// rs1==x22, rs2==x21, rd==x29, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: rorw ; op1:x22; op2:x21; dest:x29; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(rorw, x29, x22, x21, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x5, 40, x12)
+
+inst_6:
+// rs1==x8, rs2==x19, rd==x13, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: rorw ; op1:x8; op2:x19; dest:x13; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(rorw, x13, x8, x19, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x5, 48, x12)
+
+inst_7:
+// rs1==x26, rs2==x0, rd==x28, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: rorw ; op1:x26; op2:x0; dest:x28; op1val:0x2405b307cec7313a; op2val:0x0
+TEST_RR_OP(rorw, x28, x26, x0, 0x0000000000000000, 0x2405b307cec7313a, 0x0, x5, 56, x12)
+
+inst_8:
+// rs1==x21, rs2==x1, rd==x10, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: rorw ; op1:x21; op2:x1; dest:x10; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(rorw, x10, x21, x1, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x5, 64, x12)
+
+inst_9:
+// rs1==x15, rs2==x10, rd==x26, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: rorw ; op1:x15; op2:x10; dest:x26; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(rorw, x26, x15, x10, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x5, 72, x12)
+
+inst_10:
+// rs1==x9, rs2==x30, rd==x25, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: rorw ; op1:x9; op2:x30; dest:x25; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(rorw, x25, x9, x30, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x5, 80, x12)
+
+inst_11:
+// rs1==x4, rs2==x11, rd==x2, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: rorw ; op1:x4; op2:x11; dest:x2; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(rorw, x2, x4, x11, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x5, 88, x12)
+
+inst_12:
+// rs1==x3, rs2==x14, rd==x30, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: rorw ; op1:x3; op2:x14; dest:x30; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(rorw, x30, x3, x14, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x5, 96, x12)
+
+inst_13:
+// rs1==x6, rs2==x13, rd==x18, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: rorw ; op1:x6; op2:x13; dest:x18; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(rorw, x18, x6, x13, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x5, 104, x12)
+
+inst_14:
+// rs1==x19, rs2==x16, rd==x31, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: rorw ; op1:x19; op2:x16; dest:x31; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(rorw, x31, x19, x16, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x5, 112, x12)
+
+inst_15:
+// rs1==x25, rs2==x7, rd==x17, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: rorw ; op1:x25; op2:x7; dest:x17; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(rorw, x17, x25, x7, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x5, 120, x12)
+
+inst_16:
+// rs1==x14, rs2==x2, rd==x0, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: rorw ; op1:x14; op2:x2; dest:x0; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(rorw, x0, x14, x2, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x5, 128, x7)
+
+inst_17:
+// rs1==x28, rs2==x8, rd==x21, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: rorw ; op1:x28; op2:x8; dest:x21; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(rorw, x21, x28, x8, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x5, 136, x7)
+
+inst_18:
+// rs1==x24, rs2==x29, rd==x6, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: rorw ; op1:x24; op2:x29; dest:x6; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(rorw, x6, x24, x29, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x5, 144, x7)
+
+inst_19:
+// rs1==x13, rs2==x15, rd==x16, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: rorw ; op1:x13; op2:x15; dest:x16; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(rorw, x16, x13, x15, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x5, 152, x7)
+
+inst_20:
+// rs1==x20, rs2==x26, rd==x11, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: rorw ; op1:x20; op2:x26; dest:x11; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(rorw, x11, x20, x26, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x5, 160, x7)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_21:
+// rs1==x23, rs2==x5, rd==x1, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: rorw ; op1:x23; op2:x5; dest:x1; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(rorw, x1, x23, x5, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x4, 0, x7)
+
+inst_22:
+// rs1==x1, rs2==x6, rd==x22, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: rorw ; op1:x1; op2:x6; dest:x22; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(rorw, x22, x1, x6, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x4, 8, x7)
+
+inst_23:
+// rs1==x2, rs2==x12, rd==x3, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: rorw ; op1:x2; op2:x12; dest:x3; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(rorw, x3, x2, x12, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x4, 16, x7)
+
+inst_24:
+// rs1==x5, rs2==x9, rd==x12, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: rorw ; op1:x5; op2:x9; dest:x12; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(rorw, x12, x5, x9, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x4, 24, x7)
+
+inst_25:
+// rs1==x12, rs2==x18, rd==x5, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: rorw ; op1:x12; op2:x18; dest:x5; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(rorw, x5, x12, x18, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x4, 32, x7)
+
+inst_26:
+// rs1==x18, rs2==x23, rd==x19, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: rorw ; op1:x18; op2:x23; dest:x19; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(rorw, x19, x18, x23, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x4, 40, x7)
+
+inst_27:
+// rs1==x0, rs2==x20, rd==x9, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: rorw ; op1:x0; op2:x20; dest:x9; op1val:0x0; op2val:0xfa56aa4000000000
+TEST_RR_OP(rorw, x9, x0, x20, 0x0000000000000000, 0x0, 0xfa56aa4000000000, x4, 48, x7)
+
+inst_28:
+// rs1==x16, rs2==x17, rd==x8, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: rorw ; op1:x16; op2:x17; dest:x8; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(rorw, x8, x16, x17, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x4, 56, x7)
+
+inst_29:
+// rs1==x11, rs2==x24, rd==x14, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: rorw ; op1:x11; op2:x24; dest:x14; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(rorw, x14, x11, x24, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x4, 64, x7)
+
+inst_30:
+// rs1==x17, rs2==x25, rd==x23, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: rorw ; op1:x17; op2:x25; dest:x23; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(rorw, x23, x17, x25, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x4, 72, x7)
+
+inst_31:
+// rs1==x29, rs2==x3, rd==x20, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: rorw ; op1:x29; op2:x3; dest:x20; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(rorw, x20, x29, x3, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x4, 80, x7)
+
+inst_32:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x4, 88, x7)
+
+inst_33:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x4, 96, x7)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x4, 104, x7)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x4, 112, x7)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x4, 120, x7)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x4, 128, x7)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x4, 136, x7)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x4, 144, x7)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x4, 152, x7)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x4, 160, x7)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x4, 168, x7)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x4, 176, x7)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x4, 184, x7)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x4, 192, x7)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x4, 200, x7)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x4, 208, x7)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x4, 216, x7)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x4, 224, x7)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x4, 232, x7)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x4, 240, x7)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x4, 248, x7)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x4, 256, x7)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x4, 264, x7)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x4, 272, x7)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x4, 280, x7)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x4, 288, x7)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x4, 296, x7)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x4, 304, x7)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x4, 312, x7)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x4, 320, x7)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x4, 328, x7)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x4, 336, x7)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x4, 344, x7)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x4, 352, x7)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x4, 360, x7)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x4, 368, x7)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x4, 376, x7)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x4, 384, x7)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x4, 392, x7)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x4, 400, x7)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x4, 408, x7)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x4, 416, x7)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x4, 424, x7)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x4, 432, x7)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x4, 440, x7)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x4, 448, x7)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x4, 456, x7)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x4, 464, x7)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x4, 472, x7)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x4, 480, x7)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x4, 488, x7)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x4, 496, x7)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x4, 504, x7)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x4, 512, x7)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x4, 520, x7)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x4, 528, x7)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x4, 536, x7)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x4, 544, x7)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x4, 552, x7)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x4, 560, x7)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x4, 568, x7)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x4, 576, x7)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x4, 584, x7)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x4, 592, x7)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x4, 600, x7)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x4, 608, x7)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x4, 616, x7)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x4, 624, x7)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x4, 632, x7)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x4, 640, x7)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x4, 648, x7)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x4, 656, x7)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x4, 664, x7)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x4, 672, x7)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x4, 680, x7)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x4, 688, x7)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x4, 696, x7)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x4, 704, x7)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x4, 712, x7)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x4, 720, x7)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x4, 728, x7)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x4, 736, x7)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x4, 744, x7)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x4, 752, x7)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x4, 760, x7)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x4, 768, x7)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x4, 776, x7)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x4, 784, x7)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x4, 792, x7)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x4, 800, x7)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x4, 808, x7)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x4, 816, x7)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x4, 824, x7)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x4, 832, x7)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x4, 840, x7)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x4, 848, x7)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x4, 856, x7)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x4, 864, x7)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x4, 872, x7)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x4, 880, x7)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x4, 888, x7)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x4, 896, x7)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x4, 904, x7)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x4, 912, x7)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x4, 920, x7)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x4, 928, x7)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x4, 936, x7)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x4, 944, x7)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x4, 952, x7)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x4, 960, x7)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x4, 968, x7)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x4, 976, x7)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x4, 984, x7)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x4, 992, x7)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x4, 1000, x7)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x4, 1008, x7)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x4, 1016, x7)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x4, 1024, x7)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x4, 1032, x7)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x4, 1040, x7)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x4, 1048, x7)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x4, 1056, x7)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x4, 1064, x7)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x4, 1072, x7)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x4, 1080, x7)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x4, 1088, x7)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x4, 1096, x7)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x4, 1104, x7)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x4, 1112, x7)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x4, 1120, x7)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x4, 1128, x7)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x4, 1136, x7)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x4, 1144, x7)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x4, 1152, x7)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x4, 1160, x7)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x4, 1168, x7)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x4, 1176, x7)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x4, 1184, x7)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x4, 1192, x7)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x4, 1200, x7)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x4, 1208, x7)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x4, 1216, x7)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x4, 1224, x7)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x4, 1232, x7)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x4, 1240, x7)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x4, 1248, x7)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x4, 1256, x7)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x4, 1264, x7)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x4, 1272, x7)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x4, 1280, x7)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x4, 1288, x7)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x4, 1296, x7)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x4, 1304, x7)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x4, 1312, x7)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x4, 1320, x7)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x4, 1328, x7)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x4, 1336, x7)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x4, 1344, x7)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x4, 1352, x7)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x4, 1360, x7)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x4, 1368, x7)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x4, 1376, x7)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x4, 1384, x7)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x4, 1392, x7)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x4, 1400, x7)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x4, 1408, x7)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x4, 1416, x7)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x4, 1424, x7)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x4, 1432, x7)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x4, 1440, x7)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x4, 1448, x7)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x4, 1456, x7)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x4, 1464, x7)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x4, 1472, x7)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x4, 1480, x7)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x4, 1488, x7)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x4, 1496, x7)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x4, 1504, x7)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x4, 1512, x7)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x4, 1520, x7)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x4, 1528, x7)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x4, 1536, x7)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x4, 1544, x7)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x4, 1552, x7)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x4, 1560, x7)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x4, 1568, x7)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x4, 1576, x7)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x4, 1584, x7)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x4, 1592, x7)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x4, 1600, x7)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x4, 1608, x7)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x4, 1616, x7)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x4, 1624, x7)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x4, 1632, x7)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x4, 1640, x7)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x4, 1648, x7)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x4, 1656, x7)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x4, 1664, x7)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x4, 1672, x7)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x4, 1680, x7)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x4, 1688, x7)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x4, 1696, x7)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x4, 1704, x7)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x4, 1712, x7)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x4, 1720, x7)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x4, 1728, x7)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x4, 1736, x7)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x4, 1744, x7)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x4, 1752, x7)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x4, 1760, x7)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x4, 1768, x7)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x4, 1776, x7)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x4, 1784, x7)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x4, 1792, x7)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x4, 1800, x7)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x4, 1808, x7)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x4, 1816, x7)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x4, 1824, x7)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x4, 1832, x7)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x4, 1840, x7)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x4, 1848, x7)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x4, 1856, x7)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x4, 1864, x7)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x4, 1872, x7)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x4, 1880, x7)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x4, 1888, x7)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x4, 1896, x7)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x4, 1904, x7)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x4, 1912, x7)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x4, 1920, x7)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x4, 1928, x7)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x4, 1936, x7)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x4, 1944, x7)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x4, 1952, x7)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x4, 1960, x7)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x4, 1968, x7)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x4, 1976, x7)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x4, 1984, x7)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x4, 1992, x7)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x4, 2000, x7)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x4, 2008, x7)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x4, 2016, x7)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x4, 2024, x7)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x4, 2032, x7)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x4, 2040, x7)
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x4, 0, x7)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x4, 8, x7)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x4, 16, x7)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x4, 24, x7)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x4, 32, x7)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x4, 40, x7)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x4, 48, x7)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x4, 56, x7)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x4, 64, x7)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x4, 72, x7)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x4, 80, x7)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x4, 88, x7)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x4, 96, x7)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x4, 104, x7)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x4, 112, x7)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x4, 120, x7)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x4, 128, x7)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x4, 136, x7)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x4, 144, x7)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x4, 152, x7)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x4, 160, x7)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x4, 168, x7)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x4, 176, x7)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x4, 184, x7)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x4, 192, x7)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x4, 200, x7)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x4, 208, x7)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x4, 216, x7)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x4, 224, x7)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x4, 232, x7)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x4, 240, x7)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x4, 248, x7)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x4, 256, x7)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x4, 264, x7)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x4, 272, x7)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x4, 280, x7)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x4, 288, x7)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x4, 296, x7)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x4, 304, x7)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x4, 312, x7)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x4, 320, x7)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x4, 328, x7)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x4, 336, x7)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x4, 344, x7)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x4, 352, x7)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x4, 360, x7)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x4, 368, x7)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x4, 376, x7)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x4, 384, x7)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x4, 392, x7)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x4, 400, x7)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x4, 408, x7)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x4, 416, x7)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x4, 424, x7)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x4, 432, x7)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x4, 440, x7)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x4, 448, x7)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x4, 456, x7)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x4, 464, x7)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x4, 472, x7)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x4, 480, x7)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x4, 488, x7)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x4, 496, x7)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x4, 504, x7)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x4, 512, x7)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x4, 520, x7)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x4, 528, x7)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x4, 536, x7)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x4, 544, x7)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x4, 552, x7)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x4, 560, x7)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x4, 568, x7)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x4, 576, x7)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x4, 584, x7)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x4, 592, x7)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x4, 600, x7)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x4, 608, x7)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x4, 616, x7)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x4, 624, x7)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x4, 632, x7)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x4, 640, x7)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x4, 648, x7)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x4, 656, x7)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x4, 664, x7)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x4, 672, x7)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x4, 680, x7)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x4, 688, x7)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x4, 696, x7)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x4, 704, x7)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x4, 712, x7)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x4, 720, x7)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x4, 728, x7)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x4, 736, x7)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x4, 744, x7)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x4, 752, x7)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x4, 760, x7)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x4, 768, x7)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x4, 776, x7)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x4, 784, x7)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x4, 792, x7)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x4, 800, x7)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x4, 808, x7)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x4, 816, x7)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x4, 824, x7)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x4, 832, x7)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x4, 840, x7)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x4, 848, x7)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x4, 856, x7)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x4, 864, x7)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x4, 872, x7)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x4, 880, x7)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x4, 888, x7)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x4, 896, x7)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x4, 904, x7)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x4, 912, x7)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x4, 920, x7)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x4, 928, x7)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x4, 936, x7)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x4, 944, x7)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x4, 952, x7)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x4, 960, x7)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x4, 968, x7)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x4, 976, x7)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x4, 984, x7)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x4, 992, x7)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x4, 1000, x7)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x4, 1008, x7)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x4, 1016, x7)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x4, 1024, x7)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x4, 1032, x7)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x4, 1040, x7)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x4, 1048, x7)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x4, 1056, x7)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x4, 1064, x7)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x4, 1072, x7)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x4, 1080, x7)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x4, 1088, x7)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x4, 1096, x7)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x4, 1104, x7)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x4, 1112, x7)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x4, 1120, x7)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x4, 1128, x7)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x4, 1136, x7)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x4, 1144, x7)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x4, 1152, x7)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x4, 1160, x7)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x4, 1168, x7)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x4, 1176, x7)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x4, 1184, x7)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x4, 1192, x7)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x4, 1200, x7)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x4, 1208, x7)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x4, 1216, x7)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x4, 1224, x7)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x4, 1232, x7)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x4, 1240, x7)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x4, 1248, x7)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x4, 1256, x7)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x4, 1264, x7)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x4, 1272, x7)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x4, 1280, x7)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x4, 1288, x7)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x4, 1296, x7)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x4, 1304, x7)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x4, 1312, x7)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x4, 1320, x7)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x4, 1328, x7)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x4, 1336, x7)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x4, 1344, x7)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x4, 1352, x7)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x4, 1360, x7)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x4, 1368, x7)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x4, 1376, x7)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x4, 1384, x7)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x4, 1392, x7)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x4, 1400, x7)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x4, 1408, x7)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x4, 1416, x7)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x4, 1424, x7)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x4, 1432, x7)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x4, 1440, x7)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x4, 1448, x7)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x4, 1456, x7)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x4, 1464, x7)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x4, 1472, x7)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x4, 1480, x7)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x4, 1488, x7)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x4, 1496, x7)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x4, 1504, x7)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x4, 1512, x7)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x4, 1520, x7)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x4, 1528, x7)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x4, 1536, x7)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x4, 1544, x7)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x4, 1552, x7)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x4, 1560, x7)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x4, 1568, x7)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x4, 1576, x7)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x4, 1584, x7)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x4, 1592, x7)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x4, 1600, x7)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x4, 1608, x7)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x4, 1616, x7)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x4, 1624, x7)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x4, 1632, x7)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x4, 1640, x7)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x4, 1648, x7)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x4, 1656, x7)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x4, 1664, x7)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x4, 1672, x7)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x4, 1680, x7)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x4, 1688, x7)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x4, 1696, x7)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x4, 1704, x7)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x4, 1712, x7)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x4, 1720, x7)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x4, 1728, x7)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x4, 1736, x7)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x4, 1744, x7)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x4, 1752, x7)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x4, 1760, x7)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x4, 1768, x7)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x4, 1776, x7)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x4, 1784, x7)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x4, 1792, x7)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x4, 1800, x7)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x4, 1808, x7)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x4, 1816, x7)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x4, 1824, x7)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x4, 1832, x7)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x4, 1840, x7)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x4, 1848, x7)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x4, 1856, x7)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x4, 1864, x7)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x4, 1872, x7)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x4, 1880, x7)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x4, 1888, x7)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x4, 1896, x7)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x4, 1904, x7)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x4, 1912, x7)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x4, 1920, x7)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x4, 1928, x7)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x4, 1936, x7)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x4, 1944, x7)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x4, 1952, x7)
+
+inst_522:
+// rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x4, 1960, x7)
+
+inst_523:
+// rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x4, 1968, x7)
+
+inst_524:
+// rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: rorw ; op1:x10; op2:x11; dest:x12; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(rorw, x12, x10, x11, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x4, 1976, x7)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x5_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x5_1:
+ .fill 21*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 248*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-01.S
new file mode 100644
index 000000000..36a20d1fb
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sha256sig0 instruction of the RISC-V extension for the sha256sig0 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sha256sig0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sig0)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKnh.*);def TEST_CASE_1=True;",sha256sig0)
+
+RVTEST_SIGBASE( x7,signature_x7_1)
+
+inst_0:
+// rs1 != rd, rs1==x4, rd==x16, rs1_val == 0x75a3adb3254a9493
+// opcode: sha256sig0 ; op1:x4; dest:x16; op1val:0x75a3adb3254a9493;
+li x4, 0x75a3adb3254a9493
+sha256sig0 x16, x4
+sw x16, 0(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x16, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x28, rd==x28, rs1_val == 9223372036854775807,
+// opcode: sha256sig0 ; op1:x28; dest:x28; op1val:0x7fffffffffffffff;
+li x28, 0x7fffffffffffffff
+sha256sig0 x28, x28
+sw x28, 8(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x28, 0x0000000000000000)
+
+inst_2:
+// rs1==x31, rd==x25, rs1_val == 13835058055282163711,
+// opcode: sha256sig0 ; op1:x31; dest:x25; op1val:0xbfffffffffffffff;
+li x31, 0xbfffffffffffffff
+sha256sig0 x25, x31
+sw x25, 16(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x25, 0x0000000000000000)
+
+inst_3:
+// rs1==x14, rd==x21, rs1_val == 16140901064495857663,
+// opcode: sha256sig0 ; op1:x14; dest:x21; op1val:0xdfffffffffffffff;
+li x14, 0xdfffffffffffffff
+sha256sig0 x21, x14
+sw x21, 24(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x21, 0x0000000000000000)
+
+inst_4:
+// rs1==x21, rd==x27, rs1_val == 17293822569102704639,
+// opcode: sha256sig0 ; op1:x21; dest:x27; op1val:0xefffffffffffffff;
+li x21, 0xefffffffffffffff
+sha256sig0 x27, x21
+sw x27, 32(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x27, 0x0000000000000000)
+
+inst_5:
+// rs1==x16, rd==x23, rs1_val == 17870283321406128127,
+// opcode: sha256sig0 ; op1:x16; dest:x23; op1val:0xf7ffffffffffffff;
+li x16, 0xf7ffffffffffffff
+sha256sig0 x23, x16
+sw x23, 40(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x23, 0x0000000000000000)
+
+inst_6:
+// rs1==x5, rd==x17, rs1_val == 18158513697557839871,
+// opcode: sha256sig0 ; op1:x5; dest:x17; op1val:0xfbffffffffffffff;
+li x5, 0xfbffffffffffffff
+sha256sig0 x17, x5
+sw x17, 48(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x17, 0x0000000000000000)
+
+inst_7:
+// rs1==x18, rd==x12, rs1_val == 18302628885633695743,
+// opcode: sha256sig0 ; op1:x18; dest:x12; op1val:0xfdffffffffffffff;
+li x18, 0xfdffffffffffffff
+sha256sig0 x12, x18
+sw x12, 56(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x12, 0x0000000000000000)
+
+inst_8:
+// rs1==x12, rd==x9, rs1_val == 18374686479671623679,
+// opcode: sha256sig0 ; op1:x12; dest:x9; op1val:0xfeffffffffffffff;
+li x12, 0xfeffffffffffffff
+sha256sig0 x9, x12
+sw x9, 64(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x9, 0x0000000000000000)
+
+inst_9:
+// rs1==x2, rd==x1, rs1_val == 18410715276690587647,
+// opcode: sha256sig0 ; op1:x2; dest:x1; op1val:0xff7fffffffffffff;
+li x2, 0xff7fffffffffffff
+sha256sig0 x1, x2
+sw x1, 72(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x1, 0x0000000000000000)
+
+inst_10:
+// rs1==x10, rd==x0, rs1_val == 18428729675200069631,
+// opcode: sha256sig0 ; op1:x10; dest:x0; op1val:0xffbfffffffffffff;
+li x10, 0xffbfffffffffffff
+sha256sig0 x0, x10
+sw x0, 80(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x0, 0x0000000000000000)
+
+inst_11:
+// rs1==x9, rd==x31, rs1_val == 18437736874454810623,
+// opcode: sha256sig0 ; op1:x9; dest:x31; op1val:0xffdfffffffffffff;
+li x9, 0xffdfffffffffffff
+sha256sig0 x31, x9
+sw x31, 88(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x31, 0x0000000000000000)
+
+inst_12:
+// rs1==x13, rd==x11, rs1_val == 18442240474082181119,
+// opcode: sha256sig0 ; op1:x13; dest:x11; op1val:0xffefffffffffffff;
+li x13, 0xffefffffffffffff
+sha256sig0 x11, x13
+sw x11, 96(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_13:
+// rs1==x15, rd==x3, rs1_val == 18444492273895866367,
+// opcode: sha256sig0 ; op1:x15; dest:x3; op1val:0xfff7ffffffffffff;
+li x15, 0xfff7ffffffffffff
+sha256sig0 x3, x15
+sw x3, 104(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x3, 0x0000000000000000)
+
+inst_14:
+// rs1==x23, rd==x19, rs1_val == 18445618173802708991,
+// opcode: sha256sig0 ; op1:x23; dest:x19; op1val:0xfffbffffffffffff;
+li x23, 0xfffbffffffffffff
+sha256sig0 x19, x23
+sw x19, 112(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x19, 0x0000000000000000)
+
+inst_15:
+// rs1==x24, rd==x30, rs1_val == 18446181123756130303,
+// opcode: sha256sig0 ; op1:x24; dest:x30; op1val:0xfffdffffffffffff;
+li x24, 0xfffdffffffffffff
+sha256sig0 x30, x24
+sw x30, 120(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x30, 0x0000000000000000)
+
+inst_16:
+// rs1==x3, rd==x20, rs1_val == 18446462598732840959,
+// opcode: sha256sig0 ; op1:x3; dest:x20; op1val:0xfffeffffffffffff;
+li x3, 0xfffeffffffffffff
+sha256sig0 x20, x3
+sw x20, 128(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x20, 0x0000000000000000)
+
+inst_17:
+// rs1==x29, rd==x15, rs1_val == 18446603336221196287,
+// opcode: sha256sig0 ; op1:x29; dest:x15; op1val:0xffff7fffffffffff;
+li x29, 0xffff7fffffffffff
+sha256sig0 x15, x29
+sw x15, 136(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x15, 0x0000000000000000)
+
+inst_18:
+// rs1==x1, rd==x24, rs1_val == 18446673704965373951,
+// opcode: sha256sig0 ; op1:x1; dest:x24; op1val:0xffffbfffffffffff;
+li x1, 0xffffbfffffffffff
+sha256sig0 x24, x1
+sw x24, 144(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x24, 0x0000000000000000)
+
+inst_19:
+// rs1==x26, rd==x6, rs1_val == 18446708889337462783,
+// opcode: sha256sig0 ; op1:x26; dest:x6; op1val:0xffffdfffffffffff;
+li x26, 0xffffdfffffffffff
+sha256sig0 x6, x26
+sw x6, 152(x7)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x6, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_20:
+// rs1==x19, rd==x10, rs1_val == 18446726481523507199,
+// opcode: sha256sig0 ; op1:x19; dest:x10; op1val:0xffffefffffffffff;
+li x19, 0xffffefffffffffff
+sha256sig0 x10, x19
+sw x10, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x10, 0x0000000000000000)
+
+inst_21:
+// rs1==x22, rd==x8, rs1_val == 18446735277616529407,
+// opcode: sha256sig0 ; op1:x22; dest:x8; op1val:0xfffff7ffffffffff;
+li x22, 0xfffff7ffffffffff
+sha256sig0 x8, x22
+sw x8, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x8, 0x0000000000000000)
+
+inst_22:
+// rs1==x7, rd==x5, rs1_val == 18446739675663040511,
+// opcode: sha256sig0 ; op1:x7; dest:x5; op1val:0xfffffbffffffffff;
+li x7, 0xfffffbffffffffff
+sha256sig0 x5, x7
+sw x5, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x5, 0x0000000000000000)
+
+inst_23:
+// rs1==x30, rd==x13, rs1_val == 18446741874686296063,
+// opcode: sha256sig0 ; op1:x30; dest:x13; op1val:0xfffffdffffffffff;
+li x30, 0xfffffdffffffffff
+sha256sig0 x13, x30
+sw x13, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x13, 0x0000000000000000)
+
+inst_24:
+// rs1==x20, rd==x4, rs1_val == 18446742974197923839,
+// opcode: sha256sig0 ; op1:x20; dest:x4; op1val:0xfffffeffffffffff;
+li x20, 0xfffffeffffffffff
+sha256sig0 x4, x20
+sw x4, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x4, 0x0000000000000000)
+
+inst_25:
+// rs1==x27, rd==x29, rs1_val == 18446743523953737727,
+// opcode: sha256sig0 ; op1:x27; dest:x29; op1val:0xffffff7fffffffff;
+li x27, 0xffffff7fffffffff
+sha256sig0 x29, x27
+sw x29, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x29, 0x0000000000000000)
+
+inst_26:
+// rs1==x25, rd==x22, rs1_val == 18446743798831644671,
+// opcode: sha256sig0 ; op1:x25; dest:x22; op1val:0xffffffbfffffffff;
+li x25, 0xffffffbfffffffff
+sha256sig0 x22, x25
+sw x22, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x22, 0x0000000000000000)
+
+inst_27:
+// rs1==x17, rd==x14, rs1_val == 18446743936270598143,
+// opcode: sha256sig0 ; op1:x17; dest:x14; op1val:0xffffffdfffffffff;
+li x17, 0xffffffdfffffffff
+sha256sig0 x14, x17
+sw x14, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x14, 0x0000000000000000)
+
+inst_28:
+// rs1==x11, rd==x7, rs1_val == 18446744004990074879,
+// opcode: sha256sig0 ; op1:x11; dest:x7; op1val:0xffffffefffffffff;
+li x11, 0xffffffefffffffff
+sha256sig0 x7, x11
+sw x7, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x7, 0x0000000000000000)
+
+inst_29:
+// rs1==x6, rd==x2, rs1_val == 18446744039349813247,
+// opcode: sha256sig0 ; op1:x6; dest:x2; op1val:0xfffffff7ffffffff;
+li x6, 0xfffffff7ffffffff
+sha256sig0 x2, x6
+sw x2, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x2, 0x0000000000000000)
+
+inst_30:
+// rs1==x8, rd==x26, rs1_val == 18446744056529682431,
+// opcode: sha256sig0 ; op1:x8; dest:x26; op1val:0xfffffffbffffffff;
+li x8, 0xfffffffbffffffff
+sha256sig0 x26, x8
+sw x26, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x26, 0x0000000000000000)
+
+inst_31:
+// rs1==x0, rd==x18, rs1_val == 18446744065119617023,
+// opcode: sha256sig0 ; op1:x0; dest:x18; op1val:0x0;
+li x0, 0x0
+sha256sig0 x18, x0
+sw x18, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x18, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sha256sig0 x11, x10
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sha256sig0 x11, x10
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sha256sig0 x11, x10
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sha256sig0 x11, x10
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sha256sig0 x11, x10
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sha256sig0 x11, x10
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sha256sig0 x11, x10
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sha256sig0 x11, x10
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sha256sig0 x11, x10
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sha256sig0 x11, x10
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sha256sig0 x11, x10
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sha256sig0 x11, x10
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sha256sig0 x11, x10
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sha256sig0 x11, x10
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sha256sig0 x11, x10
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sha256sig0 x11, x10
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sha256sig0 x11, x10
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sha256sig0 x11, x10
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sha256sig0 x11, x10
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sha256sig0 x11, x10
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sha256sig0 x11, x10
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sha256sig0 x11, x10
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sha256sig0 x11, x10
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sha256sig0 x11, x10
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sha256sig0 x11, x10
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sha256sig0 x11, x10
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sha256sig0 x11, x10
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sha256sig0 x11, x10
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sha256sig0 x11, x10
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sha256sig0 x11, x10
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sha256sig0 x11, x10
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sha256sig0 x11, x10
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sha256sig0 x11, x10
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sha256sig0 x11, x10
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sha256sig0 x11, x10
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sha256sig0 x11, x10
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sha256sig0 x11, x10
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sha256sig0 x11, x10
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sha256sig0 x11, x10
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sha256sig0 x11, x10
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sha256sig0 x11, x10
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sha256sig0 x11, x10
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sha256sig0 x11, x10
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sha256sig0 x11, x10
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sha256sig0 x11, x10
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sha256sig0 x11, x10
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sha256sig0 x11, x10
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sha256sig0 x11, x10
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sha256sig0 x11, x10
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sha256sig0 x11, x10
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sha256sig0 x11, x10
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sha256sig0 x11, x10
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sha256sig0 x11, x10
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sha256sig0 x11, x10
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sha256sig0 x11, x10
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sha256sig0 x11, x10
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sha256sig0 x11, x10
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sha256sig0 x11, x10
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sha256sig0 x11, x10
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sha256sig0 x11, x10
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sha256sig0 x11, x10
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sha256sig0 x11, x10
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sha256sig0 x11, x10
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sha256sig0 x11, x10
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sha256sig0 x11, x10
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sha256sig0 x11, x10
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sha256sig0 x11, x10
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sha256sig0 x11, x10
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sha256sig0 x11, x10
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sha256sig0 x11, x10
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sha256sig0 x11, x10
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sha256sig0 x11, x10
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sha256sig0 x11, x10
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sha256sig0 x11, x10
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sha256sig0 x11, x10
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sha256sig0 x11, x10
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sha256sig0 x11, x10
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sha256sig0 x11, x10
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sha256sig0 x11, x10
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sha256sig0 x11, x10
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sha256sig0 x11, x10
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sha256sig0 x11, x10
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sha256sig0 x11, x10
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sha256sig0 x11, x10
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sha256sig0 x11, x10
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sha256sig0 x11, x10
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sha256sig0 x11, x10
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sha256sig0 x11, x10
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sha256sig0 x11, x10
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sha256sig0 x11, x10
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sha256sig0 x11, x10
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sha256sig0 x11, x10
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sha256sig0 x11, x10
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sha256sig0 x11, x10
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sha256sig0 x11, x10
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sha256sig0 x11, x10
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sha256sig0 x11, x10
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sha256sig0 x11, x10
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sha256sig0 x11, x10
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sha256sig0 x11, x10
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sha256sig0 x11, x10
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sha256sig0 x11, x10
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sha256sig0 x11, x10
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sha256sig0 x11, x10
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sha256sig0 x11, x10
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sha256sig0 x11, x10
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sha256sig0 x11, x10
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sha256sig0 x11, x10
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sha256sig0 x11, x10
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sha256sig0 x11, x10
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sha256sig0 x11, x10
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sha256sig0 x11, x10
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sha256sig0 x11, x10
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sha256sig0 x11, x10
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sha256sig0 x11, x10
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sha256sig0 x11, x10
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18428729675200069631,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xffbfffffffffffff;
+li x10, 0xffbfffffffffffff
+sha256sig0 x11, x10
+sw x11, 1024(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18446744065119617023,
+// opcode: sha256sig0 ; op1:x10; dest:x11; op1val:0xfffffffdffffffff;
+li x10, 0xfffffffdffffffff
+sha256sig0 x11, x10
+sw x11, 1032(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x7_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x7_1:
+ .fill 20*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 130*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-rwp1.S
new file mode 100644
index 000000000..6e17b1d87
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha256sig0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sig0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sha256sig0 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sha256sig0 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sha256sig0 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sha256sig0 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sha256sig0 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sha256sig0 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sha256sig0 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sha256sig0 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sha256sig0 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sha256sig0 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sha256sig0 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sha256sig0 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sha256sig0 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sha256sig0 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sha256sig0 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sha256sig0 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sha256sig0 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sha256sig0 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sha256sig0 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sha256sig0 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sha256sig0 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sha256sig0 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sha256sig0 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sha256sig0 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sha256sig0 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sha256sig0 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sha256sig0 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sha256sig0 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sha256sig0 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sha256sig0 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sha256sig0 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sha256sig0 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sha256sig0 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sha256sig0 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sha256sig0 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sha256sig0 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sha256sig0 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sha256sig0 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sha256sig0 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sha256sig0 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sha256sig0 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sha256sig0 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sha256sig0 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sha256sig0 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sha256sig0 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sha256sig0 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sha256sig0 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sha256sig0 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sha256sig0 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sha256sig0 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sha256sig0 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sha256sig0 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sha256sig0 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sha256sig0 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sha256sig0 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sha256sig0 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sha256sig0 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sha256sig0 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sha256sig0 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sha256sig0 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sha256sig0 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sha256sig0 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sha256sig0 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sha256sig0 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sha256sig0 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sha256sig0 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sha256sig0 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sha256sig0 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sha256sig0 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sha256sig0 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sha256sig0 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sha256sig0 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sha256sig0 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sha256sig0 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sha256sig0 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sha256sig0 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sha256sig0 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sha256sig0 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sha256sig0 & the result back into xor
+// opcode: sha256sig0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sha256sig0 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sha256sig0 & the result back into not
+// opcode: sha256sig0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sha256sig0 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sha256sig0 & the result back into add
+// opcode: sha256sig0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sha256sig0 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-rwp2.S
new file mode 100644
index 000000000..df040e50b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig0-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha256sig0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sig0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sha256sig0 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sha256sig0 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sha256sig0 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sha256sig0 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sha256sig0 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sha256sig0 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sha256sig0 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sha256sig0 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sha256sig0 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sha256sig0 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sha256sig0 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sha256sig0 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sha256sig0 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sha256sig0 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sha256sig0 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sha256sig0 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sha256sig0 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sha256sig0 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sha256sig0 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sha256sig0 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sha256sig0 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sha256sig0 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sha256sig0 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sha256sig0 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sha256sig0 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sha256sig0 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sha256sig0 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sha256sig0; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sha256sig0 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-01.S
new file mode 100644
index 000000000..11c729bef
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sha256sig1 instruction of the RISC-V extension for the sha256sig1 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sha256sig1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sig1)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKnh.*);def TEST_CASE_1=True;",sha256sig1)
+
+RVTEST_SIGBASE( x13,signature_x13_1)
+
+inst_0:
+// rs1 != rd, rs1==x5, rd==x29, rs1_val == 0x75a3adb3254a9493
+// opcode: sha256sig1 ; op1:x5; dest:x29; op1val:0x75a3adb3254a9493;
+li x5, 0x75a3adb3254a9493
+sha256sig1 x29, x5
+sw x29, 0(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x29, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x26, rd==x26, rs1_val == 9223372036854775807,
+// opcode: sha256sig1 ; op1:x26; dest:x26; op1val:0x7fffffffffffffff;
+li x26, 0x7fffffffffffffff
+sha256sig1 x26, x26
+sw x26, 8(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x26, 0x0000000000000000)
+
+inst_2:
+// rs1==x1, rd==x18, rs1_val == 13835058055282163711,
+// opcode: sha256sig1 ; op1:x1; dest:x18; op1val:0xbfffffffffffffff;
+li x1, 0xbfffffffffffffff
+sha256sig1 x18, x1
+sw x18, 16(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x18, 0x0000000000000000)
+
+inst_3:
+// rs1==x24, rd==x10, rs1_val == 16140901064495857663,
+// opcode: sha256sig1 ; op1:x24; dest:x10; op1val:0xdfffffffffffffff;
+li x24, 0xdfffffffffffffff
+sha256sig1 x10, x24
+sw x10, 24(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x10, 0x0000000000000000)
+
+inst_4:
+// rs1==x6, rd==x14, rs1_val == 17293822569102704639,
+// opcode: sha256sig1 ; op1:x6; dest:x14; op1val:0xefffffffffffffff;
+li x6, 0xefffffffffffffff
+sha256sig1 x14, x6
+sw x14, 32(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x14, 0x0000000000000000)
+
+inst_5:
+// rs1==x20, rd==x8, rs1_val == 17870283321406128127,
+// opcode: sha256sig1 ; op1:x20; dest:x8; op1val:0xf7ffffffffffffff;
+li x20, 0xf7ffffffffffffff
+sha256sig1 x8, x20
+sw x8, 40(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x8, 0x0000000000000000)
+
+inst_6:
+// rs1==x7, rd==x11, rs1_val == 18158513697557839871,
+// opcode: sha256sig1 ; op1:x7; dest:x11; op1val:0xfbffffffffffffff;
+li x7, 0xfbffffffffffffff
+sha256sig1 x11, x7
+sw x11, 48(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x11, 0x0000000000000000)
+
+inst_7:
+// rs1==x9, rd==x1, rs1_val == 18302628885633695743,
+// opcode: sha256sig1 ; op1:x9; dest:x1; op1val:0xfdffffffffffffff;
+li x9, 0xfdffffffffffffff
+sha256sig1 x1, x9
+sw x1, 56(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x1, 0x0000000000000000)
+
+inst_8:
+// rs1==x29, rd==x24, rs1_val == 18374686479671623679,
+// opcode: sha256sig1 ; op1:x29; dest:x24; op1val:0xfeffffffffffffff;
+li x29, 0xfeffffffffffffff
+sha256sig1 x24, x29
+sw x24, 64(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x24, 0x0000000000000000)
+
+inst_9:
+// rs1==x28, rd==x23, rs1_val == 18410715276690587647,
+// opcode: sha256sig1 ; op1:x28; dest:x23; op1val:0xff7fffffffffffff;
+li x28, 0xff7fffffffffffff
+sha256sig1 x23, x28
+sw x23, 72(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x23, 0x0000000000000000)
+
+inst_10:
+// rs1==x30, rd==x25, rs1_val == 18428729675200069631,
+// opcode: sha256sig1 ; op1:x30; dest:x25; op1val:0xffbfffffffffffff;
+li x30, 0xffbfffffffffffff
+sha256sig1 x25, x30
+sw x25, 80(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x25, 0x0000000000000000)
+
+inst_11:
+// rs1==x11, rd==x30, rs1_val == 18437736874454810623,
+// opcode: sha256sig1 ; op1:x11; dest:x30; op1val:0xffdfffffffffffff;
+li x11, 0xffdfffffffffffff
+sha256sig1 x30, x11
+sw x30, 88(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x30, 0x0000000000000000)
+
+inst_12:
+// rs1==x2, rd==x19, rs1_val == 18442240474082181119,
+// opcode: sha256sig1 ; op1:x2; dest:x19; op1val:0xffefffffffffffff;
+li x2, 0xffefffffffffffff
+sha256sig1 x19, x2
+sw x19, 96(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x19, 0x0000000000000000)
+
+inst_13:
+// rs1==x21, rd==x20, rs1_val == 18444492273895866367,
+// opcode: sha256sig1 ; op1:x21; dest:x20; op1val:0xfff7ffffffffffff;
+li x21, 0xfff7ffffffffffff
+sha256sig1 x20, x21
+sw x20, 104(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x20, 0x0000000000000000)
+
+inst_14:
+// rs1==x12, rd==x16, rs1_val == 18445618173802708991,
+// opcode: sha256sig1 ; op1:x12; dest:x16; op1val:0xfffbffffffffffff;
+li x12, 0xfffbffffffffffff
+sha256sig1 x16, x12
+sw x16, 112(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x16, 0x0000000000000000)
+
+inst_15:
+// rs1==x8, rd==x4, rs1_val == 18446181123756130303,
+// opcode: sha256sig1 ; op1:x8; dest:x4; op1val:0xfffdffffffffffff;
+li x8, 0xfffdffffffffffff
+sha256sig1 x4, x8
+sw x4, 120(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x4, 0x0000000000000000)
+
+inst_16:
+// rs1==x0, rd==x7, rs1_val == 18446462598732840959,
+// opcode: sha256sig1 ; op1:x0; dest:x7; op1val:0x0;
+li x0, 0x0
+sha256sig1 x7, x0
+sw x7, 128(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x7, 0x0000000000000000)
+
+inst_17:
+// rs1==x18, rd==x3, rs1_val == 18446603336221196287,
+// opcode: sha256sig1 ; op1:x18; dest:x3; op1val:0xffff7fffffffffff;
+li x18, 0xffff7fffffffffff
+sha256sig1 x3, x18
+sw x3, 136(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x3, 0x0000000000000000)
+
+inst_18:
+// rs1==x4, rd==x28, rs1_val == 18446673704965373951,
+// opcode: sha256sig1 ; op1:x4; dest:x28; op1val:0xffffbfffffffffff;
+li x4, 0xffffbfffffffffff
+sha256sig1 x28, x4
+sw x28, 144(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x28, 0x0000000000000000)
+
+inst_19:
+// rs1==x15, rd==x31, rs1_val == 18446708889337462783,
+// opcode: sha256sig1 ; op1:x15; dest:x31; op1val:0xffffdfffffffffff;
+li x15, 0xffffdfffffffffff
+sha256sig1 x31, x15
+sw x31, 152(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x17, x31, 0x0000000000000000)
+
+inst_20:
+// rs1==x16, rd==x22, rs1_val == 18446726481523507199,
+// opcode: sha256sig1 ; op1:x16; dest:x22; op1val:0xffffefffffffffff;
+li x16, 0xffffefffffffffff
+sha256sig1 x22, x16
+sw x22, 160(x13)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x22, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_21:
+// rs1==x27, rd==x6, rs1_val == 18446735277616529407,
+// opcode: sha256sig1 ; op1:x27; dest:x6; op1val:0xfffff7ffffffffff;
+li x27, 0xfffff7ffffffffff
+sha256sig1 x6, x27
+sw x6, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x6, 0x0000000000000000)
+
+inst_22:
+// rs1==x14, rd==x2, rs1_val == 18446739675663040511,
+// opcode: sha256sig1 ; op1:x14; dest:x2; op1val:0xfffffbffffffffff;
+li x14, 0xfffffbffffffffff
+sha256sig1 x2, x14
+sw x2, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x2, 0x0000000000000000)
+
+inst_23:
+// rs1==x3, rd==x13, rs1_val == 18446741874686296063,
+// opcode: sha256sig1 ; op1:x3; dest:x13; op1val:0xfffffdffffffffff;
+li x3, 0xfffffdffffffffff
+sha256sig1 x13, x3
+sw x13, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x13, 0x0000000000000000)
+
+inst_24:
+// rs1==x13, rd==x17, rs1_val == 18446742974197923839,
+// opcode: sha256sig1 ; op1:x13; dest:x17; op1val:0xfffffeffffffffff;
+li x13, 0xfffffeffffffffff
+sha256sig1 x17, x13
+sw x17, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x17, 0x0000000000000000)
+
+inst_25:
+// rs1==x19, rd==x15, rs1_val == 18446743523953737727,
+// opcode: sha256sig1 ; op1:x19; dest:x15; op1val:0xffffff7fffffffff;
+li x19, 0xffffff7fffffffff
+sha256sig1 x15, x19
+sw x15, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x15, 0x0000000000000000)
+
+inst_26:
+// rs1==x23, rd==x9, rs1_val == 18446743798831644671,
+// opcode: sha256sig1 ; op1:x23; dest:x9; op1val:0xffffffbfffffffff;
+li x23, 0xffffffbfffffffff
+sha256sig1 x9, x23
+sw x9, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x9, 0x0000000000000000)
+
+inst_27:
+// rs1==x10, rd==x27, rs1_val == 18446743936270598143,
+// opcode: sha256sig1 ; op1:x10; dest:x27; op1val:0xffffffdfffffffff;
+li x10, 0xffffffdfffffffff
+sha256sig1 x27, x10
+sw x27, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x27, 0x0000000000000000)
+
+inst_28:
+// rs1==x31, rd==x5, rs1_val == 18446744004990074879,
+// opcode: sha256sig1 ; op1:x31; dest:x5; op1val:0xffffffefffffffff;
+li x31, 0xffffffefffffffff
+sha256sig1 x5, x31
+sw x5, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x5, 0x0000000000000000)
+
+inst_29:
+// rs1==x25, rd==x21, rs1_val == 18446744039349813247,
+// opcode: sha256sig1 ; op1:x25; dest:x21; op1val:0xfffffff7ffffffff;
+li x25, 0xfffffff7ffffffff
+sha256sig1 x21, x25
+sw x21, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x21, 0x0000000000000000)
+
+inst_30:
+// rs1==x22, rd==x0, rs1_val == 18446744056529682431,
+// opcode: sha256sig1 ; op1:x22; dest:x0; op1val:0xfffffffbffffffff;
+li x22, 0xfffffffbffffffff
+sha256sig1 x0, x22
+sw x0, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x0, 0x0000000000000000)
+
+inst_31:
+// rs1==x17, rd==x12, rs1_val == 18446744065119617023,
+// opcode: sha256sig1 ; op1:x17; dest:x12; op1val:0xfffffffdffffffff;
+li x17, 0xfffffffdffffffff
+sha256sig1 x12, x17
+sw x12, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x12, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sha256sig1 x11, x10
+sw x11, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sha256sig1 x11, x10
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sha256sig1 x11, x10
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sha256sig1 x11, x10
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sha256sig1 x11, x10
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sha256sig1 x11, x10
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sha256sig1 x11, x10
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sha256sig1 x11, x10
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sha256sig1 x11, x10
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sha256sig1 x11, x10
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sha256sig1 x11, x10
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sha256sig1 x11, x10
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sha256sig1 x11, x10
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sha256sig1 x11, x10
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sha256sig1 x11, x10
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sha256sig1 x11, x10
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sha256sig1 x11, x10
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sha256sig1 x11, x10
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sha256sig1 x11, x10
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sha256sig1 x11, x10
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sha256sig1 x11, x10
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sha256sig1 x11, x10
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sha256sig1 x11, x10
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sha256sig1 x11, x10
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sha256sig1 x11, x10
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sha256sig1 x11, x10
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sha256sig1 x11, x10
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sha256sig1 x11, x10
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sha256sig1 x11, x10
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sha256sig1 x11, x10
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sha256sig1 x11, x10
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sha256sig1 x11, x10
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sha256sig1 x11, x10
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sha256sig1 x11, x10
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sha256sig1 x11, x10
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sha256sig1 x11, x10
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sha256sig1 x11, x10
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sha256sig1 x11, x10
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sha256sig1 x11, x10
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sha256sig1 x11, x10
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sha256sig1 x11, x10
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sha256sig1 x11, x10
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sha256sig1 x11, x10
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sha256sig1 x11, x10
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sha256sig1 x11, x10
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sha256sig1 x11, x10
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sha256sig1 x11, x10
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sha256sig1 x11, x10
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sha256sig1 x11, x10
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sha256sig1 x11, x10
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sha256sig1 x11, x10
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sha256sig1 x11, x10
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sha256sig1 x11, x10
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sha256sig1 x11, x10
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sha256sig1 x11, x10
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sha256sig1 x11, x10
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sha256sig1 x11, x10
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sha256sig1 x11, x10
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sha256sig1 x11, x10
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sha256sig1 x11, x10
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sha256sig1 x11, x10
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sha256sig1 x11, x10
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sha256sig1 x11, x10
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sha256sig1 x11, x10
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sha256sig1 x11, x10
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sha256sig1 x11, x10
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sha256sig1 x11, x10
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sha256sig1 x11, x10
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sha256sig1 x11, x10
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sha256sig1 x11, x10
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sha256sig1 x11, x10
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sha256sig1 x11, x10
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sha256sig1 x11, x10
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sha256sig1 x11, x10
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sha256sig1 x11, x10
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sha256sig1 x11, x10
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sha256sig1 x11, x10
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sha256sig1 x11, x10
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sha256sig1 x11, x10
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sha256sig1 x11, x10
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sha256sig1 x11, x10
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sha256sig1 x11, x10
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sha256sig1 x11, x10
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sha256sig1 x11, x10
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sha256sig1 x11, x10
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sha256sig1 x11, x10
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sha256sig1 x11, x10
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sha256sig1 x11, x10
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sha256sig1 x11, x10
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sha256sig1 x11, x10
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sha256sig1 x11, x10
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sha256sig1 x11, x10
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sha256sig1 x11, x10
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sha256sig1 x11, x10
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sha256sig1 x11, x10
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sha256sig1 x11, x10
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sha256sig1 x11, x10
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sha256sig1 x11, x10
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sha256sig1 x11, x10
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sha256sig1 x11, x10
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sha256sig1 x11, x10
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sha256sig1 x11, x10
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sha256sig1 x11, x10
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sha256sig1 x11, x10
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sha256sig1 x11, x10
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sha256sig1 x11, x10
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sha256sig1 x11, x10
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sha256sig1 x11, x10
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sha256sig1 x11, x10
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sha256sig1 x11, x10
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sha256sig1 x11, x10
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sha256sig1 x11, x10
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sha256sig1 x11, x10
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sha256sig1 x11, x10
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sha256sig1 x11, x10
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sha256sig1 x11, x10
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18446462598732840959,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffeffffffffffff;
+li x10, 0xfffeffffffffffff
+sha256sig1 x11, x10
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18446744056529682431,
+// opcode: sha256sig1 ; op1:x10; dest:x11; op1val:0xfffffffbffffffff;
+li x10, 0xfffffffbffffffff
+sha256sig1 x11, x10
+sw x11, 1024(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x4, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x13_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x13_1:
+ .fill 21*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 129*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-rwp1.S
new file mode 100644
index 000000000..23e180ee9
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha256sig1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sig1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sha256sig1 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sha256sig1 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sha256sig1 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sha256sig1 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sha256sig1 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sha256sig1 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sha256sig1 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sha256sig1 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sha256sig1 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sha256sig1 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sha256sig1 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sha256sig1 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sha256sig1 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sha256sig1 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sha256sig1 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sha256sig1 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sha256sig1 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sha256sig1 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sha256sig1 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sha256sig1 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sha256sig1 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sha256sig1 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sha256sig1 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sha256sig1 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sha256sig1 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sha256sig1 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sha256sig1 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sha256sig1 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sha256sig1 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sha256sig1 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sha256sig1 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sha256sig1 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sha256sig1 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sha256sig1 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sha256sig1 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sha256sig1 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sha256sig1 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sha256sig1 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sha256sig1 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sha256sig1 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sha256sig1 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sha256sig1 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sha256sig1 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sha256sig1 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sha256sig1 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sha256sig1 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sha256sig1 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sha256sig1 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sha256sig1 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sha256sig1 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sha256sig1 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sha256sig1 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sha256sig1 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sha256sig1 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sha256sig1 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sha256sig1 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sha256sig1 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sha256sig1 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sha256sig1 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sha256sig1 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sha256sig1 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sha256sig1 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sha256sig1 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sha256sig1 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sha256sig1 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sha256sig1 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sha256sig1 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sha256sig1 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sha256sig1 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sha256sig1 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sha256sig1 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sha256sig1 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sha256sig1 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sha256sig1 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sha256sig1 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sha256sig1 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sha256sig1 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sha256sig1 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sha256sig1 & the result back into xor
+// opcode: sha256sig1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sha256sig1 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sha256sig1 & the result back into not
+// opcode: sha256sig1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sha256sig1 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sha256sig1 & the result back into add
+// opcode: sha256sig1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sha256sig1 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-rwp2.S
new file mode 100644
index 000000000..b06950bd4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sig1-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha256sig1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sig1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sha256sig1 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sha256sig1 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sha256sig1 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sha256sig1 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sha256sig1 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sha256sig1 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sha256sig1 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sha256sig1 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sha256sig1 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sha256sig1 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sha256sig1 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sha256sig1 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sha256sig1 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sha256sig1 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sha256sig1 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sha256sig1 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sha256sig1 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sha256sig1 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sha256sig1 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sha256sig1 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sha256sig1 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sha256sig1 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sha256sig1 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sha256sig1 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sha256sig1 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sha256sig1 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sha256sig1 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sha256sig1; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sha256sig1 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-01.S
new file mode 100644
index 000000000..bd40a36ac
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sha256sum0 instruction of the RISC-V extension for the sha256sum0 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sha256sum0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sum0)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKnh.*);def TEST_CASE_1=True;",sha256sum0)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs1 != rd, rs1==x26, rd==x20, rs1_val == 0x75a3adb3254a9493
+// opcode: sha256sum0 ; op1:x26; dest:x20; op1val:0x75a3adb3254a9493;
+li x26, 0x75a3adb3254a9493
+sha256sum0 x20, x26
+sw x20, 0(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x20, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x8, rd==x8, rs1_val == 9223372036854775807,
+// opcode: sha256sum0 ; op1:x8; dest:x8; op1val:0x7fffffffffffffff;
+li x8, 0x7fffffffffffffff
+sha256sum0 x8, x8
+sw x8, 8(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x8, 0x0000000000000000)
+
+inst_2:
+// rs1==x5, rd==x15, rs1_val == 13835058055282163711,
+// opcode: sha256sum0 ; op1:x5; dest:x15; op1val:0xbfffffffffffffff;
+li x5, 0xbfffffffffffffff
+sha256sum0 x15, x5
+sw x15, 16(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x15, 0x0000000000000000)
+
+inst_3:
+// rs1==x15, rd==x25, rs1_val == 16140901064495857663,
+// opcode: sha256sum0 ; op1:x15; dest:x25; op1val:0xdfffffffffffffff;
+li x15, 0xdfffffffffffffff
+sha256sum0 x25, x15
+sw x25, 24(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x25, 0x0000000000000000)
+
+inst_4:
+// rs1==x27, rd==x10, rs1_val == 17293822569102704639,
+// opcode: sha256sum0 ; op1:x27; dest:x10; op1val:0xefffffffffffffff;
+li x27, 0xefffffffffffffff
+sha256sum0 x10, x27
+sw x10, 32(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x10, 0x0000000000000000)
+
+inst_5:
+// rs1==x10, rd==x27, rs1_val == 17870283321406128127,
+// opcode: sha256sum0 ; op1:x10; dest:x27; op1val:0xf7ffffffffffffff;
+li x10, 0xf7ffffffffffffff
+sha256sum0 x27, x10
+sw x27, 40(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x27, 0x0000000000000000)
+
+inst_6:
+// rs1==x30, rd==x2, rs1_val == 18158513697557839871,
+// opcode: sha256sum0 ; op1:x30; dest:x2; op1val:0xfbffffffffffffff;
+li x30, 0xfbffffffffffffff
+sha256sum0 x2, x30
+sw x2, 48(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x2, 0x0000000000000000)
+
+inst_7:
+// rs1==x7, rd==x9, rs1_val == 18302628885633695743,
+// opcode: sha256sum0 ; op1:x7; dest:x9; op1val:0xfdffffffffffffff;
+li x7, 0xfdffffffffffffff
+sha256sum0 x9, x7
+sw x9, 56(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x9, 0x0000000000000000)
+
+inst_8:
+// rs1==x21, rd==x24, rs1_val == 18374686479671623679,
+// opcode: sha256sum0 ; op1:x21; dest:x24; op1val:0xfeffffffffffffff;
+li x21, 0xfeffffffffffffff
+sha256sum0 x24, x21
+sw x24, 64(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x24, 0x0000000000000000)
+
+inst_9:
+// rs1==x3, rd==x16, rs1_val == 18410715276690587647,
+// opcode: sha256sum0 ; op1:x3; dest:x16; op1val:0xff7fffffffffffff;
+li x3, 0xff7fffffffffffff
+sha256sum0 x16, x3
+sw x16, 72(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x16, 0x0000000000000000)
+
+inst_10:
+// rs1==x31, rd==x12, rs1_val == 18428729675200069631,
+// opcode: sha256sum0 ; op1:x31; dest:x12; op1val:0xffbfffffffffffff;
+li x31, 0xffbfffffffffffff
+sha256sum0 x12, x31
+sw x12, 80(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x12, 0x0000000000000000)
+
+inst_11:
+// rs1==x6, rd==x17, rs1_val == 18437736874454810623,
+// opcode: sha256sum0 ; op1:x6; dest:x17; op1val:0xffdfffffffffffff;
+li x6, 0xffdfffffffffffff
+sha256sum0 x17, x6
+sw x17, 88(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x17, 0x0000000000000000)
+
+inst_12:
+// rs1==x1, rd==x22, rs1_val == 18442240474082181119,
+// opcode: sha256sum0 ; op1:x1; dest:x22; op1val:0xffefffffffffffff;
+li x1, 0xffefffffffffffff
+sha256sum0 x22, x1
+sw x22, 96(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x22, 0x0000000000000000)
+
+inst_13:
+// rs1==x29, rd==x1, rs1_val == 18444492273895866367,
+// opcode: sha256sum0 ; op1:x29; dest:x1; op1val:0xfff7ffffffffffff;
+li x29, 0xfff7ffffffffffff
+sha256sum0 x1, x29
+sw x1, 104(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x1, 0x0000000000000000)
+
+inst_14:
+// rs1==x2, rd==x19, rs1_val == 18445618173802708991,
+// opcode: sha256sum0 ; op1:x2; dest:x19; op1val:0xfffbffffffffffff;
+li x2, 0xfffbffffffffffff
+sha256sum0 x19, x2
+sw x19, 112(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x19, 0x0000000000000000)
+
+inst_15:
+// rs1==x11, rd==x7, rs1_val == 18446181123756130303,
+// opcode: sha256sum0 ; op1:x11; dest:x7; op1val:0xfffdffffffffffff;
+li x11, 0xfffdffffffffffff
+sha256sum0 x7, x11
+sw x7, 120(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x7, 0x0000000000000000)
+
+inst_16:
+// rs1==x25, rd==x23, rs1_val == 18446462598732840959,
+// opcode: sha256sum0 ; op1:x25; dest:x23; op1val:0xfffeffffffffffff;
+li x25, 0xfffeffffffffffff
+sha256sum0 x23, x25
+sw x23, 128(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x23, 0x0000000000000000)
+
+inst_17:
+// rs1==x24, rd==x11, rs1_val == 18446603336221196287,
+// opcode: sha256sum0 ; op1:x24; dest:x11; op1val:0xffff7fffffffffff;
+li x24, 0xffff7fffffffffff
+sha256sum0 x11, x24
+sw x11, 136(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x11, 0x0000000000000000)
+
+inst_18:
+// rs1==x20, rd==x3, rs1_val == 18446673704965373951,
+// opcode: sha256sum0 ; op1:x20; dest:x3; op1val:0xffffbfffffffffff;
+li x20, 0xffffbfffffffffff
+sha256sum0 x3, x20
+sw x3, 144(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x3, 0x0000000000000000)
+
+inst_19:
+// rs1==x12, rd==x5, rs1_val == 18446708889337462783,
+// opcode: sha256sum0 ; op1:x12; dest:x5; op1val:0xffffdfffffffffff;
+li x12, 0xffffdfffffffffff
+sha256sum0 x5, x12
+sw x5, 152(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x5, 0x0000000000000000)
+
+inst_20:
+// rs1==x14, rd==x0, rs1_val == 18446726481523507199,
+// opcode: sha256sum0 ; op1:x14; dest:x0; op1val:0xffffefffffffffff;
+li x14, 0xffffefffffffffff
+sha256sum0 x0, x14
+sw x0, 160(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x0, 0x0000000000000000)
+
+inst_21:
+// rs1==x18, rd==x13, rs1_val == 18446735277616529407,
+// opcode: sha256sum0 ; op1:x18; dest:x13; op1val:0xfffff7ffffffffff;
+li x18, 0xfffff7ffffffffff
+sha256sum0 x13, x18
+sw x13, 168(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x13, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_22:
+// rs1==x28, rd==x21, rs1_val == 18446739675663040511,
+// opcode: sha256sum0 ; op1:x28; dest:x21; op1val:0xfffffbffffffffff;
+li x28, 0xfffffbffffffffff
+sha256sum0 x21, x28
+sw x21, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x21, 0x0000000000000000)
+
+inst_23:
+// rs1==x17, rd==x26, rs1_val == 18446741874686296063,
+// opcode: sha256sum0 ; op1:x17; dest:x26; op1val:0xfffffdffffffffff;
+li x17, 0xfffffdffffffffff
+sha256sum0 x26, x17
+sw x26, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x26, 0x0000000000000000)
+
+inst_24:
+// rs1==x16, rd==x30, rs1_val == 18446742974197923839,
+// opcode: sha256sum0 ; op1:x16; dest:x30; op1val:0xfffffeffffffffff;
+li x16, 0xfffffeffffffffff
+sha256sum0 x30, x16
+sw x30, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x30, 0x0000000000000000)
+
+inst_25:
+// rs1==x19, rd==x31, rs1_val == 18446743523953737727,
+// opcode: sha256sum0 ; op1:x19; dest:x31; op1val:0xffffff7fffffffff;
+li x19, 0xffffff7fffffffff
+sha256sum0 x31, x19
+sw x31, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x31, 0x0000000000000000)
+
+inst_26:
+// rs1==x4, rd==x14, rs1_val == 18446743798831644671,
+// opcode: sha256sum0 ; op1:x4; dest:x14; op1val:0xffffffbfffffffff;
+li x4, 0xffffffbfffffffff
+sha256sum0 x14, x4
+sw x14, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x14, 0x0000000000000000)
+
+inst_27:
+// rs1==x0, rd==x28, rs1_val == 18446743936270598143,
+// opcode: sha256sum0 ; op1:x0; dest:x28; op1val:0x0;
+li x0, 0x0
+sha256sum0 x28, x0
+sw x28, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x28, 0x0000000000000000)
+
+inst_28:
+// rs1==x13, rd==x6, rs1_val == 18446744004990074879,
+// opcode: sha256sum0 ; op1:x13; dest:x6; op1val:0xffffffefffffffff;
+li x13, 0xffffffefffffffff
+sha256sum0 x6, x13
+sw x6, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x6, 0x0000000000000000)
+
+inst_29:
+// rs1==x23, rd==x29, rs1_val == 18446744039349813247,
+// opcode: sha256sum0 ; op1:x23; dest:x29; op1val:0xfffffff7ffffffff;
+li x23, 0xfffffff7ffffffff
+sha256sum0 x29, x23
+sw x29, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x29, 0x0000000000000000)
+
+inst_30:
+// rs1==x9, rd==x4, rs1_val == 18446744056529682431,
+// opcode: sha256sum0 ; op1:x9; dest:x4; op1val:0xfffffffbffffffff;
+li x9, 0xfffffffbffffffff
+sha256sum0 x4, x9
+sw x4, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x4, 0x0000000000000000)
+
+inst_31:
+// rs1==x22, rd==x18, rs1_val == 18446744065119617023,
+// opcode: sha256sum0 ; op1:x22; dest:x18; op1val:0xfffffffdffffffff;
+li x22, 0xfffffffdffffffff
+sha256sum0 x18, x22
+sw x18, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x18, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sha256sum0 x11, x10
+sw x11, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sha256sum0 x11, x10
+sw x11, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sha256sum0 x11, x10
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sha256sum0 x11, x10
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sha256sum0 x11, x10
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sha256sum0 x11, x10
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sha256sum0 x11, x10
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sha256sum0 x11, x10
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sha256sum0 x11, x10
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sha256sum0 x11, x10
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sha256sum0 x11, x10
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sha256sum0 x11, x10
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sha256sum0 x11, x10
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sha256sum0 x11, x10
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sha256sum0 x11, x10
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sha256sum0 x11, x10
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sha256sum0 x11, x10
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sha256sum0 x11, x10
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sha256sum0 x11, x10
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sha256sum0 x11, x10
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sha256sum0 x11, x10
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sha256sum0 x11, x10
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sha256sum0 x11, x10
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sha256sum0 x11, x10
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sha256sum0 x11, x10
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sha256sum0 x11, x10
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sha256sum0 x11, x10
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sha256sum0 x11, x10
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sha256sum0 x11, x10
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sha256sum0 x11, x10
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sha256sum0 x11, x10
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sha256sum0 x11, x10
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sha256sum0 x11, x10
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sha256sum0 x11, x10
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sha256sum0 x11, x10
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sha256sum0 x11, x10
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sha256sum0 x11, x10
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sha256sum0 x11, x10
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sha256sum0 x11, x10
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sha256sum0 x11, x10
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sha256sum0 x11, x10
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sha256sum0 x11, x10
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sha256sum0 x11, x10
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sha256sum0 x11, x10
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sha256sum0 x11, x10
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sha256sum0 x11, x10
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sha256sum0 x11, x10
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sha256sum0 x11, x10
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sha256sum0 x11, x10
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sha256sum0 x11, x10
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sha256sum0 x11, x10
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sha256sum0 x11, x10
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sha256sum0 x11, x10
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sha256sum0 x11, x10
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sha256sum0 x11, x10
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sha256sum0 x11, x10
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sha256sum0 x11, x10
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sha256sum0 x11, x10
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sha256sum0 x11, x10
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sha256sum0 x11, x10
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sha256sum0 x11, x10
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sha256sum0 x11, x10
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sha256sum0 x11, x10
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sha256sum0 x11, x10
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sha256sum0 x11, x10
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sha256sum0 x11, x10
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sha256sum0 x11, x10
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sha256sum0 x11, x10
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sha256sum0 x11, x10
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sha256sum0 x11, x10
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sha256sum0 x11, x10
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sha256sum0 x11, x10
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sha256sum0 x11, x10
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sha256sum0 x11, x10
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sha256sum0 x11, x10
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sha256sum0 x11, x10
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sha256sum0 x11, x10
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sha256sum0 x11, x10
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sha256sum0 x11, x10
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sha256sum0 x11, x10
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sha256sum0 x11, x10
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sha256sum0 x11, x10
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sha256sum0 x11, x10
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sha256sum0 x11, x10
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sha256sum0 x11, x10
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sha256sum0 x11, x10
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sha256sum0 x11, x10
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sha256sum0 x11, x10
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sha256sum0 x11, x10
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sha256sum0 x11, x10
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sha256sum0 x11, x10
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sha256sum0 x11, x10
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sha256sum0 x11, x10
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sha256sum0 x11, x10
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sha256sum0 x11, x10
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sha256sum0 x11, x10
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sha256sum0 x11, x10
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sha256sum0 x11, x10
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sha256sum0 x11, x10
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sha256sum0 x11, x10
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sha256sum0 x11, x10
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sha256sum0 x11, x10
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sha256sum0 x11, x10
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sha256sum0 x11, x10
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sha256sum0 x11, x10
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sha256sum0 x11, x10
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sha256sum0 x11, x10
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sha256sum0 x11, x10
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sha256sum0 x11, x10
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sha256sum0 x11, x10
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sha256sum0 x11, x10
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sha256sum0 x11, x10
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sha256sum0 x11, x10
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sha256sum0 x11, x10
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sha256sum0 x11, x10
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sha256sum0 x11, x10
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18446726481523507199,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffefffffffffff;
+li x10, 0xffffefffffffffff
+sha256sum0 x11, x10
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18446743936270598143,
+// opcode: sha256sum0 ; op1:x10; dest:x11; op1val:0xffffffdfffffffff;
+li x10, 0xffffffdfffffffff
+sha256sum0 x11, x10
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 22*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 128*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-rwp1.S
new file mode 100644
index 000000000..77c5577fe
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha256sum0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sum0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sha256sum0 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sha256sum0 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sha256sum0 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sha256sum0 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sha256sum0 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sha256sum0 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sha256sum0 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sha256sum0 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sha256sum0 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sha256sum0 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sha256sum0 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sha256sum0 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sha256sum0 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sha256sum0 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sha256sum0 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sha256sum0 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sha256sum0 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sha256sum0 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sha256sum0 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sha256sum0 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sha256sum0 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sha256sum0 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sha256sum0 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sha256sum0 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sha256sum0 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sha256sum0 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sha256sum0 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sha256sum0 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sha256sum0 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sha256sum0 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sha256sum0 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sha256sum0 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sha256sum0 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sha256sum0 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sha256sum0 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sha256sum0 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sha256sum0 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sha256sum0 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sha256sum0 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sha256sum0 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sha256sum0 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sha256sum0 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sha256sum0 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sha256sum0 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sha256sum0 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sha256sum0 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sha256sum0 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sha256sum0 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sha256sum0 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sha256sum0 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sha256sum0 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sha256sum0 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sha256sum0 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sha256sum0 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sha256sum0 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sha256sum0 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sha256sum0 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sha256sum0 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sha256sum0 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sha256sum0 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sha256sum0 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sha256sum0 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sha256sum0 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sha256sum0 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sha256sum0 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sha256sum0 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sha256sum0 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sha256sum0 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sha256sum0 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sha256sum0 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sha256sum0 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sha256sum0 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sha256sum0 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sha256sum0 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sha256sum0 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sha256sum0 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sha256sum0 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sha256sum0 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sha256sum0 & the result back into xor
+// opcode: sha256sum0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sha256sum0 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sha256sum0 & the result back into not
+// opcode: sha256sum0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sha256sum0 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sha256sum0 & the result back into add
+// opcode: sha256sum0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sha256sum0 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-rwp2.S
new file mode 100644
index 000000000..3e3c833f0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum0-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha256sum0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sum0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sha256sum0 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sha256sum0 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sha256sum0 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sha256sum0 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sha256sum0 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sha256sum0 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sha256sum0 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sha256sum0 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sha256sum0 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sha256sum0 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sha256sum0 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sha256sum0 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sha256sum0 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sha256sum0 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sha256sum0 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sha256sum0 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sha256sum0 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sha256sum0 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sha256sum0 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sha256sum0 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sha256sum0 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sha256sum0 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sha256sum0 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sha256sum0 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sha256sum0 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sha256sum0 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sha256sum0 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sha256sum0; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sha256sum0 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-01.S
new file mode 100644
index 000000000..7c84af1fc
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sha256sum1 instruction of the RISC-V extension for the sha256sum1 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sum1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sha256sum1)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKnh.*);def TEST_CASE_1=True;",sha256sum1)
+
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_0:
+// rs1 != rd, rs1==x25, rd==x11, rs1_val == 0x75a3adb3254a9493
+// opcode: sha256sum1 ; op1:x25; dest:x11; op1val:0x75a3adb3254a9493;
+li x25, 0x75a3adb3254a9493
+sha256sum1 x11, x25
+sw x11, 0(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x8, rd==x8, rs1_val == 9223372036854775807,
+// opcode: sha256sum1 ; op1:x8; dest:x8; op1val:0x7fffffffffffffff;
+li x8, 0x7fffffffffffffff
+sha256sum1 x8, x8
+sw x8, 8(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x8, 0x0000000000000000)
+
+inst_2:
+// rs1==x28, rd==x16, rs1_val == 13835058055282163711,
+// opcode: sha256sum1 ; op1:x28; dest:x16; op1val:0xbfffffffffffffff;
+li x28, 0xbfffffffffffffff
+sha256sum1 x16, x28
+sw x16, 16(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x16, 0x0000000000000000)
+
+inst_3:
+// rs1==x22, rd==x7, rs1_val == 16140901064495857663,
+// opcode: sha256sum1 ; op1:x22; dest:x7; op1val:0xdfffffffffffffff;
+li x22, 0xdfffffffffffffff
+sha256sum1 x7, x22
+sw x7, 24(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x7, 0x0000000000000000)
+
+inst_4:
+// rs1==x2, rd==x12, rs1_val == 17293822569102704639,
+// opcode: sha256sum1 ; op1:x2; dest:x12; op1val:0xefffffffffffffff;
+li x2, 0xefffffffffffffff
+sha256sum1 x12, x2
+sw x12, 32(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x12, 0x0000000000000000)
+
+inst_5:
+// rs1==x26, rd==x17, rs1_val == 17870283321406128127,
+// opcode: sha256sum1 ; op1:x26; dest:x17; op1val:0xf7ffffffffffffff;
+li x26, 0xf7ffffffffffffff
+sha256sum1 x17, x26
+sw x17, 40(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x17, 0x0000000000000000)
+
+inst_6:
+// rs1==x10, rd==x6, rs1_val == 18158513697557839871,
+// opcode: sha256sum1 ; op1:x10; dest:x6; op1val:0xfbffffffffffffff;
+li x10, 0xfbffffffffffffff
+sha256sum1 x6, x10
+sw x6, 48(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x6, 0x0000000000000000)
+
+inst_7:
+// rs1==x21, rd==x4, rs1_val == 18302628885633695743,
+// opcode: sha256sum1 ; op1:x21; dest:x4; op1val:0xfdffffffffffffff;
+li x21, 0xfdffffffffffffff
+sha256sum1 x4, x21
+sw x4, 56(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x4, 0x0000000000000000)
+
+inst_8:
+// rs1==x15, rd==x5, rs1_val == 18374686479671623679,
+// opcode: sha256sum1 ; op1:x15; dest:x5; op1val:0xfeffffffffffffff;
+li x15, 0xfeffffffffffffff
+sha256sum1 x5, x15
+sw x5, 64(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x5, 0x0000000000000000)
+
+inst_9:
+// rs1==x1, rd==x9, rs1_val == 18410715276690587647,
+// opcode: sha256sum1 ; op1:x1; dest:x9; op1val:0xff7fffffffffffff;
+li x1, 0xff7fffffffffffff
+sha256sum1 x9, x1
+sw x9, 72(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x9, 0x0000000000000000)
+
+inst_10:
+// rs1==x14, rd==x19, rs1_val == 18428729675200069631,
+// opcode: sha256sum1 ; op1:x14; dest:x19; op1val:0xffbfffffffffffff;
+li x14, 0xffbfffffffffffff
+sha256sum1 x19, x14
+sw x19, 80(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x19, 0x0000000000000000)
+
+inst_11:
+// rs1==x16, rd==x21, rs1_val == 18437736874454810623,
+// opcode: sha256sum1 ; op1:x16; dest:x21; op1val:0xffdfffffffffffff;
+li x16, 0xffdfffffffffffff
+sha256sum1 x21, x16
+sw x21, 88(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x21, 0x0000000000000000)
+
+inst_12:
+// rs1==x5, rd==x20, rs1_val == 18442240474082181119,
+// opcode: sha256sum1 ; op1:x5; dest:x20; op1val:0xffefffffffffffff;
+li x5, 0xffefffffffffffff
+sha256sum1 x20, x5
+sw x20, 96(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x20, 0x0000000000000000)
+
+inst_13:
+// rs1==x29, rd==x31, rs1_val == 18444492273895866367,
+// opcode: sha256sum1 ; op1:x29; dest:x31; op1val:0xfff7ffffffffffff;
+li x29, 0xfff7ffffffffffff
+sha256sum1 x31, x29
+sw x31, 104(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x31, 0x0000000000000000)
+
+inst_14:
+// rs1==x30, rd==x2, rs1_val == 18445618173802708991,
+// opcode: sha256sum1 ; op1:x30; dest:x2; op1val:0xfffbffffffffffff;
+li x30, 0xfffbffffffffffff
+sha256sum1 x2, x30
+sw x2, 112(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x2, 0x0000000000000000)
+
+inst_15:
+// rs1==x9, rd==x23, rs1_val == 18446181123756130303,
+// opcode: sha256sum1 ; op1:x9; dest:x23; op1val:0xfffdffffffffffff;
+li x9, 0xfffdffffffffffff
+sha256sum1 x23, x9
+sw x23, 120(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x23, 0x0000000000000000)
+
+inst_16:
+// rs1==x0, rd==x26, rs1_val == 18446462598732840959,
+// opcode: sha256sum1 ; op1:x0; dest:x26; op1val:0x0;
+li x0, 0x0
+sha256sum1 x26, x0
+sw x26, 128(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x26, 0x0000000000000000)
+
+inst_17:
+// rs1==x19, rd==x15, rs1_val == 18446603336221196287,
+// opcode: sha256sum1 ; op1:x19; dest:x15; op1val:0xffff7fffffffffff;
+li x19, 0xffff7fffffffffff
+sha256sum1 x15, x19
+sw x15, 136(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x15, 0x0000000000000000)
+
+inst_18:
+// rs1==x11, rd==x13, rs1_val == 18446673704965373951,
+// opcode: sha256sum1 ; op1:x11; dest:x13; op1val:0xffffbfffffffffff;
+li x11, 0xffffbfffffffffff
+sha256sum1 x13, x11
+sw x13, 144(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x13, 0x0000000000000000)
+
+inst_19:
+// rs1==x7, rd==x14, rs1_val == 18446708889337462783,
+// opcode: sha256sum1 ; op1:x7; dest:x14; op1val:0xffffdfffffffffff;
+li x7, 0xffffdfffffffffff
+sha256sum1 x14, x7
+sw x14, 152(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x14, 0x0000000000000000)
+
+inst_20:
+// rs1==x17, rd==x22, rs1_val == 18446726481523507199,
+// opcode: sha256sum1 ; op1:x17; dest:x22; op1val:0xffffefffffffffff;
+li x17, 0xffffefffffffffff
+sha256sum1 x22, x17
+sw x22, 160(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x22, 0x0000000000000000)
+
+inst_21:
+// rs1==x27, rd==x10, rs1_val == 18446735277616529407,
+// opcode: sha256sum1 ; op1:x27; dest:x10; op1val:0xfffff7ffffffffff;
+li x27, 0xfffff7ffffffffff
+sha256sum1 x10, x27
+sw x10, 168(x3)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x10, 0x0000000000000000)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_22:
+// rs1==x20, rd==x24, rs1_val == 18446739675663040511,
+// opcode: sha256sum1 ; op1:x20; dest:x24; op1val:0xfffffbffffffffff;
+li x20, 0xfffffbffffffffff
+sha256sum1 x24, x20
+sw x24, 0(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x24, 0x0000000000000000)
+
+inst_23:
+// rs1==x6, rd==x25, rs1_val == 18446741874686296063,
+// opcode: sha256sum1 ; op1:x6; dest:x25; op1val:0xfffffdffffffffff;
+li x6, 0xfffffdffffffffff
+sha256sum1 x25, x6
+sw x25, 8(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x25, 0x0000000000000000)
+
+inst_24:
+// rs1==x31, rd==x3, rs1_val == 18446742974197923839,
+// opcode: sha256sum1 ; op1:x31; dest:x3; op1val:0xfffffeffffffffff;
+li x31, 0xfffffeffffffffff
+sha256sum1 x3, x31
+sw x3, 16(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x3, 0x0000000000000000)
+
+inst_25:
+// rs1==x4, rd==x1, rs1_val == 18446743523953737727,
+// opcode: sha256sum1 ; op1:x4; dest:x1; op1val:0xffffff7fffffffff;
+li x4, 0xffffff7fffffffff
+sha256sum1 x1, x4
+sw x1, 24(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x1, 0x0000000000000000)
+
+inst_26:
+// rs1==x12, rd==x0, rs1_val == 18446743798831644671,
+// opcode: sha256sum1 ; op1:x12; dest:x0; op1val:0xffffffbfffffffff;
+li x12, 0xffffffbfffffffff
+sha256sum1 x0, x12
+sw x0, 32(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x0, 0x0000000000000000)
+
+inst_27:
+// rs1==x18, rd==x30, rs1_val == 18446743936270598143,
+// opcode: sha256sum1 ; op1:x18; dest:x30; op1val:0xffffffdfffffffff;
+li x18, 0xffffffdfffffffff
+sha256sum1 x30, x18
+sw x30, 40(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x30, 0x0000000000000000)
+
+inst_28:
+// rs1==x13, rd==x27, rs1_val == 18446744004990074879,
+// opcode: sha256sum1 ; op1:x13; dest:x27; op1val:0xffffffefffffffff;
+li x13, 0xffffffefffffffff
+sha256sum1 x27, x13
+sw x27, 48(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x27, 0x0000000000000000)
+
+inst_29:
+// rs1==x3, rd==x29, rs1_val == 18446744039349813247,
+// opcode: sha256sum1 ; op1:x3; dest:x29; op1val:0xfffffff7ffffffff;
+li x3, 0xfffffff7ffffffff
+sha256sum1 x29, x3
+sw x29, 56(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x29, 0x0000000000000000)
+
+inst_30:
+// rs1==x24, rd==x28, rs1_val == 18446744056529682431,
+// opcode: sha256sum1 ; op1:x24; dest:x28; op1val:0xfffffffbffffffff;
+li x24, 0xfffffffbffffffff
+sha256sum1 x28, x24
+sw x28, 64(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x28, 0x0000000000000000)
+
+inst_31:
+// rs1==x23, rd==x18, rs1_val == 18446744065119617023,
+// opcode: sha256sum1 ; op1:x23; dest:x18; op1val:0xfffffffdffffffff;
+li x23, 0xfffffffdffffffff
+sha256sum1 x18, x23
+sw x18, 72(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x18, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sha256sum1 x11, x10
+sw x11, 80(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sha256sum1 x11, x10
+sw x11, 88(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sha256sum1 x11, x10
+sw x11, 96(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sha256sum1 x11, x10
+sw x11, 104(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sha256sum1 x11, x10
+sw x11, 112(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sha256sum1 x11, x10
+sw x11, 120(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sha256sum1 x11, x10
+sw x11, 128(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sha256sum1 x11, x10
+sw x11, 136(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sha256sum1 x11, x10
+sw x11, 144(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sha256sum1 x11, x10
+sw x11, 152(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sha256sum1 x11, x10
+sw x11, 160(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sha256sum1 x11, x10
+sw x11, 168(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sha256sum1 x11, x10
+sw x11, 176(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sha256sum1 x11, x10
+sw x11, 184(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sha256sum1 x11, x10
+sw x11, 192(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sha256sum1 x11, x10
+sw x11, 200(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sha256sum1 x11, x10
+sw x11, 208(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sha256sum1 x11, x10
+sw x11, 216(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sha256sum1 x11, x10
+sw x11, 224(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sha256sum1 x11, x10
+sw x11, 232(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sha256sum1 x11, x10
+sw x11, 240(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sha256sum1 x11, x10
+sw x11, 248(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sha256sum1 x11, x10
+sw x11, 256(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sha256sum1 x11, x10
+sw x11, 264(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sha256sum1 x11, x10
+sw x11, 272(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sha256sum1 x11, x10
+sw x11, 280(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sha256sum1 x11, x10
+sw x11, 288(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sha256sum1 x11, x10
+sw x11, 296(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sha256sum1 x11, x10
+sw x11, 304(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sha256sum1 x11, x10
+sw x11, 312(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sha256sum1 x11, x10
+sw x11, 320(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sha256sum1 x11, x10
+sw x11, 328(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sha256sum1 x11, x10
+sw x11, 336(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sha256sum1 x11, x10
+sw x11, 344(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sha256sum1 x11, x10
+sw x11, 352(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sha256sum1 x11, x10
+sw x11, 360(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sha256sum1 x11, x10
+sw x11, 368(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sha256sum1 x11, x10
+sw x11, 376(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sha256sum1 x11, x10
+sw x11, 384(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sha256sum1 x11, x10
+sw x11, 392(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sha256sum1 x11, x10
+sw x11, 400(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sha256sum1 x11, x10
+sw x11, 408(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sha256sum1 x11, x10
+sw x11, 416(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sha256sum1 x11, x10
+sw x11, 424(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sha256sum1 x11, x10
+sw x11, 432(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sha256sum1 x11, x10
+sw x11, 440(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sha256sum1 x11, x10
+sw x11, 448(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sha256sum1 x11, x10
+sw x11, 456(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sha256sum1 x11, x10
+sw x11, 464(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sha256sum1 x11, x10
+sw x11, 472(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sha256sum1 x11, x10
+sw x11, 480(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sha256sum1 x11, x10
+sw x11, 488(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sha256sum1 x11, x10
+sw x11, 496(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sha256sum1 x11, x10
+sw x11, 504(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sha256sum1 x11, x10
+sw x11, 512(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sha256sum1 x11, x10
+sw x11, 520(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sha256sum1 x11, x10
+sw x11, 528(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sha256sum1 x11, x10
+sw x11, 536(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sha256sum1 x11, x10
+sw x11, 544(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sha256sum1 x11, x10
+sw x11, 552(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sha256sum1 x11, x10
+sw x11, 560(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sha256sum1 x11, x10
+sw x11, 568(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sha256sum1 x11, x10
+sw x11, 576(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sha256sum1 x11, x10
+sw x11, 584(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sha256sum1 x11, x10
+sw x11, 592(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sha256sum1 x11, x10
+sw x11, 600(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sha256sum1 x11, x10
+sw x11, 608(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sha256sum1 x11, x10
+sw x11, 616(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sha256sum1 x11, x10
+sw x11, 624(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sha256sum1 x11, x10
+sw x11, 632(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sha256sum1 x11, x10
+sw x11, 640(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sha256sum1 x11, x10
+sw x11, 648(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sha256sum1 x11, x10
+sw x11, 656(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sha256sum1 x11, x10
+sw x11, 664(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sha256sum1 x11, x10
+sw x11, 672(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sha256sum1 x11, x10
+sw x11, 680(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sha256sum1 x11, x10
+sw x11, 688(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sha256sum1 x11, x10
+sw x11, 696(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sha256sum1 x11, x10
+sw x11, 704(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sha256sum1 x11, x10
+sw x11, 712(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sha256sum1 x11, x10
+sw x11, 720(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sha256sum1 x11, x10
+sw x11, 728(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sha256sum1 x11, x10
+sw x11, 736(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sha256sum1 x11, x10
+sw x11, 744(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sha256sum1 x11, x10
+sw x11, 752(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sha256sum1 x11, x10
+sw x11, 760(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sha256sum1 x11, x10
+sw x11, 768(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sha256sum1 x11, x10
+sw x11, 776(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sha256sum1 x11, x10
+sw x11, 784(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sha256sum1 x11, x10
+sw x11, 792(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sha256sum1 x11, x10
+sw x11, 800(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sha256sum1 x11, x10
+sw x11, 808(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sha256sum1 x11, x10
+sw x11, 816(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sha256sum1 x11, x10
+sw x11, 824(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sha256sum1 x11, x10
+sw x11, 832(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sha256sum1 x11, x10
+sw x11, 840(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sha256sum1 x11, x10
+sw x11, 848(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sha256sum1 x11, x10
+sw x11, 856(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sha256sum1 x11, x10
+sw x11, 864(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sha256sum1 x11, x10
+sw x11, 872(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sha256sum1 x11, x10
+sw x11, 880(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sha256sum1 x11, x10
+sw x11, 888(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sha256sum1 x11, x10
+sw x11, 896(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sha256sum1 x11, x10
+sw x11, 904(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sha256sum1 x11, x10
+sw x11, 912(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sha256sum1 x11, x10
+sw x11, 920(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sha256sum1 x11, x10
+sw x11, 928(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sha256sum1 x11, x10
+sw x11, 936(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sha256sum1 x11, x10
+sw x11, 944(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sha256sum1 x11, x10
+sw x11, 952(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sha256sum1 x11, x10
+sw x11, 960(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sha256sum1 x11, x10
+sw x11, 968(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sha256sum1 x11, x10
+sw x11, 976(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sha256sum1 x11, x10
+sw x11, 984(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sha256sum1 x11, x10
+sw x11, 992(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sha256sum1 x11, x10
+sw x11, 1000(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18446462598732840959,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xfffeffffffffffff;
+li x10, 0xfffeffffffffffff
+sha256sum1 x11, x10
+sw x11, 1008(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18446743798831644671,
+// opcode: sha256sum1 ; op1:x10; dest:x11; op1val:0xffffffbfffffffff;
+li x10, 0xffffffbfffffffff
+sha256sum1 x11, x10
+sw x11, 1016(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x3_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 22*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 128*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-rwp1.S
new file mode 100644
index 000000000..834741471
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha256sum1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sum1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sha256sum1 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sha256sum1 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sha256sum1 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sha256sum1 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sha256sum1 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sha256sum1 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sha256sum1 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sha256sum1 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sha256sum1 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sha256sum1 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sha256sum1 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sha256sum1 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sha256sum1 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sha256sum1 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sha256sum1 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sha256sum1 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sha256sum1 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sha256sum1 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sha256sum1 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sha256sum1 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sha256sum1 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sha256sum1 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sha256sum1 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sha256sum1 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sha256sum1 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sha256sum1 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sha256sum1 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sha256sum1 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sha256sum1 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sha256sum1 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sha256sum1 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sha256sum1 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sha256sum1 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sha256sum1 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sha256sum1 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sha256sum1 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sha256sum1 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sha256sum1 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sha256sum1 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sha256sum1 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sha256sum1 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sha256sum1 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sha256sum1 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sha256sum1 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sha256sum1 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sha256sum1 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sha256sum1 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sha256sum1 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sha256sum1 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sha256sum1 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sha256sum1 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sha256sum1 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sha256sum1 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sha256sum1 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sha256sum1 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sha256sum1 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sha256sum1 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sha256sum1 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sha256sum1 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sha256sum1 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sha256sum1 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sha256sum1 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sha256sum1 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sha256sum1 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sha256sum1 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sha256sum1 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sha256sum1 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sha256sum1 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sha256sum1 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sha256sum1 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sha256sum1 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sha256sum1 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sha256sum1 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sha256sum1 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sha256sum1 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sha256sum1 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sha256sum1 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sha256sum1 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sha256sum1 & the result back into xor
+// opcode: sha256sum1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sha256sum1 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sha256sum1 & the result back into not
+// opcode: sha256sum1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sha256sum1 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sha256sum1 & the result back into add
+// opcode: sha256sum1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sha256sum1 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-rwp2.S
new file mode 100644
index 000000000..8e2c36a0d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha256sum1-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha256sum1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha256sum1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sha256sum1 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sha256sum1 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sha256sum1 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sha256sum1 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sha256sum1 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sha256sum1 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sha256sum1 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sha256sum1 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sha256sum1 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sha256sum1 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sha256sum1 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sha256sum1 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sha256sum1 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sha256sum1 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sha256sum1 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sha256sum1 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sha256sum1 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sha256sum1 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sha256sum1 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sha256sum1 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sha256sum1 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sha256sum1 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sha256sum1 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sha256sum1 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sha256sum1 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sha256sum1 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sha256sum1 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sha256sum1; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sha256sum1 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-01.S
new file mode 100644
index 000000000..654ce3e25
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sha512sig0 instruction of the RISC-V extension for the sha512sig0 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sha512sig0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sig0)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnh.*);def TEST_CASE_1=True;",sha512sig0)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 != rd, rs1==x12, rd==x21, rs1_val == 0x75a3adb3254a9493
+// opcode: sha512sig0 ; op1:x12; dest:x21; op1val:0x75a3adb3254a9493;
+li x12, 0x75a3adb3254a9493
+sha512sig0 x21, x12
+sw x21, 0(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x21, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x11, rd==x11, rs1_val == 9223372036854775807,
+// opcode: sha512sig0 ; op1:x11; dest:x11; op1val:0x7fffffffffffffff;
+li x11, 0x7fffffffffffffff
+sha512sig0 x11, x11
+sw x11, 8(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x11, 0x0000000000000000)
+
+inst_2:
+// rs1==x24, rd==x23, rs1_val == 13835058055282163711,
+// opcode: sha512sig0 ; op1:x24; dest:x23; op1val:0xbfffffffffffffff;
+li x24, 0xbfffffffffffffff
+sha512sig0 x23, x24
+sw x23, 16(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x23, 0x0000000000000000)
+
+inst_3:
+// rs1==x10, rd==x26, rs1_val == 16140901064495857663,
+// opcode: sha512sig0 ; op1:x10; dest:x26; op1val:0xdfffffffffffffff;
+li x10, 0xdfffffffffffffff
+sha512sig0 x26, x10
+sw x26, 24(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x26, 0x0000000000000000)
+
+inst_4:
+// rs1==x18, rd==x28, rs1_val == 17293822569102704639,
+// opcode: sha512sig0 ; op1:x18; dest:x28; op1val:0xefffffffffffffff;
+li x18, 0xefffffffffffffff
+sha512sig0 x28, x18
+sw x28, 32(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x28, 0x0000000000000000)
+
+inst_5:
+// rs1==x7, rd==x9, rs1_val == 17870283321406128127,
+// opcode: sha512sig0 ; op1:x7; dest:x9; op1val:0xf7ffffffffffffff;
+li x7, 0xf7ffffffffffffff
+sha512sig0 x9, x7
+sw x9, 40(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x9, 0x0000000000000000)
+
+inst_6:
+// rs1==x29, rd==x5, rs1_val == 18158513697557839871,
+// opcode: sha512sig0 ; op1:x29; dest:x5; op1val:0xfbffffffffffffff;
+li x29, 0xfbffffffffffffff
+sha512sig0 x5, x29
+sw x5, 48(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x5, 0x0000000000000000)
+
+inst_7:
+// rs1==x1, rd==x0, rs1_val == 18302628885633695743,
+// opcode: sha512sig0 ; op1:x1; dest:x0; op1val:0xfdffffffffffffff;
+li x1, 0xfdffffffffffffff
+sha512sig0 x0, x1
+sw x0, 56(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x0, 0x0000000000000000)
+
+inst_8:
+// rs1==x8, rd==x20, rs1_val == 18374686479671623679,
+// opcode: sha512sig0 ; op1:x8; dest:x20; op1val:0xfeffffffffffffff;
+li x8, 0xfeffffffffffffff
+sha512sig0 x20, x8
+sw x20, 64(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x20, 0x0000000000000000)
+
+inst_9:
+// rs1==x31, rd==x27, rs1_val == 18410715276690587647,
+// opcode: sha512sig0 ; op1:x31; dest:x27; op1val:0xff7fffffffffffff;
+li x31, 0xff7fffffffffffff
+sha512sig0 x27, x31
+sw x27, 72(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x27, 0x0000000000000000)
+
+inst_10:
+// rs1==x3, rd==x14, rs1_val == 18428729675200069631,
+// opcode: sha512sig0 ; op1:x3; dest:x14; op1val:0xffbfffffffffffff;
+li x3, 0xffbfffffffffffff
+sha512sig0 x14, x3
+sw x14, 80(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x14, 0x0000000000000000)
+
+inst_11:
+// rs1==x14, rd==x10, rs1_val == 18437736874454810623,
+// opcode: sha512sig0 ; op1:x14; dest:x10; op1val:0xffdfffffffffffff;
+li x14, 0xffdfffffffffffff
+sha512sig0 x10, x14
+sw x10, 88(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x10, 0x0000000000000000)
+
+inst_12:
+// rs1==x23, rd==x19, rs1_val == 18442240474082181119,
+// opcode: sha512sig0 ; op1:x23; dest:x19; op1val:0xffefffffffffffff;
+li x23, 0xffefffffffffffff
+sha512sig0 x19, x23
+sw x19, 96(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x19, 0x0000000000000000)
+
+inst_13:
+// rs1==x15, rd==x3, rs1_val == 18444492273895866367,
+// opcode: sha512sig0 ; op1:x15; dest:x3; op1val:0xfff7ffffffffffff;
+li x15, 0xfff7ffffffffffff
+sha512sig0 x3, x15
+sw x3, 104(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x3, 0x0000000000000000)
+
+inst_14:
+// rs1==x6, rd==x16, rs1_val == 18445618173802708991,
+// opcode: sha512sig0 ; op1:x6; dest:x16; op1val:0xfffbffffffffffff;
+li x6, 0xfffbffffffffffff
+sha512sig0 x16, x6
+sw x16, 112(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x16, 0x0000000000000000)
+
+inst_15:
+// rs1==x20, rd==x1, rs1_val == 18446181123756130303,
+// opcode: sha512sig0 ; op1:x20; dest:x1; op1val:0xfffdffffffffffff;
+li x20, 0xfffdffffffffffff
+sha512sig0 x1, x20
+sw x1, 120(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x1, 0x0000000000000000)
+
+inst_16:
+// rs1==x25, rd==x22, rs1_val == 18446462598732840959,
+// opcode: sha512sig0 ; op1:x25; dest:x22; op1val:0xfffeffffffffffff;
+li x25, 0xfffeffffffffffff
+sha512sig0 x22, x25
+sw x22, 128(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x22, 0x0000000000000000)
+
+inst_17:
+// rs1==x27, rd==x8, rs1_val == 18446603336221196287,
+// opcode: sha512sig0 ; op1:x27; dest:x8; op1val:0xffff7fffffffffff;
+li x27, 0xffff7fffffffffff
+sha512sig0 x8, x27
+sw x8, 136(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x8, 0x0000000000000000)
+
+inst_18:
+// rs1==x9, rd==x6, rs1_val == 18446673704965373951,
+// opcode: sha512sig0 ; op1:x9; dest:x6; op1val:0xffffbfffffffffff;
+li x9, 0xffffbfffffffffff
+sha512sig0 x6, x9
+sw x6, 144(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x6, 0x0000000000000000)
+
+inst_19:
+// rs1==x19, rd==x4, rs1_val == 18446708889337462783,
+// opcode: sha512sig0 ; op1:x19; dest:x4; op1val:0xffffdfffffffffff;
+li x19, 0xffffdfffffffffff
+sha512sig0 x4, x19
+sw x4, 152(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x13, x4, 0x0000000000000000)
+
+inst_20:
+// rs1==x28, rd==x30, rs1_val == 18446726481523507199,
+// opcode: sha512sig0 ; op1:x28; dest:x30; op1val:0xffffefffffffffff;
+li x28, 0xffffefffffffffff
+sha512sig0 x30, x28
+sw x30, 160(x2)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x30, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_21:
+// rs1==x0, rd==x29, rs1_val == 18446735277616529407,
+// opcode: sha512sig0 ; op1:x0; dest:x29; op1val:0x0;
+li x0, 0x0
+sha512sig0 x29, x0
+sw x29, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x29, 0x0000000000000000)
+
+inst_22:
+// rs1==x13, rd==x7, rs1_val == 18446739675663040511,
+// opcode: sha512sig0 ; op1:x13; dest:x7; op1val:0xfffffbffffffffff;
+li x13, 0xfffffbffffffffff
+sha512sig0 x7, x13
+sw x7, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x7, 0x0000000000000000)
+
+inst_23:
+// rs1==x17, rd==x25, rs1_val == 18446741874686296063,
+// opcode: sha512sig0 ; op1:x17; dest:x25; op1val:0xfffffdffffffffff;
+li x17, 0xfffffdffffffffff
+sha512sig0 x25, x17
+sw x25, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x25, 0x0000000000000000)
+
+inst_24:
+// rs1==x4, rd==x12, rs1_val == 18446742974197923839,
+// opcode: sha512sig0 ; op1:x4; dest:x12; op1val:0xfffffeffffffffff;
+li x4, 0xfffffeffffffffff
+sha512sig0 x12, x4
+sw x12, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x12, 0x0000000000000000)
+
+inst_25:
+// rs1==x2, rd==x18, rs1_val == 18446743523953737727,
+// opcode: sha512sig0 ; op1:x2; dest:x18; op1val:0xffffff7fffffffff;
+li x2, 0xffffff7fffffffff
+sha512sig0 x18, x2
+sw x18, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x18, 0x0000000000000000)
+
+inst_26:
+// rs1==x30, rd==x13, rs1_val == 18446743798831644671,
+// opcode: sha512sig0 ; op1:x30; dest:x13; op1val:0xffffffbfffffffff;
+li x30, 0xffffffbfffffffff
+sha512sig0 x13, x30
+sw x13, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x13, 0x0000000000000000)
+
+inst_27:
+// rs1==x22, rd==x31, rs1_val == 18446743936270598143,
+// opcode: sha512sig0 ; op1:x22; dest:x31; op1val:0xffffffdfffffffff;
+li x22, 0xffffffdfffffffff
+sha512sig0 x31, x22
+sw x31, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x31, 0x0000000000000000)
+
+inst_28:
+// rs1==x5, rd==x17, rs1_val == 18446744004990074879,
+// opcode: sha512sig0 ; op1:x5; dest:x17; op1val:0xffffffefffffffff;
+li x5, 0xffffffefffffffff
+sha512sig0 x17, x5
+sw x17, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x17, 0x0000000000000000)
+
+inst_29:
+// rs1==x21, rd==x24, rs1_val == 18446744039349813247,
+// opcode: sha512sig0 ; op1:x21; dest:x24; op1val:0xfffffff7ffffffff;
+li x21, 0xfffffff7ffffffff
+sha512sig0 x24, x21
+sw x24, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x24, 0x0000000000000000)
+
+inst_30:
+// rs1==x16, rd==x2, rs1_val == 18446744056529682431,
+// opcode: sha512sig0 ; op1:x16; dest:x2; op1val:0xfffffffbffffffff;
+li x16, 0xfffffffbffffffff
+sha512sig0 x2, x16
+sw x2, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x2, 0x0000000000000000)
+
+inst_31:
+// rs1==x26, rd==x15, rs1_val == 18446744065119617023,
+// opcode: sha512sig0 ; op1:x26; dest:x15; op1val:0xfffffffdffffffff;
+li x26, 0xfffffffdffffffff
+sha512sig0 x15, x26
+sw x15, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x15, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sha512sig0 x11, x10
+sw x11, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sha512sig0 x11, x10
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sha512sig0 x11, x10
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sha512sig0 x11, x10
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sha512sig0 x11, x10
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sha512sig0 x11, x10
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sha512sig0 x11, x10
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sha512sig0 x11, x10
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sha512sig0 x11, x10
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sha512sig0 x11, x10
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sha512sig0 x11, x10
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sha512sig0 x11, x10
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sha512sig0 x11, x10
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sha512sig0 x11, x10
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sha512sig0 x11, x10
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sha512sig0 x11, x10
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sha512sig0 x11, x10
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sha512sig0 x11, x10
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sha512sig0 x11, x10
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sha512sig0 x11, x10
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sha512sig0 x11, x10
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sha512sig0 x11, x10
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sha512sig0 x11, x10
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sha512sig0 x11, x10
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sha512sig0 x11, x10
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sha512sig0 x11, x10
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sha512sig0 x11, x10
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sha512sig0 x11, x10
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sha512sig0 x11, x10
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sha512sig0 x11, x10
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sha512sig0 x11, x10
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sha512sig0 x11, x10
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sha512sig0 x11, x10
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sha512sig0 x11, x10
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sha512sig0 x11, x10
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sha512sig0 x11, x10
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sha512sig0 x11, x10
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sha512sig0 x11, x10
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sha512sig0 x11, x10
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sha512sig0 x11, x10
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sha512sig0 x11, x10
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sha512sig0 x11, x10
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sha512sig0 x11, x10
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sha512sig0 x11, x10
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sha512sig0 x11, x10
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sha512sig0 x11, x10
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sha512sig0 x11, x10
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sha512sig0 x11, x10
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sha512sig0 x11, x10
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sha512sig0 x11, x10
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sha512sig0 x11, x10
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sha512sig0 x11, x10
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sha512sig0 x11, x10
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sha512sig0 x11, x10
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sha512sig0 x11, x10
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sha512sig0 x11, x10
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sha512sig0 x11, x10
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sha512sig0 x11, x10
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sha512sig0 x11, x10
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sha512sig0 x11, x10
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sha512sig0 x11, x10
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sha512sig0 x11, x10
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sha512sig0 x11, x10
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sha512sig0 x11, x10
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sha512sig0 x11, x10
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sha512sig0 x11, x10
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sha512sig0 x11, x10
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sha512sig0 x11, x10
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sha512sig0 x11, x10
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sha512sig0 x11, x10
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sha512sig0 x11, x10
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sha512sig0 x11, x10
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sha512sig0 x11, x10
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sha512sig0 x11, x10
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sha512sig0 x11, x10
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sha512sig0 x11, x10
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sha512sig0 x11, x10
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sha512sig0 x11, x10
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sha512sig0 x11, x10
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sha512sig0 x11, x10
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sha512sig0 x11, x10
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sha512sig0 x11, x10
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sha512sig0 x11, x10
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sha512sig0 x11, x10
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sha512sig0 x11, x10
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sha512sig0 x11, x10
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sha512sig0 x11, x10
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sha512sig0 x11, x10
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sha512sig0 x11, x10
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sha512sig0 x11, x10
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sha512sig0 x11, x10
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sha512sig0 x11, x10
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sha512sig0 x11, x10
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sha512sig0 x11, x10
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sha512sig0 x11, x10
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sha512sig0 x11, x10
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sha512sig0 x11, x10
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sha512sig0 x11, x10
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sha512sig0 x11, x10
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sha512sig0 x11, x10
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sha512sig0 x11, x10
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sha512sig0 x11, x10
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sha512sig0 x11, x10
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sha512sig0 x11, x10
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sha512sig0 x11, x10
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sha512sig0 x11, x10
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sha512sig0 x11, x10
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sha512sig0 x11, x10
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sha512sig0 x11, x10
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sha512sig0 x11, x10
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sha512sig0 x11, x10
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sha512sig0 x11, x10
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sha512sig0 x11, x10
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sha512sig0 x11, x10
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sha512sig0 x11, x10
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sha512sig0 x11, x10
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18302628885633695743,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfdffffffffffffff;
+li x10, 0xfdffffffffffffff
+sha512sig0 x11, x10
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18446735277616529407,
+// opcode: sha512sig0 ; op1:x10; dest:x11; op1val:0xfffff7ffffffffff;
+li x10, 0xfffff7ffffffffff
+sha512sig0 x11, x10
+sw x11, 1024(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 21*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 129*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-rwp1.S
new file mode 100644
index 000000000..93a6a38a7
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha512sig0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sig0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sha512sig0 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sha512sig0 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sha512sig0 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sha512sig0 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sha512sig0 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sha512sig0 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sha512sig0 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sha512sig0 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sha512sig0 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sha512sig0 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sha512sig0 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sha512sig0 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sha512sig0 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sha512sig0 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sha512sig0 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sha512sig0 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sha512sig0 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sha512sig0 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sha512sig0 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sha512sig0 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sha512sig0 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sha512sig0 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sha512sig0 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sha512sig0 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sha512sig0 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sha512sig0 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sha512sig0 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sha512sig0 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sha512sig0 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sha512sig0 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sha512sig0 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sha512sig0 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sha512sig0 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sha512sig0 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sha512sig0 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sha512sig0 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sha512sig0 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sha512sig0 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sha512sig0 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sha512sig0 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sha512sig0 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sha512sig0 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sha512sig0 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sha512sig0 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sha512sig0 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sha512sig0 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sha512sig0 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sha512sig0 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sha512sig0 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sha512sig0 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sha512sig0 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sha512sig0 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sha512sig0 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sha512sig0 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sha512sig0 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sha512sig0 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sha512sig0 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sha512sig0 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sha512sig0 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sha512sig0 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sha512sig0 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sha512sig0 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sha512sig0 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sha512sig0 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sha512sig0 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sha512sig0 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sha512sig0 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sha512sig0 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sha512sig0 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sha512sig0 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sha512sig0 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sha512sig0 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sha512sig0 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sha512sig0 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sha512sig0 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sha512sig0 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sha512sig0 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sha512sig0 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sha512sig0 & the result back into xor
+// opcode: sha512sig0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sha512sig0 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sha512sig0 & the result back into not
+// opcode: sha512sig0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sha512sig0 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sha512sig0 & the result back into add
+// opcode: sha512sig0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sha512sig0 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-rwp2.S
new file mode 100644
index 000000000..2eea575e1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig0-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha512sig0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sig0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sha512sig0 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sha512sig0 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sha512sig0 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sha512sig0 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sha512sig0 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sha512sig0 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sha512sig0 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sha512sig0 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sha512sig0 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sha512sig0 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sha512sig0 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sha512sig0 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sha512sig0 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sha512sig0 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sha512sig0 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sha512sig0 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sha512sig0 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sha512sig0 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sha512sig0 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sha512sig0 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sha512sig0 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sha512sig0 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sha512sig0 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sha512sig0 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sha512sig0 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sha512sig0 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sha512sig0 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sha512sig0; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sha512sig0 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-01.S
new file mode 100644
index 000000000..200d8a8a1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sha512sig1 instruction of the RISC-V extension for the sha512sig1 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sha512sig1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sig1)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnh.*);def TEST_CASE_1=True;",sha512sig1)
+
+RVTEST_SIGBASE( x6,signature_x6_1)
+
+inst_0:
+// rs1 != rd, rs1==x24, rd==x9, rs1_val == 0x75a3adb3254a9493
+// opcode: sha512sig1 ; op1:x24; dest:x9; op1val:0x75a3adb3254a9493;
+li x24, 0x75a3adb3254a9493
+sha512sig1 x9, x24
+sw x9, 0(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x9, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x16, rd==x16, rs1_val == 9223372036854775807,
+// opcode: sha512sig1 ; op1:x16; dest:x16; op1val:0x7fffffffffffffff;
+li x16, 0x7fffffffffffffff
+sha512sig1 x16, x16
+sw x16, 8(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x16, 0x0000000000000000)
+
+inst_2:
+// rs1==x13, rd==x7, rs1_val == 13835058055282163711,
+// opcode: sha512sig1 ; op1:x13; dest:x7; op1val:0xbfffffffffffffff;
+li x13, 0xbfffffffffffffff
+sha512sig1 x7, x13
+sw x7, 16(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x7, 0x0000000000000000)
+
+inst_3:
+// rs1==x31, rd==x15, rs1_val == 16140901064495857663,
+// opcode: sha512sig1 ; op1:x31; dest:x15; op1val:0xdfffffffffffffff;
+li x31, 0xdfffffffffffffff
+sha512sig1 x15, x31
+sw x15, 24(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x15, 0x0000000000000000)
+
+inst_4:
+// rs1==x8, rd==x31, rs1_val == 17293822569102704639,
+// opcode: sha512sig1 ; op1:x8; dest:x31; op1val:0xefffffffffffffff;
+li x8, 0xefffffffffffffff
+sha512sig1 x31, x8
+sw x31, 32(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x31, 0x0000000000000000)
+
+inst_5:
+// rs1==x17, rd==x27, rs1_val == 17870283321406128127,
+// opcode: sha512sig1 ; op1:x17; dest:x27; op1val:0xf7ffffffffffffff;
+li x17, 0xf7ffffffffffffff
+sha512sig1 x27, x17
+sw x27, 40(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x27, 0x0000000000000000)
+
+inst_6:
+// rs1==x14, rd==x0, rs1_val == 18158513697557839871,
+// opcode: sha512sig1 ; op1:x14; dest:x0; op1val:0xfbffffffffffffff;
+li x14, 0xfbffffffffffffff
+sha512sig1 x0, x14
+sw x0, 48(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x0, 0x0000000000000000)
+
+inst_7:
+// rs1==x18, rd==x13, rs1_val == 18302628885633695743,
+// opcode: sha512sig1 ; op1:x18; dest:x13; op1val:0xfdffffffffffffff;
+li x18, 0xfdffffffffffffff
+sha512sig1 x13, x18
+sw x13, 56(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x13, 0x0000000000000000)
+
+inst_8:
+// rs1==x27, rd==x18, rs1_val == 18374686479671623679,
+// opcode: sha512sig1 ; op1:x27; dest:x18; op1val:0xfeffffffffffffff;
+li x27, 0xfeffffffffffffff
+sha512sig1 x18, x27
+sw x18, 64(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x18, 0x0000000000000000)
+
+inst_9:
+// rs1==x4, rd==x26, rs1_val == 18410715276690587647,
+// opcode: sha512sig1 ; op1:x4; dest:x26; op1val:0xff7fffffffffffff;
+li x4, 0xff7fffffffffffff
+sha512sig1 x26, x4
+sw x26, 72(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x26, 0x0000000000000000)
+
+inst_10:
+// rs1==x15, rd==x1, rs1_val == 18428729675200069631,
+// opcode: sha512sig1 ; op1:x15; dest:x1; op1val:0xffbfffffffffffff;
+li x15, 0xffbfffffffffffff
+sha512sig1 x1, x15
+sw x1, 80(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x1, 0x0000000000000000)
+
+inst_11:
+// rs1==x20, rd==x25, rs1_val == 18437736874454810623,
+// opcode: sha512sig1 ; op1:x20; dest:x25; op1val:0xffdfffffffffffff;
+li x20, 0xffdfffffffffffff
+sha512sig1 x25, x20
+sw x25, 88(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x25, 0x0000000000000000)
+
+inst_12:
+// rs1==x22, rd==x29, rs1_val == 18442240474082181119,
+// opcode: sha512sig1 ; op1:x22; dest:x29; op1val:0xffefffffffffffff;
+li x22, 0xffefffffffffffff
+sha512sig1 x29, x22
+sw x29, 96(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x29, 0x0000000000000000)
+
+inst_13:
+// rs1==x5, rd==x20, rs1_val == 18444492273895866367,
+// opcode: sha512sig1 ; op1:x5; dest:x20; op1val:0xfff7ffffffffffff;
+li x5, 0xfff7ffffffffffff
+sha512sig1 x20, x5
+sw x20, 104(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x20, 0x0000000000000000)
+
+inst_14:
+// rs1==x12, rd==x19, rs1_val == 18445618173802708991,
+// opcode: sha512sig1 ; op1:x12; dest:x19; op1val:0xfffbffffffffffff;
+li x12, 0xfffbffffffffffff
+sha512sig1 x19, x12
+sw x19, 112(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x19, 0x0000000000000000)
+
+inst_15:
+// rs1==x30, rd==x12, rs1_val == 18446181123756130303,
+// opcode: sha512sig1 ; op1:x30; dest:x12; op1val:0xfffdffffffffffff;
+li x30, 0xfffdffffffffffff
+sha512sig1 x12, x30
+sw x12, 120(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x12, 0x0000000000000000)
+
+inst_16:
+// rs1==x19, rd==x28, rs1_val == 18446462598732840959,
+// opcode: sha512sig1 ; op1:x19; dest:x28; op1val:0xfffeffffffffffff;
+li x19, 0xfffeffffffffffff
+sha512sig1 x28, x19
+sw x28, 128(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x28, 0x0000000000000000)
+
+inst_17:
+// rs1==x21, rd==x22, rs1_val == 18446603336221196287,
+// opcode: sha512sig1 ; op1:x21; dest:x22; op1val:0xffff7fffffffffff;
+li x21, 0xffff7fffffffffff
+sha512sig1 x22, x21
+sw x22, 136(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x22, 0x0000000000000000)
+
+inst_18:
+// rs1==x2, rd==x30, rs1_val == 18446673704965373951,
+// opcode: sha512sig1 ; op1:x2; dest:x30; op1val:0xffffbfffffffffff;
+li x2, 0xffffbfffffffffff
+sha512sig1 x30, x2
+sw x30, 144(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x30, 0x0000000000000000)
+
+inst_19:
+// rs1==x28, rd==x8, rs1_val == 18446708889337462783,
+// opcode: sha512sig1 ; op1:x28; dest:x8; op1val:0xffffdfffffffffff;
+li x28, 0xffffdfffffffffff
+sha512sig1 x8, x28
+sw x8, 152(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x8, 0x0000000000000000)
+
+inst_20:
+// rs1==x10, rd==x4, rs1_val == 18446726481523507199,
+// opcode: sha512sig1 ; op1:x10; dest:x4; op1val:0xffffefffffffffff;
+li x10, 0xffffefffffffffff
+sha512sig1 x4, x10
+sw x4, 160(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x4, 0x0000000000000000)
+
+inst_21:
+// rs1==x3, rd==x14, rs1_val == 18446735277616529407,
+// opcode: sha512sig1 ; op1:x3; dest:x14; op1val:0xfffff7ffffffffff;
+li x3, 0xfffff7ffffffffff
+sha512sig1 x14, x3
+sw x14, 168(x6)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x14, 0x0000000000000000)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_22:
+// rs1==x9, rd==x11, rs1_val == 18446739675663040511,
+// opcode: sha512sig1 ; op1:x9; dest:x11; op1val:0xfffffbffffffffff;
+li x9, 0xfffffbffffffffff
+sha512sig1 x11, x9
+sw x11, 0(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_23:
+// rs1==x6, rd==x21, rs1_val == 18446741874686296063,
+// opcode: sha512sig1 ; op1:x6; dest:x21; op1val:0xfffffdffffffffff;
+li x6, 0xfffffdffffffffff
+sha512sig1 x21, x6
+sw x21, 8(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x21, 0x0000000000000000)
+
+inst_24:
+// rs1==x26, rd==x5, rs1_val == 18446742974197923839,
+// opcode: sha512sig1 ; op1:x26; dest:x5; op1val:0xfffffeffffffffff;
+li x26, 0xfffffeffffffffff
+sha512sig1 x5, x26
+sw x5, 16(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x5, 0x0000000000000000)
+
+inst_25:
+// rs1==x11, rd==x2, rs1_val == 18446743523953737727,
+// opcode: sha512sig1 ; op1:x11; dest:x2; op1val:0xffffff7fffffffff;
+li x11, 0xffffff7fffffffff
+sha512sig1 x2, x11
+sw x2, 24(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x2, 0x0000000000000000)
+
+inst_26:
+// rs1==x1, rd==x24, rs1_val == 18446743798831644671,
+// opcode: sha512sig1 ; op1:x1; dest:x24; op1val:0xffffffbfffffffff;
+li x1, 0xffffffbfffffffff
+sha512sig1 x24, x1
+sw x24, 32(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x24, 0x0000000000000000)
+
+inst_27:
+// rs1==x0, rd==x17, rs1_val == 18446743936270598143,
+// opcode: sha512sig1 ; op1:x0; dest:x17; op1val:0x0;
+li x0, 0x0
+sha512sig1 x17, x0
+sw x17, 40(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x17, 0x0000000000000000)
+
+inst_28:
+// rs1==x7, rd==x10, rs1_val == 18446744004990074879,
+// opcode: sha512sig1 ; op1:x7; dest:x10; op1val:0xffffffefffffffff;
+li x7, 0xffffffefffffffff
+sha512sig1 x10, x7
+sw x10, 48(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x10, 0x0000000000000000)
+
+inst_29:
+// rs1==x23, rd==x3, rs1_val == 18446744039349813247,
+// opcode: sha512sig1 ; op1:x23; dest:x3; op1val:0xfffffff7ffffffff;
+li x23, 0xfffffff7ffffffff
+sha512sig1 x3, x23
+sw x3, 56(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x3, 0x0000000000000000)
+
+inst_30:
+// rs1==x25, rd==x23, rs1_val == 18446744056529682431,
+// opcode: sha512sig1 ; op1:x25; dest:x23; op1val:0xfffffffbffffffff;
+li x25, 0xfffffffbffffffff
+sha512sig1 x23, x25
+sw x23, 64(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x23, 0x0000000000000000)
+
+inst_31:
+// rs1==x29, rd==x6, rs1_val == 18446744065119617023,
+// opcode: sha512sig1 ; op1:x29; dest:x6; op1val:0xfffffffdffffffff;
+li x29, 0xfffffffdffffffff
+sha512sig1 x6, x29
+sw x6, 72(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x6, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sha512sig1 x11, x10
+sw x11, 80(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sha512sig1 x11, x10
+sw x11, 88(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sha512sig1 x11, x10
+sw x11, 96(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sha512sig1 x11, x10
+sw x11, 104(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sha512sig1 x11, x10
+sw x11, 112(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sha512sig1 x11, x10
+sw x11, 120(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sha512sig1 x11, x10
+sw x11, 128(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sha512sig1 x11, x10
+sw x11, 136(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sha512sig1 x11, x10
+sw x11, 144(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sha512sig1 x11, x10
+sw x11, 152(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sha512sig1 x11, x10
+sw x11, 160(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sha512sig1 x11, x10
+sw x11, 168(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sha512sig1 x11, x10
+sw x11, 176(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sha512sig1 x11, x10
+sw x11, 184(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sha512sig1 x11, x10
+sw x11, 192(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sha512sig1 x11, x10
+sw x11, 200(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sha512sig1 x11, x10
+sw x11, 208(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sha512sig1 x11, x10
+sw x11, 216(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sha512sig1 x11, x10
+sw x11, 224(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sha512sig1 x11, x10
+sw x11, 232(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sha512sig1 x11, x10
+sw x11, 240(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sha512sig1 x11, x10
+sw x11, 248(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sha512sig1 x11, x10
+sw x11, 256(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sha512sig1 x11, x10
+sw x11, 264(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sha512sig1 x11, x10
+sw x11, 272(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sha512sig1 x11, x10
+sw x11, 280(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sha512sig1 x11, x10
+sw x11, 288(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sha512sig1 x11, x10
+sw x11, 296(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sha512sig1 x11, x10
+sw x11, 304(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sha512sig1 x11, x10
+sw x11, 312(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sha512sig1 x11, x10
+sw x11, 320(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sha512sig1 x11, x10
+sw x11, 328(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sha512sig1 x11, x10
+sw x11, 336(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sha512sig1 x11, x10
+sw x11, 344(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sha512sig1 x11, x10
+sw x11, 352(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sha512sig1 x11, x10
+sw x11, 360(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sha512sig1 x11, x10
+sw x11, 368(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sha512sig1 x11, x10
+sw x11, 376(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sha512sig1 x11, x10
+sw x11, 384(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sha512sig1 x11, x10
+sw x11, 392(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sha512sig1 x11, x10
+sw x11, 400(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sha512sig1 x11, x10
+sw x11, 408(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sha512sig1 x11, x10
+sw x11, 416(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sha512sig1 x11, x10
+sw x11, 424(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sha512sig1 x11, x10
+sw x11, 432(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sha512sig1 x11, x10
+sw x11, 440(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sha512sig1 x11, x10
+sw x11, 448(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sha512sig1 x11, x10
+sw x11, 456(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sha512sig1 x11, x10
+sw x11, 464(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sha512sig1 x11, x10
+sw x11, 472(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sha512sig1 x11, x10
+sw x11, 480(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sha512sig1 x11, x10
+sw x11, 488(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sha512sig1 x11, x10
+sw x11, 496(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sha512sig1 x11, x10
+sw x11, 504(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sha512sig1 x11, x10
+sw x11, 512(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sha512sig1 x11, x10
+sw x11, 520(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sha512sig1 x11, x10
+sw x11, 528(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sha512sig1 x11, x10
+sw x11, 536(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sha512sig1 x11, x10
+sw x11, 544(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sha512sig1 x11, x10
+sw x11, 552(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sha512sig1 x11, x10
+sw x11, 560(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sha512sig1 x11, x10
+sw x11, 568(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sha512sig1 x11, x10
+sw x11, 576(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sha512sig1 x11, x10
+sw x11, 584(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sha512sig1 x11, x10
+sw x11, 592(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sha512sig1 x11, x10
+sw x11, 600(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sha512sig1 x11, x10
+sw x11, 608(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sha512sig1 x11, x10
+sw x11, 616(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sha512sig1 x11, x10
+sw x11, 624(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sha512sig1 x11, x10
+sw x11, 632(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sha512sig1 x11, x10
+sw x11, 640(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sha512sig1 x11, x10
+sw x11, 648(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sha512sig1 x11, x10
+sw x11, 656(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sha512sig1 x11, x10
+sw x11, 664(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sha512sig1 x11, x10
+sw x11, 672(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sha512sig1 x11, x10
+sw x11, 680(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sha512sig1 x11, x10
+sw x11, 688(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sha512sig1 x11, x10
+sw x11, 696(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sha512sig1 x11, x10
+sw x11, 704(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sha512sig1 x11, x10
+sw x11, 712(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sha512sig1 x11, x10
+sw x11, 720(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sha512sig1 x11, x10
+sw x11, 728(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sha512sig1 x11, x10
+sw x11, 736(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sha512sig1 x11, x10
+sw x11, 744(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sha512sig1 x11, x10
+sw x11, 752(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sha512sig1 x11, x10
+sw x11, 760(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sha512sig1 x11, x10
+sw x11, 768(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sha512sig1 x11, x10
+sw x11, 776(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sha512sig1 x11, x10
+sw x11, 784(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sha512sig1 x11, x10
+sw x11, 792(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sha512sig1 x11, x10
+sw x11, 800(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sha512sig1 x11, x10
+sw x11, 808(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sha512sig1 x11, x10
+sw x11, 816(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sha512sig1 x11, x10
+sw x11, 824(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sha512sig1 x11, x10
+sw x11, 832(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sha512sig1 x11, x10
+sw x11, 840(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sha512sig1 x11, x10
+sw x11, 848(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sha512sig1 x11, x10
+sw x11, 856(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sha512sig1 x11, x10
+sw x11, 864(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sha512sig1 x11, x10
+sw x11, 872(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sha512sig1 x11, x10
+sw x11, 880(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sha512sig1 x11, x10
+sw x11, 888(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sha512sig1 x11, x10
+sw x11, 896(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sha512sig1 x11, x10
+sw x11, 904(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sha512sig1 x11, x10
+sw x11, 912(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sha512sig1 x11, x10
+sw x11, 920(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sha512sig1 x11, x10
+sw x11, 928(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sha512sig1 x11, x10
+sw x11, 936(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sha512sig1 x11, x10
+sw x11, 944(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sha512sig1 x11, x10
+sw x11, 952(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sha512sig1 x11, x10
+sw x11, 960(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sha512sig1 x11, x10
+sw x11, 968(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sha512sig1 x11, x10
+sw x11, 976(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sha512sig1 x11, x10
+sw x11, 984(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sha512sig1 x11, x10
+sw x11, 992(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sha512sig1 x11, x10
+sw x11, 1000(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18158513697557839871,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xfbffffffffffffff;
+li x10, 0xfbffffffffffffff
+sha512sig1 x11, x10
+sw x11, 1008(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18446743936270598143,
+// opcode: sha512sig1 ; op1:x10; dest:x11; op1val:0xffffffdfffffffff;
+li x10, 0xffffffdfffffffff
+sha512sig1 x11, x10
+sw x11, 1016(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x8, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x6_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_1:
+ .fill 22*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 128*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-rwp1.S
new file mode 100644
index 000000000..e5e7ee37a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha512sig1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sig1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sha512sig1 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sha512sig1 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sha512sig1 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sha512sig1 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sha512sig1 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sha512sig1 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sha512sig1 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sha512sig1 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sha512sig1 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sha512sig1 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sha512sig1 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sha512sig1 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sha512sig1 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sha512sig1 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sha512sig1 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sha512sig1 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sha512sig1 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sha512sig1 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sha512sig1 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sha512sig1 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sha512sig1 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sha512sig1 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sha512sig1 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sha512sig1 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sha512sig1 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sha512sig1 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sha512sig1 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sha512sig1 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sha512sig1 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sha512sig1 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sha512sig1 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sha512sig1 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sha512sig1 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sha512sig1 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sha512sig1 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sha512sig1 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sha512sig1 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sha512sig1 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sha512sig1 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sha512sig1 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sha512sig1 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sha512sig1 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sha512sig1 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sha512sig1 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sha512sig1 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sha512sig1 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sha512sig1 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sha512sig1 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sha512sig1 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sha512sig1 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sha512sig1 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sha512sig1 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sha512sig1 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sha512sig1 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sha512sig1 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sha512sig1 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sha512sig1 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sha512sig1 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sha512sig1 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sha512sig1 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sha512sig1 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sha512sig1 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sha512sig1 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sha512sig1 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sha512sig1 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sha512sig1 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sha512sig1 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sha512sig1 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sha512sig1 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sha512sig1 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sha512sig1 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sha512sig1 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sha512sig1 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sha512sig1 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sha512sig1 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sha512sig1 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sha512sig1 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sha512sig1 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sha512sig1 & the result back into xor
+// opcode: sha512sig1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sha512sig1 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sha512sig1 & the result back into not
+// opcode: sha512sig1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sha512sig1 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sha512sig1 & the result back into add
+// opcode: sha512sig1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sha512sig1 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-rwp2.S
new file mode 100644
index 000000000..b7bfa3a9e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sig1-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha512sig1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sig1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sha512sig1 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sha512sig1 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sha512sig1 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sha512sig1 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sha512sig1 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sha512sig1 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sha512sig1 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sha512sig1 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sha512sig1 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sha512sig1 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sha512sig1 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sha512sig1 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sha512sig1 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sha512sig1 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sha512sig1 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sha512sig1 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sha512sig1 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sha512sig1 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sha512sig1 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sha512sig1 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sha512sig1 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sha512sig1 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sha512sig1 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sha512sig1 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sha512sig1 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sha512sig1 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sha512sig1 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sha512sig1; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sha512sig1 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-01.S
new file mode 100644
index 000000000..6c75a3a32
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sha512sum0 instruction of the RISC-V extension for the sha512sum0 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sha512sum0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sum0)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnh.*);def TEST_CASE_1=True;",sha512sum0)
+
+RVTEST_SIGBASE( x9,signature_x9_1)
+
+inst_0:
+// rs1 != rd, rs1==x16, rd==x11, rs1_val == 0x75a3adb3254a9493
+// opcode: sha512sum0 ; op1:x16; dest:x11; op1val:0x75a3adb3254a9493;
+li x16, 0x75a3adb3254a9493
+sha512sum0 x11, x16
+sw x11, 0(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x11, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x10, rd==x10, rs1_val == 9223372036854775807,
+// opcode: sha512sum0 ; op1:x10; dest:x10; op1val:0x7fffffffffffffff;
+li x10, 0x7fffffffffffffff
+sha512sum0 x10, x10
+sw x10, 8(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x10, 0x0000000000000000)
+
+inst_2:
+// rs1==x11, rd==x18, rs1_val == 13835058055282163711,
+// opcode: sha512sum0 ; op1:x11; dest:x18; op1val:0xbfffffffffffffff;
+li x11, 0xbfffffffffffffff
+sha512sum0 x18, x11
+sw x18, 16(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x18, 0x0000000000000000)
+
+inst_3:
+// rs1==x13, rd==x19, rs1_val == 16140901064495857663,
+// opcode: sha512sum0 ; op1:x13; dest:x19; op1val:0xdfffffffffffffff;
+li x13, 0xdfffffffffffffff
+sha512sum0 x19, x13
+sw x19, 24(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x19, 0x0000000000000000)
+
+inst_4:
+// rs1==x17, rd==x21, rs1_val == 17293822569102704639,
+// opcode: sha512sum0 ; op1:x17; dest:x21; op1val:0xefffffffffffffff;
+li x17, 0xefffffffffffffff
+sha512sum0 x21, x17
+sw x21, 32(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x21, 0x0000000000000000)
+
+inst_5:
+// rs1==x14, rd==x31, rs1_val == 17870283321406128127,
+// opcode: sha512sum0 ; op1:x14; dest:x31; op1val:0xf7ffffffffffffff;
+li x14, 0xf7ffffffffffffff
+sha512sum0 x31, x14
+sw x31, 40(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x31, 0x0000000000000000)
+
+inst_6:
+// rs1==x0, rd==x3, rs1_val == 18158513697557839871,
+// opcode: sha512sum0 ; op1:x0; dest:x3; op1val:0x0;
+li x0, 0x0
+sha512sum0 x3, x0
+sw x3, 48(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x3, 0x0000000000000000)
+
+inst_7:
+// rs1==x28, rd==x20, rs1_val == 18302628885633695743,
+// opcode: sha512sum0 ; op1:x28; dest:x20; op1val:0xfdffffffffffffff;
+li x28, 0xfdffffffffffffff
+sha512sum0 x20, x28
+sw x20, 56(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x20, 0x0000000000000000)
+
+inst_8:
+// rs1==x31, rd==x0, rs1_val == 18374686479671623679,
+// opcode: sha512sum0 ; op1:x31; dest:x0; op1val:0xfeffffffffffffff;
+li x31, 0xfeffffffffffffff
+sha512sum0 x0, x31
+sw x0, 64(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x0, 0x0000000000000000)
+
+inst_9:
+// rs1==x4, rd==x26, rs1_val == 18410715276690587647,
+// opcode: sha512sum0 ; op1:x4; dest:x26; op1val:0xff7fffffffffffff;
+li x4, 0xff7fffffffffffff
+sha512sum0 x26, x4
+sw x26, 72(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x26, 0x0000000000000000)
+
+inst_10:
+// rs1==x2, rd==x16, rs1_val == 18428729675200069631,
+// opcode: sha512sum0 ; op1:x2; dest:x16; op1val:0xffbfffffffffffff;
+li x2, 0xffbfffffffffffff
+sha512sum0 x16, x2
+sw x16, 80(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x16, 0x0000000000000000)
+
+inst_11:
+// rs1==x1, rd==x8, rs1_val == 18437736874454810623,
+// opcode: sha512sum0 ; op1:x1; dest:x8; op1val:0xffdfffffffffffff;
+li x1, 0xffdfffffffffffff
+sha512sum0 x8, x1
+sw x8, 88(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x8, 0x0000000000000000)
+
+inst_12:
+// rs1==x21, rd==x5, rs1_val == 18442240474082181119,
+// opcode: sha512sum0 ; op1:x21; dest:x5; op1val:0xffefffffffffffff;
+li x21, 0xffefffffffffffff
+sha512sum0 x5, x21
+sw x5, 96(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x5, 0x0000000000000000)
+
+inst_13:
+// rs1==x25, rd==x23, rs1_val == 18444492273895866367,
+// opcode: sha512sum0 ; op1:x25; dest:x23; op1val:0xfff7ffffffffffff;
+li x25, 0xfff7ffffffffffff
+sha512sum0 x23, x25
+sw x23, 104(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x23, 0x0000000000000000)
+
+inst_14:
+// rs1==x27, rd==x12, rs1_val == 18445618173802708991,
+// opcode: sha512sum0 ; op1:x27; dest:x12; op1val:0xfffbffffffffffff;
+li x27, 0xfffbffffffffffff
+sha512sum0 x12, x27
+sw x12, 112(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x12, 0x0000000000000000)
+
+inst_15:
+// rs1==x20, rd==x7, rs1_val == 18446181123756130303,
+// opcode: sha512sum0 ; op1:x20; dest:x7; op1val:0xfffdffffffffffff;
+li x20, 0xfffdffffffffffff
+sha512sum0 x7, x20
+sw x7, 120(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x7, 0x0000000000000000)
+
+inst_16:
+// rs1==x18, rd==x6, rs1_val == 18446462598732840959,
+// opcode: sha512sum0 ; op1:x18; dest:x6; op1val:0xfffeffffffffffff;
+li x18, 0xfffeffffffffffff
+sha512sum0 x6, x18
+sw x6, 128(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x6, 0x0000000000000000)
+
+inst_17:
+// rs1==x24, rd==x29, rs1_val == 18446603336221196287,
+// opcode: sha512sum0 ; op1:x24; dest:x29; op1val:0xffff7fffffffffff;
+li x24, 0xffff7fffffffffff
+sha512sum0 x29, x24
+sw x29, 136(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x15, x29, 0x0000000000000000)
+
+inst_18:
+// rs1==x22, rd==x25, rs1_val == 18446673704965373951,
+// opcode: sha512sum0 ; op1:x22; dest:x25; op1val:0xffffbfffffffffff;
+li x22, 0xffffbfffffffffff
+sha512sum0 x25, x22
+sw x25, 144(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x25, 0x0000000000000000)
+RVTEST_SIGBASE( x16,signature_x16_0)
+
+inst_19:
+// rs1==x7, rd==x28, rs1_val == 18446708889337462783,
+// opcode: sha512sum0 ; op1:x7; dest:x28; op1val:0xffffdfffffffffff;
+li x7, 0xffffdfffffffffff
+sha512sum0 x28, x7
+sw x28, 0(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x28, 0x0000000000000000)
+
+inst_20:
+// rs1==x8, rd==x9, rs1_val == 18446726481523507199,
+// opcode: sha512sum0 ; op1:x8; dest:x9; op1val:0xffffefffffffffff;
+li x8, 0xffffefffffffffff
+sha512sum0 x9, x8
+sw x9, 8(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x9, 0x0000000000000000)
+
+inst_21:
+// rs1==x26, rd==x22, rs1_val == 18446735277616529407,
+// opcode: sha512sum0 ; op1:x26; dest:x22; op1val:0xfffff7ffffffffff;
+li x26, 0xfffff7ffffffffff
+sha512sum0 x22, x26
+sw x22, 16(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x22, 0x0000000000000000)
+
+inst_22:
+// rs1==x12, rd==x14, rs1_val == 18446739675663040511,
+// opcode: sha512sum0 ; op1:x12; dest:x14; op1val:0xfffffbffffffffff;
+li x12, 0xfffffbffffffffff
+sha512sum0 x14, x12
+sw x14, 24(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x14, 0x0000000000000000)
+
+inst_23:
+// rs1==x3, rd==x30, rs1_val == 18446741874686296063,
+// opcode: sha512sum0 ; op1:x3; dest:x30; op1val:0xfffffdffffffffff;
+li x3, 0xfffffdffffffffff
+sha512sum0 x30, x3
+sw x30, 32(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x30, 0x0000000000000000)
+
+inst_24:
+// rs1==x9, rd==x4, rs1_val == 18446742974197923839,
+// opcode: sha512sum0 ; op1:x9; dest:x4; op1val:0xfffffeffffffffff;
+li x9, 0xfffffeffffffffff
+sha512sum0 x4, x9
+sw x4, 40(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x4, 0x0000000000000000)
+
+inst_25:
+// rs1==x6, rd==x2, rs1_val == 18446743523953737727,
+// opcode: sha512sum0 ; op1:x6; dest:x2; op1val:0xffffff7fffffffff;
+li x6, 0xffffff7fffffffff
+sha512sum0 x2, x6
+sw x2, 48(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x2, 0x0000000000000000)
+
+inst_26:
+// rs1==x29, rd==x1, rs1_val == 18446743798831644671,
+// opcode: sha512sum0 ; op1:x29; dest:x1; op1val:0xffffffbfffffffff;
+li x29, 0xffffffbfffffffff
+sha512sum0 x1, x29
+sw x1, 56(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x1, 0x0000000000000000)
+
+inst_27:
+// rs1==x5, rd==x27, rs1_val == 18446743936270598143,
+// opcode: sha512sum0 ; op1:x5; dest:x27; op1val:0xffffffdfffffffff;
+li x5, 0xffffffdfffffffff
+sha512sum0 x27, x5
+sw x27, 64(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x27, 0x0000000000000000)
+
+inst_28:
+// rs1==x19, rd==x17, rs1_val == 18446744004990074879,
+// opcode: sha512sum0 ; op1:x19; dest:x17; op1val:0xffffffefffffffff;
+li x19, 0xffffffefffffffff
+sha512sum0 x17, x19
+sw x17, 72(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x17, 0x0000000000000000)
+
+inst_29:
+// rs1==x30, rd==x15, rs1_val == 18446744039349813247,
+// opcode: sha512sum0 ; op1:x30; dest:x15; op1val:0xfffffff7ffffffff;
+li x30, 0xfffffff7ffffffff
+sha512sum0 x15, x30
+sw x15, 80(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x15, 0x0000000000000000)
+
+inst_30:
+// rs1==x15, rd==x24, rs1_val == 18446744056529682431,
+// opcode: sha512sum0 ; op1:x15; dest:x24; op1val:0xfffffffbffffffff;
+li x15, 0xfffffffbffffffff
+sha512sum0 x24, x15
+sw x24, 88(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x24, 0x0000000000000000)
+
+inst_31:
+// rs1==x23, rd==x13, rs1_val == 18446744065119617023,
+// opcode: sha512sum0 ; op1:x23; dest:x13; op1val:0xfffffffdffffffff;
+li x23, 0xfffffffdffffffff
+sha512sum0 x13, x23
+sw x13, 96(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x13, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sha512sum0 x11, x10
+sw x11, 104(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sha512sum0 x11, x10
+sw x11, 112(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sha512sum0 x11, x10
+sw x11, 120(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sha512sum0 x11, x10
+sw x11, 128(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sha512sum0 x11, x10
+sw x11, 136(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sha512sum0 x11, x10
+sw x11, 144(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sha512sum0 x11, x10
+sw x11, 152(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sha512sum0 x11, x10
+sw x11, 160(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sha512sum0 x11, x10
+sw x11, 168(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sha512sum0 x11, x10
+sw x11, 176(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sha512sum0 x11, x10
+sw x11, 184(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sha512sum0 x11, x10
+sw x11, 192(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sha512sum0 x11, x10
+sw x11, 200(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sha512sum0 x11, x10
+sw x11, 208(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sha512sum0 x11, x10
+sw x11, 216(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sha512sum0 x11, x10
+sw x11, 224(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sha512sum0 x11, x10
+sw x11, 232(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sha512sum0 x11, x10
+sw x11, 240(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sha512sum0 x11, x10
+sw x11, 248(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sha512sum0 x11, x10
+sw x11, 256(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sha512sum0 x11, x10
+sw x11, 264(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sha512sum0 x11, x10
+sw x11, 272(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sha512sum0 x11, x10
+sw x11, 280(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sha512sum0 x11, x10
+sw x11, 288(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sha512sum0 x11, x10
+sw x11, 296(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sha512sum0 x11, x10
+sw x11, 304(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sha512sum0 x11, x10
+sw x11, 312(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sha512sum0 x11, x10
+sw x11, 320(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sha512sum0 x11, x10
+sw x11, 328(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sha512sum0 x11, x10
+sw x11, 336(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sha512sum0 x11, x10
+sw x11, 344(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sha512sum0 x11, x10
+sw x11, 352(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sha512sum0 x11, x10
+sw x11, 360(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sha512sum0 x11, x10
+sw x11, 368(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sha512sum0 x11, x10
+sw x11, 376(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sha512sum0 x11, x10
+sw x11, 384(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sha512sum0 x11, x10
+sw x11, 392(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sha512sum0 x11, x10
+sw x11, 400(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sha512sum0 x11, x10
+sw x11, 408(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sha512sum0 x11, x10
+sw x11, 416(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sha512sum0 x11, x10
+sw x11, 424(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sha512sum0 x11, x10
+sw x11, 432(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sha512sum0 x11, x10
+sw x11, 440(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sha512sum0 x11, x10
+sw x11, 448(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sha512sum0 x11, x10
+sw x11, 456(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sha512sum0 x11, x10
+sw x11, 464(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sha512sum0 x11, x10
+sw x11, 472(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sha512sum0 x11, x10
+sw x11, 480(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sha512sum0 x11, x10
+sw x11, 488(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sha512sum0 x11, x10
+sw x11, 496(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sha512sum0 x11, x10
+sw x11, 504(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sha512sum0 x11, x10
+sw x11, 512(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sha512sum0 x11, x10
+sw x11, 520(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sha512sum0 x11, x10
+sw x11, 528(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sha512sum0 x11, x10
+sw x11, 536(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sha512sum0 x11, x10
+sw x11, 544(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sha512sum0 x11, x10
+sw x11, 552(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sha512sum0 x11, x10
+sw x11, 560(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sha512sum0 x11, x10
+sw x11, 568(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sha512sum0 x11, x10
+sw x11, 576(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sha512sum0 x11, x10
+sw x11, 584(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sha512sum0 x11, x10
+sw x11, 592(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sha512sum0 x11, x10
+sw x11, 600(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sha512sum0 x11, x10
+sw x11, 608(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sha512sum0 x11, x10
+sw x11, 616(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sha512sum0 x11, x10
+sw x11, 624(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sha512sum0 x11, x10
+sw x11, 632(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sha512sum0 x11, x10
+sw x11, 640(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sha512sum0 x11, x10
+sw x11, 648(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sha512sum0 x11, x10
+sw x11, 656(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sha512sum0 x11, x10
+sw x11, 664(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sha512sum0 x11, x10
+sw x11, 672(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sha512sum0 x11, x10
+sw x11, 680(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sha512sum0 x11, x10
+sw x11, 688(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sha512sum0 x11, x10
+sw x11, 696(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sha512sum0 x11, x10
+sw x11, 704(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sha512sum0 x11, x10
+sw x11, 712(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sha512sum0 x11, x10
+sw x11, 720(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sha512sum0 x11, x10
+sw x11, 728(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sha512sum0 x11, x10
+sw x11, 736(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sha512sum0 x11, x10
+sw x11, 744(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sha512sum0 x11, x10
+sw x11, 752(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sha512sum0 x11, x10
+sw x11, 760(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sha512sum0 x11, x10
+sw x11, 768(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sha512sum0 x11, x10
+sw x11, 776(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sha512sum0 x11, x10
+sw x11, 784(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sha512sum0 x11, x10
+sw x11, 792(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sha512sum0 x11, x10
+sw x11, 800(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sha512sum0 x11, x10
+sw x11, 808(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sha512sum0 x11, x10
+sw x11, 816(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sha512sum0 x11, x10
+sw x11, 824(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sha512sum0 x11, x10
+sw x11, 832(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sha512sum0 x11, x10
+sw x11, 840(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sha512sum0 x11, x10
+sw x11, 848(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sha512sum0 x11, x10
+sw x11, 856(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sha512sum0 x11, x10
+sw x11, 864(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sha512sum0 x11, x10
+sw x11, 872(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sha512sum0 x11, x10
+sw x11, 880(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sha512sum0 x11, x10
+sw x11, 888(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sha512sum0 x11, x10
+sw x11, 896(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sha512sum0 x11, x10
+sw x11, 904(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sha512sum0 x11, x10
+sw x11, 912(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sha512sum0 x11, x10
+sw x11, 920(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sha512sum0 x11, x10
+sw x11, 928(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sha512sum0 x11, x10
+sw x11, 936(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sha512sum0 x11, x10
+sw x11, 944(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sha512sum0 x11, x10
+sw x11, 952(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sha512sum0 x11, x10
+sw x11, 960(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sha512sum0 x11, x10
+sw x11, 968(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sha512sum0 x11, x10
+sw x11, 976(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sha512sum0 x11, x10
+sw x11, 984(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sha512sum0 x11, x10
+sw x11, 992(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sha512sum0 x11, x10
+sw x11, 1000(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sha512sum0 x11, x10
+sw x11, 1008(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sha512sum0 x11, x10
+sw x11, 1016(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sha512sum0 x11, x10
+sw x11, 1024(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18158513697557839871,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfbffffffffffffff;
+li x10, 0xfbffffffffffffff
+sha512sum0 x11, x10
+sw x11, 1032(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18374686479671623679,
+// opcode: sha512sum0 ; op1:x10; dest:x11; op1val:0xfeffffffffffffff;
+li x10, 0xfeffffffffffffff
+sha512sum0 x11, x10
+sw x11, 1040(x16)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x9_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x9_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+
+signature_x16_0:
+ .fill 131*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-rwp1.S
new file mode 100644
index 000000000..4d71aa33d
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha512sum0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sum0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sha512sum0 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sha512sum0 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sha512sum0 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sha512sum0 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sha512sum0 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sha512sum0 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sha512sum0 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sha512sum0 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sha512sum0 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sha512sum0 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sha512sum0 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sha512sum0 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sha512sum0 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sha512sum0 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sha512sum0 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sha512sum0 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sha512sum0 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sha512sum0 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sha512sum0 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sha512sum0 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sha512sum0 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sha512sum0 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sha512sum0 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sha512sum0 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sha512sum0 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sha512sum0 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sha512sum0 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sha512sum0 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sha512sum0 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sha512sum0 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sha512sum0 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sha512sum0 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sha512sum0 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sha512sum0 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sha512sum0 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sha512sum0 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sha512sum0 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sha512sum0 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sha512sum0 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sha512sum0 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sha512sum0 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sha512sum0 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sha512sum0 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sha512sum0 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sha512sum0 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sha512sum0 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sha512sum0 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sha512sum0 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sha512sum0 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sha512sum0 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sha512sum0 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sha512sum0 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sha512sum0 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sha512sum0 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sha512sum0 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sha512sum0 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sha512sum0 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sha512sum0 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sha512sum0 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sha512sum0 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sha512sum0 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sha512sum0 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sha512sum0 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sha512sum0 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sha512sum0 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sha512sum0 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sha512sum0 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sha512sum0 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sha512sum0 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sha512sum0 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sha512sum0 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sha512sum0 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sha512sum0 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sha512sum0 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sha512sum0 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sha512sum0 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sha512sum0 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sha512sum0 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sha512sum0 & the result back into xor
+// opcode: sha512sum0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sha512sum0 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sha512sum0 & the result back into not
+// opcode: sha512sum0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sha512sum0 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sha512sum0 & the result back into add
+// opcode: sha512sum0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sha512sum0 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-rwp2.S
new file mode 100644
index 000000000..e1d7d2bc3
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum0-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha512sum0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sum0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sha512sum0 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sha512sum0 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sha512sum0 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sha512sum0 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sha512sum0 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sha512sum0 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sha512sum0 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sha512sum0 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sha512sum0 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sha512sum0 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sha512sum0 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sha512sum0 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sha512sum0 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sha512sum0 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sha512sum0 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sha512sum0 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sha512sum0 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sha512sum0 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sha512sum0 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sha512sum0 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sha512sum0 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sha512sum0 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sha512sum0 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sha512sum0 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sha512sum0 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sha512sum0 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sha512sum0 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sha512sum0; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sha512sum0 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-01.S
new file mode 100644
index 000000000..d1bdc6f12
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sha512sum1 instruction of the RISC-V extension for the sha512sum1 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sha512sum1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sum1)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnh.*);def TEST_CASE_1=True;",sha512sum1)
+
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_0:
+// rs1 != rd, rs1==x13, rd==x6, rs1_val == 0x75a3adb3254a9493
+// opcode: sha512sum1 ; op1:x13; dest:x6; op1val:0x75a3adb3254a9493;
+li x13, 0x75a3adb3254a9493
+sha512sum1 x6, x13
+sw x6, 0(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x6, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x24, rd==x24, rs1_val == 9223372036854775807,
+// opcode: sha512sum1 ; op1:x24; dest:x24; op1val:0x7fffffffffffffff;
+li x24, 0x7fffffffffffffff
+sha512sum1 x24, x24
+sw x24, 8(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x24, 0x0000000000000000)
+
+inst_2:
+// rs1==x10, rd==x1, rs1_val == 13835058055282163711,
+// opcode: sha512sum1 ; op1:x10; dest:x1; op1val:0xbfffffffffffffff;
+li x10, 0xbfffffffffffffff
+sha512sum1 x1, x10
+sw x1, 16(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x1, 0x0000000000000000)
+
+inst_3:
+// rs1==x5, rd==x27, rs1_val == 16140901064495857663,
+// opcode: sha512sum1 ; op1:x5; dest:x27; op1val:0xdfffffffffffffff;
+li x5, 0xdfffffffffffffff
+sha512sum1 x27, x5
+sw x27, 24(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x27, 0x0000000000000000)
+
+inst_4:
+// rs1==x11, rd==x0, rs1_val == 17293822569102704639,
+// opcode: sha512sum1 ; op1:x11; dest:x0; op1val:0xefffffffffffffff;
+li x11, 0xefffffffffffffff
+sha512sum1 x0, x11
+sw x0, 32(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x0, 0x0000000000000000)
+
+inst_5:
+// rs1==x26, rd==x30, rs1_val == 17870283321406128127,
+// opcode: sha512sum1 ; op1:x26; dest:x30; op1val:0xf7ffffffffffffff;
+li x26, 0xf7ffffffffffffff
+sha512sum1 x30, x26
+sw x30, 40(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x30, 0x0000000000000000)
+
+inst_6:
+// rs1==x16, rd==x5, rs1_val == 18158513697557839871,
+// opcode: sha512sum1 ; op1:x16; dest:x5; op1val:0xfbffffffffffffff;
+li x16, 0xfbffffffffffffff
+sha512sum1 x5, x16
+sw x5, 48(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x5, 0x0000000000000000)
+
+inst_7:
+// rs1==x19, rd==x23, rs1_val == 18302628885633695743,
+// opcode: sha512sum1 ; op1:x19; dest:x23; op1val:0xfdffffffffffffff;
+li x19, 0xfdffffffffffffff
+sha512sum1 x23, x19
+sw x23, 56(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x23, 0x0000000000000000)
+
+inst_8:
+// rs1==x9, rd==x13, rs1_val == 18374686479671623679,
+// opcode: sha512sum1 ; op1:x9; dest:x13; op1val:0xfeffffffffffffff;
+li x9, 0xfeffffffffffffff
+sha512sum1 x13, x9
+sw x13, 64(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x13, 0x0000000000000000)
+
+inst_9:
+// rs1==x17, rd==x8, rs1_val == 18410715276690587647,
+// opcode: sha512sum1 ; op1:x17; dest:x8; op1val:0xff7fffffffffffff;
+li x17, 0xff7fffffffffffff
+sha512sum1 x8, x17
+sw x8, 72(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x8, 0x0000000000000000)
+
+inst_10:
+// rs1==x18, rd==x14, rs1_val == 18428729675200069631,
+// opcode: sha512sum1 ; op1:x18; dest:x14; op1val:0xffbfffffffffffff;
+li x18, 0xffbfffffffffffff
+sha512sum1 x14, x18
+sw x14, 80(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x14, 0x0000000000000000)
+
+inst_11:
+// rs1==x29, rd==x7, rs1_val == 18437736874454810623,
+// opcode: sha512sum1 ; op1:x29; dest:x7; op1val:0xffdfffffffffffff;
+li x29, 0xffdfffffffffffff
+sha512sum1 x7, x29
+sw x7, 88(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x7, 0x0000000000000000)
+
+inst_12:
+// rs1==x31, rd==x10, rs1_val == 18442240474082181119,
+// opcode: sha512sum1 ; op1:x31; dest:x10; op1val:0xffefffffffffffff;
+li x31, 0xffefffffffffffff
+sha512sum1 x10, x31
+sw x10, 96(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x10, 0x0000000000000000)
+
+inst_13:
+// rs1==x15, rd==x3, rs1_val == 18444492273895866367,
+// opcode: sha512sum1 ; op1:x15; dest:x3; op1val:0xfff7ffffffffffff;
+li x15, 0xfff7ffffffffffff
+sha512sum1 x3, x15
+sw x3, 104(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x3, 0x0000000000000000)
+
+inst_14:
+// rs1==x21, rd==x17, rs1_val == 18445618173802708991,
+// opcode: sha512sum1 ; op1:x21; dest:x17; op1val:0xfffbffffffffffff;
+li x21, 0xfffbffffffffffff
+sha512sum1 x17, x21
+sw x17, 112(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x17, 0x0000000000000000)
+
+inst_15:
+// rs1==x14, rd==x26, rs1_val == 18446181123756130303,
+// opcode: sha512sum1 ; op1:x14; dest:x26; op1val:0xfffdffffffffffff;
+li x14, 0xfffdffffffffffff
+sha512sum1 x26, x14
+sw x26, 120(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x26, 0x0000000000000000)
+
+inst_16:
+// rs1==x22, rd==x20, rs1_val == 18446462598732840959,
+// opcode: sha512sum1 ; op1:x22; dest:x20; op1val:0xfffeffffffffffff;
+li x22, 0xfffeffffffffffff
+sha512sum1 x20, x22
+sw x20, 128(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x20, 0x0000000000000000)
+
+inst_17:
+// rs1==x30, rd==x15, rs1_val == 18446603336221196287,
+// opcode: sha512sum1 ; op1:x30; dest:x15; op1val:0xffff7fffffffffff;
+li x30, 0xffff7fffffffffff
+sha512sum1 x15, x30
+sw x15, 136(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x15, 0x0000000000000000)
+
+inst_18:
+// rs1==x1, rd==x21, rs1_val == 18446673704965373951,
+// opcode: sha512sum1 ; op1:x1; dest:x21; op1val:0xffffbfffffffffff;
+li x1, 0xffffbfffffffffff
+sha512sum1 x21, x1
+sw x21, 144(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x21, 0x0000000000000000)
+
+inst_19:
+// rs1==x0, rd==x12, rs1_val == 18446708889337462783,
+// opcode: sha512sum1 ; op1:x0; dest:x12; op1val:0x0;
+li x0, 0x0
+sha512sum1 x12, x0
+sw x12, 152(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x2, x12, 0x0000000000000000)
+
+inst_20:
+// rs1==x8, rd==x2, rs1_val == 18446726481523507199,
+// opcode: sha512sum1 ; op1:x8; dest:x2; op1val:0xffffefffffffffff;
+li x8, 0xffffefffffffffff
+sha512sum1 x2, x8
+sw x2, 160(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x2, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_21:
+// rs1==x2, rd==x29, rs1_val == 18446735277616529407,
+// opcode: sha512sum1 ; op1:x2; dest:x29; op1val:0xfffff7ffffffffff;
+li x2, 0xfffff7ffffffffff
+sha512sum1 x29, x2
+sw x29, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x29, 0x0000000000000000)
+
+inst_22:
+// rs1==x3, rd==x31, rs1_val == 18446739675663040511,
+// opcode: sha512sum1 ; op1:x3; dest:x31; op1val:0xfffffbffffffffff;
+li x3, 0xfffffbffffffffff
+sha512sum1 x31, x3
+sw x31, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x31, 0x0000000000000000)
+
+inst_23:
+// rs1==x25, rd==x28, rs1_val == 18446741874686296063,
+// opcode: sha512sum1 ; op1:x25; dest:x28; op1val:0xfffffdffffffffff;
+li x25, 0xfffffdffffffffff
+sha512sum1 x28, x25
+sw x28, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x28, 0x0000000000000000)
+
+inst_24:
+// rs1==x7, rd==x4, rs1_val == 18446742974197923839,
+// opcode: sha512sum1 ; op1:x7; dest:x4; op1val:0xfffffeffffffffff;
+li x7, 0xfffffeffffffffff
+sha512sum1 x4, x7
+sw x4, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x4, 0x0000000000000000)
+
+inst_25:
+// rs1==x20, rd==x25, rs1_val == 18446743523953737727,
+// opcode: sha512sum1 ; op1:x20; dest:x25; op1val:0xffffff7fffffffff;
+li x20, 0xffffff7fffffffff
+sha512sum1 x25, x20
+sw x25, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x25, 0x0000000000000000)
+
+inst_26:
+// rs1==x6, rd==x11, rs1_val == 18446743798831644671,
+// opcode: sha512sum1 ; op1:x6; dest:x11; op1val:0xffffffbfffffffff;
+li x6, 0xffffffbfffffffff
+sha512sum1 x11, x6
+sw x11, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_27:
+// rs1==x28, rd==x9, rs1_val == 18446743936270598143,
+// opcode: sha512sum1 ; op1:x28; dest:x9; op1val:0xffffffdfffffffff;
+li x28, 0xffffffdfffffffff
+sha512sum1 x9, x28
+sw x9, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x9, 0x0000000000000000)
+
+inst_28:
+// rs1==x12, rd==x19, rs1_val == 18446744004990074879,
+// opcode: sha512sum1 ; op1:x12; dest:x19; op1val:0xffffffefffffffff;
+li x12, 0xffffffefffffffff
+sha512sum1 x19, x12
+sw x19, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x19, 0x0000000000000000)
+
+inst_29:
+// rs1==x27, rd==x18, rs1_val == 18446744039349813247,
+// opcode: sha512sum1 ; op1:x27; dest:x18; op1val:0xfffffff7ffffffff;
+li x27, 0xfffffff7ffffffff
+sha512sum1 x18, x27
+sw x18, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x18, 0x0000000000000000)
+
+inst_30:
+// rs1==x23, rd==x16, rs1_val == 18446744056529682431,
+// opcode: sha512sum1 ; op1:x23; dest:x16; op1val:0xfffffffbffffffff;
+li x23, 0xfffffffbffffffff
+sha512sum1 x16, x23
+sw x16, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x16, 0x0000000000000000)
+
+inst_31:
+// rs1==x4, rd==x22, rs1_val == 18446744065119617023,
+// opcode: sha512sum1 ; op1:x4; dest:x22; op1val:0xfffffffdffffffff;
+li x4, 0xfffffffdffffffff
+sha512sum1 x22, x4
+sw x22, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x22, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sha512sum1 x11, x10
+sw x11, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sha512sum1 x11, x10
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sha512sum1 x11, x10
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sha512sum1 x11, x10
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sha512sum1 x11, x10
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sha512sum1 x11, x10
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sha512sum1 x11, x10
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sha512sum1 x11, x10
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sha512sum1 x11, x10
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sha512sum1 x11, x10
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sha512sum1 x11, x10
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sha512sum1 x11, x10
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sha512sum1 x11, x10
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sha512sum1 x11, x10
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sha512sum1 x11, x10
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sha512sum1 x11, x10
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sha512sum1 x11, x10
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sha512sum1 x11, x10
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sha512sum1 x11, x10
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sha512sum1 x11, x10
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sha512sum1 x11, x10
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sha512sum1 x11, x10
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sha512sum1 x11, x10
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sha512sum1 x11, x10
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sha512sum1 x11, x10
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sha512sum1 x11, x10
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sha512sum1 x11, x10
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sha512sum1 x11, x10
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sha512sum1 x11, x10
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sha512sum1 x11, x10
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sha512sum1 x11, x10
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sha512sum1 x11, x10
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sha512sum1 x11, x10
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sha512sum1 x11, x10
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sha512sum1 x11, x10
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sha512sum1 x11, x10
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sha512sum1 x11, x10
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sha512sum1 x11, x10
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sha512sum1 x11, x10
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sha512sum1 x11, x10
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sha512sum1 x11, x10
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sha512sum1 x11, x10
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sha512sum1 x11, x10
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sha512sum1 x11, x10
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sha512sum1 x11, x10
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sha512sum1 x11, x10
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sha512sum1 x11, x10
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sha512sum1 x11, x10
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sha512sum1 x11, x10
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sha512sum1 x11, x10
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sha512sum1 x11, x10
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sha512sum1 x11, x10
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sha512sum1 x11, x10
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sha512sum1 x11, x10
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sha512sum1 x11, x10
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sha512sum1 x11, x10
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sha512sum1 x11, x10
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sha512sum1 x11, x10
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sha512sum1 x11, x10
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sha512sum1 x11, x10
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sha512sum1 x11, x10
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sha512sum1 x11, x10
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sha512sum1 x11, x10
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sha512sum1 x11, x10
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sha512sum1 x11, x10
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sha512sum1 x11, x10
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sha512sum1 x11, x10
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sha512sum1 x11, x10
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sha512sum1 x11, x10
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sha512sum1 x11, x10
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sha512sum1 x11, x10
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sha512sum1 x11, x10
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sha512sum1 x11, x10
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sha512sum1 x11, x10
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sha512sum1 x11, x10
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sha512sum1 x11, x10
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sha512sum1 x11, x10
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sha512sum1 x11, x10
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sha512sum1 x11, x10
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sha512sum1 x11, x10
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sha512sum1 x11, x10
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sha512sum1 x11, x10
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sha512sum1 x11, x10
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sha512sum1 x11, x10
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sha512sum1 x11, x10
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sha512sum1 x11, x10
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sha512sum1 x11, x10
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sha512sum1 x11, x10
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sha512sum1 x11, x10
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sha512sum1 x11, x10
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sha512sum1 x11, x10
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sha512sum1 x11, x10
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sha512sum1 x11, x10
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sha512sum1 x11, x10
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sha512sum1 x11, x10
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sha512sum1 x11, x10
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sha512sum1 x11, x10
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sha512sum1 x11, x10
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sha512sum1 x11, x10
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sha512sum1 x11, x10
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sha512sum1 x11, x10
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sha512sum1 x11, x10
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sha512sum1 x11, x10
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sha512sum1 x11, x10
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sha512sum1 x11, x10
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sha512sum1 x11, x10
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sha512sum1 x11, x10
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sha512sum1 x11, x10
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sha512sum1 x11, x10
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sha512sum1 x11, x10
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sha512sum1 x11, x10
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sha512sum1 x11, x10
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sha512sum1 x11, x10
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sha512sum1 x11, x10
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sha512sum1 x11, x10
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sha512sum1 x11, x10
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 17293822569102704639,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xefffffffffffffff;
+li x10, 0xefffffffffffffff
+sha512sum1 x11, x10
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18446708889337462783,
+// opcode: sha512sum1 ; op1:x10; dest:x11; op1val:0xffffdfffffffffff;
+li x10, 0xffffdfffffffffff
+sha512sum1 x11, x10
+sw x11, 1024(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x5, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x4_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 21*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 129*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-rwp1.S
new file mode 100644
index 000000000..0ef60a2ef
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha512sum1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sum1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sha512sum1 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sha512sum1 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sha512sum1 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sha512sum1 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sha512sum1 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sha512sum1 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sha512sum1 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sha512sum1 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sha512sum1 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sha512sum1 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sha512sum1 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sha512sum1 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sha512sum1 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sha512sum1 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sha512sum1 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sha512sum1 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sha512sum1 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sha512sum1 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sha512sum1 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sha512sum1 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sha512sum1 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sha512sum1 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sha512sum1 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sha512sum1 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sha512sum1 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sha512sum1 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sha512sum1 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sha512sum1 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sha512sum1 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sha512sum1 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sha512sum1 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sha512sum1 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sha512sum1 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sha512sum1 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sha512sum1 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sha512sum1 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sha512sum1 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sha512sum1 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sha512sum1 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sha512sum1 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sha512sum1 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sha512sum1 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sha512sum1 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sha512sum1 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sha512sum1 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sha512sum1 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sha512sum1 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sha512sum1 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sha512sum1 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sha512sum1 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sha512sum1 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sha512sum1 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sha512sum1 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sha512sum1 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sha512sum1 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sha512sum1 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sha512sum1 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sha512sum1 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sha512sum1 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sha512sum1 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sha512sum1 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sha512sum1 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sha512sum1 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sha512sum1 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sha512sum1 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sha512sum1 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sha512sum1 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sha512sum1 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sha512sum1 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sha512sum1 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sha512sum1 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sha512sum1 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sha512sum1 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sha512sum1 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sha512sum1 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sha512sum1 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sha512sum1 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sha512sum1 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sha512sum1 & the result back into xor
+// opcode: sha512sum1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sha512sum1 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sha512sum1 & the result back into not
+// opcode: sha512sum1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sha512sum1 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sha512sum1 & the result back into add
+// opcode: sha512sum1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sha512sum1 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-rwp2.S
new file mode 100644
index 000000000..318e75df2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sha512sum1-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sha512sum1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",sha512sum1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sha512sum1 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sha512sum1 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sha512sum1 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sha512sum1 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sha512sum1 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sha512sum1 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sha512sum1 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sha512sum1 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sha512sum1 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sha512sum1 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sha512sum1 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sha512sum1 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sha512sum1 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sha512sum1 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sha512sum1 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sha512sum1 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sha512sum1 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sha512sum1 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sha512sum1 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sha512sum1 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sha512sum1 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sha512sum1 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sha512sum1 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sha512sum1 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sha512sum1 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sha512sum1 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sha512sum1 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sha512sum1; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sha512sum1 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-01.S
new file mode 100644
index 000000000..73a31131f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sm3p0 instruction of the RISC-V extension for the sm3p0 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I_Zks")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sm3p0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",sm3p0)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKsh.*);def TEST_CASE_1=True;",sm3p0)
+
+RVTEST_SIGBASE( x17,signature_x17_1)
+
+inst_0:
+// rs1 != rd, rs1==x4, rd==x25, rs1_val == 0x75a3adb3254a9493
+// opcode: sm3p0 ; op1:x4; dest:x25; op1val:0x75a3adb3254a9493;
+li x4, 0x75a3adb3254a9493
+sm3p0 x25, x4
+sw x25, 0(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x25, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x16, rd==x16, rs1_val == 9223372036854775807,
+// opcode: sm3p0 ; op1:x16; dest:x16; op1val:0x7fffffffffffffff;
+li x16, 0x7fffffffffffffff
+sm3p0 x16, x16
+sw x16, 8(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x16, 0x0000000000000000)
+
+inst_2:
+// rs1==x27, rd==x22, rs1_val == 13835058055282163711,
+// opcode: sm3p0 ; op1:x27; dest:x22; op1val:0xbfffffffffffffff;
+li x27, 0xbfffffffffffffff
+sm3p0 x22, x27
+sw x22, 16(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x22, 0x0000000000000000)
+
+inst_3:
+// rs1==x13, rd==x29, rs1_val == 16140901064495857663,
+// opcode: sm3p0 ; op1:x13; dest:x29; op1val:0xdfffffffffffffff;
+li x13, 0xdfffffffffffffff
+sm3p0 x29, x13
+sw x29, 24(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x29, 0x0000000000000000)
+
+inst_4:
+// rs1==x20, rd==x15, rs1_val == 17293822569102704639,
+// opcode: sm3p0 ; op1:x20; dest:x15; op1val:0xefffffffffffffff;
+li x20, 0xefffffffffffffff
+sm3p0 x15, x20
+sw x15, 32(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x15, 0x0000000000000000)
+
+inst_5:
+// rs1==x19, rd==x21, rs1_val == 17870283321406128127,
+// opcode: sm3p0 ; op1:x19; dest:x21; op1val:0xf7ffffffffffffff;
+li x19, 0xf7ffffffffffffff
+sm3p0 x21, x19
+sw x21, 40(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x21, 0x0000000000000000)
+
+inst_6:
+// rs1==x30, rd==x2, rs1_val == 18158513697557839871,
+// opcode: sm3p0 ; op1:x30; dest:x2; op1val:0xfbffffffffffffff;
+li x30, 0xfbffffffffffffff
+sm3p0 x2, x30
+sw x2, 48(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x2, 0x0000000000000000)
+
+inst_7:
+// rs1==x21, rd==x14, rs1_val == 18302628885633695743,
+// opcode: sm3p0 ; op1:x21; dest:x14; op1val:0xfdffffffffffffff;
+li x21, 0xfdffffffffffffff
+sm3p0 x14, x21
+sw x14, 56(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x14, 0x0000000000000000)
+
+inst_8:
+// rs1==x7, rd==x0, rs1_val == 18374686479671623679,
+// opcode: sm3p0 ; op1:x7; dest:x0; op1val:0xfeffffffffffffff;
+li x7, 0xfeffffffffffffff
+sm3p0 x0, x7
+sw x0, 64(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x0, 0x0000000000000000)
+
+inst_9:
+// rs1==x3, rd==x12, rs1_val == 18410715276690587647,
+// opcode: sm3p0 ; op1:x3; dest:x12; op1val:0xff7fffffffffffff;
+li x3, 0xff7fffffffffffff
+sm3p0 x12, x3
+sw x12, 72(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x12, 0x0000000000000000)
+
+inst_10:
+// rs1==x31, rd==x9, rs1_val == 18428729675200069631,
+// opcode: sm3p0 ; op1:x31; dest:x9; op1val:0xffbfffffffffffff;
+li x31, 0xffbfffffffffffff
+sm3p0 x9, x31
+sw x9, 80(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x9, 0x0000000000000000)
+
+inst_11:
+// rs1==x29, rd==x11, rs1_val == 18437736874454810623,
+// opcode: sm3p0 ; op1:x29; dest:x11; op1val:0xffdfffffffffffff;
+li x29, 0xffdfffffffffffff
+sm3p0 x11, x29
+sw x11, 88(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x11, 0x0000000000000000)
+
+inst_12:
+// rs1==x10, rd==x23, rs1_val == 18442240474082181119,
+// opcode: sm3p0 ; op1:x10; dest:x23; op1val:0xffefffffffffffff;
+li x10, 0xffefffffffffffff
+sm3p0 x23, x10
+sw x23, 96(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x23, 0x0000000000000000)
+
+inst_13:
+// rs1==x0, rd==x1, rs1_val == 18444492273895866367,
+// opcode: sm3p0 ; op1:x0; dest:x1; op1val:0x0;
+li x0, 0x0
+sm3p0 x1, x0
+sw x1, 104(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x1, 0x0000000000000000)
+
+inst_14:
+// rs1==x28, rd==x6, rs1_val == 18445618173802708991,
+// opcode: sm3p0 ; op1:x28; dest:x6; op1val:0xfffbffffffffffff;
+li x28, 0xfffbffffffffffff
+sm3p0 x6, x28
+sw x6, 112(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x6, 0x0000000000000000)
+
+inst_15:
+// rs1==x22, rd==x28, rs1_val == 18446181123756130303,
+// opcode: sm3p0 ; op1:x22; dest:x28; op1val:0xfffdffffffffffff;
+li x22, 0xfffdffffffffffff
+sm3p0 x28, x22
+sw x28, 120(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x28, 0x0000000000000000)
+
+inst_16:
+// rs1==x8, rd==x30, rs1_val == 18446462598732840959,
+// opcode: sm3p0 ; op1:x8; dest:x30; op1val:0xfffeffffffffffff;
+li x8, 0xfffeffffffffffff
+sm3p0 x30, x8
+sw x30, 128(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x30, 0x0000000000000000)
+
+inst_17:
+// rs1==x5, rd==x4, rs1_val == 18446603336221196287,
+// opcode: sm3p0 ; op1:x5; dest:x4; op1val:0xffff7fffffffffff;
+li x5, 0xffff7fffffffffff
+sm3p0 x4, x5
+sw x4, 136(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x18, x4, 0x0000000000000000)
+
+inst_18:
+// rs1==x11, rd==x5, rs1_val == 18446673704965373951,
+// opcode: sm3p0 ; op1:x11; dest:x5; op1val:0xffffbfffffffffff;
+li x11, 0xffffbfffffffffff
+sm3p0 x5, x11
+sw x5, 144(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x5, 0x0000000000000000)
+
+inst_19:
+// rs1==x24, rd==x10, rs1_val == 18446708889337462783,
+// opcode: sm3p0 ; op1:x24; dest:x10; op1val:0xffffdfffffffffff;
+li x24, 0xffffdfffffffffff
+sm3p0 x10, x24
+sw x10, 152(x17)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x10, 0x0000000000000000)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_20:
+// rs1==x17, rd==x20, rs1_val == 18446726481523507199,
+// opcode: sm3p0 ; op1:x17; dest:x20; op1val:0xffffefffffffffff;
+li x17, 0xffffefffffffffff
+sm3p0 x20, x17
+sw x20, 0(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x20, 0x0000000000000000)
+
+inst_21:
+// rs1==x2, rd==x19, rs1_val == 18446735277616529407,
+// opcode: sm3p0 ; op1:x2; dest:x19; op1val:0xfffff7ffffffffff;
+li x2, 0xfffff7ffffffffff
+sm3p0 x19, x2
+sw x19, 8(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x19, 0x0000000000000000)
+
+inst_22:
+// rs1==x1, rd==x24, rs1_val == 18446739675663040511,
+// opcode: sm3p0 ; op1:x1; dest:x24; op1val:0xfffffbffffffffff;
+li x1, 0xfffffbffffffffff
+sm3p0 x24, x1
+sw x24, 16(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x24, 0x0000000000000000)
+
+inst_23:
+// rs1==x12, rd==x31, rs1_val == 18446741874686296063,
+// opcode: sm3p0 ; op1:x12; dest:x31; op1val:0xfffffdffffffffff;
+li x12, 0xfffffdffffffffff
+sm3p0 x31, x12
+sw x31, 24(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x31, 0x0000000000000000)
+
+inst_24:
+// rs1==x26, rd==x7, rs1_val == 18446742974197923839,
+// opcode: sm3p0 ; op1:x26; dest:x7; op1val:0xfffffeffffffffff;
+li x26, 0xfffffeffffffffff
+sm3p0 x7, x26
+sw x7, 32(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x7, 0x0000000000000000)
+
+inst_25:
+// rs1==x15, rd==x18, rs1_val == 18446743523953737727,
+// opcode: sm3p0 ; op1:x15; dest:x18; op1val:0xffffff7fffffffff;
+li x15, 0xffffff7fffffffff
+sm3p0 x18, x15
+sw x18, 40(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x18, 0x0000000000000000)
+
+inst_26:
+// rs1==x6, rd==x26, rs1_val == 18446743798831644671,
+// opcode: sm3p0 ; op1:x6; dest:x26; op1val:0xffffffbfffffffff;
+li x6, 0xffffffbfffffffff
+sm3p0 x26, x6
+sw x26, 48(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x26, 0x0000000000000000)
+
+inst_27:
+// rs1==x25, rd==x13, rs1_val == 18446743936270598143,
+// opcode: sm3p0 ; op1:x25; dest:x13; op1val:0xffffffdfffffffff;
+li x25, 0xffffffdfffffffff
+sm3p0 x13, x25
+sw x13, 56(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x13, 0x0000000000000000)
+
+inst_28:
+// rs1==x9, rd==x27, rs1_val == 18446744004990074879,
+// opcode: sm3p0 ; op1:x9; dest:x27; op1val:0xffffffefffffffff;
+li x9, 0xffffffefffffffff
+sm3p0 x27, x9
+sw x27, 64(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x27, 0x0000000000000000)
+
+inst_29:
+// rs1==x23, rd==x8, rs1_val == 18446744039349813247,
+// opcode: sm3p0 ; op1:x23; dest:x8; op1val:0xfffffff7ffffffff;
+li x23, 0xfffffff7ffffffff
+sm3p0 x8, x23
+sw x8, 72(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x8, 0x0000000000000000)
+
+inst_30:
+// rs1==x18, rd==x17, rs1_val == 18446744056529682431,
+// opcode: sm3p0 ; op1:x18; dest:x17; op1val:0xfffffffbffffffff;
+li x18, 0xfffffffbffffffff
+sm3p0 x17, x18
+sw x17, 80(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x17, 0x0000000000000000)
+
+inst_31:
+// rs1==x14, rd==x3, rs1_val == 18446744065119617023,
+// opcode: sm3p0 ; op1:x14; dest:x3; op1val:0xfffffffdffffffff;
+li x14, 0xfffffffdffffffff
+sm3p0 x3, x14
+sw x3, 88(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x3, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sm3p0 x11, x10
+sw x11, 96(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sm3p0 x11, x10
+sw x11, 104(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sm3p0 x11, x10
+sw x11, 112(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sm3p0 x11, x10
+sw x11, 120(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sm3p0 x11, x10
+sw x11, 128(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sm3p0 x11, x10
+sw x11, 136(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sm3p0 x11, x10
+sw x11, 144(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sm3p0 x11, x10
+sw x11, 152(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sm3p0 x11, x10
+sw x11, 160(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sm3p0 x11, x10
+sw x11, 168(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sm3p0 x11, x10
+sw x11, 176(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sm3p0 x11, x10
+sw x11, 184(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sm3p0 x11, x10
+sw x11, 192(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sm3p0 x11, x10
+sw x11, 200(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sm3p0 x11, x10
+sw x11, 208(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sm3p0 x11, x10
+sw x11, 216(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sm3p0 x11, x10
+sw x11, 224(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sm3p0 x11, x10
+sw x11, 232(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sm3p0 x11, x10
+sw x11, 240(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sm3p0 x11, x10
+sw x11, 248(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sm3p0 x11, x10
+sw x11, 256(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sm3p0 x11, x10
+sw x11, 264(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sm3p0 x11, x10
+sw x11, 272(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sm3p0 x11, x10
+sw x11, 280(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sm3p0 x11, x10
+sw x11, 288(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sm3p0 x11, x10
+sw x11, 296(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sm3p0 x11, x10
+sw x11, 304(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sm3p0 x11, x10
+sw x11, 312(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sm3p0 x11, x10
+sw x11, 320(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sm3p0 x11, x10
+sw x11, 328(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sm3p0 x11, x10
+sw x11, 336(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sm3p0 x11, x10
+sw x11, 344(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sm3p0 x11, x10
+sw x11, 352(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sm3p0 x11, x10
+sw x11, 360(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sm3p0 x11, x10
+sw x11, 368(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sm3p0 x11, x10
+sw x11, 376(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sm3p0 x11, x10
+sw x11, 384(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sm3p0 x11, x10
+sw x11, 392(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sm3p0 x11, x10
+sw x11, 400(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sm3p0 x11, x10
+sw x11, 408(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sm3p0 x11, x10
+sw x11, 416(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sm3p0 x11, x10
+sw x11, 424(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sm3p0 x11, x10
+sw x11, 432(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sm3p0 x11, x10
+sw x11, 440(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sm3p0 x11, x10
+sw x11, 448(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sm3p0 x11, x10
+sw x11, 456(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sm3p0 x11, x10
+sw x11, 464(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sm3p0 x11, x10
+sw x11, 472(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sm3p0 x11, x10
+sw x11, 480(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sm3p0 x11, x10
+sw x11, 488(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sm3p0 x11, x10
+sw x11, 496(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sm3p0 x11, x10
+sw x11, 504(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sm3p0 x11, x10
+sw x11, 512(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sm3p0 x11, x10
+sw x11, 520(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sm3p0 x11, x10
+sw x11, 528(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sm3p0 x11, x10
+sw x11, 536(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sm3p0 x11, x10
+sw x11, 544(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sm3p0 x11, x10
+sw x11, 552(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sm3p0 x11, x10
+sw x11, 560(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sm3p0 x11, x10
+sw x11, 568(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sm3p0 x11, x10
+sw x11, 576(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sm3p0 x11, x10
+sw x11, 584(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sm3p0 x11, x10
+sw x11, 592(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sm3p0 x11, x10
+sw x11, 600(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sm3p0 x11, x10
+sw x11, 608(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sm3p0 x11, x10
+sw x11, 616(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sm3p0 x11, x10
+sw x11, 624(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sm3p0 x11, x10
+sw x11, 632(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sm3p0 x11, x10
+sw x11, 640(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sm3p0 x11, x10
+sw x11, 648(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sm3p0 x11, x10
+sw x11, 656(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sm3p0 x11, x10
+sw x11, 664(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sm3p0 x11, x10
+sw x11, 672(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sm3p0 x11, x10
+sw x11, 680(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sm3p0 x11, x10
+sw x11, 688(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sm3p0 x11, x10
+sw x11, 696(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sm3p0 x11, x10
+sw x11, 704(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sm3p0 x11, x10
+sw x11, 712(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sm3p0 x11, x10
+sw x11, 720(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sm3p0 x11, x10
+sw x11, 728(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sm3p0 x11, x10
+sw x11, 736(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sm3p0 x11, x10
+sw x11, 744(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sm3p0 x11, x10
+sw x11, 752(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sm3p0 x11, x10
+sw x11, 760(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sm3p0 x11, x10
+sw x11, 768(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sm3p0 x11, x10
+sw x11, 776(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sm3p0 x11, x10
+sw x11, 784(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sm3p0 x11, x10
+sw x11, 792(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sm3p0 x11, x10
+sw x11, 800(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sm3p0 x11, x10
+sw x11, 808(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sm3p0 x11, x10
+sw x11, 816(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sm3p0 x11, x10
+sw x11, 824(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sm3p0 x11, x10
+sw x11, 832(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sm3p0 x11, x10
+sw x11, 840(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sm3p0 x11, x10
+sw x11, 848(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sm3p0 x11, x10
+sw x11, 856(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sm3p0 x11, x10
+sw x11, 864(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sm3p0 x11, x10
+sw x11, 872(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sm3p0 x11, x10
+sw x11, 880(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sm3p0 x11, x10
+sw x11, 888(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sm3p0 x11, x10
+sw x11, 896(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sm3p0 x11, x10
+sw x11, 904(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sm3p0 x11, x10
+sw x11, 912(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sm3p0 x11, x10
+sw x11, 920(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sm3p0 x11, x10
+sw x11, 928(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sm3p0 x11, x10
+sw x11, 936(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sm3p0 x11, x10
+sw x11, 944(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sm3p0 x11, x10
+sw x11, 952(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sm3p0 x11, x10
+sw x11, 960(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sm3p0 x11, x10
+sw x11, 968(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sm3p0 x11, x10
+sw x11, 976(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sm3p0 x11, x10
+sw x11, 984(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sm3p0 x11, x10
+sw x11, 992(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sm3p0 x11, x10
+sw x11, 1000(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sm3p0 x11, x10
+sw x11, 1008(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sm3p0 x11, x10
+sw x11, 1016(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18374686479671623679,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfeffffffffffffff;
+li x10, 0xfeffffffffffffff
+sm3p0 x11, x10
+sw x11, 1024(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18444492273895866367,
+// opcode: sm3p0 ; op1:x10; dest:x11; op1val:0xfff7ffffffffffff;
+li x10, 0xfff7ffffffffffff
+sm3p0 x11, x10
+sw x11, 1032(x4)
+RVMODEL_IO_ASSERT_GPR_EQ(x16, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x17_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x17_1:
+ .fill 20*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 130*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-rwp1.S
new file mode 100644
index 000000000..72c238d3f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sm3p0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",sm3p0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sm3p0 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sm3p0 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sm3p0 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sm3p0 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sm3p0 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sm3p0 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sm3p0 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sm3p0 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sm3p0 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sm3p0 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sm3p0 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sm3p0 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sm3p0 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sm3p0 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sm3p0 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sm3p0 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sm3p0 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sm3p0 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sm3p0 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sm3p0 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sm3p0 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sm3p0 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sm3p0 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sm3p0 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sm3p0 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sm3p0 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sm3p0 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sm3p0 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sm3p0 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sm3p0 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sm3p0 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sm3p0 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sm3p0 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sm3p0 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sm3p0 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sm3p0 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sm3p0 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sm3p0 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sm3p0 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sm3p0 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sm3p0 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sm3p0 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sm3p0 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sm3p0 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sm3p0 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sm3p0 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sm3p0 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sm3p0 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sm3p0 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sm3p0 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sm3p0 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sm3p0 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sm3p0 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sm3p0 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sm3p0 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sm3p0 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sm3p0 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sm3p0 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sm3p0 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sm3p0 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sm3p0 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sm3p0 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sm3p0 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sm3p0 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sm3p0 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sm3p0 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sm3p0 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sm3p0 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sm3p0 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sm3p0 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sm3p0 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sm3p0 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sm3p0 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sm3p0 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sm3p0 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sm3p0 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sm3p0 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sm3p0 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sm3p0 & the result back into xor
+// opcode: sm3p0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sm3p0 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sm3p0 & the result back into not
+// opcode: sm3p0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sm3p0 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sm3p0 & the result back into add
+// opcode: sm3p0; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sm3p0 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-rwp2.S
new file mode 100644
index 000000000..c567bd969
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p0-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sm3p0)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",sm3p0)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sm3p0 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sm3p0 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sm3p0 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sm3p0 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sm3p0 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sm3p0 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sm3p0 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sm3p0 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sm3p0 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sm3p0 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sm3p0 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sm3p0 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sm3p0 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sm3p0 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sm3p0 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sm3p0 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sm3p0 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sm3p0 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sm3p0 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sm3p0 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sm3p0 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sm3p0 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sm3p0 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sm3p0 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sm3p0 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sm3p0 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sm3p0 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sm3p0; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sm3p0 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-01.S
new file mode 100644
index 000000000..77423add8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-01.S
@@ -0,0 +1,1279 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sm3p1 instruction of the RISC-V extension for the sm3p1 covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I_Zks")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sm3p1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",sm3p1)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKsh.*);def TEST_CASE_1=True;",sm3p1)
+
+RVTEST_SIGBASE( x9,signature_x9_1)
+
+inst_0:
+// rs1 != rd, rs1==x16, rd==x20, rs1_val == 0x75a3adb3254a9493
+// opcode: sm3p1 ; op1:x16; dest:x20; op1val:0x75a3adb3254a9493;
+li x16, 0x75a3adb3254a9493
+sm3p1 x20, x16
+sw x20, 0(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x20, 0x0000000000000000)
+
+inst_1:
+// rs1 == rd, rs1==x22, rd==x22, rs1_val == 9223372036854775807,
+// opcode: sm3p1 ; op1:x22; dest:x22; op1val:0x7fffffffffffffff;
+li x22, 0x7fffffffffffffff
+sm3p1 x22, x22
+sw x22, 8(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x22, 0x0000000000000000)
+
+inst_2:
+// rs1==x10, rd==x6, rs1_val == 13835058055282163711,
+// opcode: sm3p1 ; op1:x10; dest:x6; op1val:0xbfffffffffffffff;
+li x10, 0xbfffffffffffffff
+sm3p1 x6, x10
+sw x6, 16(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x6, 0x0000000000000000)
+
+inst_3:
+// rs1==x4, rd==x15, rs1_val == 16140901064495857663,
+// opcode: sm3p1 ; op1:x4; dest:x15; op1val:0xdfffffffffffffff;
+li x4, 0xdfffffffffffffff
+sm3p1 x15, x4
+sw x15, 24(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x15, 0x0000000000000000)
+
+inst_4:
+// rs1==x11, rd==x16, rs1_val == 17293822569102704639,
+// opcode: sm3p1 ; op1:x11; dest:x16; op1val:0xefffffffffffffff;
+li x11, 0xefffffffffffffff
+sm3p1 x16, x11
+sw x16, 32(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x16, 0x0000000000000000)
+
+inst_5:
+// rs1==x14, rd==x30, rs1_val == 17870283321406128127,
+// opcode: sm3p1 ; op1:x14; dest:x30; op1val:0xf7ffffffffffffff;
+li x14, 0xf7ffffffffffffff
+sm3p1 x30, x14
+sw x30, 40(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x30, 0x0000000000000000)
+
+inst_6:
+// rs1==x13, rd==x3, rs1_val == 18158513697557839871,
+// opcode: sm3p1 ; op1:x13; dest:x3; op1val:0xfbffffffffffffff;
+li x13, 0xfbffffffffffffff
+sm3p1 x3, x13
+sw x3, 48(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x3, 0x0000000000000000)
+
+inst_7:
+// rs1==x17, rd==x0, rs1_val == 18302628885633695743,
+// opcode: sm3p1 ; op1:x17; dest:x0; op1val:0xfdffffffffffffff;
+li x17, 0xfdffffffffffffff
+sm3p1 x0, x17
+sw x0, 56(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x0, 0x0000000000000000)
+
+inst_8:
+// rs1==x1, rd==x18, rs1_val == 18374686479671623679,
+// opcode: sm3p1 ; op1:x1; dest:x18; op1val:0xfeffffffffffffff;
+li x1, 0xfeffffffffffffff
+sm3p1 x18, x1
+sw x18, 64(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x18, 0x0000000000000000)
+
+inst_9:
+// rs1==x8, rd==x28, rs1_val == 18410715276690587647,
+// opcode: sm3p1 ; op1:x8; dest:x28; op1val:0xff7fffffffffffff;
+li x8, 0xff7fffffffffffff
+sm3p1 x28, x8
+sw x28, 72(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x28, 0x0000000000000000)
+
+inst_10:
+// rs1==x30, rd==x7, rs1_val == 18428729675200069631,
+// opcode: sm3p1 ; op1:x30; dest:x7; op1val:0xffbfffffffffffff;
+li x30, 0xffbfffffffffffff
+sm3p1 x7, x30
+sw x7, 80(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x7, 0x0000000000000000)
+
+inst_11:
+// rs1==x6, rd==x5, rs1_val == 18437736874454810623,
+// opcode: sm3p1 ; op1:x6; dest:x5; op1val:0xffdfffffffffffff;
+li x6, 0xffdfffffffffffff
+sm3p1 x5, x6
+sw x5, 88(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x5, 0x0000000000000000)
+
+inst_12:
+// rs1==x23, rd==x26, rs1_val == 18442240474082181119,
+// opcode: sm3p1 ; op1:x23; dest:x26; op1val:0xffefffffffffffff;
+li x23, 0xffefffffffffffff
+sm3p1 x26, x23
+sw x26, 96(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x26, 0x0000000000000000)
+
+inst_13:
+// rs1==x27, rd==x8, rs1_val == 18444492273895866367,
+// opcode: sm3p1 ; op1:x27; dest:x8; op1val:0xfff7ffffffffffff;
+li x27, 0xfff7ffffffffffff
+sm3p1 x8, x27
+sw x8, 104(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x8, 0x0000000000000000)
+
+inst_14:
+// rs1==x24, rd==x12, rs1_val == 18445618173802708991,
+// opcode: sm3p1 ; op1:x24; dest:x12; op1val:0xfffbffffffffffff;
+li x24, 0xfffbffffffffffff
+sm3p1 x12, x24
+sw x12, 112(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x12, 0x0000000000000000)
+
+inst_15:
+// rs1==x5, rd==x14, rs1_val == 18446181123756130303,
+// opcode: sm3p1 ; op1:x5; dest:x14; op1val:0xfffdffffffffffff;
+li x5, 0xfffdffffffffffff
+sm3p1 x14, x5
+sw x14, 120(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x14, 0x0000000000000000)
+
+inst_16:
+// rs1==x29, rd==x10, rs1_val == 18446462598732840959,
+// opcode: sm3p1 ; op1:x29; dest:x10; op1val:0xfffeffffffffffff;
+li x29, 0xfffeffffffffffff
+sm3p1 x10, x29
+sw x10, 128(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x10, 0x0000000000000000)
+
+inst_17:
+// rs1==x12, rd==x17, rs1_val == 18446603336221196287,
+// opcode: sm3p1 ; op1:x12; dest:x17; op1val:0xffff7fffffffffff;
+li x12, 0xffff7fffffffffff
+sm3p1 x17, x12
+sw x17, 136(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x17, 0x0000000000000000)
+
+inst_18:
+// rs1==x2, rd==x1, rs1_val == 18446673704965373951,
+// opcode: sm3p1 ; op1:x2; dest:x1; op1val:0xffffbfffffffffff;
+li x2, 0xffffbfffffffffff
+sm3p1 x1, x2
+sw x1, 144(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x1, 0x0000000000000000)
+
+inst_19:
+// rs1==x3, rd==x21, rs1_val == 18446708889337462783,
+// opcode: sm3p1 ; op1:x3; dest:x21; op1val:0xffffdfffffffffff;
+li x3, 0xffffdfffffffffff
+sm3p1 x21, x3
+sw x21, 152(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x19, x21, 0x0000000000000000)
+
+inst_20:
+// rs1==x26, rd==x13, rs1_val == 18446726481523507199,
+// opcode: sm3p1 ; op1:x26; dest:x13; op1val:0xffffefffffffffff;
+li x26, 0xffffefffffffffff
+sm3p1 x13, x26
+sw x13, 160(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x13, 0x0000000000000000)
+
+inst_21:
+// rs1==x7, rd==x25, rs1_val == 18446735277616529407,
+// opcode: sm3p1 ; op1:x7; dest:x25; op1val:0xfffff7ffffffffff;
+li x7, 0xfffff7ffffffffff
+sm3p1 x25, x7
+sw x25, 168(x9)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x25, 0x0000000000000000)
+RVTEST_SIGBASE( x1,signature_x1_0)
+
+inst_22:
+// rs1==x19, rd==x29, rs1_val == 18446739675663040511,
+// opcode: sm3p1 ; op1:x19; dest:x29; op1val:0xfffffbffffffffff;
+li x19, 0xfffffbffffffffff
+sm3p1 x29, x19
+sw x29, 0(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x29, 0x0000000000000000)
+
+inst_23:
+// rs1==x9, rd==x31, rs1_val == 18446741874686296063,
+// opcode: sm3p1 ; op1:x9; dest:x31; op1val:0xfffffdffffffffff;
+li x9, 0xfffffdffffffffff
+sm3p1 x31, x9
+sw x31, 8(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x31, 0x0000000000000000)
+
+inst_24:
+// rs1==x28, rd==x11, rs1_val == 18446742974197923839,
+// opcode: sm3p1 ; op1:x28; dest:x11; op1val:0xfffffeffffffffff;
+li x28, 0xfffffeffffffffff
+sm3p1 x11, x28
+sw x11, 16(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_25:
+// rs1==x31, rd==x24, rs1_val == 18446743523953737727,
+// opcode: sm3p1 ; op1:x31; dest:x24; op1val:0xffffff7fffffffff;
+li x31, 0xffffff7fffffffff
+sm3p1 x24, x31
+sw x24, 24(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x24, 0x0000000000000000)
+
+inst_26:
+// rs1==x0, rd==x27, rs1_val == 18446743798831644671,
+// opcode: sm3p1 ; op1:x0; dest:x27; op1val:0x0;
+li x0, 0x0
+sm3p1 x27, x0
+sw x27, 32(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x27, 0x0000000000000000)
+
+inst_27:
+// rs1==x15, rd==x19, rs1_val == 18446743936270598143,
+// opcode: sm3p1 ; op1:x15; dest:x19; op1val:0xffffffdfffffffff;
+li x15, 0xffffffdfffffffff
+sm3p1 x19, x15
+sw x19, 40(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x19, 0x0000000000000000)
+
+inst_28:
+// rs1==x25, rd==x23, rs1_val == 18446744004990074879,
+// opcode: sm3p1 ; op1:x25; dest:x23; op1val:0xffffffefffffffff;
+li x25, 0xffffffefffffffff
+sm3p1 x23, x25
+sw x23, 48(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x23, 0x0000000000000000)
+
+inst_29:
+// rs1==x18, rd==x4, rs1_val == 18446744039349813247,
+// opcode: sm3p1 ; op1:x18; dest:x4; op1val:0xfffffff7ffffffff;
+li x18, 0xfffffff7ffffffff
+sm3p1 x4, x18
+sw x4, 56(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x4, 0x0000000000000000)
+
+inst_30:
+// rs1==x20, rd==x9, rs1_val == 18446744056529682431,
+// opcode: sm3p1 ; op1:x20; dest:x9; op1val:0xfffffffbffffffff;
+li x20, 0xfffffffbffffffff
+sm3p1 x9, x20
+sw x9, 64(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x9, 0x0000000000000000)
+
+inst_31:
+// rs1==x21, rd==x2, rs1_val == 18446744065119617023,
+// opcode: sm3p1 ; op1:x21; dest:x2; op1val:0xfffffffdffffffff;
+li x21, 0xfffffffdffffffff
+sm3p1 x2, x21
+sw x2, 72(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x2, 0x0000000000000000)
+
+inst_32:
+// rs1_val == 18446744069414584319,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffeffffffff;
+li x10, 0xfffffffeffffffff
+sm3p1 x11, x10
+sw x11, 80(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_33:
+// rs1_val == 18446744071562067967,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffff7fffffff;
+li x10, 0xffffffff7fffffff
+sm3p1 x11, x10
+sw x11, 88(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_34:
+// rs1_val == 18446744072635809791,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffbfffffff;
+li x10, 0xffffffffbfffffff
+sm3p1 x11, x10
+sw x11, 96(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_35:
+// rs1_val == 18446744073172680703,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffdfffffff;
+li x10, 0xffffffffdfffffff
+sm3p1 x11, x10
+sw x11, 104(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_36:
+// rs1_val == 18446744073441116159,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffefffffff;
+li x10, 0xffffffffefffffff
+sm3p1 x11, x10
+sw x11, 112(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_37:
+// rs1_val == 18446744073575333887,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffff7ffffff;
+li x10, 0xfffffffff7ffffff
+sm3p1 x11, x10
+sw x11, 120(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_38:
+// rs1_val == 18446744073642442751,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffbffffff;
+li x10, 0xfffffffffbffffff
+sm3p1 x11, x10
+sw x11, 128(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_39:
+// rs1_val == 18446744073675997183,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffdffffff;
+li x10, 0xfffffffffdffffff
+sm3p1 x11, x10
+sw x11, 136(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_40:
+// rs1_val == 18446744073692774399,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffeffffff;
+li x10, 0xfffffffffeffffff
+sm3p1 x11, x10
+sw x11, 144(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_41:
+// rs1_val == 18446744073701163007,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffff7fffff;
+li x10, 0xffffffffff7fffff
+sm3p1 x11, x10
+sw x11, 152(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_42:
+// rs1_val == 18446744073705357311,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffbfffff;
+li x10, 0xffffffffffbfffff
+sm3p1 x11, x10
+sw x11, 160(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_43:
+// rs1_val == 18446744073707454463,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffdfffff;
+li x10, 0xffffffffffdfffff
+sm3p1 x11, x10
+sw x11, 168(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_44:
+// rs1_val == 18446744073708503039,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffefffff;
+li x10, 0xffffffffffefffff
+sm3p1 x11, x10
+sw x11, 176(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_45:
+// rs1_val == 18446744073709027327,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffff7ffff;
+li x10, 0xfffffffffff7ffff
+sm3p1 x11, x10
+sw x11, 184(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_46:
+// rs1_val == 18446744073709289471,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffbffff;
+li x10, 0xfffffffffffbffff
+sm3p1 x11, x10
+sw x11, 192(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_47:
+// rs1_val == 18446744073709420543,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffdffff;
+li x10, 0xfffffffffffdffff
+sm3p1 x11, x10
+sw x11, 200(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_48:
+// rs1_val == 18446744073709486079,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffeffff;
+li x10, 0xfffffffffffeffff
+sm3p1 x11, x10
+sw x11, 208(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_49:
+// rs1_val == 18446744073709518847,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffff7fff;
+li x10, 0xffffffffffff7fff
+sm3p1 x11, x10
+sw x11, 216(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_50:
+// rs1_val == 18446744073709535231,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffffbfff;
+li x10, 0xffffffffffffbfff
+sm3p1 x11, x10
+sw x11, 224(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_51:
+// rs1_val == 18446744073709543423,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffffdfff;
+li x10, 0xffffffffffffdfff
+sm3p1 x11, x10
+sw x11, 232(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_52:
+// rs1_val == 18446744073709547519,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffffefff;
+li x10, 0xffffffffffffefff
+sm3p1 x11, x10
+sw x11, 240(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_53:
+// rs1_val == 18446744073709549567,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffff7ff;
+li x10, 0xfffffffffffff7ff
+sm3p1 x11, x10
+sw x11, 248(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_54:
+// rs1_val == 18446744073709550591,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffffbff;
+li x10, 0xfffffffffffffbff
+sm3p1 x11, x10
+sw x11, 256(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_55:
+// rs1_val == 18446744073709551103,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffffdff;
+li x10, 0xfffffffffffffdff
+sm3p1 x11, x10
+sw x11, 264(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_56:
+// rs1_val == 18446744073709551359,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffffeff;
+li x10, 0xfffffffffffffeff
+sm3p1 x11, x10
+sw x11, 272(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_57:
+// rs1_val == 18446744073709551487,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffffff7f;
+li x10, 0xffffffffffffff7f
+sm3p1 x11, x10
+sw x11, 280(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_58:
+// rs1_val == 18446744073709551551,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffffffbf;
+li x10, 0xffffffffffffffbf
+sm3p1 x11, x10
+sw x11, 288(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_59:
+// rs1_val == 18446744073709551583,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffffffdf;
+li x10, 0xffffffffffffffdf
+sm3p1 x11, x10
+sw x11, 296(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_60:
+// rs1_val == 18446744073709551599,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffffffffffef;
+li x10, 0xffffffffffffffef
+sm3p1 x11, x10
+sw x11, 304(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_61:
+// rs1_val == 18446744073709551607,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffffff7;
+li x10, 0xfffffffffffffff7
+sm3p1 x11, x10
+sw x11, 312(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_62:
+// rs1_val == 18446744073709551611,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffb;
+li x10, 0xfffffffffffffffb
+sm3p1 x11, x10
+sw x11, 320(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_63:
+// rs1_val == 18446744073709551613,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffd;
+li x10, 0xfffffffffffffffd
+sm3p1 x11, x10
+sw x11, 328(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_64:
+// rs1_val == 18446744073709551614,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfffffffffffffffe;
+li x10, 0xfffffffffffffffe
+sm3p1 x11, x10
+sw x11, 336(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_65:
+// rs1_val == 9223372036854775808,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x8000000000000000;
+li x10, 0x8000000000000000
+sm3p1 x11, x10
+sw x11, 344(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_66:
+// rs1_val == 4611686018427387904,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x4000000000000000;
+li x10, 0x4000000000000000
+sm3p1 x11, x10
+sw x11, 352(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_67:
+// rs1_val == 2305843009213693952,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x2000000000000000;
+li x10, 0x2000000000000000
+sm3p1 x11, x10
+sw x11, 360(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_68:
+// rs1_val == 1152921504606846976,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x1000000000000000;
+li x10, 0x1000000000000000
+sm3p1 x11, x10
+sw x11, 368(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_69:
+// rs1_val == 576460752303423488,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x800000000000000;
+li x10, 0x800000000000000
+sm3p1 x11, x10
+sw x11, 376(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_70:
+// rs1_val == 288230376151711744,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x400000000000000;
+li x10, 0x400000000000000
+sm3p1 x11, x10
+sw x11, 384(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_71:
+// rs1_val == 144115188075855872,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x200000000000000;
+li x10, 0x200000000000000
+sm3p1 x11, x10
+sw x11, 392(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_72:
+// rs1_val == 72057594037927936,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x100000000000000;
+li x10, 0x100000000000000
+sm3p1 x11, x10
+sw x11, 400(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_73:
+// rs1_val == 36028797018963968,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x80000000000000;
+li x10, 0x80000000000000
+sm3p1 x11, x10
+sw x11, 408(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_74:
+// rs1_val == 18014398509481984,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x40000000000000;
+li x10, 0x40000000000000
+sm3p1 x11, x10
+sw x11, 416(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_75:
+// rs1_val == 9007199254740992,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x20000000000000;
+li x10, 0x20000000000000
+sm3p1 x11, x10
+sw x11, 424(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_76:
+// rs1_val == 4503599627370496,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x10000000000000;
+li x10, 0x10000000000000
+sm3p1 x11, x10
+sw x11, 432(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_77:
+// rs1_val == 2251799813685248,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x8000000000000;
+li x10, 0x8000000000000
+sm3p1 x11, x10
+sw x11, 440(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_78:
+// rs1_val == 1125899906842624,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x4000000000000;
+li x10, 0x4000000000000
+sm3p1 x11, x10
+sw x11, 448(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_79:
+// rs1_val == 562949953421312,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x2000000000000;
+li x10, 0x2000000000000
+sm3p1 x11, x10
+sw x11, 456(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_80:
+// rs1_val == 281474976710656,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x1000000000000;
+li x10, 0x1000000000000
+sm3p1 x11, x10
+sw x11, 464(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_81:
+// rs1_val == 140737488355328,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x800000000000;
+li x10, 0x800000000000
+sm3p1 x11, x10
+sw x11, 472(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_82:
+// rs1_val == 70368744177664,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x400000000000;
+li x10, 0x400000000000
+sm3p1 x11, x10
+sw x11, 480(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_83:
+// rs1_val == 35184372088832,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x200000000000;
+li x10, 0x200000000000
+sm3p1 x11, x10
+sw x11, 488(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_84:
+// rs1_val == 17592186044416,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x100000000000;
+li x10, 0x100000000000
+sm3p1 x11, x10
+sw x11, 496(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_85:
+// rs1_val == 1,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x1;
+li x10, 0x1
+sm3p1 x11, x10
+sw x11, 504(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_86:
+// rs1_val == 0xb6f9706fb4f741aa
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xb6f9706fb4f741aa;
+li x10, 0xb6f9706fb4f741aa
+sm3p1 x11, x10
+sw x11, 512(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_87:
+// rs1_val == 0x40a5ff526f38a9c7
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x40a5ff526f38a9c7;
+li x10, 0x40a5ff526f38a9c7
+sm3p1 x11, x10
+sw x11, 520(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_88:
+// rs1_val == 0xd05668ae0fdb82bc
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xd05668ae0fdb82bc;
+li x10, 0xd05668ae0fdb82bc
+sm3p1 x11, x10
+sw x11, 528(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_89:
+// rs1_val == 0x9bedfe390d6ddd9d
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x9bedfe390d6ddd9d;
+li x10, 0x9bedfe390d6ddd9d
+sm3p1 x11, x10
+sw x11, 536(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_90:
+// rs1_val == 0xaa6bb2bde9ed477d
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xaa6bb2bde9ed477d;
+li x10, 0xaa6bb2bde9ed477d
+sm3p1 x11, x10
+sw x11, 544(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_91:
+// rs1_val == 0xd75739f82ac177c6
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xd75739f82ac177c6;
+li x10, 0xd75739f82ac177c6
+sm3p1 x11, x10
+sw x11, 552(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_92:
+// rs1_val == 0x299c3bcf90efb625
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x299c3bcf90efb625;
+li x10, 0x299c3bcf90efb625
+sm3p1 x11, x10
+sw x11, 560(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_93:
+// rs1_val == 0x9a4e9ef10171f4df
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x9a4e9ef10171f4df;
+li x10, 0x9a4e9ef10171f4df
+sm3p1 x11, x10
+sw x11, 568(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_94:
+// rs1_val == 0x1fc493caa371db42
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x1fc493caa371db42;
+li x10, 0x1fc493caa371db42
+sm3p1 x11, x10
+sw x11, 576(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_95:
+// rs1_val == 0xd169a3f8cad5e297
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xd169a3f8cad5e297;
+li x10, 0xd169a3f8cad5e297
+sm3p1 x11, x10
+sw x11, 584(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_96:
+// rs1_val == 0xf4c30307672f666d
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xf4c30307672f666d;
+li x10, 0xf4c30307672f666d
+sm3p1 x11, x10
+sw x11, 592(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_97:
+// rs1_val == 0xd5b9fe5cf69bdcf3
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xd5b9fe5cf69bdcf3;
+li x10, 0xd5b9fe5cf69bdcf3
+sm3p1 x11, x10
+sw x11, 600(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_98:
+// rs1_val == 0xa0569d765ebc64cb
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xa0569d765ebc64cb;
+li x10, 0xa0569d765ebc64cb
+sm3p1 x11, x10
+sw x11, 608(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_99:
+// rs1_val == 0xe4921bf73047c198
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xe4921bf73047c198;
+li x10, 0xe4921bf73047c198
+sm3p1 x11, x10
+sw x11, 616(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_100:
+// rs1_val == 0x2daf9ac7f5faf207
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x2daf9ac7f5faf207;
+li x10, 0x2daf9ac7f5faf207
+sm3p1 x11, x10
+sw x11, 624(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_101:
+// rs1_val == 0xfcc1b543c49cd65b
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfcc1b543c49cd65b;
+li x10, 0xfcc1b543c49cd65b
+sm3p1 x11, x10
+sw x11, 632(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_102:
+// rs1_val == 0x3459294ef273b44c
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x3459294ef273b44c;
+li x10, 0x3459294ef273b44c
+sm3p1 x11, x10
+sw x11, 640(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_103:
+// rs1_val == 0x436f40f274b8de87
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x436f40f274b8de87;
+li x10, 0x436f40f274b8de87
+sm3p1 x11, x10
+sw x11, 648(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_104:
+// rs1_val == 0xc5521660f3a3c571
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xc5521660f3a3c571;
+li x10, 0xc5521660f3a3c571
+sm3p1 x11, x10
+sw x11, 656(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_105:
+// rs1_val == 8796093022208,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x80000000000;
+li x10, 0x80000000000
+sm3p1 x11, x10
+sw x11, 664(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_106:
+// rs1_val == 4398046511104,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x40000000000;
+li x10, 0x40000000000
+sm3p1 x11, x10
+sw x11, 672(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_107:
+// rs1_val == 2199023255552,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x20000000000;
+li x10, 0x20000000000
+sm3p1 x11, x10
+sw x11, 680(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_108:
+// rs1_val == 1099511627776,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x10000000000;
+li x10, 0x10000000000
+sm3p1 x11, x10
+sw x11, 688(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_109:
+// rs1_val == 549755813888,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x8000000000;
+li x10, 0x8000000000
+sm3p1 x11, x10
+sw x11, 696(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_110:
+// rs1_val == 274877906944,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x4000000000;
+li x10, 0x4000000000
+sm3p1 x11, x10
+sw x11, 704(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_111:
+// rs1_val == 137438953472,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x2000000000;
+li x10, 0x2000000000
+sm3p1 x11, x10
+sw x11, 712(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_112:
+// rs1_val == 68719476736,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x1000000000;
+li x10, 0x1000000000
+sm3p1 x11, x10
+sw x11, 720(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_113:
+// rs1_val == 34359738368,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x800000000;
+li x10, 0x800000000
+sm3p1 x11, x10
+sw x11, 728(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_114:
+// rs1_val == 17179869184,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x400000000;
+li x10, 0x400000000
+sm3p1 x11, x10
+sw x11, 736(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_115:
+// rs1_val == 8589934592,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x200000000;
+li x10, 0x200000000
+sm3p1 x11, x10
+sw x11, 744(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_116:
+// rs1_val == 4294967296,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x100000000;
+li x10, 0x100000000
+sm3p1 x11, x10
+sw x11, 752(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_117:
+// rs1_val == 2147483648,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x80000000;
+li x10, 0x80000000
+sm3p1 x11, x10
+sw x11, 760(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_118:
+// rs1_val == 1073741824,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x40000000;
+li x10, 0x40000000
+sm3p1 x11, x10
+sw x11, 768(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_119:
+// rs1_val == 536870912,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x20000000;
+li x10, 0x20000000
+sm3p1 x11, x10
+sw x11, 776(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_120:
+// rs1_val == 268435456,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x10000000;
+li x10, 0x10000000
+sm3p1 x11, x10
+sw x11, 784(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_121:
+// rs1_val == 134217728,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x8000000;
+li x10, 0x8000000
+sm3p1 x11, x10
+sw x11, 792(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_122:
+// rs1_val == 67108864,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x4000000;
+li x10, 0x4000000
+sm3p1 x11, x10
+sw x11, 800(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_123:
+// rs1_val == 33554432,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x2000000;
+li x10, 0x2000000
+sm3p1 x11, x10
+sw x11, 808(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_124:
+// rs1_val == 16777216,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x1000000;
+li x10, 0x1000000
+sm3p1 x11, x10
+sw x11, 816(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_125:
+// rs1_val == 8388608,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x800000;
+li x10, 0x800000
+sm3p1 x11, x10
+sw x11, 824(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_126:
+// rs1_val == 4194304,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x400000;
+li x10, 0x400000
+sm3p1 x11, x10
+sw x11, 832(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_127:
+// rs1_val == 2097152,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x200000;
+li x10, 0x200000
+sm3p1 x11, x10
+sw x11, 840(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_128:
+// rs1_val == 1048576,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x100000;
+li x10, 0x100000
+sm3p1 x11, x10
+sw x11, 848(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_129:
+// rs1_val == 524288,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x80000;
+li x10, 0x80000
+sm3p1 x11, x10
+sw x11, 856(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_130:
+// rs1_val == 262144,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x40000;
+li x10, 0x40000
+sm3p1 x11, x10
+sw x11, 864(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_131:
+// rs1_val == 131072,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x20000;
+li x10, 0x20000
+sm3p1 x11, x10
+sw x11, 872(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_132:
+// rs1_val == 65536,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x10000;
+li x10, 0x10000
+sm3p1 x11, x10
+sw x11, 880(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_133:
+// rs1_val == 32768,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x8000;
+li x10, 0x8000
+sm3p1 x11, x10
+sw x11, 888(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_134:
+// rs1_val == 16384,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x4000;
+li x10, 0x4000
+sm3p1 x11, x10
+sw x11, 896(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_135:
+// rs1_val == 8192,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x2000;
+li x10, 0x2000
+sm3p1 x11, x10
+sw x11, 904(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_136:
+// rs1_val == 4096,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x1000;
+li x10, 0x1000
+sm3p1 x11, x10
+sw x11, 912(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_137:
+// rs1_val == 2048,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x800;
+li x10, 0x800
+sm3p1 x11, x10
+sw x11, 920(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_138:
+// rs1_val == 1024,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x400;
+li x10, 0x400
+sm3p1 x11, x10
+sw x11, 928(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_139:
+// rs1_val == 512,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x200;
+li x10, 0x200
+sm3p1 x11, x10
+sw x11, 936(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_140:
+// rs1_val == 256,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x100;
+li x10, 0x100
+sm3p1 x11, x10
+sw x11, 944(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_141:
+// rs1_val == 128,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x80;
+li x10, 0x80
+sm3p1 x11, x10
+sw x11, 952(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_142:
+// rs1_val == 64,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x40;
+li x10, 0x40
+sm3p1 x11, x10
+sw x11, 960(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_143:
+// rs1_val == 32,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x20;
+li x10, 0x20
+sm3p1 x11, x10
+sw x11, 968(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_144:
+// rs1_val == 16,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x10;
+li x10, 0x10
+sm3p1 x11, x10
+sw x11, 976(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_145:
+// rs1_val == 8,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x8;
+li x10, 0x8
+sm3p1 x11, x10
+sw x11, 984(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_146:
+// rs1_val == 4,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x4;
+li x10, 0x4
+sm3p1 x11, x10
+sw x11, 992(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_147:
+// rs1_val == 2,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0x2;
+li x10, 0x2
+sm3p1 x11, x10
+sw x11, 1000(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_148:
+// rs1_val == 18302628885633695743,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xfdffffffffffffff;
+li x10, 0xfdffffffffffffff
+sm3p1 x11, x10
+sw x11, 1008(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+
+inst_149:
+// rs1_val == 18446743798831644671,
+// opcode: sm3p1 ; op1:x10; dest:x11; op1val:0xffffffbfffffffff;
+li x10, 0xffffffbfffffffff
+sm3p1 x11, x10
+sw x11, 1016(x1)
+RVMODEL_IO_ASSERT_GPR_EQ(x3, x11, 0x0000000000000000)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x9_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x9_1:
+ .fill 22*(XLEN/32),4,0xdeadbeef
+
+
+signature_x1_0:
+ .fill 128*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-rwp1.S
new file mode 100644
index 000000000..80d605ce8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-rwp1.S
@@ -0,0 +1,969 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sm3p1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",sm3p1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+xor x3, x1, x2;
+sm3p1 x1, x3;
+xor x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,0);
+RVTEST_SIGUPD(x31,x1,8);
+RVTEST_SIGUPD(x31,x4,16);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+not x3, x2;
+sm3p1 x1, x3;
+not x4, x1;
+RVTEST_SIGUPD(x31,x3,24);
+RVTEST_SIGUPD(x31,x1,32);
+RVTEST_SIGUPD(x31,x4,40);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+add x3, x1, x2;
+sm3p1 x1, x3;
+add x4, x1, x2;
+RVTEST_SIGUPD(x31,x3,48);
+RVTEST_SIGUPD(x31,x1,56);
+RVTEST_SIGUPD(x31,x4,64);
+
+inst_1:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+xor x4, x2, x3;
+sm3p1 x2, x4;
+xor x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,72);
+RVTEST_SIGUPD(x31,x2,80);
+RVTEST_SIGUPD(x31,x5,88);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+not x4, x3;
+sm3p1 x2, x4;
+not x5, x2;
+RVTEST_SIGUPD(x31,x4,96);
+RVTEST_SIGUPD(x31,x2,104);
+RVTEST_SIGUPD(x31,x5,112);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+add x4, x2, x3;
+sm3p1 x2, x4;
+add x5, x2, x3;
+RVTEST_SIGUPD(x31,x4,120);
+RVTEST_SIGUPD(x31,x2,128);
+RVTEST_SIGUPD(x31,x5,136);
+
+inst_2:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+xor x5, x3, x4;
+sm3p1 x3, x5;
+xor x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,144);
+RVTEST_SIGUPD(x31,x3,152);
+RVTEST_SIGUPD(x31,x6,160);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+not x5, x4;
+sm3p1 x3, x5;
+not x6, x3;
+RVTEST_SIGUPD(x31,x5,168);
+RVTEST_SIGUPD(x31,x3,176);
+RVTEST_SIGUPD(x31,x6,184);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+add x5, x3, x4;
+sm3p1 x3, x5;
+add x6, x3, x4;
+RVTEST_SIGUPD(x31,x5,192);
+RVTEST_SIGUPD(x31,x3,200);
+RVTEST_SIGUPD(x31,x6,208);
+
+inst_3:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+xor x6, x4, x5;
+sm3p1 x4, x6;
+xor x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,216);
+RVTEST_SIGUPD(x31,x4,224);
+RVTEST_SIGUPD(x31,x7,232);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+not x6, x5;
+sm3p1 x4, x6;
+not x7, x4;
+RVTEST_SIGUPD(x31,x6,240);
+RVTEST_SIGUPD(x31,x4,248);
+RVTEST_SIGUPD(x31,x7,256);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+add x6, x4, x5;
+sm3p1 x4, x6;
+add x7, x4, x5;
+RVTEST_SIGUPD(x31,x6,264);
+RVTEST_SIGUPD(x31,x4,272);
+RVTEST_SIGUPD(x31,x7,280);
+
+inst_4:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+xor x7, x5, x6;
+sm3p1 x5, x7;
+xor x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,288);
+RVTEST_SIGUPD(x31,x5,296);
+RVTEST_SIGUPD(x31,x8,304);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+not x7, x6;
+sm3p1 x5, x7;
+not x8, x5;
+RVTEST_SIGUPD(x31,x7,312);
+RVTEST_SIGUPD(x31,x5,320);
+RVTEST_SIGUPD(x31,x8,328);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+add x7, x5, x6;
+sm3p1 x5, x7;
+add x8, x5, x6;
+RVTEST_SIGUPD(x31,x7,336);
+RVTEST_SIGUPD(x31,x5,344);
+RVTEST_SIGUPD(x31,x8,352);
+
+inst_5:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+xor x8, x6, x7;
+sm3p1 x6, x8;
+xor x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,360);
+RVTEST_SIGUPD(x31,x6,368);
+RVTEST_SIGUPD(x31,x9,376);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+not x8, x7;
+sm3p1 x6, x8;
+not x9, x6;
+RVTEST_SIGUPD(x31,x8,384);
+RVTEST_SIGUPD(x31,x6,392);
+RVTEST_SIGUPD(x31,x9,400);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+add x8, x6, x7;
+sm3p1 x6, x8;
+add x9, x6, x7;
+RVTEST_SIGUPD(x31,x8,408);
+RVTEST_SIGUPD(x31,x6,416);
+RVTEST_SIGUPD(x31,x9,424);
+
+inst_6:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+xor x9, x7, x8;
+sm3p1 x7, x9;
+xor x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,432);
+RVTEST_SIGUPD(x31,x7,440);
+RVTEST_SIGUPD(x31,x10,448);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+not x9, x8;
+sm3p1 x7, x9;
+not x10, x7;
+RVTEST_SIGUPD(x31,x9,456);
+RVTEST_SIGUPD(x31,x7,464);
+RVTEST_SIGUPD(x31,x10,472);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+add x9, x7, x8;
+sm3p1 x7, x9;
+add x10, x7, x8;
+RVTEST_SIGUPD(x31,x9,480);
+RVTEST_SIGUPD(x31,x7,488);
+RVTEST_SIGUPD(x31,x10,496);
+
+inst_7:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+xor x10, x8, x9;
+sm3p1 x8, x10;
+xor x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,504);
+RVTEST_SIGUPD(x31,x8,512);
+RVTEST_SIGUPD(x31,x11,520);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+not x10, x9;
+sm3p1 x8, x10;
+not x11, x8;
+RVTEST_SIGUPD(x31,x10,528);
+RVTEST_SIGUPD(x31,x8,536);
+RVTEST_SIGUPD(x31,x11,544);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+add x10, x8, x9;
+sm3p1 x8, x10;
+add x11, x8, x9;
+RVTEST_SIGUPD(x31,x10,552);
+RVTEST_SIGUPD(x31,x8,560);
+RVTEST_SIGUPD(x31,x11,568);
+
+inst_8:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+xor x11, x9, x10;
+sm3p1 x9, x11;
+xor x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,576);
+RVTEST_SIGUPD(x31,x9,584);
+RVTEST_SIGUPD(x31,x12,592);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+not x11, x10;
+sm3p1 x9, x11;
+not x12, x9;
+RVTEST_SIGUPD(x31,x11,600);
+RVTEST_SIGUPD(x31,x9,608);
+RVTEST_SIGUPD(x31,x12,616);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+add x11, x9, x10;
+sm3p1 x9, x11;
+add x12, x9, x10;
+RVTEST_SIGUPD(x31,x11,624);
+RVTEST_SIGUPD(x31,x9,632);
+RVTEST_SIGUPD(x31,x12,640);
+
+inst_9:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+xor x12, x10, x11;
+sm3p1 x10, x12;
+xor x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,648);
+RVTEST_SIGUPD(x31,x10,656);
+RVTEST_SIGUPD(x31,x13,664);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+not x12, x11;
+sm3p1 x10, x12;
+not x13, x10;
+RVTEST_SIGUPD(x31,x12,672);
+RVTEST_SIGUPD(x31,x10,680);
+RVTEST_SIGUPD(x31,x13,688);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+add x12, x10, x11;
+sm3p1 x10, x12;
+add x13, x10, x11;
+RVTEST_SIGUPD(x31,x12,696);
+RVTEST_SIGUPD(x31,x10,704);
+RVTEST_SIGUPD(x31,x13,712);
+
+inst_10:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+xor x13, x11, x12;
+sm3p1 x11, x13;
+xor x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,720);
+RVTEST_SIGUPD(x31,x11,728);
+RVTEST_SIGUPD(x31,x14,736);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+not x13, x12;
+sm3p1 x11, x13;
+not x14, x11;
+RVTEST_SIGUPD(x31,x13,744);
+RVTEST_SIGUPD(x31,x11,752);
+RVTEST_SIGUPD(x31,x14,760);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+add x13, x11, x12;
+sm3p1 x11, x13;
+add x14, x11, x12;
+RVTEST_SIGUPD(x31,x13,768);
+RVTEST_SIGUPD(x31,x11,776);
+RVTEST_SIGUPD(x31,x14,784);
+
+inst_11:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+xor x14, x12, x13;
+sm3p1 x12, x14;
+xor x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,792);
+RVTEST_SIGUPD(x31,x12,800);
+RVTEST_SIGUPD(x31,x15,808);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+not x14, x13;
+sm3p1 x12, x14;
+not x15, x12;
+RVTEST_SIGUPD(x31,x14,816);
+RVTEST_SIGUPD(x31,x12,824);
+RVTEST_SIGUPD(x31,x15,832);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+add x14, x12, x13;
+sm3p1 x12, x14;
+add x15, x12, x13;
+RVTEST_SIGUPD(x31,x14,840);
+RVTEST_SIGUPD(x31,x12,848);
+RVTEST_SIGUPD(x31,x15,856);
+
+inst_12:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+xor x15, x13, x14;
+sm3p1 x13, x15;
+xor x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,864);
+RVTEST_SIGUPD(x31,x13,872);
+RVTEST_SIGUPD(x31,x16,880);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+not x15, x14;
+sm3p1 x13, x15;
+not x16, x13;
+RVTEST_SIGUPD(x31,x15,888);
+RVTEST_SIGUPD(x31,x13,896);
+RVTEST_SIGUPD(x31,x16,904);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+add x15, x13, x14;
+sm3p1 x13, x15;
+add x16, x13, x14;
+RVTEST_SIGUPD(x31,x15,912);
+RVTEST_SIGUPD(x31,x13,920);
+RVTEST_SIGUPD(x31,x16,928);
+
+inst_13:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+xor x16, x14, x15;
+sm3p1 x14, x16;
+xor x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,936);
+RVTEST_SIGUPD(x31,x14,944);
+RVTEST_SIGUPD(x31,x17,952);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+not x16, x15;
+sm3p1 x14, x16;
+not x17, x14;
+RVTEST_SIGUPD(x31,x16,960);
+RVTEST_SIGUPD(x31,x14,968);
+RVTEST_SIGUPD(x31,x17,976);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+add x16, x14, x15;
+sm3p1 x14, x16;
+add x17, x14, x15;
+RVTEST_SIGUPD(x31,x16,984);
+RVTEST_SIGUPD(x31,x14,992);
+RVTEST_SIGUPD(x31,x17,1000);
+
+inst_14:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+xor x17, x15, x16;
+sm3p1 x15, x17;
+xor x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1008);
+RVTEST_SIGUPD(x31,x15,1016);
+RVTEST_SIGUPD(x31,x18,1024);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+not x17, x16;
+sm3p1 x15, x17;
+not x18, x15;
+RVTEST_SIGUPD(x31,x17,1032);
+RVTEST_SIGUPD(x31,x15,1040);
+RVTEST_SIGUPD(x31,x18,1048);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+add x17, x15, x16;
+sm3p1 x15, x17;
+add x18, x15, x16;
+RVTEST_SIGUPD(x31,x17,1056);
+RVTEST_SIGUPD(x31,x15,1064);
+RVTEST_SIGUPD(x31,x18,1072);
+
+inst_15:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+xor x18, x16, x17;
+sm3p1 x16, x18;
+xor x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1080);
+RVTEST_SIGUPD(x31,x16,1088);
+RVTEST_SIGUPD(x31,x19,1096);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+not x18, x17;
+sm3p1 x16, x18;
+not x19, x16;
+RVTEST_SIGUPD(x31,x18,1104);
+RVTEST_SIGUPD(x31,x16,1112);
+RVTEST_SIGUPD(x31,x19,1120);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+add x18, x16, x17;
+sm3p1 x16, x18;
+add x19, x16, x17;
+RVTEST_SIGUPD(x31,x18,1128);
+RVTEST_SIGUPD(x31,x16,1136);
+RVTEST_SIGUPD(x31,x19,1144);
+
+inst_16:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+xor x19, x17, x18;
+sm3p1 x17, x19;
+xor x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1152);
+RVTEST_SIGUPD(x31,x17,1160);
+RVTEST_SIGUPD(x31,x20,1168);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+not x19, x18;
+sm3p1 x17, x19;
+not x20, x17;
+RVTEST_SIGUPD(x31,x19,1176);
+RVTEST_SIGUPD(x31,x17,1184);
+RVTEST_SIGUPD(x31,x20,1192);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+add x19, x17, x18;
+sm3p1 x17, x19;
+add x20, x17, x18;
+RVTEST_SIGUPD(x31,x19,1200);
+RVTEST_SIGUPD(x31,x17,1208);
+RVTEST_SIGUPD(x31,x20,1216);
+
+inst_17:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+xor x20, x18, x19;
+sm3p1 x18, x20;
+xor x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1224);
+RVTEST_SIGUPD(x31,x18,1232);
+RVTEST_SIGUPD(x31,x21,1240);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+not x20, x19;
+sm3p1 x18, x20;
+not x21, x18;
+RVTEST_SIGUPD(x31,x20,1248);
+RVTEST_SIGUPD(x31,x18,1256);
+RVTEST_SIGUPD(x31,x21,1264);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+add x20, x18, x19;
+sm3p1 x18, x20;
+add x21, x18, x19;
+RVTEST_SIGUPD(x31,x20,1272);
+RVTEST_SIGUPD(x31,x18,1280);
+RVTEST_SIGUPD(x31,x21,1288);
+
+inst_18:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+xor x21, x19, x20;
+sm3p1 x19, x21;
+xor x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1296);
+RVTEST_SIGUPD(x31,x19,1304);
+RVTEST_SIGUPD(x31,x22,1312);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+not x21, x20;
+sm3p1 x19, x21;
+not x22, x19;
+RVTEST_SIGUPD(x31,x21,1320);
+RVTEST_SIGUPD(x31,x19,1328);
+RVTEST_SIGUPD(x31,x22,1336);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+add x21, x19, x20;
+sm3p1 x19, x21;
+add x22, x19, x20;
+RVTEST_SIGUPD(x31,x21,1344);
+RVTEST_SIGUPD(x31,x19,1352);
+RVTEST_SIGUPD(x31,x22,1360);
+
+inst_19:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+xor x22, x20, x21;
+sm3p1 x20, x22;
+xor x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1368);
+RVTEST_SIGUPD(x31,x20,1376);
+RVTEST_SIGUPD(x31,x23,1384);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+not x22, x21;
+sm3p1 x20, x22;
+not x23, x20;
+RVTEST_SIGUPD(x31,x22,1392);
+RVTEST_SIGUPD(x31,x20,1400);
+RVTEST_SIGUPD(x31,x23,1408);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+add x22, x20, x21;
+sm3p1 x20, x22;
+add x23, x20, x21;
+RVTEST_SIGUPD(x31,x22,1416);
+RVTEST_SIGUPD(x31,x20,1424);
+RVTEST_SIGUPD(x31,x23,1432);
+
+inst_20:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+xor x23, x21, x22;
+sm3p1 x21, x23;
+xor x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1440);
+RVTEST_SIGUPD(x31,x21,1448);
+RVTEST_SIGUPD(x31,x24,1456);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+not x23, x22;
+sm3p1 x21, x23;
+not x24, x21;
+RVTEST_SIGUPD(x31,x23,1464);
+RVTEST_SIGUPD(x31,x21,1472);
+RVTEST_SIGUPD(x31,x24,1480);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+add x23, x21, x22;
+sm3p1 x21, x23;
+add x24, x21, x22;
+RVTEST_SIGUPD(x31,x23,1488);
+RVTEST_SIGUPD(x31,x21,1496);
+RVTEST_SIGUPD(x31,x24,1504);
+
+inst_21:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+xor x24, x22, x23;
+sm3p1 x22, x24;
+xor x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1512);
+RVTEST_SIGUPD(x31,x22,1520);
+RVTEST_SIGUPD(x31,x25,1528);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+not x24, x23;
+sm3p1 x22, x24;
+not x25, x22;
+RVTEST_SIGUPD(x31,x24,1536);
+RVTEST_SIGUPD(x31,x22,1544);
+RVTEST_SIGUPD(x31,x25,1552);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+add x24, x22, x23;
+sm3p1 x22, x24;
+add x25, x22, x23;
+RVTEST_SIGUPD(x31,x24,1560);
+RVTEST_SIGUPD(x31,x22,1568);
+RVTEST_SIGUPD(x31,x25,1576);
+
+inst_22:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+xor x25, x23, x24;
+sm3p1 x23, x25;
+xor x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1584);
+RVTEST_SIGUPD(x31,x23,1592);
+RVTEST_SIGUPD(x31,x26,1600);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+not x25, x24;
+sm3p1 x23, x25;
+not x26, x23;
+RVTEST_SIGUPD(x31,x25,1608);
+RVTEST_SIGUPD(x31,x23,1616);
+RVTEST_SIGUPD(x31,x26,1624);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+add x25, x23, x24;
+sm3p1 x23, x25;
+add x26, x23, x24;
+RVTEST_SIGUPD(x31,x25,1632);
+RVTEST_SIGUPD(x31,x23,1640);
+RVTEST_SIGUPD(x31,x26,1648);
+
+inst_23:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+xor x26, x24, x25;
+sm3p1 x24, x26;
+xor x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1656);
+RVTEST_SIGUPD(x31,x24,1664);
+RVTEST_SIGUPD(x31,x27,1672);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+not x26, x25;
+sm3p1 x24, x26;
+not x27, x24;
+RVTEST_SIGUPD(x31,x26,1680);
+RVTEST_SIGUPD(x31,x24,1688);
+RVTEST_SIGUPD(x31,x27,1696);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+add x26, x24, x25;
+sm3p1 x24, x26;
+add x27, x24, x25;
+RVTEST_SIGUPD(x31,x26,1704);
+RVTEST_SIGUPD(x31,x24,1712);
+RVTEST_SIGUPD(x31,x27,1720);
+
+inst_24:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+xor x27, x25, x26;
+sm3p1 x25, x27;
+xor x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1728);
+RVTEST_SIGUPD(x31,x25,1736);
+RVTEST_SIGUPD(x31,x28,1744);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+not x27, x26;
+sm3p1 x25, x27;
+not x28, x25;
+RVTEST_SIGUPD(x31,x27,1752);
+RVTEST_SIGUPD(x31,x25,1760);
+RVTEST_SIGUPD(x31,x28,1768);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+add x27, x25, x26;
+sm3p1 x25, x27;
+add x28, x25, x26;
+RVTEST_SIGUPD(x31,x27,1776);
+RVTEST_SIGUPD(x31,x25,1784);
+RVTEST_SIGUPD(x31,x28,1792);
+
+inst_25:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+xor x28, x26, x27;
+sm3p1 x26, x28;
+xor x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1800);
+RVTEST_SIGUPD(x31,x26,1808);
+RVTEST_SIGUPD(x31,x29,1816);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+not x28, x27;
+sm3p1 x26, x28;
+not x29, x26;
+RVTEST_SIGUPD(x31,x28,1824);
+RVTEST_SIGUPD(x31,x26,1832);
+RVTEST_SIGUPD(x31,x29,1840);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+add x28, x26, x27;
+sm3p1 x26, x28;
+add x29, x26, x27;
+RVTEST_SIGUPD(x31,x28,1848);
+RVTEST_SIGUPD(x31,x26,1856);
+RVTEST_SIGUPD(x31,x29,1864);
+
+inst_26:
+// Forwarded xor into sm3p1 & the result back into xor
+// opcode: sm3p1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+xor x29, x27, x28;
+sm3p1 x27, x29;
+xor x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1872);
+RVTEST_SIGUPD(x31,x27,1880);
+RVTEST_SIGUPD(x31,x30,1888);
+
+// Forwarded not into sm3p1 & the result back into not
+// opcode: sm3p1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+not x29, x28;
+sm3p1 x27, x29;
+not x30, x27;
+RVTEST_SIGUPD(x31,x29,1896);
+RVTEST_SIGUPD(x31,x27,1904);
+RVTEST_SIGUPD(x31,x30,1912);
+
+// Forwarded add into sm3p1 & the result back into add
+// opcode: sm3p1; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
+li x27, 0x239853f9120ff957;
+li x28, 0x2d13320e40d0e5e7;
+add x29, x27, x28;
+sm3p1 x27, x29;
+add x30, x27, x28;
+RVTEST_SIGUPD(x31,x29,1920);
+RVTEST_SIGUPD(x31,x27,1928);
+RVTEST_SIGUPD(x31,x30,1936);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 243*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-rwp2.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-rwp2.S
new file mode 100644
index 000000000..5a4aa340b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm3p1-rwp2.S
@@ -0,0 +1,304 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sm3p1)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",sm3p1)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+la x1, rvtest_data
+
+inst_0:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x2; dest1:x3;
+LREG x2, 0(x1);
+sm3p1 x3, x2;
+RVTEST_SIGUPD(x31,x2,0);
+RVTEST_SIGUPD(x31,x3,8);
+
+inst_1:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x3; dest1:x4;
+LREG x3, 8(x1);
+sm3p1 x4, x3;
+RVTEST_SIGUPD(x31,x3,16);
+RVTEST_SIGUPD(x31,x4,24);
+
+inst_2:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x4; dest1:x5;
+LREG x4, 16(x1);
+sm3p1 x5, x4;
+RVTEST_SIGUPD(x31,x4,32);
+RVTEST_SIGUPD(x31,x5,40);
+
+inst_3:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x5; dest1:x6;
+LREG x5, 24(x1);
+sm3p1 x6, x5;
+RVTEST_SIGUPD(x31,x5,48);
+RVTEST_SIGUPD(x31,x6,56);
+
+inst_4:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x6; dest1:x7;
+LREG x6, 32(x1);
+sm3p1 x7, x6;
+RVTEST_SIGUPD(x31,x6,64);
+RVTEST_SIGUPD(x31,x7,72);
+
+inst_5:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x7; dest1:x8;
+LREG x7, 40(x1);
+sm3p1 x8, x7;
+RVTEST_SIGUPD(x31,x7,80);
+RVTEST_SIGUPD(x31,x8,88);
+
+inst_6:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x8; dest1:x9;
+LREG x8, 48(x1);
+sm3p1 x9, x8;
+RVTEST_SIGUPD(x31,x8,96);
+RVTEST_SIGUPD(x31,x9,104);
+
+inst_7:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x9; dest1:x10;
+LREG x9, 56(x1);
+sm3p1 x10, x9;
+RVTEST_SIGUPD(x31,x9,112);
+RVTEST_SIGUPD(x31,x10,120);
+
+inst_8:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x10; dest1:x11;
+LREG x10, 64(x1);
+sm3p1 x11, x10;
+RVTEST_SIGUPD(x31,x10,128);
+RVTEST_SIGUPD(x31,x11,136);
+
+inst_9:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x11; dest1:x12;
+LREG x11, 72(x1);
+sm3p1 x12, x11;
+RVTEST_SIGUPD(x31,x11,144);
+RVTEST_SIGUPD(x31,x12,152);
+
+inst_10:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x12; dest1:x13;
+LREG x12, 80(x1);
+sm3p1 x13, x12;
+RVTEST_SIGUPD(x31,x12,160);
+RVTEST_SIGUPD(x31,x13,168);
+
+inst_11:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x13; dest1:x14;
+LREG x13, 88(x1);
+sm3p1 x14, x13;
+RVTEST_SIGUPD(x31,x13,176);
+RVTEST_SIGUPD(x31,x14,184);
+
+inst_12:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x14; dest1:x15;
+LREG x14, 96(x1);
+sm3p1 x15, x14;
+RVTEST_SIGUPD(x31,x14,192);
+RVTEST_SIGUPD(x31,x15,200);
+
+inst_13:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x15; dest1:x16;
+LREG x15, 104(x1);
+sm3p1 x16, x15;
+RVTEST_SIGUPD(x31,x15,208);
+RVTEST_SIGUPD(x31,x16,216);
+
+inst_14:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x16; dest1:x17;
+LREG x16, 112(x1);
+sm3p1 x17, x16;
+RVTEST_SIGUPD(x31,x16,224);
+RVTEST_SIGUPD(x31,x17,232);
+
+inst_15:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x17; dest1:x18;
+LREG x17, 120(x1);
+sm3p1 x18, x17;
+RVTEST_SIGUPD(x31,x17,240);
+RVTEST_SIGUPD(x31,x18,248);
+
+inst_16:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x18; dest1:x19;
+LREG x18, 128(x1);
+sm3p1 x19, x18;
+RVTEST_SIGUPD(x31,x18,256);
+RVTEST_SIGUPD(x31,x19,264);
+
+inst_17:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x19; dest1:x20;
+LREG x19, 136(x1);
+sm3p1 x20, x19;
+RVTEST_SIGUPD(x31,x19,272);
+RVTEST_SIGUPD(x31,x20,280);
+
+inst_18:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x20; dest1:x21;
+LREG x20, 144(x1);
+sm3p1 x21, x20;
+RVTEST_SIGUPD(x31,x20,288);
+RVTEST_SIGUPD(x31,x21,296);
+
+inst_19:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x21; dest1:x22;
+LREG x21, 152(x1);
+sm3p1 x22, x21;
+RVTEST_SIGUPD(x31,x21,304);
+RVTEST_SIGUPD(x31,x22,312);
+
+inst_20:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x22; dest1:x23;
+LREG x22, 160(x1);
+sm3p1 x23, x22;
+RVTEST_SIGUPD(x31,x22,320);
+RVTEST_SIGUPD(x31,x23,328);
+
+inst_21:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x23; dest1:x24;
+LREG x23, 168(x1);
+sm3p1 x24, x23;
+RVTEST_SIGUPD(x31,x23,336);
+RVTEST_SIGUPD(x31,x24,344);
+
+inst_22:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x24; dest1:x25;
+LREG x24, 176(x1);
+sm3p1 x25, x24;
+RVTEST_SIGUPD(x31,x24,352);
+RVTEST_SIGUPD(x31,x25,360);
+
+inst_23:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x25; dest1:x26;
+LREG x25, 184(x1);
+sm3p1 x26, x25;
+RVTEST_SIGUPD(x31,x25,368);
+RVTEST_SIGUPD(x31,x26,376);
+
+inst_24:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x26; dest1:x27;
+LREG x26, 192(x1);
+sm3p1 x27, x26;
+RVTEST_SIGUPD(x31,x26,384);
+RVTEST_SIGUPD(x31,x27,392);
+
+inst_25:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x27; dest1:x28;
+LREG x27, 200(x1);
+sm3p1 x28, x27;
+RVTEST_SIGUPD(x31,x27,400);
+RVTEST_SIGUPD(x31,x28,408);
+
+inst_26:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x28; dest1:x29;
+LREG x28, 208(x1);
+sm3p1 x29, x28;
+RVTEST_SIGUPD(x31,x28,416);
+RVTEST_SIGUPD(x31,x29,424);
+
+inst_27:
+// Checking load-to-use hazard!
+// opcode: sm3p1; op1:x29; dest1:x30;
+LREG x29, 216(x1);
+sm3p1 x30, x29;
+RVTEST_SIGUPD(x31,x29,432);
+RVTEST_SIGUPD(x31,x30,440);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.dword 0x08577eb1924770d3
+.dword 0x93fdcab87b89296c
+.dword 0xd2d6b8777dc59a3a
+.dword 0xcf84b683a749f9c5
+.dword 0x854a965708ceac39
+.dword 0x137a977753e8eb43
+.dword 0x5c74e45eff1e5bef
+.dword 0xdc3383836b9f15c4
+.dword 0x5ae6a2289a6ab329
+.dword 0x432779eeacca7f0d
+.dword 0xaf949e5e2cb7362c
+.dword 0x5cd2875ea96ec2b3
+.dword 0x9d02fc90708cc1b6
+.dword 0x953b00b00b54aa22
+.dword 0x224c06013c53d0e3
+.dword 0xe8dac663f0e58650
+.dword 0x3d7c95f9e5f0307e
+.dword 0x8c8a18b2aaac3142
+.dword 0x785036de6f9fb997
+.dword 0x95a4d257a7298c66
+.dword 0x807da245d814d575
+.dword 0x3d06143769b1dcbf
+.dword 0x7f21682208208d09
+.dword 0x14b91c79dae98554
+.dword 0xc5ec6148c6880007
+.dword 0x7213516d6a013380
+.dword 0x4652f62dae4839a1
+.dword 0x85986adb9e044706
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 56*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ed-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ed-01.S
new file mode 100644
index 000000000..5b11998a0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ed-01.S
@@ -0,0 +1,1489 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Thu Aug 12 11:00:04 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sm4ed instruction of the RISC-V _Zks extension for the sm4ed covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I_Zks")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sm4ed)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",sm4ed)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKsed.*);def TEST_CASE_1=True;",sm4ed)
+
+RVTEST_SIGBASE( x21,signature_x21_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x12, rs2==x16, rd==x2, rs1_val == 0x0706050403020100 and rs2_val == 0x0b0a090807060504 and imm_val == 0
+// opcode: sm4ed; rd: x2; op1:x12; op2:x16; op1val:0x706050403020100; op2val:0xb0a090807060504; immval:0x0
+TEST_RI_OP(sm4ed, x2, x12, x16, 0x0, 0x0000000000000000, 0x706050403020100, 0xb0a090807060504, x21, 0, x7)
+
+inst_1:
+// rs2 == rd != rs1, rs1==x6, rs2==x15, rd==x15, rs1_val == 0xbc36b151aeb006fc and rs2_val == 0x2cab43d86576923c and imm_val == 0x3
+// opcode: sm4ed; rd: x15; op1:x6; op2:x15; op1val:0xbc36b151aeb006fc; op2val:0x2cab43d86576923c; immval:0x3
+TEST_RI_OP(sm4ed, x15, x6, x15, 0x3, 0x0000000000000000, 0xbc36b151aeb006fc, 0x2cab43d86576923c, x21, 8, x7)
+
+inst_2:
+// rs1 == rs2 != rd, rs1==x28, rs2==x28, rd==x12, rs1_val == 0x156fe482f9fcd292 and rs2_val == 0x24c6435c8dca0621 and imm_val == 0x0
+// opcode: sm4ed; rd: x12; op1:x28; op2:x28; op1val:0x156fe482f9fcd292; op2val:0x156fe482f9fcd292; immval:0x0
+TEST_RI_OP(sm4ed, x12, x28, x28, 0x0, 0x0000000000000000, 0x156fe482f9fcd292, 0x156fe482f9fcd292, x21, 16, x7)
+
+inst_3:
+// rs1 == rs2 == rd, rs1==x3, rs2==x3, rd==x3, rs1_val == 0xa757e91e027e5943 and rs2_val == 0xda73ec2605e6750f and imm_val == 0x2
+// opcode: sm4ed; rd: x3; op1:x3; op2:x3; op1val:0xa757e91e027e5943; op2val:0xa757e91e027e5943; immval:0x2
+TEST_RI_OP(sm4ed, x3, x3, x3, 0x2, 0x0000000000000000, 0xa757e91e027e5943, 0xa757e91e027e5943, x21, 24, x7)
+
+inst_4:
+// rs1 == rd != rs2, rs1==x20, rs2==x12, rd==x20, rs1_val == 0xf452cbd863fa921d and rs2_val == 0x4b6587d88ef464d1 and imm_val == 0x3
+// opcode: sm4ed; rd: x20; op1:x20; op2:x12; op1val:0xf452cbd863fa921d; op2val:0x4b6587d88ef464d1; immval:0x3
+TEST_RI_OP(sm4ed, x20, x20, x12, 0x3, 0x0000000000000000, 0xf452cbd863fa921d, 0x4b6587d88ef464d1, x21, 32, x7)
+
+inst_5:
+// rs1==x23, rs2==x11, rd==x1, rs1_val == 0xd40f46a4356c1dcc and rs2_val == 0x30c33d97184e0f23 and imm_val == 0x0
+// opcode: sm4ed; rd: x1; op1:x23; op2:x11; op1val:0xd40f46a4356c1dcc; op2val:0x30c33d97184e0f23; immval:0x0
+TEST_RI_OP(sm4ed, x1, x23, x11, 0x0, 0x0000000000000000, 0xd40f46a4356c1dcc, 0x30c33d97184e0f23, x21, 40, x7)
+
+inst_6:
+// rs1==x17, rs2==x9, rd==x14, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088 and imm_val == 0x2
+// opcode: sm4ed; rd: x14; op1:x17; op2:x9; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088; immval:0x2
+TEST_RI_OP(sm4ed, x14, x17, x9, 0x2, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x21, 48, x7)
+
+inst_7:
+// rs1==x27, rs2==x2, rd==x9, rs1_val == 0x17168ab3a4351379 and rs2_val == 0xbbb4f560f222070c and imm_val == 0x0
+// opcode: sm4ed; rd: x9; op1:x27; op2:x2; op1val:0x17168ab3a4351379; op2val:0xbbb4f560f222070c; immval:0x0
+TEST_RI_OP(sm4ed, x9, x27, x2, 0x0, 0x0000000000000000, 0x17168ab3a4351379, 0xbbb4f560f222070c, x21, 56, x7)
+
+inst_8:
+// rs1==x16, rs2==x19, rd==x5, rs1_val == 0x3fb0fe60ef1d54db and rs2_val == 0x09ff42451826a804 and imm_val == 0x1
+// opcode: sm4ed; rd: x5; op1:x16; op2:x19; op1val:0x3fb0fe60ef1d54db; op2val:0x9ff42451826a804; immval:0x1
+TEST_RI_OP(sm4ed, x5, x16, x19, 0x1, 0x0000000000000000, 0x3fb0fe60ef1d54db, 0x9ff42451826a804, x21, 64, x7)
+
+inst_9:
+// rs1==x4, rs2==x1, rd==x18, rs1_val == 0xcc7b22010ca3ef52 and rs2_val == 0xc150f4d3df74d068 and imm_val == 0x1
+// opcode: sm4ed; rd: x18; op1:x4; op2:x1; op1val:0xcc7b22010ca3ef52; op2val:0xc150f4d3df74d068; immval:0x1
+TEST_RI_OP(sm4ed, x18, x4, x1, 0x1, 0x0000000000000000, 0xcc7b22010ca3ef52, 0xc150f4d3df74d068, x21, 72, x7)
+
+inst_10:
+// rs1==x24, rs2==x29, rd==x28, rs1_val == 0x358a9235987daa20 and rs2_val == 0xb369e10209f393d7 and imm_val == 0x1
+// opcode: sm4ed; rd: x28; op1:x24; op2:x29; op1val:0x358a9235987daa20; op2val:0xb369e10209f393d7; immval:0x1
+TEST_RI_OP(sm4ed, x28, x24, x29, 0x1, 0x0000000000000000, 0x358a9235987daa20, 0xb369e10209f393d7, x21, 80, x7)
+
+inst_11:
+// rs1==x0, rs2==x25, rd==x11, rs1_val == 0x91766f62ba2be4d3 and rs2_val == 0x74a813d25570084b and imm_val == 0x0
+// opcode: sm4ed; rd: x11; op1:x0; op2:x25; op1val:0x0; op2val:0x74a813d25570084b; immval:0x0
+TEST_RI_OP(sm4ed, x11, x0, x25, 0x0, 0x0000000000000000, 0x0, 0x74a813d25570084b, x21, 88, x7)
+
+inst_12:
+// rs1==x10, rs2==x31, rd==x30, rs1_val == 0xb7c1fc5f1efa1095 and rs2_val == 0xe2cbb9ab3819fe4d and imm_val == 0x1
+// opcode: sm4ed; rd: x30; op1:x10; op2:x31; op1val:0xb7c1fc5f1efa1095; op2val:0xe2cbb9ab3819fe4d; immval:0x1
+TEST_RI_OP(sm4ed, x30, x10, x31, 0x1, 0x0000000000000000, 0xb7c1fc5f1efa1095, 0xe2cbb9ab3819fe4d, x21, 96, x7)
+
+inst_13:
+// rs1==x15, rs2==x18, rd==x27, rs1_val == 0xa6c9253a4cc6382e and rs2_val == 0x25ae27ee4113ee60 and imm_val == 0x2
+// opcode: sm4ed; rd: x27; op1:x15; op2:x18; op1val:0xa6c9253a4cc6382e; op2val:0x25ae27ee4113ee60; immval:0x2
+TEST_RI_OP(sm4ed, x27, x15, x18, 0x2, 0x0000000000000000, 0xa6c9253a4cc6382e, 0x25ae27ee4113ee60, x21, 104, x7)
+
+inst_14:
+// rs1==x11, rs2==x8, rd==x13, rs1_val == 0xf17f6920daaafe5c and rs2_val == 0x7bcad7c4ff9a1b80 and imm_val == 0x0
+// opcode: sm4ed; rd: x13; op1:x11; op2:x8; op1val:0xf17f6920daaafe5c; op2val:0x7bcad7c4ff9a1b80; immval:0x0
+TEST_RI_OP(sm4ed, x13, x11, x8, 0x0, 0x0000000000000000, 0xf17f6920daaafe5c, 0x7bcad7c4ff9a1b80, x21, 112, x7)
+
+inst_15:
+// rs1==x14, rs2==x6, rd==x0, rs1_val == 0x3150e5fa299c3bcf and rs2_val == 0xe6fff3d9ec1ce9d2 and imm_val == 0x1
+// opcode: sm4ed; rd: x0; op1:x14; op2:x6; op1val:0x3150e5fa299c3bcf; op2val:0xe6fff3d9ec1ce9d2; immval:0x1
+TEST_RI_OP(sm4ed, x0, x14, x6, 0x1, 0x0000000000000000, 0x3150e5fa299c3bcf, 0xe6fff3d9ec1ce9d2, x21, 120, x15)
+
+inst_16:
+// rs1==x29, rs2==x27, rd==x16, rs1_val == 0x1fc493caa371db42 and rs2_val == 0x9a4e9ef10171f4df and imm_val == 0x1
+// opcode: sm4ed; rd: x16; op1:x29; op2:x27; op1val:0x1fc493caa371db42; op2val:0x9a4e9ef10171f4df; immval:0x1
+TEST_RI_OP(sm4ed, x16, x29, x27, 0x1, 0x0000000000000000, 0x1fc493caa371db42, 0x9a4e9ef10171f4df, x21, 128, x15)
+
+inst_17:
+// rs1==x5, rs2==x17, rd==x6, rs1_val == 0xf5faf2073430cb17 and rs2_val == 0x8e2eac2a760b3c5e and imm_val == 0x3
+// opcode: sm4ed; rd: x6; op1:x5; op2:x17; op1val:0xf5faf2073430cb17; op2val:0x8e2eac2a760b3c5e; immval:0x3
+TEST_RI_OP(sm4ed, x6, x5, x17, 0x3, 0x0000000000000000, 0xf5faf2073430cb17, 0x8e2eac2a760b3c5e, x21, 136, x15)
+
+inst_18:
+// rs1==x19, rs2==x13, rd==x7, rs1_val == 0xbc991c531484f407 and rs2_val == 0x55d98c6e3459294e and imm_val == 0x2
+// opcode: sm4ed; rd: x7; op1:x19; op2:x13; op1val:0xbc991c531484f407; op2val:0x55d98c6e3459294e; immval:0x2
+TEST_RI_OP(sm4ed, x7, x19, x13, 0x2, 0x0000000000000000, 0xbc991c531484f407, 0x55d98c6e3459294e, x21, 144, x15)
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+inst_19:
+// rs1==x26, rs2==x22, rd==x23, rs1_val == 0x59885afcbb61a9cd and rs2_val == 0xccce240c81c1e7ff and imm_val == 0x0
+// opcode: sm4ed; rd: x23; op1:x26; op2:x22; op1val:0x59885afcbb61a9cd; op2val:0xccce240c81c1e7ff; immval:0x0
+TEST_RI_OP(sm4ed, x23, x26, x22, 0x0, 0x0000000000000000, 0x59885afcbb61a9cd, 0xccce240c81c1e7ff, x3, 0, x15)
+
+inst_20:
+// rs1==x1, rs2==x21, rd==x4, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571 and imm_val == 0x3
+// opcode: sm4ed; rd: x4; op1:x1; op2:x21; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571; immval:0x3
+TEST_RI_OP(sm4ed, x4, x1, x21, 0x3, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x3, 8, x15)
+
+inst_21:
+// rs1==x13, rs2==x30, rd==x31, rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 3
+// opcode: sm4ed; rd: x31; op1:x13; op2:x30; op1val:0x3020100fffefdfc; op2val:0xfffefdfcfbfaf9f8; immval:0x3
+TEST_RI_OP(sm4ed, x31, x13, x30, 0x3, 0x0000000000000000, 0x3020100fffefdfc, 0xfffefdfcfbfaf9f8, x3, 16, x15)
+
+inst_22:
+// rs1==x31, rs2==x20, rd==x22, rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 2
+// opcode: sm4ed; rd: x22; op1:x31; op2:x20; op1val:0x3020100fffefdfc; op2val:0xfffefdfcfbfaf9f8; immval:0x2
+TEST_RI_OP(sm4ed, x22, x31, x20, 0x2, 0x0000000000000000, 0x3020100fffefdfc, 0xfffefdfcfbfaf9f8, x3, 24, x15)
+
+inst_23:
+// rs1==x22, rs2==x23, rd==x29, rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 1
+// opcode: sm4ed; rd: x29; op1:x22; op2:x23; op1val:0x3020100fffefdfc; op2val:0xfffefdfcfbfaf9f8; immval:0x1
+TEST_RI_OP(sm4ed, x29, x22, x23, 0x1, 0x0000000000000000, 0x3020100fffefdfc, 0xfffefdfcfbfaf9f8, x3, 32, x15)
+
+inst_24:
+// rs1==x30, rs2==x26, rd==x10, rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 0
+// opcode: sm4ed; rd: x10; op1:x30; op2:x26; op1val:0x3020100fffefdfc; op2val:0xfffefdfcfbfaf9f8; immval:0x0
+TEST_RI_OP(sm4ed, x10, x30, x26, 0x0, 0x0000000000000000, 0x3020100fffefdfc, 0xfffefdfcfbfaf9f8, x3, 40, x15)
+
+inst_25:
+// rs1==x25, rs2==x7, rd==x19, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0x03020100fffefdfc and imm_val == 3
+// opcode: sm4ed; rd: x19; op1:x25; op2:x7; op1val:0xfffefdfcfbfaf9f8; op2val:0x3020100fffefdfc; immval:0x3
+TEST_RI_OP(sm4ed, x19, x25, x7, 0x3, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0x3020100fffefdfc, x3, 48, x15)
+
+inst_26:
+// rs1==x2, rs2==x4, rd==x26, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0x03020100fffefdfc and imm_val == 2
+// opcode: sm4ed; rd: x26; op1:x2; op2:x4; op1val:0xfffefdfcfbfaf9f8; op2val:0x3020100fffefdfc; immval:0x2
+TEST_RI_OP(sm4ed, x26, x2, x4, 0x2, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0x3020100fffefdfc, x3, 56, x15)
+
+inst_27:
+// rs1==x18, rs2==x14, rd==x24, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0x03020100fffefdfc and imm_val == 1
+// opcode: sm4ed; rd: x24; op1:x18; op2:x14; op1val:0xfffefdfcfbfaf9f8; op2val:0x3020100fffefdfc; immval:0x1
+TEST_RI_OP(sm4ed, x24, x18, x14, 0x1, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0x3020100fffefdfc, x3, 64, x15)
+
+inst_28:
+// rs1==x21, rs2==x10, rd==x17, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0x03020100fffefdfc and imm_val == 0
+// opcode: sm4ed; rd: x17; op1:x21; op2:x10; op1val:0xfffefdfcfbfaf9f8; op2val:0x3020100fffefdfc; immval:0x0
+TEST_RI_OP(sm4ed, x17, x21, x10, 0x0, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0x3020100fffefdfc, x3, 72, x15)
+
+inst_29:
+// rs1==x9, rs2==x24, rd==x25, rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 3
+// opcode: sm4ed; rd: x25; op1:x9; op2:x24; op1val:0xfbfaf9f8f7f6f5f4; op2val:0xf7f6f5f4f3f2f1f0; immval:0x3
+TEST_RI_OP(sm4ed, x25, x9, x24, 0x3, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xf7f6f5f4f3f2f1f0, x3, 80, x15)
+
+inst_30:
+// rs1==x7, rs2==x5, rd==x8, rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 2
+// opcode: sm4ed; rd: x8; op1:x7; op2:x5; op1val:0xfbfaf9f8f7f6f5f4; op2val:0xf7f6f5f4f3f2f1f0; immval:0x2
+TEST_RI_OP(sm4ed, x8, x7, x5, 0x2, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xf7f6f5f4f3f2f1f0, x3, 88, x15)
+
+inst_31:
+// rs1==x8, rs2==x0, rd==x21, rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 1
+// opcode: sm4ed; rd: x21; op1:x8; op2:x0; op1val:0xfbfaf9f8f7f6f5f4; op2val:0x0; immval:0x1
+TEST_RI_OP(sm4ed, x21, x8, x0, 0x1, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0x0, x3, 96, x15)
+
+inst_32:
+// rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xfbfaf9f8f7f6f5f4; op2val:0xf7f6f5f4f3f2f1f0; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xf7f6f5f4f3f2f1f0, x3, 104, x15)
+
+inst_33:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfbfaf9f8f7f6f5f4; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfbfaf9f8f7f6f5f4, x3, 112, x1)
+
+inst_34:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfbfaf9f8f7f6f5f4; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfbfaf9f8f7f6f5f4, x3, 120, x1)
+
+inst_35:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfbfaf9f8f7f6f5f4; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfbfaf9f8f7f6f5f4, x3, 128, x1)
+
+inst_36:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfbfaf9f8f7f6f5f4; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfbfaf9f8f7f6f5f4, x3, 136, x1)
+
+inst_37:
+// rs1_val == 0xf3f2f1f0efeeedec and rs2_val == 0xefeeedecebeae9e8 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf3f2f1f0efeeedec; op2val:0xefeeedecebeae9e8; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xefeeedecebeae9e8, x3, 144, x1)
+
+inst_38:
+// rs1_val == 0xf3f2f1f0efeeedec and rs2_val == 0xefeeedecebeae9e8 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf3f2f1f0efeeedec; op2val:0xefeeedecebeae9e8; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xefeeedecebeae9e8, x3, 152, x1)
+
+inst_39:
+// rs1_val == 0xf3f2f1f0efeeedec and rs2_val == 0xefeeedecebeae9e8 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf3f2f1f0efeeedec; op2val:0xefeeedecebeae9e8; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xefeeedecebeae9e8, x3, 160, x1)
+
+inst_40:
+// rs1_val == 0xf3f2f1f0efeeedec and rs2_val == 0xefeeedecebeae9e8 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf3f2f1f0efeeedec; op2val:0xefeeedecebeae9e8; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xefeeedecebeae9e8, x3, 168, x1)
+
+inst_41:
+// rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xf3f2f1f0efeeedec and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xefeeedecebeae9e8; op2val:0xf3f2f1f0efeeedec; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xefeeedecebeae9e8, 0xf3f2f1f0efeeedec, x3, 176, x1)
+
+inst_42:
+// rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xf3f2f1f0efeeedec and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xefeeedecebeae9e8; op2val:0xf3f2f1f0efeeedec; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xefeeedecebeae9e8, 0xf3f2f1f0efeeedec, x3, 184, x1)
+
+inst_43:
+// rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xf3f2f1f0efeeedec and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xefeeedecebeae9e8; op2val:0xf3f2f1f0efeeedec; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xefeeedecebeae9e8, 0xf3f2f1f0efeeedec, x3, 192, x1)
+
+inst_44:
+// rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xf3f2f1f0efeeedec and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xefeeedecebeae9e8; op2val:0xf3f2f1f0efeeedec; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xefeeedecebeae9e8, 0xf3f2f1f0efeeedec, x3, 200, x1)
+
+inst_45:
+// rs1_val == 0xebeae9e8e7e6e5e4 and rs2_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xebeae9e8e7e6e5e4; op2val:0xe7e6e5e4e3e2e1e0; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xe7e6e5e4e3e2e1e0, x3, 208, x1)
+
+inst_46:
+// rs1_val == 0xebeae9e8e7e6e5e4 and rs2_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xebeae9e8e7e6e5e4; op2val:0xe7e6e5e4e3e2e1e0; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xe7e6e5e4e3e2e1e0, x3, 216, x1)
+
+inst_47:
+// rs1_val == 0xebeae9e8e7e6e5e4 and rs2_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xebeae9e8e7e6e5e4; op2val:0xe7e6e5e4e3e2e1e0; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xe7e6e5e4e3e2e1e0, x3, 224, x1)
+
+inst_48:
+// rs1_val == 0xebeae9e8e7e6e5e4 and rs2_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xebeae9e8e7e6e5e4; op2val:0xe7e6e5e4e3e2e1e0; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xe7e6e5e4e3e2e1e0, x3, 232, x1)
+
+inst_49:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xebeae9e8e7e6e5e4 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xebeae9e8e7e6e5e4; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xebeae9e8e7e6e5e4, x3, 240, x1)
+
+inst_50:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xebeae9e8e7e6e5e4 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xebeae9e8e7e6e5e4; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xebeae9e8e7e6e5e4, x3, 248, x1)
+
+inst_51:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xebeae9e8e7e6e5e4 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xebeae9e8e7e6e5e4; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xebeae9e8e7e6e5e4, x3, 256, x1)
+
+inst_52:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xebeae9e8e7e6e5e4 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xebeae9e8e7e6e5e4; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xebeae9e8e7e6e5e4, x3, 264, x1)
+
+inst_53:
+// rs1_val == 0xe3e2e1e0dfdedddc and rs2_val == 0xdfdedddcdbdad9d8 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xe3e2e1e0dfdedddc; op2val:0xdfdedddcdbdad9d8; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xdfdedddcdbdad9d8, x3, 272, x1)
+
+inst_54:
+// rs1_val == 0xe3e2e1e0dfdedddc and rs2_val == 0xdfdedddcdbdad9d8 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xe3e2e1e0dfdedddc; op2val:0xdfdedddcdbdad9d8; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xdfdedddcdbdad9d8, x3, 280, x1)
+
+inst_55:
+// rs1_val == 0xe3e2e1e0dfdedddc and rs2_val == 0xdfdedddcdbdad9d8 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xe3e2e1e0dfdedddc; op2val:0xdfdedddcdbdad9d8; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xdfdedddcdbdad9d8, x3, 288, x1)
+
+inst_56:
+// rs1_val == 0xe3e2e1e0dfdedddc and rs2_val == 0xdfdedddcdbdad9d8 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xe3e2e1e0dfdedddc; op2val:0xdfdedddcdbdad9d8; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xdfdedddcdbdad9d8, x3, 296, x1)
+
+inst_57:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xe3e2e1e0dfdedddc and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xdfdedddcdbdad9d8; op2val:0xe3e2e1e0dfdedddc; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xe3e2e1e0dfdedddc, x3, 304, x1)
+
+inst_58:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xe3e2e1e0dfdedddc and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xdfdedddcdbdad9d8; op2val:0xe3e2e1e0dfdedddc; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xe3e2e1e0dfdedddc, x3, 312, x1)
+
+inst_59:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xe3e2e1e0dfdedddc and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xdfdedddcdbdad9d8; op2val:0xe3e2e1e0dfdedddc; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xe3e2e1e0dfdedddc, x3, 320, x1)
+
+inst_60:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xe3e2e1e0dfdedddc and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xdfdedddcdbdad9d8; op2val:0xe3e2e1e0dfdedddc; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xe3e2e1e0dfdedddc, x3, 328, x1)
+
+inst_61:
+// rs1_val == 0xdbdad9d8d7d6d5d4 and rs2_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xdbdad9d8d7d6d5d4; op2val:0xd7d6d5d4d3d2d1d0; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xd7d6d5d4d3d2d1d0, x3, 336, x1)
+
+inst_62:
+// rs1_val == 0xdbdad9d8d7d6d5d4 and rs2_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xdbdad9d8d7d6d5d4; op2val:0xd7d6d5d4d3d2d1d0; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xd7d6d5d4d3d2d1d0, x3, 344, x1)
+
+inst_63:
+// rs1_val == 0xdbdad9d8d7d6d5d4 and rs2_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xdbdad9d8d7d6d5d4; op2val:0xd7d6d5d4d3d2d1d0; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xd7d6d5d4d3d2d1d0, x3, 352, x1)
+
+inst_64:
+// rs1_val == 0xdbdad9d8d7d6d5d4 and rs2_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xdbdad9d8d7d6d5d4; op2val:0xd7d6d5d4d3d2d1d0; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xd7d6d5d4d3d2d1d0, x3, 360, x1)
+
+inst_65:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdbdad9d8d7d6d5d4 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdbdad9d8d7d6d5d4; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdbdad9d8d7d6d5d4, x3, 368, x1)
+
+inst_66:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdbdad9d8d7d6d5d4 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdbdad9d8d7d6d5d4; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdbdad9d8d7d6d5d4, x3, 376, x1)
+
+inst_67:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdbdad9d8d7d6d5d4 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdbdad9d8d7d6d5d4; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdbdad9d8d7d6d5d4, x3, 384, x1)
+
+inst_68:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdbdad9d8d7d6d5d4 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdbdad9d8d7d6d5d4; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdbdad9d8d7d6d5d4, x3, 392, x1)
+
+inst_69:
+// rs1_val == 0xd3d2d1d0cfcecdcc and rs2_val == 0xcfcecdcccbcac9c8 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xd3d2d1d0cfcecdcc; op2val:0xcfcecdcccbcac9c8; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xcfcecdcccbcac9c8, x3, 400, x1)
+
+inst_70:
+// rs1_val == 0xd3d2d1d0cfcecdcc and rs2_val == 0xcfcecdcccbcac9c8 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xd3d2d1d0cfcecdcc; op2val:0xcfcecdcccbcac9c8; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xcfcecdcccbcac9c8, x3, 408, x1)
+
+inst_71:
+// rs1_val == 0xd3d2d1d0cfcecdcc and rs2_val == 0xcfcecdcccbcac9c8 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xd3d2d1d0cfcecdcc; op2val:0xcfcecdcccbcac9c8; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xcfcecdcccbcac9c8, x3, 416, x1)
+
+inst_72:
+// rs1_val == 0xd3d2d1d0cfcecdcc and rs2_val == 0xcfcecdcccbcac9c8 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xd3d2d1d0cfcecdcc; op2val:0xcfcecdcccbcac9c8; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xcfcecdcccbcac9c8, x3, 424, x1)
+
+inst_73:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xd3d2d1d0cfcecdcc and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xcfcecdcccbcac9c8; op2val:0xd3d2d1d0cfcecdcc; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xd3d2d1d0cfcecdcc, x3, 432, x1)
+
+inst_74:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xd3d2d1d0cfcecdcc and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xcfcecdcccbcac9c8; op2val:0xd3d2d1d0cfcecdcc; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xd3d2d1d0cfcecdcc, x3, 440, x1)
+
+inst_75:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xd3d2d1d0cfcecdcc and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xcfcecdcccbcac9c8; op2val:0xd3d2d1d0cfcecdcc; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xd3d2d1d0cfcecdcc, x3, 448, x1)
+
+inst_76:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xd3d2d1d0cfcecdcc and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xcfcecdcccbcac9c8; op2val:0xd3d2d1d0cfcecdcc; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xd3d2d1d0cfcecdcc, x3, 456, x1)
+
+inst_77:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and rs2_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xcbcac9c8c7c6c5c4; op2val:0xc7c6c5c4c3c2c1c0; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xc7c6c5c4c3c2c1c0, x3, 464, x1)
+
+inst_78:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and rs2_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xcbcac9c8c7c6c5c4; op2val:0xc7c6c5c4c3c2c1c0; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xc7c6c5c4c3c2c1c0, x3, 472, x1)
+
+inst_79:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and rs2_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xcbcac9c8c7c6c5c4; op2val:0xc7c6c5c4c3c2c1c0; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xc7c6c5c4c3c2c1c0, x3, 480, x1)
+
+inst_80:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and rs2_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xcbcac9c8c7c6c5c4; op2val:0xc7c6c5c4c3c2c1c0; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xc7c6c5c4c3c2c1c0, x3, 488, x1)
+
+inst_81:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcbcac9c8c7c6c5c4 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcbcac9c8c7c6c5c4; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcbcac9c8c7c6c5c4, x3, 496, x1)
+
+inst_82:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcbcac9c8c7c6c5c4 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcbcac9c8c7c6c5c4; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcbcac9c8c7c6c5c4, x3, 504, x1)
+
+inst_83:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcbcac9c8c7c6c5c4 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcbcac9c8c7c6c5c4; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcbcac9c8c7c6c5c4, x3, 512, x1)
+
+inst_84:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcbcac9c8c7c6c5c4 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcbcac9c8c7c6c5c4; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcbcac9c8c7c6c5c4, x3, 520, x1)
+
+inst_85:
+// rs1_val == 0xc3c2c1c0bfbebdbc and rs2_val == 0xbfbebdbcbbbab9b8 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xc3c2c1c0bfbebdbc; op2val:0xbfbebdbcbbbab9b8; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xbfbebdbcbbbab9b8, x3, 528, x1)
+
+inst_86:
+// rs1_val == 0xc3c2c1c0bfbebdbc and rs2_val == 0xbfbebdbcbbbab9b8 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xc3c2c1c0bfbebdbc; op2val:0xbfbebdbcbbbab9b8; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xbfbebdbcbbbab9b8, x3, 536, x1)
+
+inst_87:
+// rs1_val == 0xc3c2c1c0bfbebdbc and rs2_val == 0xbfbebdbcbbbab9b8 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xc3c2c1c0bfbebdbc; op2val:0xbfbebdbcbbbab9b8; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xbfbebdbcbbbab9b8, x3, 544, x1)
+
+inst_88:
+// rs1_val == 0xc3c2c1c0bfbebdbc and rs2_val == 0xbfbebdbcbbbab9b8 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xc3c2c1c0bfbebdbc; op2val:0xbfbebdbcbbbab9b8; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xbfbebdbcbbbab9b8, x3, 552, x1)
+
+inst_89:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xc3c2c1c0bfbebdbc and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xc3c2c1c0bfbebdbc; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xc3c2c1c0bfbebdbc, x3, 560, x1)
+
+inst_90:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xc3c2c1c0bfbebdbc and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xc3c2c1c0bfbebdbc; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xc3c2c1c0bfbebdbc, x3, 568, x1)
+
+inst_91:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xc3c2c1c0bfbebdbc and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xc3c2c1c0bfbebdbc; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xc3c2c1c0bfbebdbc, x3, 576, x1)
+
+inst_92:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xc3c2c1c0bfbebdbc and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xc3c2c1c0bfbebdbc; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xc3c2c1c0bfbebdbc, x3, 584, x1)
+
+inst_93:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and rs2_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xbbbab9b8b7b6b5b4; op2val:0xb7b6b5b4b3b2b1b0; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xb7b6b5b4b3b2b1b0, x3, 592, x1)
+
+inst_94:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and rs2_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xbbbab9b8b7b6b5b4; op2val:0xb7b6b5b4b3b2b1b0; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xb7b6b5b4b3b2b1b0, x3, 600, x1)
+
+inst_95:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and rs2_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xbbbab9b8b7b6b5b4; op2val:0xb7b6b5b4b3b2b1b0; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xb7b6b5b4b3b2b1b0, x3, 608, x1)
+
+inst_96:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and rs2_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xbbbab9b8b7b6b5b4; op2val:0xb7b6b5b4b3b2b1b0; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xb7b6b5b4b3b2b1b0, x3, 616, x1)
+
+inst_97:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbbbab9b8b7b6b5b4 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbbbab9b8b7b6b5b4; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbbbab9b8b7b6b5b4, x3, 624, x1)
+
+inst_98:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbbbab9b8b7b6b5b4 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbbbab9b8b7b6b5b4; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbbbab9b8b7b6b5b4, x3, 632, x1)
+
+inst_99:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbbbab9b8b7b6b5b4 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbbbab9b8b7b6b5b4; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbbbab9b8b7b6b5b4, x3, 640, x1)
+
+inst_100:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbbbab9b8b7b6b5b4 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbbbab9b8b7b6b5b4; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbbbab9b8b7b6b5b4, x3, 648, x1)
+
+inst_101:
+// rs1_val == 0xb3b2b1b0afaeadac and rs2_val == 0xafaeadacabaaa9a8 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb3b2b1b0afaeadac; op2val:0xafaeadacabaaa9a8; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xafaeadacabaaa9a8, x3, 656, x1)
+
+inst_102:
+// rs1_val == 0xb3b2b1b0afaeadac and rs2_val == 0xafaeadacabaaa9a8 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb3b2b1b0afaeadac; op2val:0xafaeadacabaaa9a8; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xafaeadacabaaa9a8, x3, 664, x1)
+
+inst_103:
+// rs1_val == 0xb3b2b1b0afaeadac and rs2_val == 0xafaeadacabaaa9a8 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb3b2b1b0afaeadac; op2val:0xafaeadacabaaa9a8; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xafaeadacabaaa9a8, x3, 672, x1)
+
+inst_104:
+// rs1_val == 0xb3b2b1b0afaeadac and rs2_val == 0xafaeadacabaaa9a8 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb3b2b1b0afaeadac; op2val:0xafaeadacabaaa9a8; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xafaeadacabaaa9a8, x3, 680, x1)
+
+inst_105:
+// rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xb3b2b1b0afaeadac and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xafaeadacabaaa9a8; op2val:0xb3b2b1b0afaeadac; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xb3b2b1b0afaeadac, x3, 688, x1)
+
+inst_106:
+// rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xb3b2b1b0afaeadac and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xafaeadacabaaa9a8; op2val:0xb3b2b1b0afaeadac; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xb3b2b1b0afaeadac, x3, 696, x1)
+
+inst_107:
+// rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xb3b2b1b0afaeadac and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xafaeadacabaaa9a8; op2val:0xb3b2b1b0afaeadac; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xb3b2b1b0afaeadac, x3, 704, x1)
+
+inst_108:
+// rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xb3b2b1b0afaeadac and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xafaeadacabaaa9a8; op2val:0xb3b2b1b0afaeadac; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xb3b2b1b0afaeadac, x3, 712, x1)
+
+inst_109:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and rs2_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xabaaa9a8a7a6a5a4; op2val:0xa7a6a5a4a3a2a1a0; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa7a6a5a4a3a2a1a0, x3, 720, x1)
+
+inst_110:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and rs2_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xabaaa9a8a7a6a5a4; op2val:0xa7a6a5a4a3a2a1a0; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa7a6a5a4a3a2a1a0, x3, 728, x1)
+
+inst_111:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and rs2_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xabaaa9a8a7a6a5a4; op2val:0xa7a6a5a4a3a2a1a0; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa7a6a5a4a3a2a1a0, x3, 736, x1)
+
+inst_112:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and rs2_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xabaaa9a8a7a6a5a4; op2val:0xa7a6a5a4a3a2a1a0; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa7a6a5a4a3a2a1a0, x3, 744, x1)
+
+inst_113:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xabaaa9a8a7a6a5a4 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xabaaa9a8a7a6a5a4; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xabaaa9a8a7a6a5a4, x3, 752, x1)
+
+inst_114:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xabaaa9a8a7a6a5a4 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xabaaa9a8a7a6a5a4; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xabaaa9a8a7a6a5a4, x3, 760, x1)
+
+inst_115:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xabaaa9a8a7a6a5a4 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xabaaa9a8a7a6a5a4; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xabaaa9a8a7a6a5a4, x3, 768, x1)
+
+inst_116:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xabaaa9a8a7a6a5a4 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xabaaa9a8a7a6a5a4; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xabaaa9a8a7a6a5a4, x3, 776, x1)
+
+inst_117:
+// rs1_val == 0xa3a2a1a09f9e9d9c and rs2_val == 0x9f9e9d9c9b9a9998 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa3a2a1a09f9e9d9c; op2val:0x9f9e9d9c9b9a9998; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0x9f9e9d9c9b9a9998, x3, 784, x1)
+
+inst_118:
+// rs1_val == 0xa3a2a1a09f9e9d9c and rs2_val == 0x9f9e9d9c9b9a9998 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa3a2a1a09f9e9d9c; op2val:0x9f9e9d9c9b9a9998; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0x9f9e9d9c9b9a9998, x3, 792, x1)
+
+inst_119:
+// rs1_val == 0xa3a2a1a09f9e9d9c and rs2_val == 0x9f9e9d9c9b9a9998 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa3a2a1a09f9e9d9c; op2val:0x9f9e9d9c9b9a9998; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0x9f9e9d9c9b9a9998, x3, 800, x1)
+
+inst_120:
+// rs1_val == 0xa3a2a1a09f9e9d9c and rs2_val == 0x9f9e9d9c9b9a9998 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa3a2a1a09f9e9d9c; op2val:0x9f9e9d9c9b9a9998; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0x9f9e9d9c9b9a9998, x3, 808, x1)
+
+inst_121:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0xa3a2a1a09f9e9d9c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9f9e9d9c9b9a9998; op2val:0xa3a2a1a09f9e9d9c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa3a2a1a09f9e9d9c, x3, 816, x1)
+
+inst_122:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0xa3a2a1a09f9e9d9c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9f9e9d9c9b9a9998; op2val:0xa3a2a1a09f9e9d9c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa3a2a1a09f9e9d9c, x3, 824, x1)
+
+inst_123:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0xa3a2a1a09f9e9d9c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9f9e9d9c9b9a9998; op2val:0xa3a2a1a09f9e9d9c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa3a2a1a09f9e9d9c, x3, 832, x1)
+
+inst_124:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0xa3a2a1a09f9e9d9c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9f9e9d9c9b9a9998; op2val:0xa3a2a1a09f9e9d9c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa3a2a1a09f9e9d9c, x3, 840, x1)
+
+inst_125:
+// rs1_val == 0x9b9a999897969594 and rs2_val == 0x9796959493929190 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9b9a999897969594; op2val:0x9796959493929190; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x9b9a999897969594, 0x9796959493929190, x3, 848, x1)
+
+inst_126:
+// rs1_val == 0x9b9a999897969594 and rs2_val == 0x9796959493929190 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9b9a999897969594; op2val:0x9796959493929190; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x9b9a999897969594, 0x9796959493929190, x3, 856, x1)
+
+inst_127:
+// rs1_val == 0x9b9a999897969594 and rs2_val == 0x9796959493929190 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9b9a999897969594; op2val:0x9796959493929190; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x9b9a999897969594, 0x9796959493929190, x3, 864, x1)
+
+inst_128:
+// rs1_val == 0x9b9a999897969594 and rs2_val == 0x9796959493929190 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9b9a999897969594; op2val:0x9796959493929190; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x9b9a999897969594, 0x9796959493929190, x3, 872, x1)
+
+inst_129:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9b9a999897969594 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9796959493929190; op2val:0x9b9a999897969594; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x9796959493929190, 0x9b9a999897969594, x3, 880, x1)
+
+inst_130:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9b9a999897969594 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9796959493929190; op2val:0x9b9a999897969594; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x9796959493929190, 0x9b9a999897969594, x3, 888, x1)
+
+inst_131:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9b9a999897969594 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9796959493929190; op2val:0x9b9a999897969594; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x9796959493929190, 0x9b9a999897969594, x3, 896, x1)
+
+inst_132:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9b9a999897969594 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x9796959493929190; op2val:0x9b9a999897969594; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x9796959493929190, 0x9b9a999897969594, x3, 904, x1)
+
+inst_133:
+// rs1_val == 0x939291908f8e8d8c and rs2_val == 0x8f8e8d8c8b8a8988 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x939291908f8e8d8c; op2val:0x8f8e8d8c8b8a8988; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x939291908f8e8d8c, 0x8f8e8d8c8b8a8988, x3, 912, x1)
+
+inst_134:
+// rs1_val == 0x939291908f8e8d8c and rs2_val == 0x8f8e8d8c8b8a8988 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x939291908f8e8d8c; op2val:0x8f8e8d8c8b8a8988; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x939291908f8e8d8c, 0x8f8e8d8c8b8a8988, x3, 920, x1)
+
+inst_135:
+// rs1_val == 0x939291908f8e8d8c and rs2_val == 0x8f8e8d8c8b8a8988 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x939291908f8e8d8c; op2val:0x8f8e8d8c8b8a8988; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x939291908f8e8d8c, 0x8f8e8d8c8b8a8988, x3, 928, x1)
+
+inst_136:
+// rs1_val == 0x939291908f8e8d8c and rs2_val == 0x8f8e8d8c8b8a8988 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x939291908f8e8d8c; op2val:0x8f8e8d8c8b8a8988; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x939291908f8e8d8c, 0x8f8e8d8c8b8a8988, x3, 936, x1)
+
+inst_137:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x939291908f8e8d8c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8f8e8d8c8b8a8988; op2val:0x939291908f8e8d8c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x939291908f8e8d8c, x3, 944, x1)
+
+inst_138:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x939291908f8e8d8c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8f8e8d8c8b8a8988; op2val:0x939291908f8e8d8c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x939291908f8e8d8c, x3, 952, x1)
+
+inst_139:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x939291908f8e8d8c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8f8e8d8c8b8a8988; op2val:0x939291908f8e8d8c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x939291908f8e8d8c, x3, 960, x1)
+
+inst_140:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x939291908f8e8d8c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8f8e8d8c8b8a8988; op2val:0x939291908f8e8d8c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x939291908f8e8d8c, x3, 968, x1)
+
+inst_141:
+// rs1_val == 0x8b8a898887868584 and rs2_val == 0x8786858483828180 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8b8a898887868584; op2val:0x8786858483828180; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x8b8a898887868584, 0x8786858483828180, x3, 976, x1)
+
+inst_142:
+// rs1_val == 0x8b8a898887868584 and rs2_val == 0x8786858483828180 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8b8a898887868584; op2val:0x8786858483828180; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x8b8a898887868584, 0x8786858483828180, x3, 984, x1)
+
+inst_143:
+// rs1_val == 0x8b8a898887868584 and rs2_val == 0x8786858483828180 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8b8a898887868584; op2val:0x8786858483828180; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x8b8a898887868584, 0x8786858483828180, x3, 992, x1)
+
+inst_144:
+// rs1_val == 0x8b8a898887868584 and rs2_val == 0x8786858483828180 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8b8a898887868584; op2val:0x8786858483828180; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x8b8a898887868584, 0x8786858483828180, x3, 1000, x1)
+
+inst_145:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8b8a898887868584 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8786858483828180; op2val:0x8b8a898887868584; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x8786858483828180, 0x8b8a898887868584, x3, 1008, x1)
+
+inst_146:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8b8a898887868584 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8786858483828180; op2val:0x8b8a898887868584; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x8786858483828180, 0x8b8a898887868584, x3, 1016, x1)
+
+inst_147:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8b8a898887868584 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8786858483828180; op2val:0x8b8a898887868584; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x8786858483828180, 0x8b8a898887868584, x3, 1024, x1)
+
+inst_148:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8b8a898887868584 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x8786858483828180; op2val:0x8b8a898887868584; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x8786858483828180, 0x8b8a898887868584, x3, 1032, x1)
+
+inst_149:
+// rs1_val == 0x838281807f7e7d7c and rs2_val == 0x7f7e7d7c7b7a7978 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x838281807f7e7d7c; op2val:0x7f7e7d7c7b7a7978; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x838281807f7e7d7c, 0x7f7e7d7c7b7a7978, x3, 1040, x1)
+
+inst_150:
+// rs1_val == 0x838281807f7e7d7c and rs2_val == 0x7f7e7d7c7b7a7978 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x838281807f7e7d7c; op2val:0x7f7e7d7c7b7a7978; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x838281807f7e7d7c, 0x7f7e7d7c7b7a7978, x3, 1048, x1)
+
+inst_151:
+// rs1_val == 0x838281807f7e7d7c and rs2_val == 0x7f7e7d7c7b7a7978 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x838281807f7e7d7c; op2val:0x7f7e7d7c7b7a7978; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x838281807f7e7d7c, 0x7f7e7d7c7b7a7978, x3, 1056, x1)
+
+inst_152:
+// rs1_val == 0x838281807f7e7d7c and rs2_val == 0x7f7e7d7c7b7a7978 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x838281807f7e7d7c; op2val:0x7f7e7d7c7b7a7978; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x838281807f7e7d7c, 0x7f7e7d7c7b7a7978, x3, 1064, x1)
+
+inst_153:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x838281807f7e7d7c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7f7e7d7c7b7a7978; op2val:0x838281807f7e7d7c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x838281807f7e7d7c, x3, 1072, x1)
+
+inst_154:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x838281807f7e7d7c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7f7e7d7c7b7a7978; op2val:0x838281807f7e7d7c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x838281807f7e7d7c, x3, 1080, x1)
+
+inst_155:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x838281807f7e7d7c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7f7e7d7c7b7a7978; op2val:0x838281807f7e7d7c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x838281807f7e7d7c, x3, 1088, x1)
+
+inst_156:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x838281807f7e7d7c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7f7e7d7c7b7a7978; op2val:0x838281807f7e7d7c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x838281807f7e7d7c, x3, 1096, x1)
+
+inst_157:
+// rs1_val == 0x7b7a797877767574 and rs2_val == 0x7776757473727170 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7b7a797877767574; op2val:0x7776757473727170; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x7b7a797877767574, 0x7776757473727170, x3, 1104, x1)
+
+inst_158:
+// rs1_val == 0x7b7a797877767574 and rs2_val == 0x7776757473727170 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7b7a797877767574; op2val:0x7776757473727170; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x7b7a797877767574, 0x7776757473727170, x3, 1112, x1)
+
+inst_159:
+// rs1_val == 0x7b7a797877767574 and rs2_val == 0x7776757473727170 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7b7a797877767574; op2val:0x7776757473727170; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x7b7a797877767574, 0x7776757473727170, x3, 1120, x1)
+
+inst_160:
+// rs1_val == 0x7b7a797877767574 and rs2_val == 0x7776757473727170 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7b7a797877767574; op2val:0x7776757473727170; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x7b7a797877767574, 0x7776757473727170, x3, 1128, x1)
+
+inst_161:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7b7a797877767574 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7776757473727170; op2val:0x7b7a797877767574; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x7776757473727170, 0x7b7a797877767574, x3, 1136, x1)
+
+inst_162:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7b7a797877767574 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7776757473727170; op2val:0x7b7a797877767574; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x7776757473727170, 0x7b7a797877767574, x3, 1144, x1)
+
+inst_163:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7b7a797877767574 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7776757473727170; op2val:0x7b7a797877767574; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x7776757473727170, 0x7b7a797877767574, x3, 1152, x1)
+
+inst_164:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7b7a797877767574 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x7776757473727170; op2val:0x7b7a797877767574; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x7776757473727170, 0x7b7a797877767574, x3, 1160, x1)
+
+inst_165:
+// rs1_val == 0x737271706f6e6d6c and rs2_val == 0x6f6e6d6c6b6a6968 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x737271706f6e6d6c; op2val:0x6f6e6d6c6b6a6968; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x737271706f6e6d6c, 0x6f6e6d6c6b6a6968, x3, 1168, x1)
+
+inst_166:
+// rs1_val == 0x737271706f6e6d6c and rs2_val == 0x6f6e6d6c6b6a6968 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x737271706f6e6d6c; op2val:0x6f6e6d6c6b6a6968; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x737271706f6e6d6c, 0x6f6e6d6c6b6a6968, x3, 1176, x1)
+
+inst_167:
+// rs1_val == 0x737271706f6e6d6c and rs2_val == 0x6f6e6d6c6b6a6968 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x737271706f6e6d6c; op2val:0x6f6e6d6c6b6a6968; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x737271706f6e6d6c, 0x6f6e6d6c6b6a6968, x3, 1184, x1)
+
+inst_168:
+// rs1_val == 0x737271706f6e6d6c and rs2_val == 0x6f6e6d6c6b6a6968 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x737271706f6e6d6c; op2val:0x6f6e6d6c6b6a6968; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x737271706f6e6d6c, 0x6f6e6d6c6b6a6968, x3, 1192, x1)
+
+inst_169:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x737271706f6e6d6c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6f6e6d6c6b6a6968; op2val:0x737271706f6e6d6c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x737271706f6e6d6c, x3, 1200, x1)
+
+inst_170:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x737271706f6e6d6c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6f6e6d6c6b6a6968; op2val:0x737271706f6e6d6c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x737271706f6e6d6c, x3, 1208, x1)
+
+inst_171:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x737271706f6e6d6c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6f6e6d6c6b6a6968; op2val:0x737271706f6e6d6c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x737271706f6e6d6c, x3, 1216, x1)
+
+inst_172:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x737271706f6e6d6c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6f6e6d6c6b6a6968; op2val:0x737271706f6e6d6c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x737271706f6e6d6c, x3, 1224, x1)
+
+inst_173:
+// rs1_val == 0x6b6a696867666564 and rs2_val == 0x6766656463626160 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6b6a696867666564; op2val:0x6766656463626160; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x6b6a696867666564, 0x6766656463626160, x3, 1232, x1)
+
+inst_174:
+// rs1_val == 0x6b6a696867666564 and rs2_val == 0x6766656463626160 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6b6a696867666564; op2val:0x6766656463626160; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x6b6a696867666564, 0x6766656463626160, x3, 1240, x1)
+
+inst_175:
+// rs1_val == 0x6b6a696867666564 and rs2_val == 0x6766656463626160 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6b6a696867666564; op2val:0x6766656463626160; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x6b6a696867666564, 0x6766656463626160, x3, 1248, x1)
+
+inst_176:
+// rs1_val == 0x6b6a696867666564 and rs2_val == 0x6766656463626160 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6b6a696867666564; op2val:0x6766656463626160; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x6b6a696867666564, 0x6766656463626160, x3, 1256, x1)
+
+inst_177:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6b6a696867666564 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6766656463626160; op2val:0x6b6a696867666564; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x6766656463626160, 0x6b6a696867666564, x3, 1264, x1)
+
+inst_178:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6b6a696867666564 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6766656463626160; op2val:0x6b6a696867666564; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x6766656463626160, 0x6b6a696867666564, x3, 1272, x1)
+
+inst_179:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6b6a696867666564 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6766656463626160; op2val:0x6b6a696867666564; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x6766656463626160, 0x6b6a696867666564, x3, 1280, x1)
+
+inst_180:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6b6a696867666564 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x6766656463626160; op2val:0x6b6a696867666564; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x6766656463626160, 0x6b6a696867666564, x3, 1288, x1)
+
+inst_181:
+// rs1_val == 0x636261605f5e5d5c and rs2_val == 0x5f5e5d5c5b5a5958 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x636261605f5e5d5c; op2val:0x5f5e5d5c5b5a5958; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x636261605f5e5d5c, 0x5f5e5d5c5b5a5958, x3, 1296, x1)
+
+inst_182:
+// rs1_val == 0x636261605f5e5d5c and rs2_val == 0x5f5e5d5c5b5a5958 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x636261605f5e5d5c; op2val:0x5f5e5d5c5b5a5958; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x636261605f5e5d5c, 0x5f5e5d5c5b5a5958, x3, 1304, x1)
+
+inst_183:
+// rs1_val == 0x636261605f5e5d5c and rs2_val == 0x5f5e5d5c5b5a5958 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x636261605f5e5d5c; op2val:0x5f5e5d5c5b5a5958; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x636261605f5e5d5c, 0x5f5e5d5c5b5a5958, x3, 1312, x1)
+
+inst_184:
+// rs1_val == 0x636261605f5e5d5c and rs2_val == 0x5f5e5d5c5b5a5958 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x636261605f5e5d5c; op2val:0x5f5e5d5c5b5a5958; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x636261605f5e5d5c, 0x5f5e5d5c5b5a5958, x3, 1320, x1)
+
+inst_185:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x636261605f5e5d5c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5f5e5d5c5b5a5958; op2val:0x636261605f5e5d5c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x636261605f5e5d5c, x3, 1328, x1)
+
+inst_186:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x636261605f5e5d5c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5f5e5d5c5b5a5958; op2val:0x636261605f5e5d5c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x636261605f5e5d5c, x3, 1336, x1)
+
+inst_187:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x636261605f5e5d5c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5f5e5d5c5b5a5958; op2val:0x636261605f5e5d5c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x636261605f5e5d5c, x3, 1344, x1)
+
+inst_188:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x636261605f5e5d5c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5f5e5d5c5b5a5958; op2val:0x636261605f5e5d5c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x636261605f5e5d5c, x3, 1352, x1)
+
+inst_189:
+// rs1_val == 0x5b5a595857565554 and rs2_val == 0x5756555453525150 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5b5a595857565554; op2val:0x5756555453525150; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x5b5a595857565554, 0x5756555453525150, x3, 1360, x1)
+
+inst_190:
+// rs1_val == 0x5b5a595857565554 and rs2_val == 0x5756555453525150 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5b5a595857565554; op2val:0x5756555453525150; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x5b5a595857565554, 0x5756555453525150, x3, 1368, x1)
+
+inst_191:
+// rs1_val == 0x5b5a595857565554 and rs2_val == 0x5756555453525150 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5b5a595857565554; op2val:0x5756555453525150; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x5b5a595857565554, 0x5756555453525150, x3, 1376, x1)
+
+inst_192:
+// rs1_val == 0x5b5a595857565554 and rs2_val == 0x5756555453525150 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5b5a595857565554; op2val:0x5756555453525150; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x5b5a595857565554, 0x5756555453525150, x3, 1384, x1)
+
+inst_193:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5b5a595857565554 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5756555453525150; op2val:0x5b5a595857565554; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x5756555453525150, 0x5b5a595857565554, x3, 1392, x1)
+
+inst_194:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5b5a595857565554 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5756555453525150; op2val:0x5b5a595857565554; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x5756555453525150, 0x5b5a595857565554, x3, 1400, x1)
+
+inst_195:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5b5a595857565554 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5756555453525150; op2val:0x5b5a595857565554; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x5756555453525150, 0x5b5a595857565554, x3, 1408, x1)
+
+inst_196:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5b5a595857565554 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x5756555453525150; op2val:0x5b5a595857565554; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x5756555453525150, 0x5b5a595857565554, x3, 1416, x1)
+
+inst_197:
+// rs1_val == 0x535251504f4e4d4c and rs2_val == 0x4f4e4d4c4b4a4948 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x535251504f4e4d4c; op2val:0x4f4e4d4c4b4a4948; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x535251504f4e4d4c, 0x4f4e4d4c4b4a4948, x3, 1424, x1)
+
+inst_198:
+// rs1_val == 0x535251504f4e4d4c and rs2_val == 0x4f4e4d4c4b4a4948 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x535251504f4e4d4c; op2val:0x4f4e4d4c4b4a4948; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x535251504f4e4d4c, 0x4f4e4d4c4b4a4948, x3, 1432, x1)
+
+inst_199:
+// rs1_val == 0x535251504f4e4d4c and rs2_val == 0x4f4e4d4c4b4a4948 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x535251504f4e4d4c; op2val:0x4f4e4d4c4b4a4948; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x535251504f4e4d4c, 0x4f4e4d4c4b4a4948, x3, 1440, x1)
+
+inst_200:
+// rs1_val == 0x535251504f4e4d4c and rs2_val == 0x4f4e4d4c4b4a4948 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x535251504f4e4d4c; op2val:0x4f4e4d4c4b4a4948; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x535251504f4e4d4c, 0x4f4e4d4c4b4a4948, x3, 1448, x1)
+
+inst_201:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x535251504f4e4d4c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4f4e4d4c4b4a4948; op2val:0x535251504f4e4d4c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x535251504f4e4d4c, x3, 1456, x1)
+
+inst_202:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x535251504f4e4d4c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4f4e4d4c4b4a4948; op2val:0x535251504f4e4d4c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x535251504f4e4d4c, x3, 1464, x1)
+
+inst_203:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x535251504f4e4d4c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4f4e4d4c4b4a4948; op2val:0x535251504f4e4d4c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x535251504f4e4d4c, x3, 1472, x1)
+
+inst_204:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x535251504f4e4d4c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4f4e4d4c4b4a4948; op2val:0x535251504f4e4d4c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x535251504f4e4d4c, x3, 1480, x1)
+
+inst_205:
+// rs1_val == 0x4b4a494847464544 and rs2_val == 0x4746454443424140 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4b4a494847464544; op2val:0x4746454443424140; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x4b4a494847464544, 0x4746454443424140, x3, 1488, x1)
+
+inst_206:
+// rs1_val == 0x4b4a494847464544 and rs2_val == 0x4746454443424140 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4b4a494847464544; op2val:0x4746454443424140; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x4b4a494847464544, 0x4746454443424140, x3, 1496, x1)
+
+inst_207:
+// rs1_val == 0x4b4a494847464544 and rs2_val == 0x4746454443424140 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4b4a494847464544; op2val:0x4746454443424140; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x4b4a494847464544, 0x4746454443424140, x3, 1504, x1)
+
+inst_208:
+// rs1_val == 0x4b4a494847464544 and rs2_val == 0x4746454443424140 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4b4a494847464544; op2val:0x4746454443424140; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x4b4a494847464544, 0x4746454443424140, x3, 1512, x1)
+
+inst_209:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4b4a494847464544 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4746454443424140; op2val:0x4b4a494847464544; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x4746454443424140, 0x4b4a494847464544, x3, 1520, x1)
+
+inst_210:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4b4a494847464544 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4746454443424140; op2val:0x4b4a494847464544; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x4746454443424140, 0x4b4a494847464544, x3, 1528, x1)
+
+inst_211:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4b4a494847464544 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4746454443424140; op2val:0x4b4a494847464544; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x4746454443424140, 0x4b4a494847464544, x3, 1536, x1)
+
+inst_212:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4b4a494847464544 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x4746454443424140; op2val:0x4b4a494847464544; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x4746454443424140, 0x4b4a494847464544, x3, 1544, x1)
+
+inst_213:
+// rs1_val == 0x434241403f3e3d3c and rs2_val == 0x3f3e3d3c3b3a3938 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x434241403f3e3d3c; op2val:0x3f3e3d3c3b3a3938; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x434241403f3e3d3c, 0x3f3e3d3c3b3a3938, x3, 1552, x1)
+
+inst_214:
+// rs1_val == 0x434241403f3e3d3c and rs2_val == 0x3f3e3d3c3b3a3938 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x434241403f3e3d3c; op2val:0x3f3e3d3c3b3a3938; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x434241403f3e3d3c, 0x3f3e3d3c3b3a3938, x3, 1560, x1)
+
+inst_215:
+// rs1_val == 0x434241403f3e3d3c and rs2_val == 0x3f3e3d3c3b3a3938 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x434241403f3e3d3c; op2val:0x3f3e3d3c3b3a3938; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x434241403f3e3d3c, 0x3f3e3d3c3b3a3938, x3, 1568, x1)
+
+inst_216:
+// rs1_val == 0x434241403f3e3d3c and rs2_val == 0x3f3e3d3c3b3a3938 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x434241403f3e3d3c; op2val:0x3f3e3d3c3b3a3938; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x434241403f3e3d3c, 0x3f3e3d3c3b3a3938, x3, 1576, x1)
+
+inst_217:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x434241403f3e3d3c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3f3e3d3c3b3a3938; op2val:0x434241403f3e3d3c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x434241403f3e3d3c, x3, 1584, x1)
+
+inst_218:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x434241403f3e3d3c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3f3e3d3c3b3a3938; op2val:0x434241403f3e3d3c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x434241403f3e3d3c, x3, 1592, x1)
+
+inst_219:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x434241403f3e3d3c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3f3e3d3c3b3a3938; op2val:0x434241403f3e3d3c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x434241403f3e3d3c, x3, 1600, x1)
+
+inst_220:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x434241403f3e3d3c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3f3e3d3c3b3a3938; op2val:0x434241403f3e3d3c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x434241403f3e3d3c, x3, 1608, x1)
+
+inst_221:
+// rs1_val == 0x3b3a393837363534 and rs2_val == 0x3736353433323130 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3b3a393837363534; op2val:0x3736353433323130; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x3b3a393837363534, 0x3736353433323130, x3, 1616, x1)
+
+inst_222:
+// rs1_val == 0x3b3a393837363534 and rs2_val == 0x3736353433323130 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3b3a393837363534; op2val:0x3736353433323130; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x3b3a393837363534, 0x3736353433323130, x3, 1624, x1)
+
+inst_223:
+// rs1_val == 0x3b3a393837363534 and rs2_val == 0x3736353433323130 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3b3a393837363534; op2val:0x3736353433323130; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x3b3a393837363534, 0x3736353433323130, x3, 1632, x1)
+
+inst_224:
+// rs1_val == 0x3b3a393837363534 and rs2_val == 0x3736353433323130 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3b3a393837363534; op2val:0x3736353433323130; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x3b3a393837363534, 0x3736353433323130, x3, 1640, x1)
+
+inst_225:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3b3a393837363534 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3736353433323130; op2val:0x3b3a393837363534; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x3736353433323130, 0x3b3a393837363534, x3, 1648, x1)
+
+inst_226:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3b3a393837363534 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3736353433323130; op2val:0x3b3a393837363534; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x3736353433323130, 0x3b3a393837363534, x3, 1656, x1)
+
+inst_227:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3b3a393837363534 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3736353433323130; op2val:0x3b3a393837363534; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x3736353433323130, 0x3b3a393837363534, x3, 1664, x1)
+
+inst_228:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3b3a393837363534 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3736353433323130; op2val:0x3b3a393837363534; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x3736353433323130, 0x3b3a393837363534, x3, 1672, x1)
+
+inst_229:
+// rs1_val == 0x333231302f2e2d2c and rs2_val == 0x2f2e2d2c2b2a2928 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x333231302f2e2d2c; op2val:0x2f2e2d2c2b2a2928; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x333231302f2e2d2c, 0x2f2e2d2c2b2a2928, x3, 1680, x1)
+
+inst_230:
+// rs1_val == 0x333231302f2e2d2c and rs2_val == 0x2f2e2d2c2b2a2928 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x333231302f2e2d2c; op2val:0x2f2e2d2c2b2a2928; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x333231302f2e2d2c, 0x2f2e2d2c2b2a2928, x3, 1688, x1)
+
+inst_231:
+// rs1_val == 0x333231302f2e2d2c and rs2_val == 0x2f2e2d2c2b2a2928 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x333231302f2e2d2c; op2val:0x2f2e2d2c2b2a2928; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x333231302f2e2d2c, 0x2f2e2d2c2b2a2928, x3, 1696, x1)
+
+inst_232:
+// rs1_val == 0x333231302f2e2d2c and rs2_val == 0x2f2e2d2c2b2a2928 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x333231302f2e2d2c; op2val:0x2f2e2d2c2b2a2928; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x333231302f2e2d2c, 0x2f2e2d2c2b2a2928, x3, 1704, x1)
+
+inst_233:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x333231302f2e2d2c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2f2e2d2c2b2a2928; op2val:0x333231302f2e2d2c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x333231302f2e2d2c, x3, 1712, x1)
+
+inst_234:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x333231302f2e2d2c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2f2e2d2c2b2a2928; op2val:0x333231302f2e2d2c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x333231302f2e2d2c, x3, 1720, x1)
+
+inst_235:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x333231302f2e2d2c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2f2e2d2c2b2a2928; op2val:0x333231302f2e2d2c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x333231302f2e2d2c, x3, 1728, x1)
+
+inst_236:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x333231302f2e2d2c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2f2e2d2c2b2a2928; op2val:0x333231302f2e2d2c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x333231302f2e2d2c, x3, 1736, x1)
+
+inst_237:
+// rs1_val == 0x2b2a292827262524 and rs2_val == 0x2726252423222120 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2b2a292827262524; op2val:0x2726252423222120; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x2b2a292827262524, 0x2726252423222120, x3, 1744, x1)
+
+inst_238:
+// rs1_val == 0x2b2a292827262524 and rs2_val == 0x2726252423222120 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2b2a292827262524; op2val:0x2726252423222120; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x2b2a292827262524, 0x2726252423222120, x3, 1752, x1)
+
+inst_239:
+// rs1_val == 0x2b2a292827262524 and rs2_val == 0x2726252423222120 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2b2a292827262524; op2val:0x2726252423222120; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x2b2a292827262524, 0x2726252423222120, x3, 1760, x1)
+
+inst_240:
+// rs1_val == 0x2b2a292827262524 and rs2_val == 0x2726252423222120 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2b2a292827262524; op2val:0x2726252423222120; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x2b2a292827262524, 0x2726252423222120, x3, 1768, x1)
+
+inst_241:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2b2a292827262524 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2726252423222120; op2val:0x2b2a292827262524; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x2726252423222120, 0x2b2a292827262524, x3, 1776, x1)
+
+inst_242:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2b2a292827262524 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2726252423222120; op2val:0x2b2a292827262524; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x2726252423222120, 0x2b2a292827262524, x3, 1784, x1)
+
+inst_243:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2b2a292827262524 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2726252423222120; op2val:0x2b2a292827262524; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x2726252423222120, 0x2b2a292827262524, x3, 1792, x1)
+
+inst_244:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2b2a292827262524 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x2726252423222120; op2val:0x2b2a292827262524; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x2726252423222120, 0x2b2a292827262524, x3, 1800, x1)
+
+inst_245:
+// rs1_val == 0x232221201f1e1d1c and rs2_val == 0x1f1e1d1c1b1a1918 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x232221201f1e1d1c; op2val:0x1f1e1d1c1b1a1918; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x232221201f1e1d1c, 0x1f1e1d1c1b1a1918, x3, 1808, x1)
+
+inst_246:
+// rs1_val == 0x232221201f1e1d1c and rs2_val == 0x1f1e1d1c1b1a1918 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x232221201f1e1d1c; op2val:0x1f1e1d1c1b1a1918; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x232221201f1e1d1c, 0x1f1e1d1c1b1a1918, x3, 1816, x1)
+
+inst_247:
+// rs1_val == 0x232221201f1e1d1c and rs2_val == 0x1f1e1d1c1b1a1918 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x232221201f1e1d1c; op2val:0x1f1e1d1c1b1a1918; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x232221201f1e1d1c, 0x1f1e1d1c1b1a1918, x3, 1824, x1)
+
+inst_248:
+// rs1_val == 0x232221201f1e1d1c and rs2_val == 0x1f1e1d1c1b1a1918 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x232221201f1e1d1c; op2val:0x1f1e1d1c1b1a1918; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x232221201f1e1d1c, 0x1f1e1d1c1b1a1918, x3, 1832, x1)
+
+inst_249:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x232221201f1e1d1c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1f1e1d1c1b1a1918; op2val:0x232221201f1e1d1c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x232221201f1e1d1c, x3, 1840, x1)
+
+inst_250:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x232221201f1e1d1c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1f1e1d1c1b1a1918; op2val:0x232221201f1e1d1c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x232221201f1e1d1c, x3, 1848, x1)
+
+inst_251:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x232221201f1e1d1c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1f1e1d1c1b1a1918; op2val:0x232221201f1e1d1c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x232221201f1e1d1c, x3, 1856, x1)
+
+inst_252:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x232221201f1e1d1c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1f1e1d1c1b1a1918; op2val:0x232221201f1e1d1c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x232221201f1e1d1c, x3, 1864, x1)
+
+inst_253:
+// rs1_val == 0x1b1a191817161514 and rs2_val == 0x1716151413121110 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1b1a191817161514; op2val:0x1716151413121110; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x1b1a191817161514, 0x1716151413121110, x3, 1872, x1)
+
+inst_254:
+// rs1_val == 0x1b1a191817161514 and rs2_val == 0x1716151413121110 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1b1a191817161514; op2val:0x1716151413121110; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x1b1a191817161514, 0x1716151413121110, x3, 1880, x1)
+
+inst_255:
+// rs1_val == 0x1b1a191817161514 and rs2_val == 0x1716151413121110 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1b1a191817161514; op2val:0x1716151413121110; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x1b1a191817161514, 0x1716151413121110, x3, 1888, x1)
+
+inst_256:
+// rs1_val == 0x1b1a191817161514 and rs2_val == 0x1716151413121110 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1b1a191817161514; op2val:0x1716151413121110; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x1b1a191817161514, 0x1716151413121110, x3, 1896, x1)
+
+inst_257:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1b1a191817161514 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1716151413121110; op2val:0x1b1a191817161514; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x1716151413121110, 0x1b1a191817161514, x3, 1904, x1)
+
+inst_258:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1b1a191817161514 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1716151413121110; op2val:0x1b1a191817161514; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x1716151413121110, 0x1b1a191817161514, x3, 1912, x1)
+
+inst_259:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1b1a191817161514 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1716151413121110; op2val:0x1b1a191817161514; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x1716151413121110, 0x1b1a191817161514, x3, 1920, x1)
+
+inst_260:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1b1a191817161514 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x1716151413121110; op2val:0x1b1a191817161514; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x1716151413121110, 0x1b1a191817161514, x3, 1928, x1)
+
+inst_261:
+// rs1_val == 0x131211100f0e0d0c and rs2_val == 0x0f0e0d0c0b0a0908 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x131211100f0e0d0c; op2val:0xf0e0d0c0b0a0908; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x131211100f0e0d0c, 0xf0e0d0c0b0a0908, x3, 1936, x1)
+
+inst_262:
+// rs1_val == 0x131211100f0e0d0c and rs2_val == 0x0f0e0d0c0b0a0908 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x131211100f0e0d0c; op2val:0xf0e0d0c0b0a0908; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x131211100f0e0d0c, 0xf0e0d0c0b0a0908, x3, 1944, x1)
+
+inst_263:
+// rs1_val == 0x131211100f0e0d0c and rs2_val == 0x0f0e0d0c0b0a0908 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x131211100f0e0d0c; op2val:0xf0e0d0c0b0a0908; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x131211100f0e0d0c, 0xf0e0d0c0b0a0908, x3, 1952, x1)
+
+inst_264:
+// rs1_val == 0x131211100f0e0d0c and rs2_val == 0x0f0e0d0c0b0a0908 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x131211100f0e0d0c; op2val:0xf0e0d0c0b0a0908; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x131211100f0e0d0c, 0xf0e0d0c0b0a0908, x3, 1960, x1)
+
+inst_265:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x131211100f0e0d0c and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf0e0d0c0b0a0908; op2val:0x131211100f0e0d0c; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x131211100f0e0d0c, x3, 1968, x1)
+
+inst_266:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x131211100f0e0d0c and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf0e0d0c0b0a0908; op2val:0x131211100f0e0d0c; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x131211100f0e0d0c, x3, 1976, x1)
+
+inst_267:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x131211100f0e0d0c and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf0e0d0c0b0a0908; op2val:0x131211100f0e0d0c; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x131211100f0e0d0c, x3, 1984, x1)
+
+inst_268:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x131211100f0e0d0c and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xf0e0d0c0b0a0908; op2val:0x131211100f0e0d0c; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x131211100f0e0d0c, x3, 1992, x1)
+
+inst_269:
+// rs1_val == 0x0b0a090807060504 and rs2_val == 0x0706050403020100 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb0a090807060504; op2val:0x706050403020100; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0xb0a090807060504, 0x706050403020100, x3, 2000, x1)
+
+inst_270:
+// rs1_val == 0x0b0a090807060504 and rs2_val == 0x0706050403020100 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb0a090807060504; op2val:0x706050403020100; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xb0a090807060504, 0x706050403020100, x3, 2008, x1)
+
+inst_271:
+// rs1_val == 0x0b0a090807060504 and rs2_val == 0x0706050403020100 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb0a090807060504; op2val:0x706050403020100; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xb0a090807060504, 0x706050403020100, x3, 2016, x1)
+
+inst_272:
+// rs1_val == 0x0b0a090807060504 and rs2_val == 0x0706050403020100 and imm_val == 0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xb0a090807060504; op2val:0x706050403020100; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0xb0a090807060504, 0x706050403020100, x3, 2024, x1)
+
+inst_273:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0b0a090807060504 and imm_val == 3
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x706050403020100; op2val:0xb0a090807060504; immval:0x3
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x3, 0x0000000000000000, 0x706050403020100, 0xb0a090807060504, x3, 2032, x1)
+
+inst_274:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0b0a090807060504 and imm_val == 2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x706050403020100; op2val:0xb0a090807060504; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0x706050403020100, 0xb0a090807060504, x3, 2040, x1)
+RVTEST_SIGBASE( x3,signature_x3_1)
+
+inst_275:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0b0a090807060504 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x706050403020100; op2val:0xb0a090807060504; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x706050403020100, 0xb0a090807060504, x3, 0, x1)
+
+inst_276:
+// rs1_val == 0x156fe482f9fcd292 and rs2_val == 0x24c6435c8dca0621 and imm_val == 0x0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x156fe482f9fcd292; op2val:0x24c6435c8dca0621; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x156fe482f9fcd292, 0x24c6435c8dca0621, x3, 8, x1)
+
+inst_277:
+// rs1_val == 0xa757e91e027e5943 and rs2_val == 0xda73ec2605e6750f and imm_val == 0x2
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xa757e91e027e5943; op2val:0xda73ec2605e6750f; immval:0x2
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x2, 0x0000000000000000, 0xa757e91e027e5943, 0xda73ec2605e6750f, x3, 16, x1)
+
+inst_278:
+// rs1_val == 0x91766f62ba2be4d3 and rs2_val == 0x74a813d25570084b and imm_val == 0x0
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x91766f62ba2be4d3; op2val:0x74a813d25570084b; immval:0x0
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x0, 0x0000000000000000, 0x91766f62ba2be4d3, 0x74a813d25570084b, x3, 24, x1)
+
+inst_279:
+// rs1_val == 0x3150e5fa299c3bcf and rs2_val == 0xe6fff3d9ec1ce9d2 and imm_val == 0x1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0x3150e5fa299c3bcf; op2val:0xe6fff3d9ec1ce9d2; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0x3150e5fa299c3bcf, 0xe6fff3d9ec1ce9d2, x3, 32, x1)
+
+inst_280:
+// rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 1
+// opcode: sm4ed; rd: x12; op1:x10; op2:x11; op1val:0xfbfaf9f8f7f6f5f4; op2val:0xf7f6f5f4f3f2f1f0; immval:0x1
+TEST_RI_OP(sm4ed, x12, x10, x11, 0x1, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xf7f6f5f4f3f2f1f0, x3, 40, x1)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x21_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x21_1:
+ .fill 19*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_1:
+ .fill 6*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ed-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ed-rwp1.S
new file mode 100644
index 000000000..ccd7d481e
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ed-rwp1.S
@@ -0,0 +1,415 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sm4ed)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",sm4ed)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x1; op1:x2; op1:x3; op1:x4; dest:x5;
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+li x3, 0xd2d6b8777dc59a3a;
+li x4, 0xcf84b683a749f9c5;
+li x5, 0x854a965708ceac39;
+sm4ed x5, x5, x1, 0;
+sm4ed x5, x5, x2, 1;
+sm4ed x5, x5, x3, 2;
+sm4ed x5, x5, x4, 3;
+RVTEST_SIGUPD(x31,x5,0);
+
+inst_1:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x2; op1:x3; op1:x4; op1:x5; dest:x6;
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+li x4, 0xdc3383836b9f15c4;
+li x5, 0x5ae6a2289a6ab329;
+li x6, 0x432779eeacca7f0d;
+sm4ed x6, x6, x2, 0;
+sm4ed x6, x6, x3, 1;
+sm4ed x6, x6, x4, 2;
+sm4ed x6, x6, x5, 3;
+RVTEST_SIGUPD(x31,x6,8);
+
+inst_2:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x3; op1:x4; op1:x5; op1:x6; dest:x7;
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+li x5, 0x9d02fc90708cc1b6;
+li x6, 0x953b00b00b54aa22;
+li x7, 0x224c06013c53d0e3;
+sm4ed x7, x7, x3, 0;
+sm4ed x7, x7, x4, 1;
+sm4ed x7, x7, x5, 2;
+sm4ed x7, x7, x6, 3;
+RVTEST_SIGUPD(x31,x7,16);
+
+inst_3:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x4; op1:x5; op1:x6; op1:x7; dest:x8;
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+li x6, 0x8c8a18b2aaac3142;
+li x7, 0x785036de6f9fb997;
+li x8, 0x95a4d257a7298c66;
+sm4ed x8, x8, x4, 0;
+sm4ed x8, x8, x5, 1;
+sm4ed x8, x8, x6, 2;
+sm4ed x8, x8, x7, 3;
+RVTEST_SIGUPD(x31,x8,24);
+
+inst_4:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x5; op1:x6; op1:x7; op1:x8; dest:x9;
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+li x7, 0x7f21682208208d09;
+li x8, 0x14b91c79dae98554;
+li x9, 0xc5ec6148c6880007;
+sm4ed x9, x9, x5, 0;
+sm4ed x9, x9, x6, 1;
+sm4ed x9, x9, x7, 2;
+sm4ed x9, x9, x8, 3;
+RVTEST_SIGUPD(x31,x9,32);
+
+inst_5:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x6; op1:x7; op1:x8; op1:x9; dest:x10;
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+li x8, 0x85986adb9e044706;
+li x9, 0x1e9667c2dd68f201;
+li x10, 0x4d753ac174ab0a38;
+sm4ed x10, x10, x6, 0;
+sm4ed x10, x10, x7, 1;
+sm4ed x10, x10, x8, 2;
+sm4ed x10, x10, x9, 3;
+RVTEST_SIGUPD(x31,x10,40);
+
+inst_6:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x7; op1:x8; op1:x9; op1:x10; dest:x11;
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+li x9, 0x51c5b8b2e59cf78f;
+li x10, 0x43032e3e1475f78d;
+li x11, 0x9535971c67a07b54;
+sm4ed x11, x11, x7, 0;
+sm4ed x11, x11, x8, 1;
+sm4ed x11, x11, x9, 2;
+sm4ed x11, x11, x10, 3;
+RVTEST_SIGUPD(x31,x11,48);
+
+inst_7:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x8; op1:x9; op1:x10; op1:x11; dest:x12;
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+li x10, 0xac9e90327d486895;
+li x11, 0x66b072b9e5e290be;
+li x12, 0x89e6156b59672bd6;
+sm4ed x12, x12, x8, 0;
+sm4ed x12, x12, x9, 1;
+sm4ed x12, x12, x10, 2;
+sm4ed x12, x12, x11, 3;
+RVTEST_SIGUPD(x31,x12,56);
+
+inst_8:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x9; op1:x10; op1:x11; op1:x12; dest:x13;
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+li x11, 0xf956ec0bf7fb4b49;
+li x12, 0x0cf25923109ff475;
+li x13, 0x26ea42ec17be082f;
+sm4ed x13, x13, x9, 0;
+sm4ed x13, x13, x10, 1;
+sm4ed x13, x13, x11, 2;
+sm4ed x13, x13, x12, 3;
+RVTEST_SIGUPD(x31,x13,64);
+
+inst_9:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x10; op1:x11; op1:x12; op1:x13; dest:x14;
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+li x12, 0xb2a7a18ac9ea3210;
+li x13, 0xbd59213e27541f0b;
+li x14, 0x9e7e1fc352b42eff;
+sm4ed x14, x14, x10, 0;
+sm4ed x14, x14, x11, 1;
+sm4ed x14, x14, x12, 2;
+sm4ed x14, x14, x13, 3;
+RVTEST_SIGUPD(x31,x14,72);
+
+inst_10:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x11; op1:x12; op1:x13; op1:x14; dest:x15;
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+li x13, 0x4bd90a77f65cf3f3;
+li x14, 0xdbdd4dd9d9e93409;
+li x15, 0xf65e7737fbd2570d;
+sm4ed x15, x15, x11, 0;
+sm4ed x15, x15, x12, 1;
+sm4ed x15, x15, x13, 2;
+sm4ed x15, x15, x14, 3;
+RVTEST_SIGUPD(x31,x15,80);
+
+inst_11:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x12; op1:x13; op1:x14; op1:x15; dest:x16;
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+li x14, 0xfc6113a3312529dc;
+li x15, 0x6d3f408b31d4ff08;
+li x16, 0x8e368ce0be5265f3;
+sm4ed x16, x16, x12, 0;
+sm4ed x16, x16, x13, 1;
+sm4ed x16, x16, x14, 2;
+sm4ed x16, x16, x15, 3;
+RVTEST_SIGUPD(x31,x16,88);
+
+inst_12:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x13; op1:x14; op1:x15; op1:x16; dest:x17;
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+li x15, 0x9c1a15286c834752;
+li x16, 0xa6faba7bcfe6bc54;
+li x17, 0xc5b3e01b11f6d600;
+sm4ed x17, x17, x13, 0;
+sm4ed x17, x17, x14, 1;
+sm4ed x17, x17, x15, 2;
+sm4ed x17, x17, x16, 3;
+RVTEST_SIGUPD(x31,x17,96);
+
+inst_13:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x14; op1:x15; op1:x16; op1:x17; dest:x18;
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+li x16, 0x4850e927bfdbb3be;
+li x17, 0x67913217437cbc41;
+li x18, 0x576e3d4fa3b633ab;
+sm4ed x18, x18, x14, 0;
+sm4ed x18, x18, x15, 1;
+sm4ed x18, x18, x16, 2;
+sm4ed x18, x18, x17, 3;
+RVTEST_SIGUPD(x31,x18,104);
+
+inst_14:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x15; op1:x16; op1:x17; op1:x18; dest:x19;
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+li x17, 0xfe0a9c6c9a592829;
+li x18, 0x9071f3aab87ce2a5;
+li x19, 0x4e6168c8d6220b4f;
+sm4ed x19, x19, x15, 0;
+sm4ed x19, x19, x16, 1;
+sm4ed x19, x19, x17, 2;
+sm4ed x19, x19, x18, 3;
+RVTEST_SIGUPD(x31,x19,112);
+
+inst_15:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x16; op1:x17; op1:x18; op1:x19; dest:x20;
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+li x18, 0x2b24ced43da82c98;
+li x19, 0xef8c60c0d12f8d4e;
+li x20, 0xf37e27a312ea67e4;
+sm4ed x20, x20, x16, 0;
+sm4ed x20, x20, x17, 1;
+sm4ed x20, x20, x18, 2;
+sm4ed x20, x20, x19, 3;
+RVTEST_SIGUPD(x31,x20,120);
+
+inst_16:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x17; op1:x18; op1:x19; op1:x20; dest:x21;
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+li x19, 0xd5e9d561f46a41bd;
+li x20, 0x9408ad7db13971c0;
+li x21, 0x90af95fe095b6425;
+sm4ed x21, x21, x17, 0;
+sm4ed x21, x21, x18, 1;
+sm4ed x21, x21, x19, 2;
+sm4ed x21, x21, x20, 3;
+RVTEST_SIGUPD(x31,x21,128);
+
+inst_17:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x18; op1:x19; op1:x20; op1:x21; dest:x22;
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+li x20, 0x596f5f89ce334459;
+li x21, 0x5902a9dbe1832ab6;
+li x22, 0xb4dc7dee71dabeac;
+sm4ed x22, x22, x18, 0;
+sm4ed x22, x22, x19, 1;
+sm4ed x22, x22, x20, 2;
+sm4ed x22, x22, x21, 3;
+RVTEST_SIGUPD(x31,x22,136);
+
+inst_18:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x19; op1:x20; op1:x21; op1:x22; dest:x23;
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+li x21, 0x270e1922a422af66;
+li x22, 0xdc336338eea4dd03;
+li x23, 0xa2460e15a3da90b2;
+sm4ed x23, x23, x19, 0;
+sm4ed x23, x23, x20, 1;
+sm4ed x23, x23, x21, 2;
+sm4ed x23, x23, x22, 3;
+RVTEST_SIGUPD(x31,x23,144);
+
+inst_19:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x20; op1:x21; op1:x22; op1:x23; dest:x24;
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+li x22, 0xf3281b8ef4d325c3;
+li x23, 0x947ac00e0caec993;
+li x24, 0xd60235f35c4739b7;
+sm4ed x24, x24, x20, 0;
+sm4ed x24, x24, x21, 1;
+sm4ed x24, x24, x22, 2;
+sm4ed x24, x24, x23, 3;
+RVTEST_SIGUPD(x31,x24,152);
+
+inst_20:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x21; op1:x22; op1:x23; op1:x24; dest:x25;
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+li x23, 0x29ade05f7dddcc72;
+li x24, 0x6baeea37b4c8839b;
+li x25, 0x1e4e0fadd02bad0f;
+sm4ed x25, x25, x21, 0;
+sm4ed x25, x25, x22, 1;
+sm4ed x25, x25, x23, 2;
+sm4ed x25, x25, x24, 3;
+RVTEST_SIGUPD(x31,x25,160);
+
+inst_21:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x22; op1:x23; op1:x24; op1:x25; dest:x26;
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+li x24, 0xb183406662ebf954;
+li x25, 0x796c1d88c313bc1f;
+li x26, 0xe7e94a5193b3cb9a;
+sm4ed x26, x26, x22, 0;
+sm4ed x26, x26, x23, 1;
+sm4ed x26, x26, x24, 2;
+sm4ed x26, x26, x25, 3;
+RVTEST_SIGUPD(x31,x26,168);
+
+inst_22:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x23; op1:x24; op1:x25; op1:x26; dest:x27;
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+li x25, 0x08011d17cfac3216;
+li x26, 0xd65358aaa734906b;
+li x27, 0xba1c4b6b2d9da6d7;
+sm4ed x27, x27, x23, 0;
+sm4ed x27, x27, x24, 1;
+sm4ed x27, x27, x25, 2;
+sm4ed x27, x27, x26, 3;
+RVTEST_SIGUPD(x31,x27,176);
+
+inst_23:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x24; op1:x25; op1:x26; op1:x27; dest:x28;
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+li x26, 0x3f13091de7fcc18b;
+li x27, 0xc2cc1d388d15d800;
+li x28, 0x0165f0f02016dc16;
+sm4ed x28, x28, x24, 0;
+sm4ed x28, x28, x25, 1;
+sm4ed x28, x28, x26, 2;
+sm4ed x28, x28, x27, 3;
+RVTEST_SIGUPD(x31,x28,184);
+
+inst_24:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x25; op1:x26; op1:x27; op1:x28; dest:x29;
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+li x27, 0x62a12347b17286fd;
+li x28, 0xa97cbf8403beaecd;
+li x29, 0xa9632e3dbd0070ae;
+sm4ed x29, x29, x25, 0;
+sm4ed x29, x29, x26, 1;
+sm4ed x29, x29, x27, 2;
+sm4ed x29, x29, x28, 3;
+RVTEST_SIGUPD(x31,x29,192);
+
+inst_25:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ed; op1:x26; op1:x27; op1:x28; op1:x29; dest:x30;
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+li x28, 0x7587e11994038f33;
+li x29, 0x2f8d133555f7f60a;
+li x30, 0xa0a1c6ef661a191b;
+sm4ed x30, x30, x26, 0;
+sm4ed x30, x30, x27, 1;
+sm4ed x30, x30, x28, 2;
+sm4ed x30, x30, x29, 3;
+RVTEST_SIGUPD(x31,x30,200);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 26*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ks-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ks-01.S
new file mode 100644
index 000000000..b6a43b991
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ks-01.S
@@ -0,0 +1,1489 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.5.1
+// timestamp : Thu Aug 12 11:00:04 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the sm4ks instruction of the RISC-V _Zks extension for the sm4ks covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I_Zks")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",sm4ks)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",sm4ks)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKsed.*);def TEST_CASE_1=True;",sm4ks)
+
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x8, rs2==x30, rd==x29, rs1_val == 0x0706050403020100 and rs2_val == 0x0b0a090807060504 and imm_val == 0
+// opcode: sm4ks; rd: x29; op1:x8; op2:x30; op1val:0x706050403020100; op2val:0xb0a090807060504; immval:0x0
+TEST_RI_OP(sm4ks, x29, x8, x30, 0x0, 0x0000000000000000, 0x706050403020100, 0xb0a090807060504, x2, 0, x6)
+
+inst_1:
+// rs2 == rd != rs1, rs1==x28, rs2==x7, rd==x7, rs1_val == 0xbc36b151aeb006fc and rs2_val == 0x2cab43d86576923c and imm_val == 0x3
+// opcode: sm4ks; rd: x7; op1:x28; op2:x7; op1val:0xbc36b151aeb006fc; op2val:0x2cab43d86576923c; immval:0x3
+TEST_RI_OP(sm4ks, x7, x28, x7, 0x3, 0x0000000000000000, 0xbc36b151aeb006fc, 0x2cab43d86576923c, x2, 8, x6)
+
+inst_2:
+// rs1 == rs2 != rd, rs1==x23, rs2==x23, rd==x24, rs1_val == 0x156fe482f9fcd292 and rs2_val == 0x24c6435c8dca0621 and imm_val == 0x0
+// opcode: sm4ks; rd: x24; op1:x23; op2:x23; op1val:0x156fe482f9fcd292; op2val:0x156fe482f9fcd292; immval:0x0
+TEST_RI_OP(sm4ks, x24, x23, x23, 0x0, 0x0000000000000000, 0x156fe482f9fcd292, 0x156fe482f9fcd292, x2, 16, x6)
+
+inst_3:
+// rs1 == rs2 == rd, rs1==x26, rs2==x26, rd==x26, rs1_val == 0xa757e91e027e5943 and rs2_val == 0xda73ec2605e6750f and imm_val == 0x2
+// opcode: sm4ks; rd: x26; op1:x26; op2:x26; op1val:0xa757e91e027e5943; op2val:0xa757e91e027e5943; immval:0x2
+TEST_RI_OP(sm4ks, x26, x26, x26, 0x2, 0x0000000000000000, 0xa757e91e027e5943, 0xa757e91e027e5943, x2, 24, x6)
+
+inst_4:
+// rs1 == rd != rs2, rs1==x10, rs2==x27, rd==x10, rs1_val == 0xf452cbd863fa921d and rs2_val == 0x4b6587d88ef464d1 and imm_val == 0x3
+// opcode: sm4ks; rd: x10; op1:x10; op2:x27; op1val:0xf452cbd863fa921d; op2val:0x4b6587d88ef464d1; immval:0x3
+TEST_RI_OP(sm4ks, x10, x10, x27, 0x3, 0x0000000000000000, 0xf452cbd863fa921d, 0x4b6587d88ef464d1, x2, 32, x6)
+
+inst_5:
+// rs1==x22, rs2==x5, rd==x23, rs1_val == 0xd40f46a4356c1dcc and rs2_val == 0x30c33d97184e0f23 and imm_val == 0x0
+// opcode: sm4ks; rd: x23; op1:x22; op2:x5; op1val:0xd40f46a4356c1dcc; op2val:0x30c33d97184e0f23; immval:0x0
+TEST_RI_OP(sm4ks, x23, x22, x5, 0x0, 0x0000000000000000, 0xd40f46a4356c1dcc, 0x30c33d97184e0f23, x2, 40, x6)
+
+inst_6:
+// rs1==x27, rs2==x14, rd==x16, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088 and imm_val == 0x2
+// opcode: sm4ks; rd: x16; op1:x27; op2:x14; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088; immval:0x2
+TEST_RI_OP(sm4ks, x16, x27, x14, 0x2, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x2, 48, x6)
+
+inst_7:
+// rs1==x7, rs2==x21, rd==x13, rs1_val == 0x17168ab3a4351379 and rs2_val == 0xbbb4f560f222070c and imm_val == 0x0
+// opcode: sm4ks; rd: x13; op1:x7; op2:x21; op1val:0x17168ab3a4351379; op2val:0xbbb4f560f222070c; immval:0x0
+TEST_RI_OP(sm4ks, x13, x7, x21, 0x0, 0x0000000000000000, 0x17168ab3a4351379, 0xbbb4f560f222070c, x2, 56, x6)
+
+inst_8:
+// rs1==x21, rs2==x24, rd==x25, rs1_val == 0x3fb0fe60ef1d54db and rs2_val == 0x09ff42451826a804 and imm_val == 0x1
+// opcode: sm4ks; rd: x25; op1:x21; op2:x24; op1val:0x3fb0fe60ef1d54db; op2val:0x9ff42451826a804; immval:0x1
+TEST_RI_OP(sm4ks, x25, x21, x24, 0x1, 0x0000000000000000, 0x3fb0fe60ef1d54db, 0x9ff42451826a804, x2, 64, x6)
+
+inst_9:
+// rs1==x1, rs2==x11, rd==x21, rs1_val == 0xcc7b22010ca3ef52 and rs2_val == 0xc150f4d3df74d068 and imm_val == 0x1
+// opcode: sm4ks; rd: x21; op1:x1; op2:x11; op1val:0xcc7b22010ca3ef52; op2val:0xc150f4d3df74d068; immval:0x1
+TEST_RI_OP(sm4ks, x21, x1, x11, 0x1, 0x0000000000000000, 0xcc7b22010ca3ef52, 0xc150f4d3df74d068, x2, 72, x6)
+
+inst_10:
+// rs1==x5, rs2==x4, rd==x27, rs1_val == 0x358a9235987daa20 and rs2_val == 0xb369e10209f393d7 and imm_val == 0x1
+// opcode: sm4ks; rd: x27; op1:x5; op2:x4; op1val:0x358a9235987daa20; op2val:0xb369e10209f393d7; immval:0x1
+TEST_RI_OP(sm4ks, x27, x5, x4, 0x1, 0x0000000000000000, 0x358a9235987daa20, 0xb369e10209f393d7, x2, 80, x6)
+
+inst_11:
+// rs1==x9, rs2==x15, rd==x17, rs1_val == 0x91766f62ba2be4d3 and rs2_val == 0x74a813d25570084b and imm_val == 0x0
+// opcode: sm4ks; rd: x17; op1:x9; op2:x15; op1val:0x91766f62ba2be4d3; op2val:0x74a813d25570084b; immval:0x0
+TEST_RI_OP(sm4ks, x17, x9, x15, 0x0, 0x0000000000000000, 0x91766f62ba2be4d3, 0x74a813d25570084b, x2, 88, x6)
+
+inst_12:
+// rs1==x31, rs2==x1, rd==x20, rs1_val == 0xb7c1fc5f1efa1095 and rs2_val == 0xe2cbb9ab3819fe4d and imm_val == 0x1
+// opcode: sm4ks; rd: x20; op1:x31; op2:x1; op1val:0xb7c1fc5f1efa1095; op2val:0xe2cbb9ab3819fe4d; immval:0x1
+TEST_RI_OP(sm4ks, x20, x31, x1, 0x1, 0x0000000000000000, 0xb7c1fc5f1efa1095, 0xe2cbb9ab3819fe4d, x2, 96, x6)
+
+inst_13:
+// rs1==x0, rs2==x19, rd==x5, rs1_val == 0xa6c9253a4cc6382e and rs2_val == 0x25ae27ee4113ee60 and imm_val == 0x2
+// opcode: sm4ks; rd: x5; op1:x0; op2:x19; op1val:0x0; op2val:0x25ae27ee4113ee60; immval:0x2
+TEST_RI_OP(sm4ks, x5, x0, x19, 0x2, 0x0000000000000000, 0x0, 0x25ae27ee4113ee60, x2, 104, x6)
+
+inst_14:
+// rs1==x4, rs2==x22, rd==x8, rs1_val == 0xf17f6920daaafe5c and rs2_val == 0x7bcad7c4ff9a1b80 and imm_val == 0x0
+// opcode: sm4ks; rd: x8; op1:x4; op2:x22; op1val:0xf17f6920daaafe5c; op2val:0x7bcad7c4ff9a1b80; immval:0x0
+TEST_RI_OP(sm4ks, x8, x4, x22, 0x0, 0x0000000000000000, 0xf17f6920daaafe5c, 0x7bcad7c4ff9a1b80, x2, 112, x6)
+
+inst_15:
+// rs1==x3, rs2==x25, rd==x30, rs1_val == 0x3150e5fa299c3bcf and rs2_val == 0xe6fff3d9ec1ce9d2 and imm_val == 0x1
+// opcode: sm4ks; rd: x30; op1:x3; op2:x25; op1val:0x3150e5fa299c3bcf; op2val:0xe6fff3d9ec1ce9d2; immval:0x1
+TEST_RI_OP(sm4ks, x30, x3, x25, 0x1, 0x0000000000000000, 0x3150e5fa299c3bcf, 0xe6fff3d9ec1ce9d2, x2, 120, x6)
+
+inst_16:
+// rs1==x17, rs2==x18, rd==x4, rs1_val == 0x1fc493caa371db42 and rs2_val == 0x9a4e9ef10171f4df and imm_val == 0x1
+// opcode: sm4ks; rd: x4; op1:x17; op2:x18; op1val:0x1fc493caa371db42; op2val:0x9a4e9ef10171f4df; immval:0x1
+TEST_RI_OP(sm4ks, x4, x17, x18, 0x1, 0x0000000000000000, 0x1fc493caa371db42, 0x9a4e9ef10171f4df, x2, 128, x5)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_17:
+// rs1==x30, rs2==x2, rd==x6, rs1_val == 0xf5faf2073430cb17 and rs2_val == 0x8e2eac2a760b3c5e and imm_val == 0x3
+// opcode: sm4ks; rd: x6; op1:x30; op2:x2; op1val:0xf5faf2073430cb17; op2val:0x8e2eac2a760b3c5e; immval:0x3
+TEST_RI_OP(sm4ks, x6, x30, x2, 0x3, 0x0000000000000000, 0xf5faf2073430cb17, 0x8e2eac2a760b3c5e, x4, 0, x5)
+
+inst_18:
+// rs1==x11, rs2==x9, rd==x15, rs1_val == 0xbc991c531484f407 and rs2_val == 0x55d98c6e3459294e and imm_val == 0x2
+// opcode: sm4ks; rd: x15; op1:x11; op2:x9; op1val:0xbc991c531484f407; op2val:0x55d98c6e3459294e; immval:0x2
+TEST_RI_OP(sm4ks, x15, x11, x9, 0x2, 0x0000000000000000, 0xbc991c531484f407, 0x55d98c6e3459294e, x4, 8, x5)
+
+inst_19:
+// rs1==x25, rs2==x6, rd==x0, rs1_val == 0x59885afcbb61a9cd and rs2_val == 0xccce240c81c1e7ff and imm_val == 0x0
+// opcode: sm4ks; rd: x0; op1:x25; op2:x6; op1val:0x59885afcbb61a9cd; op2val:0xccce240c81c1e7ff; immval:0x0
+TEST_RI_OP(sm4ks, x0, x25, x6, 0x0, 0x0000000000000000, 0x59885afcbb61a9cd, 0xccce240c81c1e7ff, x4, 16, x5)
+
+inst_20:
+// rs1==x15, rs2==x8, rd==x12, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571 and imm_val == 0x3
+// opcode: sm4ks; rd: x12; op1:x15; op2:x8; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571; immval:0x3
+TEST_RI_OP(sm4ks, x12, x15, x8, 0x3, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x4, 24, x5)
+
+inst_21:
+// rs1==x13, rs2==x20, rd==x22, rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 3
+// opcode: sm4ks; rd: x22; op1:x13; op2:x20; op1val:0x3020100fffefdfc; op2val:0xfffefdfcfbfaf9f8; immval:0x3
+TEST_RI_OP(sm4ks, x22, x13, x20, 0x3, 0x0000000000000000, 0x3020100fffefdfc, 0xfffefdfcfbfaf9f8, x4, 32, x5)
+
+inst_22:
+// rs1==x14, rs2==x3, rd==x18, rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 2
+// opcode: sm4ks; rd: x18; op1:x14; op2:x3; op1val:0x3020100fffefdfc; op2val:0xfffefdfcfbfaf9f8; immval:0x2
+TEST_RI_OP(sm4ks, x18, x14, x3, 0x2, 0x0000000000000000, 0x3020100fffefdfc, 0xfffefdfcfbfaf9f8, x4, 40, x5)
+
+inst_23:
+// rs1==x6, rs2==x0, rd==x14, rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 1
+// opcode: sm4ks; rd: x14; op1:x6; op2:x0; op1val:0x3020100fffefdfc; op2val:0x0; immval:0x1
+TEST_RI_OP(sm4ks, x14, x6, x0, 0x1, 0x0000000000000000, 0x3020100fffefdfc, 0x0, x4, 48, x5)
+
+inst_24:
+// rs1==x29, rs2==x13, rd==x1, rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 0
+// opcode: sm4ks; rd: x1; op1:x29; op2:x13; op1val:0x3020100fffefdfc; op2val:0xfffefdfcfbfaf9f8; immval:0x0
+TEST_RI_OP(sm4ks, x1, x29, x13, 0x0, 0x0000000000000000, 0x3020100fffefdfc, 0xfffefdfcfbfaf9f8, x4, 56, x5)
+
+inst_25:
+// rs1==x2, rs2==x17, rd==x3, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0x03020100fffefdfc and imm_val == 3
+// opcode: sm4ks; rd: x3; op1:x2; op2:x17; op1val:0xfffefdfcfbfaf9f8; op2val:0x3020100fffefdfc; immval:0x3
+TEST_RI_OP(sm4ks, x3, x2, x17, 0x3, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0x3020100fffefdfc, x4, 64, x5)
+
+inst_26:
+// rs1==x19, rs2==x16, rd==x2, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0x03020100fffefdfc and imm_val == 2
+// opcode: sm4ks; rd: x2; op1:x19; op2:x16; op1val:0xfffefdfcfbfaf9f8; op2val:0x3020100fffefdfc; immval:0x2
+TEST_RI_OP(sm4ks, x2, x19, x16, 0x2, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0x3020100fffefdfc, x4, 72, x5)
+
+inst_27:
+// rs1==x16, rs2==x28, rd==x31, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0x03020100fffefdfc and imm_val == 1
+// opcode: sm4ks; rd: x31; op1:x16; op2:x28; op1val:0xfffefdfcfbfaf9f8; op2val:0x3020100fffefdfc; immval:0x1
+TEST_RI_OP(sm4ks, x31, x16, x28, 0x1, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0x3020100fffefdfc, x4, 80, x5)
+
+inst_28:
+// rs1==x12, rs2==x29, rd==x9, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0x03020100fffefdfc and imm_val == 0
+// opcode: sm4ks; rd: x9; op1:x12; op2:x29; op1val:0xfffefdfcfbfaf9f8; op2val:0x3020100fffefdfc; immval:0x0
+TEST_RI_OP(sm4ks, x9, x12, x29, 0x0, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0x3020100fffefdfc, x4, 88, x5)
+
+inst_29:
+// rs1==x18, rs2==x12, rd==x28, rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 3
+// opcode: sm4ks; rd: x28; op1:x18; op2:x12; op1val:0xfbfaf9f8f7f6f5f4; op2val:0xf7f6f5f4f3f2f1f0; immval:0x3
+TEST_RI_OP(sm4ks, x28, x18, x12, 0x3, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xf7f6f5f4f3f2f1f0, x4, 96, x5)
+
+inst_30:
+// rs1==x24, rs2==x10, rd==x19, rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 2
+// opcode: sm4ks; rd: x19; op1:x24; op2:x10; op1val:0xfbfaf9f8f7f6f5f4; op2val:0xf7f6f5f4f3f2f1f0; immval:0x2
+TEST_RI_OP(sm4ks, x19, x24, x10, 0x2, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xf7f6f5f4f3f2f1f0, x4, 104, x5)
+
+inst_31:
+// rs1==x20, rs2==x31, rd==x11, rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 1
+// opcode: sm4ks; rd: x11; op1:x20; op2:x31; op1val:0xfbfaf9f8f7f6f5f4; op2val:0xf7f6f5f4f3f2f1f0; immval:0x1
+TEST_RI_OP(sm4ks, x11, x20, x31, 0x1, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xf7f6f5f4f3f2f1f0, x4, 112, x5)
+
+inst_32:
+// rs1_val == 0xfbfaf9f8f7f6f5f4 and rs2_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xfbfaf9f8f7f6f5f4; op2val:0xf7f6f5f4f3f2f1f0; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xf7f6f5f4f3f2f1f0, x4, 120, x5)
+
+inst_33:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfbfaf9f8f7f6f5f4; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfbfaf9f8f7f6f5f4, x4, 128, x5)
+
+inst_34:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfbfaf9f8f7f6f5f4; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfbfaf9f8f7f6f5f4, x4, 136, x5)
+
+inst_35:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfbfaf9f8f7f6f5f4; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfbfaf9f8f7f6f5f4, x4, 144, x5)
+
+inst_36:
+// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfbfaf9f8f7f6f5f4; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfbfaf9f8f7f6f5f4, x4, 152, x5)
+
+inst_37:
+// rs1_val == 0xf3f2f1f0efeeedec and rs2_val == 0xefeeedecebeae9e8 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf3f2f1f0efeeedec; op2val:0xefeeedecebeae9e8; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xefeeedecebeae9e8, x4, 160, x5)
+
+inst_38:
+// rs1_val == 0xf3f2f1f0efeeedec and rs2_val == 0xefeeedecebeae9e8 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf3f2f1f0efeeedec; op2val:0xefeeedecebeae9e8; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xefeeedecebeae9e8, x4, 168, x5)
+
+inst_39:
+// rs1_val == 0xf3f2f1f0efeeedec and rs2_val == 0xefeeedecebeae9e8 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf3f2f1f0efeeedec; op2val:0xefeeedecebeae9e8; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xefeeedecebeae9e8, x4, 176, x5)
+
+inst_40:
+// rs1_val == 0xf3f2f1f0efeeedec and rs2_val == 0xefeeedecebeae9e8 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf3f2f1f0efeeedec; op2val:0xefeeedecebeae9e8; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xefeeedecebeae9e8, x4, 184, x5)
+
+inst_41:
+// rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xf3f2f1f0efeeedec and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xefeeedecebeae9e8; op2val:0xf3f2f1f0efeeedec; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xefeeedecebeae9e8, 0xf3f2f1f0efeeedec, x4, 192, x5)
+
+inst_42:
+// rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xf3f2f1f0efeeedec and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xefeeedecebeae9e8; op2val:0xf3f2f1f0efeeedec; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xefeeedecebeae9e8, 0xf3f2f1f0efeeedec, x4, 200, x5)
+
+inst_43:
+// rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xf3f2f1f0efeeedec and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xefeeedecebeae9e8; op2val:0xf3f2f1f0efeeedec; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xefeeedecebeae9e8, 0xf3f2f1f0efeeedec, x4, 208, x5)
+
+inst_44:
+// rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xf3f2f1f0efeeedec and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xefeeedecebeae9e8; op2val:0xf3f2f1f0efeeedec; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xefeeedecebeae9e8, 0xf3f2f1f0efeeedec, x4, 216, x5)
+
+inst_45:
+// rs1_val == 0xebeae9e8e7e6e5e4 and rs2_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xebeae9e8e7e6e5e4; op2val:0xe7e6e5e4e3e2e1e0; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xe7e6e5e4e3e2e1e0, x4, 224, x5)
+
+inst_46:
+// rs1_val == 0xebeae9e8e7e6e5e4 and rs2_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xebeae9e8e7e6e5e4; op2val:0xe7e6e5e4e3e2e1e0; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xe7e6e5e4e3e2e1e0, x4, 232, x5)
+
+inst_47:
+// rs1_val == 0xebeae9e8e7e6e5e4 and rs2_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xebeae9e8e7e6e5e4; op2val:0xe7e6e5e4e3e2e1e0; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xe7e6e5e4e3e2e1e0, x4, 240, x5)
+
+inst_48:
+// rs1_val == 0xebeae9e8e7e6e5e4 and rs2_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xebeae9e8e7e6e5e4; op2val:0xe7e6e5e4e3e2e1e0; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xe7e6e5e4e3e2e1e0, x4, 248, x5)
+
+inst_49:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xebeae9e8e7e6e5e4 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xebeae9e8e7e6e5e4; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xebeae9e8e7e6e5e4, x4, 256, x5)
+
+inst_50:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xebeae9e8e7e6e5e4 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xebeae9e8e7e6e5e4; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xebeae9e8e7e6e5e4, x4, 264, x5)
+
+inst_51:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xebeae9e8e7e6e5e4 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xebeae9e8e7e6e5e4; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xebeae9e8e7e6e5e4, x4, 272, x5)
+
+inst_52:
+// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xebeae9e8e7e6e5e4 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xebeae9e8e7e6e5e4; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xebeae9e8e7e6e5e4, x4, 280, x5)
+
+inst_53:
+// rs1_val == 0xe3e2e1e0dfdedddc and rs2_val == 0xdfdedddcdbdad9d8 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xe3e2e1e0dfdedddc; op2val:0xdfdedddcdbdad9d8; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xdfdedddcdbdad9d8, x4, 288, x5)
+
+inst_54:
+// rs1_val == 0xe3e2e1e0dfdedddc and rs2_val == 0xdfdedddcdbdad9d8 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xe3e2e1e0dfdedddc; op2val:0xdfdedddcdbdad9d8; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xdfdedddcdbdad9d8, x4, 296, x5)
+
+inst_55:
+// rs1_val == 0xe3e2e1e0dfdedddc and rs2_val == 0xdfdedddcdbdad9d8 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xe3e2e1e0dfdedddc; op2val:0xdfdedddcdbdad9d8; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xdfdedddcdbdad9d8, x4, 304, x5)
+
+inst_56:
+// rs1_val == 0xe3e2e1e0dfdedddc and rs2_val == 0xdfdedddcdbdad9d8 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xe3e2e1e0dfdedddc; op2val:0xdfdedddcdbdad9d8; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xdfdedddcdbdad9d8, x4, 312, x5)
+
+inst_57:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xe3e2e1e0dfdedddc and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xdfdedddcdbdad9d8; op2val:0xe3e2e1e0dfdedddc; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xe3e2e1e0dfdedddc, x4, 320, x5)
+
+inst_58:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xe3e2e1e0dfdedddc and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xdfdedddcdbdad9d8; op2val:0xe3e2e1e0dfdedddc; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xe3e2e1e0dfdedddc, x4, 328, x5)
+
+inst_59:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xe3e2e1e0dfdedddc and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xdfdedddcdbdad9d8; op2val:0xe3e2e1e0dfdedddc; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xe3e2e1e0dfdedddc, x4, 336, x5)
+
+inst_60:
+// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xe3e2e1e0dfdedddc and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xdfdedddcdbdad9d8; op2val:0xe3e2e1e0dfdedddc; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xe3e2e1e0dfdedddc, x4, 344, x5)
+
+inst_61:
+// rs1_val == 0xdbdad9d8d7d6d5d4 and rs2_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xdbdad9d8d7d6d5d4; op2val:0xd7d6d5d4d3d2d1d0; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xd7d6d5d4d3d2d1d0, x4, 352, x5)
+
+inst_62:
+// rs1_val == 0xdbdad9d8d7d6d5d4 and rs2_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xdbdad9d8d7d6d5d4; op2val:0xd7d6d5d4d3d2d1d0; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xd7d6d5d4d3d2d1d0, x4, 360, x5)
+
+inst_63:
+// rs1_val == 0xdbdad9d8d7d6d5d4 and rs2_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xdbdad9d8d7d6d5d4; op2val:0xd7d6d5d4d3d2d1d0; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xd7d6d5d4d3d2d1d0, x4, 368, x5)
+
+inst_64:
+// rs1_val == 0xdbdad9d8d7d6d5d4 and rs2_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xdbdad9d8d7d6d5d4; op2val:0xd7d6d5d4d3d2d1d0; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xd7d6d5d4d3d2d1d0, x4, 376, x5)
+
+inst_65:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdbdad9d8d7d6d5d4 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdbdad9d8d7d6d5d4; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdbdad9d8d7d6d5d4, x4, 384, x5)
+
+inst_66:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdbdad9d8d7d6d5d4 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdbdad9d8d7d6d5d4; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdbdad9d8d7d6d5d4, x4, 392, x5)
+
+inst_67:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdbdad9d8d7d6d5d4 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdbdad9d8d7d6d5d4; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdbdad9d8d7d6d5d4, x4, 400, x5)
+
+inst_68:
+// rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdbdad9d8d7d6d5d4 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdbdad9d8d7d6d5d4; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdbdad9d8d7d6d5d4, x4, 408, x5)
+
+inst_69:
+// rs1_val == 0xd3d2d1d0cfcecdcc and rs2_val == 0xcfcecdcccbcac9c8 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xd3d2d1d0cfcecdcc; op2val:0xcfcecdcccbcac9c8; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xcfcecdcccbcac9c8, x4, 416, x5)
+
+inst_70:
+// rs1_val == 0xd3d2d1d0cfcecdcc and rs2_val == 0xcfcecdcccbcac9c8 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xd3d2d1d0cfcecdcc; op2val:0xcfcecdcccbcac9c8; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xcfcecdcccbcac9c8, x4, 424, x5)
+
+inst_71:
+// rs1_val == 0xd3d2d1d0cfcecdcc and rs2_val == 0xcfcecdcccbcac9c8 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xd3d2d1d0cfcecdcc; op2val:0xcfcecdcccbcac9c8; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xcfcecdcccbcac9c8, x4, 432, x5)
+
+inst_72:
+// rs1_val == 0xd3d2d1d0cfcecdcc and rs2_val == 0xcfcecdcccbcac9c8 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xd3d2d1d0cfcecdcc; op2val:0xcfcecdcccbcac9c8; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xcfcecdcccbcac9c8, x4, 440, x5)
+
+inst_73:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xd3d2d1d0cfcecdcc and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xcfcecdcccbcac9c8; op2val:0xd3d2d1d0cfcecdcc; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xd3d2d1d0cfcecdcc, x4, 448, x5)
+
+inst_74:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xd3d2d1d0cfcecdcc and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xcfcecdcccbcac9c8; op2val:0xd3d2d1d0cfcecdcc; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xd3d2d1d0cfcecdcc, x4, 456, x5)
+
+inst_75:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xd3d2d1d0cfcecdcc and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xcfcecdcccbcac9c8; op2val:0xd3d2d1d0cfcecdcc; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xd3d2d1d0cfcecdcc, x4, 464, x5)
+
+inst_76:
+// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xd3d2d1d0cfcecdcc and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xcfcecdcccbcac9c8; op2val:0xd3d2d1d0cfcecdcc; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xd3d2d1d0cfcecdcc, x4, 472, x5)
+
+inst_77:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and rs2_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xcbcac9c8c7c6c5c4; op2val:0xc7c6c5c4c3c2c1c0; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xc7c6c5c4c3c2c1c0, x4, 480, x5)
+
+inst_78:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and rs2_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xcbcac9c8c7c6c5c4; op2val:0xc7c6c5c4c3c2c1c0; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xc7c6c5c4c3c2c1c0, x4, 488, x5)
+
+inst_79:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and rs2_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xcbcac9c8c7c6c5c4; op2val:0xc7c6c5c4c3c2c1c0; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xc7c6c5c4c3c2c1c0, x4, 496, x5)
+
+inst_80:
+// rs1_val == 0xcbcac9c8c7c6c5c4 and rs2_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xcbcac9c8c7c6c5c4; op2val:0xc7c6c5c4c3c2c1c0; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xc7c6c5c4c3c2c1c0, x4, 504, x5)
+
+inst_81:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcbcac9c8c7c6c5c4 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcbcac9c8c7c6c5c4; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcbcac9c8c7c6c5c4, x4, 512, x5)
+
+inst_82:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcbcac9c8c7c6c5c4 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcbcac9c8c7c6c5c4; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcbcac9c8c7c6c5c4, x4, 520, x5)
+
+inst_83:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcbcac9c8c7c6c5c4 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcbcac9c8c7c6c5c4; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcbcac9c8c7c6c5c4, x4, 528, x5)
+
+inst_84:
+// rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcbcac9c8c7c6c5c4 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcbcac9c8c7c6c5c4; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcbcac9c8c7c6c5c4, x4, 536, x5)
+
+inst_85:
+// rs1_val == 0xc3c2c1c0bfbebdbc and rs2_val == 0xbfbebdbcbbbab9b8 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xc3c2c1c0bfbebdbc; op2val:0xbfbebdbcbbbab9b8; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xbfbebdbcbbbab9b8, x4, 544, x5)
+
+inst_86:
+// rs1_val == 0xc3c2c1c0bfbebdbc and rs2_val == 0xbfbebdbcbbbab9b8 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xc3c2c1c0bfbebdbc; op2val:0xbfbebdbcbbbab9b8; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xbfbebdbcbbbab9b8, x4, 552, x5)
+
+inst_87:
+// rs1_val == 0xc3c2c1c0bfbebdbc and rs2_val == 0xbfbebdbcbbbab9b8 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xc3c2c1c0bfbebdbc; op2val:0xbfbebdbcbbbab9b8; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xbfbebdbcbbbab9b8, x4, 560, x5)
+
+inst_88:
+// rs1_val == 0xc3c2c1c0bfbebdbc and rs2_val == 0xbfbebdbcbbbab9b8 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xc3c2c1c0bfbebdbc; op2val:0xbfbebdbcbbbab9b8; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xbfbebdbcbbbab9b8, x4, 568, x5)
+
+inst_89:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xc3c2c1c0bfbebdbc and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xc3c2c1c0bfbebdbc; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xc3c2c1c0bfbebdbc, x4, 576, x5)
+
+inst_90:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xc3c2c1c0bfbebdbc and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xc3c2c1c0bfbebdbc; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xc3c2c1c0bfbebdbc, x4, 584, x5)
+
+inst_91:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xc3c2c1c0bfbebdbc and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xc3c2c1c0bfbebdbc; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xc3c2c1c0bfbebdbc, x4, 592, x5)
+
+inst_92:
+// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xc3c2c1c0bfbebdbc and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xc3c2c1c0bfbebdbc; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xc3c2c1c0bfbebdbc, x4, 600, x5)
+
+inst_93:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and rs2_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xbbbab9b8b7b6b5b4; op2val:0xb7b6b5b4b3b2b1b0; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xb7b6b5b4b3b2b1b0, x4, 608, x5)
+
+inst_94:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and rs2_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xbbbab9b8b7b6b5b4; op2val:0xb7b6b5b4b3b2b1b0; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xb7b6b5b4b3b2b1b0, x4, 616, x5)
+
+inst_95:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and rs2_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xbbbab9b8b7b6b5b4; op2val:0xb7b6b5b4b3b2b1b0; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xb7b6b5b4b3b2b1b0, x4, 624, x5)
+
+inst_96:
+// rs1_val == 0xbbbab9b8b7b6b5b4 and rs2_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xbbbab9b8b7b6b5b4; op2val:0xb7b6b5b4b3b2b1b0; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xb7b6b5b4b3b2b1b0, x4, 632, x5)
+
+inst_97:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbbbab9b8b7b6b5b4 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbbbab9b8b7b6b5b4; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbbbab9b8b7b6b5b4, x4, 640, x5)
+
+inst_98:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbbbab9b8b7b6b5b4 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbbbab9b8b7b6b5b4; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbbbab9b8b7b6b5b4, x4, 648, x5)
+
+inst_99:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbbbab9b8b7b6b5b4 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbbbab9b8b7b6b5b4; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbbbab9b8b7b6b5b4, x4, 656, x5)
+
+inst_100:
+// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbbbab9b8b7b6b5b4 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbbbab9b8b7b6b5b4; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbbbab9b8b7b6b5b4, x4, 664, x5)
+
+inst_101:
+// rs1_val == 0xb3b2b1b0afaeadac and rs2_val == 0xafaeadacabaaa9a8 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb3b2b1b0afaeadac; op2val:0xafaeadacabaaa9a8; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xafaeadacabaaa9a8, x4, 672, x5)
+
+inst_102:
+// rs1_val == 0xb3b2b1b0afaeadac and rs2_val == 0xafaeadacabaaa9a8 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb3b2b1b0afaeadac; op2val:0xafaeadacabaaa9a8; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xafaeadacabaaa9a8, x4, 680, x5)
+
+inst_103:
+// rs1_val == 0xb3b2b1b0afaeadac and rs2_val == 0xafaeadacabaaa9a8 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb3b2b1b0afaeadac; op2val:0xafaeadacabaaa9a8; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xafaeadacabaaa9a8, x4, 688, x5)
+
+inst_104:
+// rs1_val == 0xb3b2b1b0afaeadac and rs2_val == 0xafaeadacabaaa9a8 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb3b2b1b0afaeadac; op2val:0xafaeadacabaaa9a8; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xafaeadacabaaa9a8, x4, 696, x5)
+
+inst_105:
+// rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xb3b2b1b0afaeadac and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xafaeadacabaaa9a8; op2val:0xb3b2b1b0afaeadac; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xb3b2b1b0afaeadac, x4, 704, x5)
+
+inst_106:
+// rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xb3b2b1b0afaeadac and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xafaeadacabaaa9a8; op2val:0xb3b2b1b0afaeadac; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xb3b2b1b0afaeadac, x4, 712, x5)
+
+inst_107:
+// rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xb3b2b1b0afaeadac and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xafaeadacabaaa9a8; op2val:0xb3b2b1b0afaeadac; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xb3b2b1b0afaeadac, x4, 720, x5)
+
+inst_108:
+// rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xb3b2b1b0afaeadac and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xafaeadacabaaa9a8; op2val:0xb3b2b1b0afaeadac; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xb3b2b1b0afaeadac, x4, 728, x5)
+
+inst_109:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and rs2_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xabaaa9a8a7a6a5a4; op2val:0xa7a6a5a4a3a2a1a0; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa7a6a5a4a3a2a1a0, x4, 736, x5)
+
+inst_110:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and rs2_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xabaaa9a8a7a6a5a4; op2val:0xa7a6a5a4a3a2a1a0; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa7a6a5a4a3a2a1a0, x4, 744, x5)
+
+inst_111:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and rs2_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xabaaa9a8a7a6a5a4; op2val:0xa7a6a5a4a3a2a1a0; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa7a6a5a4a3a2a1a0, x4, 752, x5)
+
+inst_112:
+// rs1_val == 0xabaaa9a8a7a6a5a4 and rs2_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xabaaa9a8a7a6a5a4; op2val:0xa7a6a5a4a3a2a1a0; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa7a6a5a4a3a2a1a0, x4, 760, x5)
+
+inst_113:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xabaaa9a8a7a6a5a4 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xabaaa9a8a7a6a5a4; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xabaaa9a8a7a6a5a4, x4, 768, x5)
+
+inst_114:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xabaaa9a8a7a6a5a4 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xabaaa9a8a7a6a5a4; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xabaaa9a8a7a6a5a4, x4, 776, x5)
+
+inst_115:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xabaaa9a8a7a6a5a4 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xabaaa9a8a7a6a5a4; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xabaaa9a8a7a6a5a4, x4, 784, x5)
+
+inst_116:
+// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xabaaa9a8a7a6a5a4 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xabaaa9a8a7a6a5a4; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xabaaa9a8a7a6a5a4, x4, 792, x5)
+
+inst_117:
+// rs1_val == 0xa3a2a1a09f9e9d9c and rs2_val == 0x9f9e9d9c9b9a9998 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa3a2a1a09f9e9d9c; op2val:0x9f9e9d9c9b9a9998; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0x9f9e9d9c9b9a9998, x4, 800, x5)
+
+inst_118:
+// rs1_val == 0xa3a2a1a09f9e9d9c and rs2_val == 0x9f9e9d9c9b9a9998 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa3a2a1a09f9e9d9c; op2val:0x9f9e9d9c9b9a9998; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0x9f9e9d9c9b9a9998, x4, 808, x5)
+
+inst_119:
+// rs1_val == 0xa3a2a1a09f9e9d9c and rs2_val == 0x9f9e9d9c9b9a9998 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa3a2a1a09f9e9d9c; op2val:0x9f9e9d9c9b9a9998; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0x9f9e9d9c9b9a9998, x4, 816, x5)
+
+inst_120:
+// rs1_val == 0xa3a2a1a09f9e9d9c and rs2_val == 0x9f9e9d9c9b9a9998 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa3a2a1a09f9e9d9c; op2val:0x9f9e9d9c9b9a9998; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0x9f9e9d9c9b9a9998, x4, 824, x5)
+
+inst_121:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0xa3a2a1a09f9e9d9c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9f9e9d9c9b9a9998; op2val:0xa3a2a1a09f9e9d9c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa3a2a1a09f9e9d9c, x4, 832, x5)
+
+inst_122:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0xa3a2a1a09f9e9d9c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9f9e9d9c9b9a9998; op2val:0xa3a2a1a09f9e9d9c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa3a2a1a09f9e9d9c, x4, 840, x5)
+
+inst_123:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0xa3a2a1a09f9e9d9c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9f9e9d9c9b9a9998; op2val:0xa3a2a1a09f9e9d9c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa3a2a1a09f9e9d9c, x4, 848, x5)
+
+inst_124:
+// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0xa3a2a1a09f9e9d9c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9f9e9d9c9b9a9998; op2val:0xa3a2a1a09f9e9d9c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa3a2a1a09f9e9d9c, x4, 856, x5)
+
+inst_125:
+// rs1_val == 0x9b9a999897969594 and rs2_val == 0x9796959493929190 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9b9a999897969594; op2val:0x9796959493929190; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x9b9a999897969594, 0x9796959493929190, x4, 864, x5)
+
+inst_126:
+// rs1_val == 0x9b9a999897969594 and rs2_val == 0x9796959493929190 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9b9a999897969594; op2val:0x9796959493929190; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x9b9a999897969594, 0x9796959493929190, x4, 872, x5)
+
+inst_127:
+// rs1_val == 0x9b9a999897969594 and rs2_val == 0x9796959493929190 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9b9a999897969594; op2val:0x9796959493929190; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x9b9a999897969594, 0x9796959493929190, x4, 880, x5)
+
+inst_128:
+// rs1_val == 0x9b9a999897969594 and rs2_val == 0x9796959493929190 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9b9a999897969594; op2val:0x9796959493929190; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x9b9a999897969594, 0x9796959493929190, x4, 888, x5)
+
+inst_129:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9b9a999897969594 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9796959493929190; op2val:0x9b9a999897969594; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x9796959493929190, 0x9b9a999897969594, x4, 896, x5)
+
+inst_130:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9b9a999897969594 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9796959493929190; op2val:0x9b9a999897969594; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x9796959493929190, 0x9b9a999897969594, x4, 904, x5)
+
+inst_131:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9b9a999897969594 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9796959493929190; op2val:0x9b9a999897969594; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x9796959493929190, 0x9b9a999897969594, x4, 912, x5)
+
+inst_132:
+// rs1_val == 0x9796959493929190 and rs2_val == 0x9b9a999897969594 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x9796959493929190; op2val:0x9b9a999897969594; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x9796959493929190, 0x9b9a999897969594, x4, 920, x5)
+
+inst_133:
+// rs1_val == 0x939291908f8e8d8c and rs2_val == 0x8f8e8d8c8b8a8988 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x939291908f8e8d8c; op2val:0x8f8e8d8c8b8a8988; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x939291908f8e8d8c, 0x8f8e8d8c8b8a8988, x4, 928, x5)
+
+inst_134:
+// rs1_val == 0x939291908f8e8d8c and rs2_val == 0x8f8e8d8c8b8a8988 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x939291908f8e8d8c; op2val:0x8f8e8d8c8b8a8988; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x939291908f8e8d8c, 0x8f8e8d8c8b8a8988, x4, 936, x5)
+
+inst_135:
+// rs1_val == 0x939291908f8e8d8c and rs2_val == 0x8f8e8d8c8b8a8988 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x939291908f8e8d8c; op2val:0x8f8e8d8c8b8a8988; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x939291908f8e8d8c, 0x8f8e8d8c8b8a8988, x4, 944, x5)
+
+inst_136:
+// rs1_val == 0x939291908f8e8d8c and rs2_val == 0x8f8e8d8c8b8a8988 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x939291908f8e8d8c; op2val:0x8f8e8d8c8b8a8988; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x939291908f8e8d8c, 0x8f8e8d8c8b8a8988, x4, 952, x5)
+
+inst_137:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x939291908f8e8d8c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8f8e8d8c8b8a8988; op2val:0x939291908f8e8d8c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x939291908f8e8d8c, x4, 960, x5)
+
+inst_138:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x939291908f8e8d8c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8f8e8d8c8b8a8988; op2val:0x939291908f8e8d8c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x939291908f8e8d8c, x4, 968, x5)
+
+inst_139:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x939291908f8e8d8c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8f8e8d8c8b8a8988; op2val:0x939291908f8e8d8c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x939291908f8e8d8c, x4, 976, x5)
+
+inst_140:
+// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x939291908f8e8d8c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8f8e8d8c8b8a8988; op2val:0x939291908f8e8d8c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x939291908f8e8d8c, x4, 984, x5)
+
+inst_141:
+// rs1_val == 0x8b8a898887868584 and rs2_val == 0x8786858483828180 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8b8a898887868584; op2val:0x8786858483828180; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x8b8a898887868584, 0x8786858483828180, x4, 992, x5)
+
+inst_142:
+// rs1_val == 0x8b8a898887868584 and rs2_val == 0x8786858483828180 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8b8a898887868584; op2val:0x8786858483828180; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x8b8a898887868584, 0x8786858483828180, x4, 1000, x5)
+
+inst_143:
+// rs1_val == 0x8b8a898887868584 and rs2_val == 0x8786858483828180 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8b8a898887868584; op2val:0x8786858483828180; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x8b8a898887868584, 0x8786858483828180, x4, 1008, x5)
+
+inst_144:
+// rs1_val == 0x8b8a898887868584 and rs2_val == 0x8786858483828180 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8b8a898887868584; op2val:0x8786858483828180; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x8b8a898887868584, 0x8786858483828180, x4, 1016, x5)
+
+inst_145:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8b8a898887868584 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8786858483828180; op2val:0x8b8a898887868584; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x8786858483828180, 0x8b8a898887868584, x4, 1024, x5)
+
+inst_146:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8b8a898887868584 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8786858483828180; op2val:0x8b8a898887868584; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x8786858483828180, 0x8b8a898887868584, x4, 1032, x5)
+
+inst_147:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8b8a898887868584 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8786858483828180; op2val:0x8b8a898887868584; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x8786858483828180, 0x8b8a898887868584, x4, 1040, x5)
+
+inst_148:
+// rs1_val == 0x8786858483828180 and rs2_val == 0x8b8a898887868584 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x8786858483828180; op2val:0x8b8a898887868584; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x8786858483828180, 0x8b8a898887868584, x4, 1048, x5)
+
+inst_149:
+// rs1_val == 0x838281807f7e7d7c and rs2_val == 0x7f7e7d7c7b7a7978 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x838281807f7e7d7c; op2val:0x7f7e7d7c7b7a7978; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x838281807f7e7d7c, 0x7f7e7d7c7b7a7978, x4, 1056, x5)
+
+inst_150:
+// rs1_val == 0x838281807f7e7d7c and rs2_val == 0x7f7e7d7c7b7a7978 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x838281807f7e7d7c; op2val:0x7f7e7d7c7b7a7978; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x838281807f7e7d7c, 0x7f7e7d7c7b7a7978, x4, 1064, x5)
+
+inst_151:
+// rs1_val == 0x838281807f7e7d7c and rs2_val == 0x7f7e7d7c7b7a7978 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x838281807f7e7d7c; op2val:0x7f7e7d7c7b7a7978; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x838281807f7e7d7c, 0x7f7e7d7c7b7a7978, x4, 1072, x5)
+
+inst_152:
+// rs1_val == 0x838281807f7e7d7c and rs2_val == 0x7f7e7d7c7b7a7978 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x838281807f7e7d7c; op2val:0x7f7e7d7c7b7a7978; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x838281807f7e7d7c, 0x7f7e7d7c7b7a7978, x4, 1080, x5)
+
+inst_153:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x838281807f7e7d7c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7f7e7d7c7b7a7978; op2val:0x838281807f7e7d7c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x838281807f7e7d7c, x4, 1088, x5)
+
+inst_154:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x838281807f7e7d7c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7f7e7d7c7b7a7978; op2val:0x838281807f7e7d7c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x838281807f7e7d7c, x4, 1096, x5)
+
+inst_155:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x838281807f7e7d7c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7f7e7d7c7b7a7978; op2val:0x838281807f7e7d7c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x838281807f7e7d7c, x4, 1104, x5)
+
+inst_156:
+// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x838281807f7e7d7c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7f7e7d7c7b7a7978; op2val:0x838281807f7e7d7c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x838281807f7e7d7c, x4, 1112, x5)
+
+inst_157:
+// rs1_val == 0x7b7a797877767574 and rs2_val == 0x7776757473727170 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7b7a797877767574; op2val:0x7776757473727170; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x7b7a797877767574, 0x7776757473727170, x4, 1120, x5)
+
+inst_158:
+// rs1_val == 0x7b7a797877767574 and rs2_val == 0x7776757473727170 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7b7a797877767574; op2val:0x7776757473727170; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x7b7a797877767574, 0x7776757473727170, x4, 1128, x5)
+
+inst_159:
+// rs1_val == 0x7b7a797877767574 and rs2_val == 0x7776757473727170 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7b7a797877767574; op2val:0x7776757473727170; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x7b7a797877767574, 0x7776757473727170, x4, 1136, x5)
+
+inst_160:
+// rs1_val == 0x7b7a797877767574 and rs2_val == 0x7776757473727170 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7b7a797877767574; op2val:0x7776757473727170; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x7b7a797877767574, 0x7776757473727170, x4, 1144, x5)
+
+inst_161:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7b7a797877767574 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7776757473727170; op2val:0x7b7a797877767574; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x7776757473727170, 0x7b7a797877767574, x4, 1152, x5)
+
+inst_162:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7b7a797877767574 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7776757473727170; op2val:0x7b7a797877767574; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x7776757473727170, 0x7b7a797877767574, x4, 1160, x5)
+
+inst_163:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7b7a797877767574 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7776757473727170; op2val:0x7b7a797877767574; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x7776757473727170, 0x7b7a797877767574, x4, 1168, x5)
+
+inst_164:
+// rs1_val == 0x7776757473727170 and rs2_val == 0x7b7a797877767574 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x7776757473727170; op2val:0x7b7a797877767574; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x7776757473727170, 0x7b7a797877767574, x4, 1176, x5)
+
+inst_165:
+// rs1_val == 0x737271706f6e6d6c and rs2_val == 0x6f6e6d6c6b6a6968 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x737271706f6e6d6c; op2val:0x6f6e6d6c6b6a6968; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x737271706f6e6d6c, 0x6f6e6d6c6b6a6968, x4, 1184, x5)
+
+inst_166:
+// rs1_val == 0x737271706f6e6d6c and rs2_val == 0x6f6e6d6c6b6a6968 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x737271706f6e6d6c; op2val:0x6f6e6d6c6b6a6968; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x737271706f6e6d6c, 0x6f6e6d6c6b6a6968, x4, 1192, x5)
+
+inst_167:
+// rs1_val == 0x737271706f6e6d6c and rs2_val == 0x6f6e6d6c6b6a6968 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x737271706f6e6d6c; op2val:0x6f6e6d6c6b6a6968; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x737271706f6e6d6c, 0x6f6e6d6c6b6a6968, x4, 1200, x5)
+
+inst_168:
+// rs1_val == 0x737271706f6e6d6c and rs2_val == 0x6f6e6d6c6b6a6968 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x737271706f6e6d6c; op2val:0x6f6e6d6c6b6a6968; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x737271706f6e6d6c, 0x6f6e6d6c6b6a6968, x4, 1208, x5)
+
+inst_169:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x737271706f6e6d6c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6f6e6d6c6b6a6968; op2val:0x737271706f6e6d6c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x737271706f6e6d6c, x4, 1216, x5)
+
+inst_170:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x737271706f6e6d6c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6f6e6d6c6b6a6968; op2val:0x737271706f6e6d6c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x737271706f6e6d6c, x4, 1224, x5)
+
+inst_171:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x737271706f6e6d6c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6f6e6d6c6b6a6968; op2val:0x737271706f6e6d6c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x737271706f6e6d6c, x4, 1232, x5)
+
+inst_172:
+// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x737271706f6e6d6c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6f6e6d6c6b6a6968; op2val:0x737271706f6e6d6c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x737271706f6e6d6c, x4, 1240, x5)
+
+inst_173:
+// rs1_val == 0x6b6a696867666564 and rs2_val == 0x6766656463626160 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6b6a696867666564; op2val:0x6766656463626160; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x6b6a696867666564, 0x6766656463626160, x4, 1248, x5)
+
+inst_174:
+// rs1_val == 0x6b6a696867666564 and rs2_val == 0x6766656463626160 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6b6a696867666564; op2val:0x6766656463626160; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x6b6a696867666564, 0x6766656463626160, x4, 1256, x5)
+
+inst_175:
+// rs1_val == 0x6b6a696867666564 and rs2_val == 0x6766656463626160 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6b6a696867666564; op2val:0x6766656463626160; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x6b6a696867666564, 0x6766656463626160, x4, 1264, x5)
+
+inst_176:
+// rs1_val == 0x6b6a696867666564 and rs2_val == 0x6766656463626160 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6b6a696867666564; op2val:0x6766656463626160; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x6b6a696867666564, 0x6766656463626160, x4, 1272, x5)
+
+inst_177:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6b6a696867666564 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6766656463626160; op2val:0x6b6a696867666564; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x6766656463626160, 0x6b6a696867666564, x4, 1280, x5)
+
+inst_178:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6b6a696867666564 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6766656463626160; op2val:0x6b6a696867666564; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x6766656463626160, 0x6b6a696867666564, x4, 1288, x5)
+
+inst_179:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6b6a696867666564 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6766656463626160; op2val:0x6b6a696867666564; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x6766656463626160, 0x6b6a696867666564, x4, 1296, x5)
+
+inst_180:
+// rs1_val == 0x6766656463626160 and rs2_val == 0x6b6a696867666564 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x6766656463626160; op2val:0x6b6a696867666564; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x6766656463626160, 0x6b6a696867666564, x4, 1304, x5)
+
+inst_181:
+// rs1_val == 0x636261605f5e5d5c and rs2_val == 0x5f5e5d5c5b5a5958 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x636261605f5e5d5c; op2val:0x5f5e5d5c5b5a5958; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x636261605f5e5d5c, 0x5f5e5d5c5b5a5958, x4, 1312, x5)
+
+inst_182:
+// rs1_val == 0x636261605f5e5d5c and rs2_val == 0x5f5e5d5c5b5a5958 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x636261605f5e5d5c; op2val:0x5f5e5d5c5b5a5958; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x636261605f5e5d5c, 0x5f5e5d5c5b5a5958, x4, 1320, x5)
+
+inst_183:
+// rs1_val == 0x636261605f5e5d5c and rs2_val == 0x5f5e5d5c5b5a5958 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x636261605f5e5d5c; op2val:0x5f5e5d5c5b5a5958; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x636261605f5e5d5c, 0x5f5e5d5c5b5a5958, x4, 1328, x5)
+
+inst_184:
+// rs1_val == 0x636261605f5e5d5c and rs2_val == 0x5f5e5d5c5b5a5958 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x636261605f5e5d5c; op2val:0x5f5e5d5c5b5a5958; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x636261605f5e5d5c, 0x5f5e5d5c5b5a5958, x4, 1336, x5)
+
+inst_185:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x636261605f5e5d5c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5f5e5d5c5b5a5958; op2val:0x636261605f5e5d5c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x636261605f5e5d5c, x4, 1344, x5)
+
+inst_186:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x636261605f5e5d5c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5f5e5d5c5b5a5958; op2val:0x636261605f5e5d5c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x636261605f5e5d5c, x4, 1352, x5)
+
+inst_187:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x636261605f5e5d5c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5f5e5d5c5b5a5958; op2val:0x636261605f5e5d5c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x636261605f5e5d5c, x4, 1360, x5)
+
+inst_188:
+// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x636261605f5e5d5c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5f5e5d5c5b5a5958; op2val:0x636261605f5e5d5c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x636261605f5e5d5c, x4, 1368, x5)
+
+inst_189:
+// rs1_val == 0x5b5a595857565554 and rs2_val == 0x5756555453525150 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5b5a595857565554; op2val:0x5756555453525150; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x5b5a595857565554, 0x5756555453525150, x4, 1376, x5)
+
+inst_190:
+// rs1_val == 0x5b5a595857565554 and rs2_val == 0x5756555453525150 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5b5a595857565554; op2val:0x5756555453525150; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x5b5a595857565554, 0x5756555453525150, x4, 1384, x5)
+
+inst_191:
+// rs1_val == 0x5b5a595857565554 and rs2_val == 0x5756555453525150 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5b5a595857565554; op2val:0x5756555453525150; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x5b5a595857565554, 0x5756555453525150, x4, 1392, x5)
+
+inst_192:
+// rs1_val == 0x5b5a595857565554 and rs2_val == 0x5756555453525150 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5b5a595857565554; op2val:0x5756555453525150; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x5b5a595857565554, 0x5756555453525150, x4, 1400, x5)
+
+inst_193:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5b5a595857565554 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5756555453525150; op2val:0x5b5a595857565554; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x5756555453525150, 0x5b5a595857565554, x4, 1408, x5)
+
+inst_194:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5b5a595857565554 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5756555453525150; op2val:0x5b5a595857565554; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x5756555453525150, 0x5b5a595857565554, x4, 1416, x5)
+
+inst_195:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5b5a595857565554 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5756555453525150; op2val:0x5b5a595857565554; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x5756555453525150, 0x5b5a595857565554, x4, 1424, x5)
+
+inst_196:
+// rs1_val == 0x5756555453525150 and rs2_val == 0x5b5a595857565554 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x5756555453525150; op2val:0x5b5a595857565554; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x5756555453525150, 0x5b5a595857565554, x4, 1432, x5)
+
+inst_197:
+// rs1_val == 0x535251504f4e4d4c and rs2_val == 0x4f4e4d4c4b4a4948 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x535251504f4e4d4c; op2val:0x4f4e4d4c4b4a4948; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x535251504f4e4d4c, 0x4f4e4d4c4b4a4948, x4, 1440, x5)
+
+inst_198:
+// rs1_val == 0x535251504f4e4d4c and rs2_val == 0x4f4e4d4c4b4a4948 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x535251504f4e4d4c; op2val:0x4f4e4d4c4b4a4948; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x535251504f4e4d4c, 0x4f4e4d4c4b4a4948, x4, 1448, x5)
+
+inst_199:
+// rs1_val == 0x535251504f4e4d4c and rs2_val == 0x4f4e4d4c4b4a4948 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x535251504f4e4d4c; op2val:0x4f4e4d4c4b4a4948; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x535251504f4e4d4c, 0x4f4e4d4c4b4a4948, x4, 1456, x5)
+
+inst_200:
+// rs1_val == 0x535251504f4e4d4c and rs2_val == 0x4f4e4d4c4b4a4948 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x535251504f4e4d4c; op2val:0x4f4e4d4c4b4a4948; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x535251504f4e4d4c, 0x4f4e4d4c4b4a4948, x4, 1464, x5)
+
+inst_201:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x535251504f4e4d4c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4f4e4d4c4b4a4948; op2val:0x535251504f4e4d4c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x535251504f4e4d4c, x4, 1472, x5)
+
+inst_202:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x535251504f4e4d4c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4f4e4d4c4b4a4948; op2val:0x535251504f4e4d4c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x535251504f4e4d4c, x4, 1480, x5)
+
+inst_203:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x535251504f4e4d4c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4f4e4d4c4b4a4948; op2val:0x535251504f4e4d4c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x535251504f4e4d4c, x4, 1488, x5)
+
+inst_204:
+// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x535251504f4e4d4c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4f4e4d4c4b4a4948; op2val:0x535251504f4e4d4c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x535251504f4e4d4c, x4, 1496, x5)
+
+inst_205:
+// rs1_val == 0x4b4a494847464544 and rs2_val == 0x4746454443424140 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4b4a494847464544; op2val:0x4746454443424140; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x4b4a494847464544, 0x4746454443424140, x4, 1504, x5)
+
+inst_206:
+// rs1_val == 0x4b4a494847464544 and rs2_val == 0x4746454443424140 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4b4a494847464544; op2val:0x4746454443424140; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x4b4a494847464544, 0x4746454443424140, x4, 1512, x5)
+
+inst_207:
+// rs1_val == 0x4b4a494847464544 and rs2_val == 0x4746454443424140 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4b4a494847464544; op2val:0x4746454443424140; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x4b4a494847464544, 0x4746454443424140, x4, 1520, x5)
+
+inst_208:
+// rs1_val == 0x4b4a494847464544 and rs2_val == 0x4746454443424140 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4b4a494847464544; op2val:0x4746454443424140; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x4b4a494847464544, 0x4746454443424140, x4, 1528, x5)
+
+inst_209:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4b4a494847464544 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4746454443424140; op2val:0x4b4a494847464544; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x4746454443424140, 0x4b4a494847464544, x4, 1536, x5)
+
+inst_210:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4b4a494847464544 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4746454443424140; op2val:0x4b4a494847464544; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x4746454443424140, 0x4b4a494847464544, x4, 1544, x5)
+
+inst_211:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4b4a494847464544 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4746454443424140; op2val:0x4b4a494847464544; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x4746454443424140, 0x4b4a494847464544, x4, 1552, x5)
+
+inst_212:
+// rs1_val == 0x4746454443424140 and rs2_val == 0x4b4a494847464544 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x4746454443424140; op2val:0x4b4a494847464544; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x4746454443424140, 0x4b4a494847464544, x4, 1560, x5)
+
+inst_213:
+// rs1_val == 0x434241403f3e3d3c and rs2_val == 0x3f3e3d3c3b3a3938 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x434241403f3e3d3c; op2val:0x3f3e3d3c3b3a3938; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x434241403f3e3d3c, 0x3f3e3d3c3b3a3938, x4, 1568, x5)
+
+inst_214:
+// rs1_val == 0x434241403f3e3d3c and rs2_val == 0x3f3e3d3c3b3a3938 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x434241403f3e3d3c; op2val:0x3f3e3d3c3b3a3938; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x434241403f3e3d3c, 0x3f3e3d3c3b3a3938, x4, 1576, x5)
+
+inst_215:
+// rs1_val == 0x434241403f3e3d3c and rs2_val == 0x3f3e3d3c3b3a3938 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x434241403f3e3d3c; op2val:0x3f3e3d3c3b3a3938; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x434241403f3e3d3c, 0x3f3e3d3c3b3a3938, x4, 1584, x5)
+
+inst_216:
+// rs1_val == 0x434241403f3e3d3c and rs2_val == 0x3f3e3d3c3b3a3938 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x434241403f3e3d3c; op2val:0x3f3e3d3c3b3a3938; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x434241403f3e3d3c, 0x3f3e3d3c3b3a3938, x4, 1592, x5)
+
+inst_217:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x434241403f3e3d3c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3f3e3d3c3b3a3938; op2val:0x434241403f3e3d3c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x434241403f3e3d3c, x4, 1600, x5)
+
+inst_218:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x434241403f3e3d3c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3f3e3d3c3b3a3938; op2val:0x434241403f3e3d3c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x434241403f3e3d3c, x4, 1608, x5)
+
+inst_219:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x434241403f3e3d3c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3f3e3d3c3b3a3938; op2val:0x434241403f3e3d3c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x434241403f3e3d3c, x4, 1616, x5)
+
+inst_220:
+// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x434241403f3e3d3c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3f3e3d3c3b3a3938; op2val:0x434241403f3e3d3c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x434241403f3e3d3c, x4, 1624, x5)
+
+inst_221:
+// rs1_val == 0x3b3a393837363534 and rs2_val == 0x3736353433323130 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3b3a393837363534; op2val:0x3736353433323130; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x3b3a393837363534, 0x3736353433323130, x4, 1632, x5)
+
+inst_222:
+// rs1_val == 0x3b3a393837363534 and rs2_val == 0x3736353433323130 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3b3a393837363534; op2val:0x3736353433323130; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x3b3a393837363534, 0x3736353433323130, x4, 1640, x5)
+
+inst_223:
+// rs1_val == 0x3b3a393837363534 and rs2_val == 0x3736353433323130 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3b3a393837363534; op2val:0x3736353433323130; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x3b3a393837363534, 0x3736353433323130, x4, 1648, x5)
+
+inst_224:
+// rs1_val == 0x3b3a393837363534 and rs2_val == 0x3736353433323130 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3b3a393837363534; op2val:0x3736353433323130; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x3b3a393837363534, 0x3736353433323130, x4, 1656, x5)
+
+inst_225:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3b3a393837363534 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3736353433323130; op2val:0x3b3a393837363534; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x3736353433323130, 0x3b3a393837363534, x4, 1664, x5)
+
+inst_226:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3b3a393837363534 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3736353433323130; op2val:0x3b3a393837363534; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x3736353433323130, 0x3b3a393837363534, x4, 1672, x5)
+
+inst_227:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3b3a393837363534 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3736353433323130; op2val:0x3b3a393837363534; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x3736353433323130, 0x3b3a393837363534, x4, 1680, x5)
+
+inst_228:
+// rs1_val == 0x3736353433323130 and rs2_val == 0x3b3a393837363534 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3736353433323130; op2val:0x3b3a393837363534; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x3736353433323130, 0x3b3a393837363534, x4, 1688, x5)
+
+inst_229:
+// rs1_val == 0x333231302f2e2d2c and rs2_val == 0x2f2e2d2c2b2a2928 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x333231302f2e2d2c; op2val:0x2f2e2d2c2b2a2928; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x333231302f2e2d2c, 0x2f2e2d2c2b2a2928, x4, 1696, x5)
+
+inst_230:
+// rs1_val == 0x333231302f2e2d2c and rs2_val == 0x2f2e2d2c2b2a2928 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x333231302f2e2d2c; op2val:0x2f2e2d2c2b2a2928; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x333231302f2e2d2c, 0x2f2e2d2c2b2a2928, x4, 1704, x5)
+
+inst_231:
+// rs1_val == 0x333231302f2e2d2c and rs2_val == 0x2f2e2d2c2b2a2928 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x333231302f2e2d2c; op2val:0x2f2e2d2c2b2a2928; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x333231302f2e2d2c, 0x2f2e2d2c2b2a2928, x4, 1712, x5)
+
+inst_232:
+// rs1_val == 0x333231302f2e2d2c and rs2_val == 0x2f2e2d2c2b2a2928 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x333231302f2e2d2c; op2val:0x2f2e2d2c2b2a2928; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x333231302f2e2d2c, 0x2f2e2d2c2b2a2928, x4, 1720, x5)
+
+inst_233:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x333231302f2e2d2c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2f2e2d2c2b2a2928; op2val:0x333231302f2e2d2c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x333231302f2e2d2c, x4, 1728, x5)
+
+inst_234:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x333231302f2e2d2c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2f2e2d2c2b2a2928; op2val:0x333231302f2e2d2c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x333231302f2e2d2c, x4, 1736, x5)
+
+inst_235:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x333231302f2e2d2c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2f2e2d2c2b2a2928; op2val:0x333231302f2e2d2c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x333231302f2e2d2c, x4, 1744, x5)
+
+inst_236:
+// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x333231302f2e2d2c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2f2e2d2c2b2a2928; op2val:0x333231302f2e2d2c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x333231302f2e2d2c, x4, 1752, x5)
+
+inst_237:
+// rs1_val == 0x2b2a292827262524 and rs2_val == 0x2726252423222120 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2b2a292827262524; op2val:0x2726252423222120; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x2b2a292827262524, 0x2726252423222120, x4, 1760, x5)
+
+inst_238:
+// rs1_val == 0x2b2a292827262524 and rs2_val == 0x2726252423222120 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2b2a292827262524; op2val:0x2726252423222120; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x2b2a292827262524, 0x2726252423222120, x4, 1768, x5)
+
+inst_239:
+// rs1_val == 0x2b2a292827262524 and rs2_val == 0x2726252423222120 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2b2a292827262524; op2val:0x2726252423222120; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x2b2a292827262524, 0x2726252423222120, x4, 1776, x5)
+
+inst_240:
+// rs1_val == 0x2b2a292827262524 and rs2_val == 0x2726252423222120 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2b2a292827262524; op2val:0x2726252423222120; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x2b2a292827262524, 0x2726252423222120, x4, 1784, x5)
+
+inst_241:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2b2a292827262524 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2726252423222120; op2val:0x2b2a292827262524; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x2726252423222120, 0x2b2a292827262524, x4, 1792, x5)
+
+inst_242:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2b2a292827262524 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2726252423222120; op2val:0x2b2a292827262524; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x2726252423222120, 0x2b2a292827262524, x4, 1800, x5)
+
+inst_243:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2b2a292827262524 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2726252423222120; op2val:0x2b2a292827262524; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x2726252423222120, 0x2b2a292827262524, x4, 1808, x5)
+
+inst_244:
+// rs1_val == 0x2726252423222120 and rs2_val == 0x2b2a292827262524 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x2726252423222120; op2val:0x2b2a292827262524; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x2726252423222120, 0x2b2a292827262524, x4, 1816, x5)
+
+inst_245:
+// rs1_val == 0x232221201f1e1d1c and rs2_val == 0x1f1e1d1c1b1a1918 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x232221201f1e1d1c; op2val:0x1f1e1d1c1b1a1918; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x232221201f1e1d1c, 0x1f1e1d1c1b1a1918, x4, 1824, x5)
+
+inst_246:
+// rs1_val == 0x232221201f1e1d1c and rs2_val == 0x1f1e1d1c1b1a1918 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x232221201f1e1d1c; op2val:0x1f1e1d1c1b1a1918; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x232221201f1e1d1c, 0x1f1e1d1c1b1a1918, x4, 1832, x5)
+
+inst_247:
+// rs1_val == 0x232221201f1e1d1c and rs2_val == 0x1f1e1d1c1b1a1918 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x232221201f1e1d1c; op2val:0x1f1e1d1c1b1a1918; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x232221201f1e1d1c, 0x1f1e1d1c1b1a1918, x4, 1840, x5)
+
+inst_248:
+// rs1_val == 0x232221201f1e1d1c and rs2_val == 0x1f1e1d1c1b1a1918 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x232221201f1e1d1c; op2val:0x1f1e1d1c1b1a1918; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x232221201f1e1d1c, 0x1f1e1d1c1b1a1918, x4, 1848, x5)
+
+inst_249:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x232221201f1e1d1c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1f1e1d1c1b1a1918; op2val:0x232221201f1e1d1c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x232221201f1e1d1c, x4, 1856, x5)
+
+inst_250:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x232221201f1e1d1c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1f1e1d1c1b1a1918; op2val:0x232221201f1e1d1c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x232221201f1e1d1c, x4, 1864, x5)
+
+inst_251:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x232221201f1e1d1c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1f1e1d1c1b1a1918; op2val:0x232221201f1e1d1c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x232221201f1e1d1c, x4, 1872, x5)
+
+inst_252:
+// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x232221201f1e1d1c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1f1e1d1c1b1a1918; op2val:0x232221201f1e1d1c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x232221201f1e1d1c, x4, 1880, x5)
+
+inst_253:
+// rs1_val == 0x1b1a191817161514 and rs2_val == 0x1716151413121110 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1b1a191817161514; op2val:0x1716151413121110; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x1b1a191817161514, 0x1716151413121110, x4, 1888, x5)
+
+inst_254:
+// rs1_val == 0x1b1a191817161514 and rs2_val == 0x1716151413121110 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1b1a191817161514; op2val:0x1716151413121110; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x1b1a191817161514, 0x1716151413121110, x4, 1896, x5)
+
+inst_255:
+// rs1_val == 0x1b1a191817161514 and rs2_val == 0x1716151413121110 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1b1a191817161514; op2val:0x1716151413121110; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x1b1a191817161514, 0x1716151413121110, x4, 1904, x5)
+
+inst_256:
+// rs1_val == 0x1b1a191817161514 and rs2_val == 0x1716151413121110 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1b1a191817161514; op2val:0x1716151413121110; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x1b1a191817161514, 0x1716151413121110, x4, 1912, x5)
+
+inst_257:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1b1a191817161514 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1716151413121110; op2val:0x1b1a191817161514; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x1716151413121110, 0x1b1a191817161514, x4, 1920, x5)
+
+inst_258:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1b1a191817161514 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1716151413121110; op2val:0x1b1a191817161514; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x1716151413121110, 0x1b1a191817161514, x4, 1928, x5)
+
+inst_259:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1b1a191817161514 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1716151413121110; op2val:0x1b1a191817161514; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x1716151413121110, 0x1b1a191817161514, x4, 1936, x5)
+
+inst_260:
+// rs1_val == 0x1716151413121110 and rs2_val == 0x1b1a191817161514 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x1716151413121110; op2val:0x1b1a191817161514; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x1716151413121110, 0x1b1a191817161514, x4, 1944, x5)
+
+inst_261:
+// rs1_val == 0x131211100f0e0d0c and rs2_val == 0x0f0e0d0c0b0a0908 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x131211100f0e0d0c; op2val:0xf0e0d0c0b0a0908; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x131211100f0e0d0c, 0xf0e0d0c0b0a0908, x4, 1952, x5)
+
+inst_262:
+// rs1_val == 0x131211100f0e0d0c and rs2_val == 0x0f0e0d0c0b0a0908 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x131211100f0e0d0c; op2val:0xf0e0d0c0b0a0908; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x131211100f0e0d0c, 0xf0e0d0c0b0a0908, x4, 1960, x5)
+
+inst_263:
+// rs1_val == 0x131211100f0e0d0c and rs2_val == 0x0f0e0d0c0b0a0908 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x131211100f0e0d0c; op2val:0xf0e0d0c0b0a0908; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x131211100f0e0d0c, 0xf0e0d0c0b0a0908, x4, 1968, x5)
+
+inst_264:
+// rs1_val == 0x131211100f0e0d0c and rs2_val == 0x0f0e0d0c0b0a0908 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x131211100f0e0d0c; op2val:0xf0e0d0c0b0a0908; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x131211100f0e0d0c, 0xf0e0d0c0b0a0908, x4, 1976, x5)
+
+inst_265:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x131211100f0e0d0c and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf0e0d0c0b0a0908; op2val:0x131211100f0e0d0c; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x131211100f0e0d0c, x4, 1984, x5)
+
+inst_266:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x131211100f0e0d0c and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf0e0d0c0b0a0908; op2val:0x131211100f0e0d0c; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x131211100f0e0d0c, x4, 1992, x5)
+
+inst_267:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x131211100f0e0d0c and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf0e0d0c0b0a0908; op2val:0x131211100f0e0d0c; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x131211100f0e0d0c, x4, 2000, x5)
+
+inst_268:
+// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x131211100f0e0d0c and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xf0e0d0c0b0a0908; op2val:0x131211100f0e0d0c; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x131211100f0e0d0c, x4, 2008, x5)
+
+inst_269:
+// rs1_val == 0x0b0a090807060504 and rs2_val == 0x0706050403020100 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb0a090807060504; op2val:0x706050403020100; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0xb0a090807060504, 0x706050403020100, x4, 2016, x5)
+
+inst_270:
+// rs1_val == 0x0b0a090807060504 and rs2_val == 0x0706050403020100 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb0a090807060504; op2val:0x706050403020100; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xb0a090807060504, 0x706050403020100, x4, 2024, x5)
+
+inst_271:
+// rs1_val == 0x0b0a090807060504 and rs2_val == 0x0706050403020100 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb0a090807060504; op2val:0x706050403020100; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0xb0a090807060504, 0x706050403020100, x4, 2032, x5)
+
+inst_272:
+// rs1_val == 0x0b0a090807060504 and rs2_val == 0x0706050403020100 and imm_val == 0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xb0a090807060504; op2val:0x706050403020100; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0xb0a090807060504, 0x706050403020100, x4, 2040, x5)
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_273:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0b0a090807060504 and imm_val == 3
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x706050403020100; op2val:0xb0a090807060504; immval:0x3
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x3, 0x0000000000000000, 0x706050403020100, 0xb0a090807060504, x4, 0, x5)
+
+inst_274:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0b0a090807060504 and imm_val == 2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x706050403020100; op2val:0xb0a090807060504; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0x706050403020100, 0xb0a090807060504, x4, 8, x5)
+
+inst_275:
+// rs1_val == 0x0706050403020100 and rs2_val == 0x0b0a090807060504 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x706050403020100; op2val:0xb0a090807060504; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x706050403020100, 0xb0a090807060504, x4, 16, x5)
+
+inst_276:
+// rs1_val == 0x156fe482f9fcd292 and rs2_val == 0x24c6435c8dca0621 and imm_val == 0x0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x156fe482f9fcd292; op2val:0x24c6435c8dca0621; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x156fe482f9fcd292, 0x24c6435c8dca0621, x4, 24, x5)
+
+inst_277:
+// rs1_val == 0xa757e91e027e5943 and rs2_val == 0xda73ec2605e6750f and imm_val == 0x2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa757e91e027e5943; op2val:0xda73ec2605e6750f; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xa757e91e027e5943, 0xda73ec2605e6750f, x4, 32, x5)
+
+inst_278:
+// rs1_val == 0xa6c9253a4cc6382e and rs2_val == 0x25ae27ee4113ee60 and imm_val == 0x2
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0xa6c9253a4cc6382e; op2val:0x25ae27ee4113ee60; immval:0x2
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x2, 0x0000000000000000, 0xa6c9253a4cc6382e, 0x25ae27ee4113ee60, x4, 40, x5)
+
+inst_279:
+// rs1_val == 0x59885afcbb61a9cd and rs2_val == 0xccce240c81c1e7ff and imm_val == 0x0
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x59885afcbb61a9cd; op2val:0xccce240c81c1e7ff; immval:0x0
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x0, 0x0000000000000000, 0x59885afcbb61a9cd, 0xccce240c81c1e7ff, x4, 48, x5)
+
+inst_280:
+// rs1_val == 0x03020100fffefdfc and rs2_val == 0xfffefdfcfbfaf9f8 and imm_val == 1
+// opcode: sm4ks; rd: x12; op1:x10; op2:x11; op1val:0x3020100fffefdfc; op2val:0xfffefdfcfbfaf9f8; immval:0x1
+TEST_RI_OP(sm4ks, x12, x10, x11, 0x1, 0x0000000000000000, 0x3020100fffefdfc, 0xfffefdfcfbfaf9f8, x4, 56, x5)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x2_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 17*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 8*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ks-rwp1.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ks-rwp1.S
new file mode 100644
index 000000000..8cb95a8bb
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/sm4ks-rwp1.S
@@ -0,0 +1,415 @@
+
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64IK")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",sm4ks)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKs.*);def TEST_CASE_1=True;",sm4ks)
+
+RVTEST_SIGBASE( x31,signature_x31_1)
+
+inst_0:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x1; op1:x2; op1:x3; op1:x4; dest:x5;
+li x1, 0x08577eb1924770d3;
+li x2, 0x93fdcab87b89296c;
+li x3, 0xd2d6b8777dc59a3a;
+li x4, 0xcf84b683a749f9c5;
+li x5, 0x854a965708ceac39;
+sm4ks x5, x5, x1, 0;
+sm4ks x5, x5, x2, 1;
+sm4ks x5, x5, x3, 2;
+sm4ks x5, x5, x4, 3;
+RVTEST_SIGUPD(x31,x5,0);
+
+inst_1:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x2; op1:x3; op1:x4; op1:x5; dest:x6;
+li x2, 0x137a977753e8eb43;
+li x3, 0x5c74e45eff1e5bef;
+li x4, 0xdc3383836b9f15c4;
+li x5, 0x5ae6a2289a6ab329;
+li x6, 0x432779eeacca7f0d;
+sm4ks x6, x6, x2, 0;
+sm4ks x6, x6, x3, 1;
+sm4ks x6, x6, x4, 2;
+sm4ks x6, x6, x5, 3;
+RVTEST_SIGUPD(x31,x6,8);
+
+inst_2:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x3; op1:x4; op1:x5; op1:x6; dest:x7;
+li x3, 0xaf949e5e2cb7362c;
+li x4, 0x5cd2875ea96ec2b3;
+li x5, 0x9d02fc90708cc1b6;
+li x6, 0x953b00b00b54aa22;
+li x7, 0x224c06013c53d0e3;
+sm4ks x7, x7, x3, 0;
+sm4ks x7, x7, x4, 1;
+sm4ks x7, x7, x5, 2;
+sm4ks x7, x7, x6, 3;
+RVTEST_SIGUPD(x31,x7,16);
+
+inst_3:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x4; op1:x5; op1:x6; op1:x7; dest:x8;
+li x4, 0xe8dac663f0e58650;
+li x5, 0x3d7c95f9e5f0307e;
+li x6, 0x8c8a18b2aaac3142;
+li x7, 0x785036de6f9fb997;
+li x8, 0x95a4d257a7298c66;
+sm4ks x8, x8, x4, 0;
+sm4ks x8, x8, x5, 1;
+sm4ks x8, x8, x6, 2;
+sm4ks x8, x8, x7, 3;
+RVTEST_SIGUPD(x31,x8,24);
+
+inst_4:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x5; op1:x6; op1:x7; op1:x8; dest:x9;
+li x5, 0x807da245d814d575;
+li x6, 0x3d06143769b1dcbf;
+li x7, 0x7f21682208208d09;
+li x8, 0x14b91c79dae98554;
+li x9, 0xc5ec6148c6880007;
+sm4ks x9, x9, x5, 0;
+sm4ks x9, x9, x6, 1;
+sm4ks x9, x9, x7, 2;
+sm4ks x9, x9, x8, 3;
+RVTEST_SIGUPD(x31,x9,32);
+
+inst_5:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x6; op1:x7; op1:x8; op1:x9; dest:x10;
+li x6, 0x7213516d6a013380;
+li x7, 0x4652f62dae4839a1;
+li x8, 0x85986adb9e044706;
+li x9, 0x1e9667c2dd68f201;
+li x10, 0x4d753ac174ab0a38;
+sm4ks x10, x10, x6, 0;
+sm4ks x10, x10, x7, 1;
+sm4ks x10, x10, x8, 2;
+sm4ks x10, x10, x9, 3;
+RVTEST_SIGUPD(x31,x10,40);
+
+inst_6:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x7; op1:x8; op1:x9; op1:x10; dest:x11;
+li x7, 0x53fbff6c58fa6e1c;
+li x8, 0x0b2e2669b66b3284;
+li x9, 0x51c5b8b2e59cf78f;
+li x10, 0x43032e3e1475f78d;
+li x11, 0x9535971c67a07b54;
+sm4ks x11, x11, x7, 0;
+sm4ks x11, x11, x8, 1;
+sm4ks x11, x11, x9, 2;
+sm4ks x11, x11, x10, 3;
+RVTEST_SIGUPD(x31,x11,48);
+
+inst_7:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x8; op1:x9; op1:x10; op1:x11; dest:x12;
+li x8, 0xe918be9ffe057dc5;
+li x9, 0x1011eeb47ff822ed;
+li x10, 0xac9e90327d486895;
+li x11, 0x66b072b9e5e290be;
+li x12, 0x89e6156b59672bd6;
+sm4ks x12, x12, x8, 0;
+sm4ks x12, x12, x9, 1;
+sm4ks x12, x12, x10, 2;
+sm4ks x12, x12, x11, 3;
+RVTEST_SIGUPD(x31,x12,56);
+
+inst_8:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x9; op1:x10; op1:x11; op1:x12; dest:x13;
+li x9, 0xb3a63fa37d69ceef;
+li x10, 0x70fc1afc8f0846a2;
+li x11, 0xf956ec0bf7fb4b49;
+li x12, 0x0cf25923109ff475;
+li x13, 0x26ea42ec17be082f;
+sm4ks x13, x13, x9, 0;
+sm4ks x13, x13, x10, 1;
+sm4ks x13, x13, x11, 2;
+sm4ks x13, x13, x12, 3;
+RVTEST_SIGUPD(x31,x13,64);
+
+inst_9:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x10; op1:x11; op1:x12; op1:x13; dest:x14;
+li x10, 0xccadb61ffe20ce1c;
+li x11, 0x72745307ec325eec;
+li x12, 0xb2a7a18ac9ea3210;
+li x13, 0xbd59213e27541f0b;
+li x14, 0x9e7e1fc352b42eff;
+sm4ks x14, x14, x10, 0;
+sm4ks x14, x14, x11, 1;
+sm4ks x14, x14, x12, 2;
+sm4ks x14, x14, x13, 3;
+RVTEST_SIGUPD(x31,x14,72);
+
+inst_10:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x11; op1:x12; op1:x13; op1:x14; dest:x15;
+li x11, 0xa0e0bd86d4551408;
+li x12, 0xcebe24d906600792;
+li x13, 0x4bd90a77f65cf3f3;
+li x14, 0xdbdd4dd9d9e93409;
+li x15, 0xf65e7737fbd2570d;
+sm4ks x15, x15, x11, 0;
+sm4ks x15, x15, x12, 1;
+sm4ks x15, x15, x13, 2;
+sm4ks x15, x15, x14, 3;
+RVTEST_SIGUPD(x31,x15,80);
+
+inst_11:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x12; op1:x13; op1:x14; op1:x15; dest:x16;
+li x12, 0xd1142724fb37bec8;
+li x13, 0xab8534c129a2575f;
+li x14, 0xfc6113a3312529dc;
+li x15, 0x6d3f408b31d4ff08;
+li x16, 0x8e368ce0be5265f3;
+sm4ks x16, x16, x12, 0;
+sm4ks x16, x16, x13, 1;
+sm4ks x16, x16, x14, 2;
+sm4ks x16, x16, x15, 3;
+RVTEST_SIGUPD(x31,x16,88);
+
+inst_12:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x13; op1:x14; op1:x15; op1:x16; dest:x17;
+li x13, 0x98f7c41c44115b04;
+li x14, 0x01fbbe93a08b84f3;
+li x15, 0x9c1a15286c834752;
+li x16, 0xa6faba7bcfe6bc54;
+li x17, 0xc5b3e01b11f6d600;
+sm4ks x17, x17, x13, 0;
+sm4ks x17, x17, x14, 1;
+sm4ks x17, x17, x15, 2;
+sm4ks x17, x17, x16, 3;
+RVTEST_SIGUPD(x31,x17,96);
+
+inst_13:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x14; op1:x15; op1:x16; op1:x17; dest:x18;
+li x14, 0x5916d2810e24d9cc;
+li x15, 0x74f5add55c37849a;
+li x16, 0x4850e927bfdbb3be;
+li x17, 0x67913217437cbc41;
+li x18, 0x576e3d4fa3b633ab;
+sm4ks x18, x18, x14, 0;
+sm4ks x18, x18, x15, 1;
+sm4ks x18, x18, x16, 2;
+sm4ks x18, x18, x17, 3;
+RVTEST_SIGUPD(x31,x18,104);
+
+inst_14:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x15; op1:x16; op1:x17; op1:x18; dest:x19;
+li x15, 0x46ed745fb9fef1d6;
+li x16, 0x9651ee657a1d33ca;
+li x17, 0xfe0a9c6c9a592829;
+li x18, 0x9071f3aab87ce2a5;
+li x19, 0x4e6168c8d6220b4f;
+sm4ks x19, x19, x15, 0;
+sm4ks x19, x19, x16, 1;
+sm4ks x19, x19, x17, 2;
+sm4ks x19, x19, x18, 3;
+RVTEST_SIGUPD(x31,x19,112);
+
+inst_15:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x16; op1:x17; op1:x18; op1:x19; dest:x20;
+li x16, 0x9c3d087c65835bdf;
+li x17, 0x9b11d383484641f5;
+li x18, 0x2b24ced43da82c98;
+li x19, 0xef8c60c0d12f8d4e;
+li x20, 0xf37e27a312ea67e4;
+sm4ks x20, x20, x16, 0;
+sm4ks x20, x20, x17, 1;
+sm4ks x20, x20, x18, 2;
+sm4ks x20, x20, x19, 3;
+RVTEST_SIGUPD(x31,x20,120);
+
+inst_16:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x17; op1:x18; op1:x19; op1:x20; dest:x21;
+li x17, 0x041bbaab97eb7c0f;
+li x18, 0x93017690e356529c;
+li x19, 0xd5e9d561f46a41bd;
+li x20, 0x9408ad7db13971c0;
+li x21, 0x90af95fe095b6425;
+sm4ks x21, x21, x17, 0;
+sm4ks x21, x21, x18, 1;
+sm4ks x21, x21, x19, 2;
+sm4ks x21, x21, x20, 3;
+RVTEST_SIGUPD(x31,x21,128);
+
+inst_17:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x18; op1:x19; op1:x20; op1:x21; dest:x22;
+li x18, 0xef677106dc17ae6e;
+li x19, 0xc5d09b942be2d8c9;
+li x20, 0x596f5f89ce334459;
+li x21, 0x5902a9dbe1832ab6;
+li x22, 0xb4dc7dee71dabeac;
+sm4ks x22, x22, x18, 0;
+sm4ks x22, x22, x19, 1;
+sm4ks x22, x22, x20, 2;
+sm4ks x22, x22, x21, 3;
+RVTEST_SIGUPD(x31,x22,136);
+
+inst_18:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x19; op1:x20; op1:x21; op1:x22; dest:x23;
+li x19, 0x755961a98347ddf5;
+li x20, 0x18d71be431c00570;
+li x21, 0x270e1922a422af66;
+li x22, 0xdc336338eea4dd03;
+li x23, 0xa2460e15a3da90b2;
+sm4ks x23, x23, x19, 0;
+sm4ks x23, x23, x20, 1;
+sm4ks x23, x23, x21, 2;
+sm4ks x23, x23, x22, 3;
+RVTEST_SIGUPD(x31,x23,144);
+
+inst_19:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x20; op1:x21; op1:x22; op1:x23; dest:x24;
+li x20, 0x8f2248c25c3577f5;
+li x21, 0x2a5dc0a00d453cdf;
+li x22, 0xf3281b8ef4d325c3;
+li x23, 0x947ac00e0caec993;
+li x24, 0xd60235f35c4739b7;
+sm4ks x24, x24, x20, 0;
+sm4ks x24, x24, x21, 1;
+sm4ks x24, x24, x22, 2;
+sm4ks x24, x24, x23, 3;
+RVTEST_SIGUPD(x31,x24,152);
+
+inst_20:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x21; op1:x22; op1:x23; op1:x24; dest:x25;
+li x21, 0x6dc3cceec36ffd4b;
+li x22, 0xc2713ce25868105b;
+li x23, 0x29ade05f7dddcc72;
+li x24, 0x6baeea37b4c8839b;
+li x25, 0x1e4e0fadd02bad0f;
+sm4ks x25, x25, x21, 0;
+sm4ks x25, x25, x22, 1;
+sm4ks x25, x25, x23, 2;
+sm4ks x25, x25, x24, 3;
+RVTEST_SIGUPD(x31,x25,160);
+
+inst_21:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x22; op1:x23; op1:x24; op1:x25; dest:x26;
+li x22, 0xe4367ccad9716f2c;
+li x23, 0x9ea76f0885958881;
+li x24, 0xb183406662ebf954;
+li x25, 0x796c1d88c313bc1f;
+li x26, 0xe7e94a5193b3cb9a;
+sm4ks x26, x26, x22, 0;
+sm4ks x26, x26, x23, 1;
+sm4ks x26, x26, x24, 2;
+sm4ks x26, x26, x25, 3;
+RVTEST_SIGUPD(x31,x26,168);
+
+inst_22:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x23; op1:x24; op1:x25; op1:x26; dest:x27;
+li x23, 0x37c4c6b99530db93;
+li x24, 0x132a717606aec150;
+li x25, 0x08011d17cfac3216;
+li x26, 0xd65358aaa734906b;
+li x27, 0xba1c4b6b2d9da6d7;
+sm4ks x27, x27, x23, 0;
+sm4ks x27, x27, x24, 1;
+sm4ks x27, x27, x25, 2;
+sm4ks x27, x27, x26, 3;
+RVTEST_SIGUPD(x31,x27,176);
+
+inst_23:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x24; op1:x25; op1:x26; op1:x27; dest:x28;
+li x24, 0x04d3e5f42bccd6b6;
+li x25, 0x339863c4d216eea8;
+li x26, 0x3f13091de7fcc18b;
+li x27, 0xc2cc1d388d15d800;
+li x28, 0x0165f0f02016dc16;
+sm4ks x28, x28, x24, 0;
+sm4ks x28, x28, x25, 1;
+sm4ks x28, x28, x26, 2;
+sm4ks x28, x28, x27, 3;
+RVTEST_SIGUPD(x31,x28,184);
+
+inst_24:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x25; op1:x26; op1:x27; op1:x28; dest:x29;
+li x25, 0xd6ac851f07155a89;
+li x26, 0x2d885062faa97965;
+li x27, 0x62a12347b17286fd;
+li x28, 0xa97cbf8403beaecd;
+li x29, 0xa9632e3dbd0070ae;
+sm4ks x29, x29, x25, 0;
+sm4ks x29, x29, x26, 1;
+sm4ks x29, x29, x27, 2;
+sm4ks x29, x29, x28, 3;
+RVTEST_SIGUPD(x31,x29,192);
+
+inst_25:
+// Expected use-case sequence -> Aims to test things like pipeline forwarding
+// opcode: sm4ks; op1:x26; op1:x27; op1:x28; op1:x29; dest:x30;
+li x26, 0x8d3ba7550c3c31a8;
+li x27, 0xb3e73cbb0d8258c4;
+li x28, 0x7587e11994038f33;
+li x29, 0x2f8d133555f7f60a;
+li x30, 0xa0a1c6ef661a191b;
+sm4ks x30, x30, x26, 0;
+sm4ks x30, x30, x27, 1;
+sm4ks x30, x30, x28, 2;
+sm4ks x30, x30, x29, 3;
+RVTEST_SIGUPD(x31,x30,200);
+
+#endif
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x31_1:
+ .fill 26*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xnor-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xnor-01.S
new file mode 100644
index 000000000..e8675ad95
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xnor-01.S
@@ -0,0 +1,2711 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 20 05:32:05 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the xnor instruction of the RISC-V extension for the xnor covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",xnor)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",xnor)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",xnor)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",xnor)
+
+RVTEST_SIGBASE( x12,signature_x12_1)
+
+inst_0:
+// rs1 == rs2 != rd, rs1==x24, rs2==x24, rd==x16, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: xnor ; op1:x24; op2:x24; dest:x16; op1val:0xffffffffffffffff; op2val:0xffffffffffffffff
+TEST_RR_OP(xnor, x16, x24, x24, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff, x12, 0, x19)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x14, rs2==x14, rd==x14, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: xnor ; op1:x14; op2:x14; dest:x14; op1val:0x5ba2c7dd5ae10604; op2val:0x5ba2c7dd5ae10604
+TEST_RR_OP(xnor, x14, x14, x14, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x5ba2c7dd5ae10604, x12, 8, x19)
+
+inst_2:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x8, rs2==x7, rd==x31, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: xnor ; op1:x8; op2:x7; dest:x31; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(xnor, x31, x8, x7, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x12, 16, x19)
+
+inst_3:
+// rs1 == rd != rs2, rs1==x11, rs2==x31, rd==x11, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: xnor ; op1:x11; op2:x31; dest:x11; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(xnor, x11, x11, x31, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x12, 24, x19)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x7, rs2==x10, rd==x10, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: xnor ; op1:x7; op2:x10; dest:x10; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(xnor, x10, x7, x10, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x12, 32, x19)
+
+inst_5:
+// rs1==x13, rs2==x22, rd==x27, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: xnor ; op1:x13; op2:x22; dest:x27; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(xnor, x27, x13, x22, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x12, 40, x19)
+
+inst_6:
+// rs1==x1, rs2==x5, rd==x7, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: xnor ; op1:x1; op2:x5; dest:x7; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(xnor, x7, x1, x5, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x12, 48, x19)
+
+inst_7:
+// rs1==x0, rs2==x28, rd==x2, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: xnor ; op1:x0; op2:x28; dest:x2; op1val:0x0; op2val:0x4c00000000000000
+TEST_RR_OP(xnor, x2, x0, x28, 0x0000000000000000, 0x0, 0x4c00000000000000, x12, 56, x19)
+
+inst_8:
+// rs1==x2, rs2==x21, rd==x4, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: xnor ; op1:x2; op2:x21; dest:x4; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(xnor, x4, x2, x21, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x12, 64, x19)
+
+inst_9:
+// rs1==x21, rs2==x18, rd==x1, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: xnor ; op1:x21; op2:x18; dest:x1; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(xnor, x1, x21, x18, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x12, 72, x19)
+
+inst_10:
+// rs1==x27, rs2==x0, rd==x5, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: xnor ; op1:x27; op2:x0; dest:x5; op1val:0xbf28804a83e2ba3a; op2val:0x0
+TEST_RR_OP(xnor, x5, x27, x0, 0x0000000000000000, 0xbf28804a83e2ba3a, 0x0, x12, 80, x19)
+
+inst_11:
+// rs1==x3, rs2==x25, rd==x6, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: xnor ; op1:x3; op2:x25; dest:x6; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(xnor, x6, x3, x25, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x12, 88, x19)
+
+inst_12:
+// rs1==x20, rs2==x2, rd==x25, rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: xnor ; op1:x20; op2:x2; dest:x25; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(xnor, x25, x20, x2, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x12, 96, x19)
+
+inst_13:
+// rs1==x17, rs2==x27, rd==x0, rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: xnor ; op1:x17; op2:x27; dest:x0; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(xnor, x0, x17, x27, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x12, 104, x19)
+
+inst_14:
+// rs1==x30, rs2==x8, rd==x22, rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: xnor ; op1:x30; op2:x8; dest:x22; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(xnor, x22, x30, x8, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x12, 112, x19)
+
+inst_15:
+// rs1==x23, rs2==x9, rd==x15, rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: xnor ; op1:x23; op2:x9; dest:x15; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(xnor, x15, x23, x9, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x12, 120, x19)
+
+inst_16:
+// rs1==x4, rs2==x16, rd==x23, rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: xnor ; op1:x4; op2:x16; dest:x23; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(xnor, x23, x4, x16, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x12, 128, x1)
+
+inst_17:
+// rs1==x25, rs2==x26, rd==x13, rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: xnor ; op1:x25; op2:x26; dest:x13; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(xnor, x13, x25, x26, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x12, 136, x1)
+RVTEST_SIGBASE( x7,signature_x7_0)
+
+inst_18:
+// rs1==x10, rs2==x23, rd==x9, rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: xnor ; op1:x10; op2:x23; dest:x9; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(xnor, x9, x10, x23, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x7, 0, x1)
+
+inst_19:
+// rs1==x16, rs2==x15, rd==x3, rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: xnor ; op1:x16; op2:x15; dest:x3; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(xnor, x3, x16, x15, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x7, 8, x1)
+
+inst_20:
+// rs1==x15, rs2==x13, rd==x20, rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: xnor ; op1:x15; op2:x13; dest:x20; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(xnor, x20, x15, x13, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x7, 16, x1)
+
+inst_21:
+// rs1==x22, rs2==x30, rd==x19, rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: xnor ; op1:x22; op2:x30; dest:x19; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(xnor, x19, x22, x30, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x7, 24, x1)
+
+inst_22:
+// rs1==x5, rs2==x12, rd==x18, rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: xnor ; op1:x5; op2:x12; dest:x18; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(xnor, x18, x5, x12, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x7, 32, x1)
+
+inst_23:
+// rs1==x6, rs2==x20, rd==x8, rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: xnor ; op1:x6; op2:x20; dest:x8; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(xnor, x8, x6, x20, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x7, 40, x1)
+
+inst_24:
+// rs1==x9, rs2==x19, rd==x24, rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: xnor ; op1:x9; op2:x19; dest:x24; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(xnor, x24, x9, x19, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x7, 48, x1)
+
+inst_25:
+// rs1==x26, rs2==x17, rd==x21, rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: xnor ; op1:x26; op2:x17; dest:x21; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(xnor, x21, x26, x17, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x7, 56, x1)
+
+inst_26:
+// rs1==x12, rs2==x11, rd==x28, rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: xnor ; op1:x12; op2:x11; dest:x28; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(xnor, x28, x12, x11, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x7, 64, x1)
+
+inst_27:
+// rs1==x28, rs2==x6, rd==x26, rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: xnor ; op1:x28; op2:x6; dest:x26; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(xnor, x26, x28, x6, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x7, 72, x1)
+
+inst_28:
+// rs1==x19, rs2==x4, rd==x30, rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: xnor ; op1:x19; op2:x4; dest:x30; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(xnor, x30, x19, x4, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x7, 80, x1)
+
+inst_29:
+// rs1==x31, rs2==x3, rd==x17, rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: xnor ; op1:x31; op2:x3; dest:x17; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(xnor, x17, x31, x3, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x7, 88, x1)
+
+inst_30:
+// rs1==x18, rs2==x29, rd==x12, rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: xnor ; op1:x18; op2:x29; dest:x12; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(xnor, x12, x18, x29, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x7, 96, x1)
+
+inst_31:
+// rs1==x29, rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: xnor ; op1:x29; op2:x5; dest:x2; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(xnor, x2, x29, x5, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x7, 104, x1)
+
+inst_32:
+// rs2==x1, rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: xnor ; op1:x11; op2:x1; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(xnor, x12, x11, x1, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x7, 112, x2)
+
+inst_33:
+// rd==x29, rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: xnor ; op1:x30; op2:x10; dest:x29; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(xnor, x29, x30, x10, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x7, 120, x2)
+
+inst_34:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x7, 128, x2)
+
+inst_35:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x7, 136, x2)
+
+inst_36:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x7, 144, x2)
+
+inst_37:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x7, 152, x2)
+
+inst_38:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x7, 160, x2)
+
+inst_39:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x7, 168, x2)
+
+inst_40:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x7, 176, x2)
+
+inst_41:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x7, 184, x2)
+
+inst_42:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x7, 192, x2)
+
+inst_43:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x7, 200, x2)
+
+inst_44:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x7, 208, x2)
+
+inst_45:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x7, 216, x2)
+
+inst_46:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x7, 224, x2)
+
+inst_47:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x7, 232, x2)
+
+inst_48:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x7, 240, x2)
+
+inst_49:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x7, 248, x2)
+
+inst_50:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x7, 256, x2)
+
+inst_51:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x7, 264, x2)
+
+inst_52:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x7, 272, x2)
+
+inst_53:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x7, 280, x2)
+
+inst_54:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x7, 288, x2)
+
+inst_55:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x7, 296, x2)
+
+inst_56:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x7, 304, x2)
+
+inst_57:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x7, 312, x2)
+
+inst_58:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x7, 320, x2)
+
+inst_59:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x7, 328, x2)
+
+inst_60:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x7, 336, x2)
+
+inst_61:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x7, 344, x2)
+
+inst_62:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x7, 352, x2)
+
+inst_63:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x7, 360, x2)
+
+inst_64:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x7, 368, x2)
+
+inst_65:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x7, 376, x2)
+
+inst_66:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x7, 384, x2)
+
+inst_67:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x7, 392, x2)
+
+inst_68:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x7, 400, x2)
+
+inst_69:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x7, 408, x2)
+
+inst_70:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x7, 416, x2)
+
+inst_71:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x7, 424, x2)
+
+inst_72:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x7, 432, x2)
+
+inst_73:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x7, 440, x2)
+
+inst_74:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x7, 448, x2)
+
+inst_75:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x7, 456, x2)
+
+inst_76:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x7, 464, x2)
+
+inst_77:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x7, 472, x2)
+
+inst_78:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x7, 480, x2)
+
+inst_79:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x7, 488, x2)
+
+inst_80:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x7, 496, x2)
+
+inst_81:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x7, 504, x2)
+
+inst_82:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x7, 512, x2)
+
+inst_83:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x7, 520, x2)
+
+inst_84:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x7, 528, x2)
+
+inst_85:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x7, 536, x2)
+
+inst_86:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x7, 544, x2)
+
+inst_87:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x7, 552, x2)
+
+inst_88:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x7, 560, x2)
+
+inst_89:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x7, 568, x2)
+
+inst_90:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x7, 576, x2)
+
+inst_91:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x7, 584, x2)
+
+inst_92:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x7, 592, x2)
+
+inst_93:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x7, 600, x2)
+
+inst_94:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x7, 608, x2)
+
+inst_95:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x7, 616, x2)
+
+inst_96:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x7, 624, x2)
+
+inst_97:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x7, 632, x2)
+
+inst_98:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x7, 640, x2)
+
+inst_99:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x7, 648, x2)
+
+inst_100:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x7, 656, x2)
+
+inst_101:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x7, 664, x2)
+
+inst_102:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x7, 672, x2)
+
+inst_103:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x7, 680, x2)
+
+inst_104:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x7, 688, x2)
+
+inst_105:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x7, 696, x2)
+
+inst_106:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x7, 704, x2)
+
+inst_107:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x7, 712, x2)
+
+inst_108:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x7, 720, x2)
+
+inst_109:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x7, 728, x2)
+
+inst_110:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x7, 736, x2)
+
+inst_111:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x7, 744, x2)
+
+inst_112:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x7, 752, x2)
+
+inst_113:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x7, 760, x2)
+
+inst_114:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x7, 768, x2)
+
+inst_115:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x7, 776, x2)
+
+inst_116:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x7, 784, x2)
+
+inst_117:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x7, 792, x2)
+
+inst_118:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x7, 800, x2)
+
+inst_119:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x7, 808, x2)
+
+inst_120:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x7, 816, x2)
+
+inst_121:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x7, 824, x2)
+
+inst_122:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x7, 832, x2)
+
+inst_123:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x7, 840, x2)
+
+inst_124:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x7, 848, x2)
+
+inst_125:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x7, 856, x2)
+
+inst_126:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x7, 864, x2)
+
+inst_127:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x7, 872, x2)
+
+inst_128:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x7, 880, x2)
+
+inst_129:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x7, 888, x2)
+
+inst_130:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x7, 896, x2)
+
+inst_131:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x7, 904, x2)
+
+inst_132:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x7, 912, x2)
+
+inst_133:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x7, 920, x2)
+
+inst_134:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x7, 928, x2)
+
+inst_135:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x7, 936, x2)
+
+inst_136:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x7, 944, x2)
+
+inst_137:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x7, 952, x2)
+
+inst_138:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x7, 960, x2)
+
+inst_139:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x7, 968, x2)
+
+inst_140:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x7, 976, x2)
+
+inst_141:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x7, 984, x2)
+
+inst_142:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x7, 992, x2)
+
+inst_143:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x7, 1000, x2)
+
+inst_144:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x7, 1008, x2)
+
+inst_145:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x7, 1016, x2)
+
+inst_146:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x7, 1024, x2)
+
+inst_147:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x7, 1032, x2)
+
+inst_148:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x7, 1040, x2)
+
+inst_149:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x7, 1048, x2)
+
+inst_150:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x7, 1056, x2)
+
+inst_151:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x7, 1064, x2)
+
+inst_152:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x7, 1072, x2)
+
+inst_153:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x7, 1080, x2)
+
+inst_154:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x7, 1088, x2)
+
+inst_155:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x7, 1096, x2)
+
+inst_156:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x7, 1104, x2)
+
+inst_157:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x7, 1112, x2)
+
+inst_158:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x7, 1120, x2)
+
+inst_159:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x7, 1128, x2)
+
+inst_160:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x7, 1136, x2)
+
+inst_161:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x7, 1144, x2)
+
+inst_162:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x7, 1152, x2)
+
+inst_163:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x7, 1160, x2)
+
+inst_164:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x7, 1168, x2)
+
+inst_165:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x7, 1176, x2)
+
+inst_166:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x7, 1184, x2)
+
+inst_167:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x7, 1192, x2)
+
+inst_168:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x7, 1200, x2)
+
+inst_169:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x7, 1208, x2)
+
+inst_170:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x7, 1216, x2)
+
+inst_171:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x7, 1224, x2)
+
+inst_172:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x7, 1232, x2)
+
+inst_173:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x7, 1240, x2)
+
+inst_174:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x7, 1248, x2)
+
+inst_175:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x7, 1256, x2)
+
+inst_176:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x7, 1264, x2)
+
+inst_177:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x7, 1272, x2)
+
+inst_178:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x7, 1280, x2)
+
+inst_179:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x7, 1288, x2)
+
+inst_180:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x7, 1296, x2)
+
+inst_181:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x7, 1304, x2)
+
+inst_182:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x7, 1312, x2)
+
+inst_183:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x7, 1320, x2)
+
+inst_184:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x7, 1328, x2)
+
+inst_185:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x7, 1336, x2)
+
+inst_186:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x7, 1344, x2)
+
+inst_187:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x7, 1352, x2)
+
+inst_188:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x7, 1360, x2)
+
+inst_189:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x7, 1368, x2)
+
+inst_190:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x7, 1376, x2)
+
+inst_191:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x7, 1384, x2)
+
+inst_192:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x7, 1392, x2)
+
+inst_193:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x7, 1400, x2)
+
+inst_194:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x7, 1408, x2)
+
+inst_195:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x7, 1416, x2)
+
+inst_196:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x7, 1424, x2)
+
+inst_197:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x7, 1432, x2)
+
+inst_198:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x7, 1440, x2)
+
+inst_199:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x7, 1448, x2)
+
+inst_200:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x7, 1456, x2)
+
+inst_201:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x7, 1464, x2)
+
+inst_202:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x7, 1472, x2)
+
+inst_203:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x7, 1480, x2)
+
+inst_204:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x7, 1488, x2)
+
+inst_205:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x7, 1496, x2)
+
+inst_206:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x7, 1504, x2)
+
+inst_207:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x7, 1512, x2)
+
+inst_208:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x7, 1520, x2)
+
+inst_209:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x7, 1528, x2)
+
+inst_210:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x7, 1536, x2)
+
+inst_211:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x7, 1544, x2)
+
+inst_212:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x7, 1552, x2)
+
+inst_213:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x7, 1560, x2)
+
+inst_214:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x7, 1568, x2)
+
+inst_215:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x7, 1576, x2)
+
+inst_216:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x7, 1584, x2)
+
+inst_217:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x7, 1592, x2)
+
+inst_218:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x7, 1600, x2)
+
+inst_219:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x7, 1608, x2)
+
+inst_220:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x7, 1616, x2)
+
+inst_221:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x7, 1624, x2)
+
+inst_222:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x7, 1632, x2)
+
+inst_223:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x7, 1640, x2)
+
+inst_224:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x7, 1648, x2)
+
+inst_225:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x7, 1656, x2)
+
+inst_226:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x7, 1664, x2)
+
+inst_227:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x7, 1672, x2)
+
+inst_228:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x7, 1680, x2)
+
+inst_229:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x7, 1688, x2)
+
+inst_230:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x7, 1696, x2)
+
+inst_231:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x7, 1704, x2)
+
+inst_232:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x7, 1712, x2)
+
+inst_233:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x7, 1720, x2)
+
+inst_234:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x7, 1728, x2)
+
+inst_235:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x7, 1736, x2)
+
+inst_236:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x7, 1744, x2)
+
+inst_237:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x7, 1752, x2)
+
+inst_238:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x7, 1760, x2)
+
+inst_239:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x7, 1768, x2)
+
+inst_240:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x7, 1776, x2)
+
+inst_241:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x7, 1784, x2)
+
+inst_242:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x7, 1792, x2)
+
+inst_243:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x7, 1800, x2)
+
+inst_244:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x7, 1808, x2)
+
+inst_245:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x7, 1816, x2)
+
+inst_246:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x7, 1824, x2)
+
+inst_247:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x7, 1832, x2)
+
+inst_248:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x7, 1840, x2)
+
+inst_249:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x7, 1848, x2)
+
+inst_250:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x7, 1856, x2)
+
+inst_251:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x7, 1864, x2)
+
+inst_252:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x7, 1872, x2)
+
+inst_253:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x7, 1880, x2)
+
+inst_254:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x7, 1888, x2)
+
+inst_255:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x7, 1896, x2)
+
+inst_256:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x7, 1904, x2)
+
+inst_257:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x7, 1912, x2)
+
+inst_258:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x7, 1920, x2)
+
+inst_259:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x7, 1928, x2)
+
+inst_260:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x7, 1936, x2)
+
+inst_261:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x7, 1944, x2)
+
+inst_262:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x7, 1952, x2)
+
+inst_263:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x7, 1960, x2)
+
+inst_264:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x7, 1968, x2)
+
+inst_265:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x7, 1976, x2)
+
+inst_266:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x7, 1984, x2)
+
+inst_267:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x7, 1992, x2)
+
+inst_268:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x7, 2000, x2)
+
+inst_269:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x7, 2008, x2)
+
+inst_270:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x7, 2016, x2)
+
+inst_271:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x7, 2024, x2)
+
+inst_272:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x7, 2032, x2)
+
+inst_273:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x7, 2040, x2)
+RVTEST_SIGBASE( x7,signature_x7_1)
+
+inst_274:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x7, 0, x2)
+
+inst_275:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x7, 8, x2)
+
+inst_276:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x7, 16, x2)
+
+inst_277:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x7, 24, x2)
+
+inst_278:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x7, 32, x2)
+
+inst_279:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x7, 40, x2)
+
+inst_280:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x7, 48, x2)
+
+inst_281:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x7, 56, x2)
+
+inst_282:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x7, 64, x2)
+
+inst_283:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x7, 72, x2)
+
+inst_284:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x7, 80, x2)
+
+inst_285:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x7, 88, x2)
+
+inst_286:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x7, 96, x2)
+
+inst_287:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x7, 104, x2)
+
+inst_288:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x7, 112, x2)
+
+inst_289:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x7, 120, x2)
+
+inst_290:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x7, 128, x2)
+
+inst_291:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x7, 136, x2)
+
+inst_292:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x7, 144, x2)
+
+inst_293:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x7, 152, x2)
+
+inst_294:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x7, 160, x2)
+
+inst_295:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x7, 168, x2)
+
+inst_296:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x7, 176, x2)
+
+inst_297:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x7, 184, x2)
+
+inst_298:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x7, 192, x2)
+
+inst_299:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x7, 200, x2)
+
+inst_300:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x7, 208, x2)
+
+inst_301:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x7, 216, x2)
+
+inst_302:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x7, 224, x2)
+
+inst_303:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x7, 232, x2)
+
+inst_304:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x7, 240, x2)
+
+inst_305:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x7, 248, x2)
+
+inst_306:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x7, 256, x2)
+
+inst_307:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x7, 264, x2)
+
+inst_308:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x7, 272, x2)
+
+inst_309:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x7, 280, x2)
+
+inst_310:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x7, 288, x2)
+
+inst_311:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x7, 296, x2)
+
+inst_312:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x7, 304, x2)
+
+inst_313:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x7, 312, x2)
+
+inst_314:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x7, 320, x2)
+
+inst_315:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x7, 328, x2)
+
+inst_316:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x7, 336, x2)
+
+inst_317:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x7, 344, x2)
+
+inst_318:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x7, 352, x2)
+
+inst_319:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x7, 360, x2)
+
+inst_320:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x7, 368, x2)
+
+inst_321:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x7, 376, x2)
+
+inst_322:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x7, 384, x2)
+
+inst_323:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x7, 392, x2)
+
+inst_324:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x7, 400, x2)
+
+inst_325:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x7, 408, x2)
+
+inst_326:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x7, 416, x2)
+
+inst_327:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x7, 424, x2)
+
+inst_328:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x7, 432, x2)
+
+inst_329:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x7, 440, x2)
+
+inst_330:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x7, 448, x2)
+
+inst_331:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x7, 456, x2)
+
+inst_332:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x7, 464, x2)
+
+inst_333:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x7, 472, x2)
+
+inst_334:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x7, 480, x2)
+
+inst_335:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x7, 488, x2)
+
+inst_336:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x7, 496, x2)
+
+inst_337:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x7, 504, x2)
+
+inst_338:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x7, 512, x2)
+
+inst_339:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x7, 520, x2)
+
+inst_340:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x7, 528, x2)
+
+inst_341:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x7, 536, x2)
+
+inst_342:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x7, 544, x2)
+
+inst_343:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x7, 552, x2)
+
+inst_344:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x7, 560, x2)
+
+inst_345:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x7, 568, x2)
+
+inst_346:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x7, 576, x2)
+
+inst_347:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x7, 584, x2)
+
+inst_348:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x7, 592, x2)
+
+inst_349:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x7, 600, x2)
+
+inst_350:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x7, 608, x2)
+
+inst_351:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x7, 616, x2)
+
+inst_352:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x7, 624, x2)
+
+inst_353:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x7, 632, x2)
+
+inst_354:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x7, 640, x2)
+
+inst_355:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x7, 648, x2)
+
+inst_356:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x7, 656, x2)
+
+inst_357:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x7, 664, x2)
+
+inst_358:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x7, 672, x2)
+
+inst_359:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x7, 680, x2)
+
+inst_360:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x7, 688, x2)
+
+inst_361:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x7, 696, x2)
+
+inst_362:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x7, 704, x2)
+
+inst_363:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x7, 712, x2)
+
+inst_364:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x7, 720, x2)
+
+inst_365:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x7, 728, x2)
+
+inst_366:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x7, 736, x2)
+
+inst_367:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x7, 744, x2)
+
+inst_368:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x7, 752, x2)
+
+inst_369:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x7, 760, x2)
+
+inst_370:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x7, 768, x2)
+
+inst_371:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x7, 776, x2)
+
+inst_372:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x7, 784, x2)
+
+inst_373:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x7, 792, x2)
+
+inst_374:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x7, 800, x2)
+
+inst_375:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x7, 808, x2)
+
+inst_376:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x7, 816, x2)
+
+inst_377:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x7, 824, x2)
+
+inst_378:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x7, 832, x2)
+
+inst_379:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x7, 840, x2)
+
+inst_380:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x7, 848, x2)
+
+inst_381:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x7, 856, x2)
+
+inst_382:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x7, 864, x2)
+
+inst_383:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x7, 872, x2)
+
+inst_384:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x7, 880, x2)
+
+inst_385:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x7, 888, x2)
+
+inst_386:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x7, 896, x2)
+
+inst_387:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x7, 904, x2)
+
+inst_388:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x7, 912, x2)
+
+inst_389:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x7, 920, x2)
+
+inst_390:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x7, 928, x2)
+
+inst_391:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x7, 936, x2)
+
+inst_392:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x7, 944, x2)
+
+inst_393:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x7, 952, x2)
+
+inst_394:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x7, 960, x2)
+
+inst_395:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x7, 968, x2)
+
+inst_396:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x7, 976, x2)
+
+inst_397:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x7, 984, x2)
+
+inst_398:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x7, 992, x2)
+
+inst_399:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x7, 1000, x2)
+
+inst_400:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x7, 1008, x2)
+
+inst_401:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x7, 1016, x2)
+
+inst_402:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x7, 1024, x2)
+
+inst_403:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x7, 1032, x2)
+
+inst_404:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x7, 1040, x2)
+
+inst_405:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x7, 1048, x2)
+
+inst_406:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x7, 1056, x2)
+
+inst_407:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x7, 1064, x2)
+
+inst_408:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x7, 1072, x2)
+
+inst_409:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x7, 1080, x2)
+
+inst_410:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x7, 1088, x2)
+
+inst_411:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x7, 1096, x2)
+
+inst_412:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x7, 1104, x2)
+
+inst_413:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x7, 1112, x2)
+
+inst_414:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x7, 1120, x2)
+
+inst_415:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x7, 1128, x2)
+
+inst_416:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x7, 1136, x2)
+
+inst_417:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x7, 1144, x2)
+
+inst_418:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x7, 1152, x2)
+
+inst_419:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x7, 1160, x2)
+
+inst_420:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x7, 1168, x2)
+
+inst_421:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x7, 1176, x2)
+
+inst_422:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x7, 1184, x2)
+
+inst_423:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x7, 1192, x2)
+
+inst_424:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x7, 1200, x2)
+
+inst_425:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x7, 1208, x2)
+
+inst_426:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x7, 1216, x2)
+
+inst_427:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x7, 1224, x2)
+
+inst_428:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x7, 1232, x2)
+
+inst_429:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x7, 1240, x2)
+
+inst_430:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x7, 1248, x2)
+
+inst_431:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x7, 1256, x2)
+
+inst_432:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x7, 1264, x2)
+
+inst_433:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x7, 1272, x2)
+
+inst_434:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x7, 1280, x2)
+
+inst_435:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x7, 1288, x2)
+
+inst_436:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x7, 1296, x2)
+
+inst_437:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x7, 1304, x2)
+
+inst_438:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x7, 1312, x2)
+
+inst_439:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x7, 1320, x2)
+
+inst_440:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x7, 1328, x2)
+
+inst_441:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x7, 1336, x2)
+
+inst_442:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x7, 1344, x2)
+
+inst_443:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x7, 1352, x2)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x7, 1360, x2)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x7, 1368, x2)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x7, 1376, x2)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x7, 1384, x2)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x7, 1392, x2)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x7, 1400, x2)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x7, 1408, x2)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x7, 1416, x2)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x7, 1424, x2)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x7, 1432, x2)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x7, 1440, x2)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x7, 1448, x2)
+
+inst_456:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x7, 1456, x2)
+
+inst_457:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x7, 1464, x2)
+
+inst_458:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x7, 1472, x2)
+
+inst_459:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x7, 1480, x2)
+
+inst_460:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x7, 1488, x2)
+
+inst_461:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x7, 1496, x2)
+
+inst_462:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x7, 1504, x2)
+
+inst_463:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x7, 1512, x2)
+
+inst_464:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x7, 1520, x2)
+
+inst_465:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x7, 1528, x2)
+
+inst_466:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x7, 1536, x2)
+
+inst_467:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x7, 1544, x2)
+
+inst_468:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x7, 1552, x2)
+
+inst_469:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x7, 1560, x2)
+
+inst_470:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x7, 1568, x2)
+
+inst_471:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x7, 1576, x2)
+
+inst_472:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x7, 1584, x2)
+
+inst_473:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x7, 1592, x2)
+
+inst_474:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x7, 1600, x2)
+
+inst_475:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x7, 1608, x2)
+
+inst_476:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x7, 1616, x2)
+
+inst_477:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x7, 1624, x2)
+
+inst_478:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x7, 1632, x2)
+
+inst_479:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x7, 1640, x2)
+
+inst_480:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x7, 1648, x2)
+
+inst_481:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x7, 1656, x2)
+
+inst_482:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x7, 1664, x2)
+
+inst_483:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x7, 1672, x2)
+
+inst_484:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x7, 1680, x2)
+
+inst_485:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x7, 1688, x2)
+
+inst_486:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x7, 1696, x2)
+
+inst_487:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x7, 1704, x2)
+
+inst_488:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x7, 1712, x2)
+
+inst_489:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x7, 1720, x2)
+
+inst_490:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x7, 1728, x2)
+
+inst_491:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x7, 1736, x2)
+
+inst_492:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x7, 1744, x2)
+
+inst_493:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x7, 1752, x2)
+
+inst_494:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x7, 1760, x2)
+
+inst_495:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x7, 1768, x2)
+
+inst_496:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x7, 1776, x2)
+
+inst_497:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x7, 1784, x2)
+
+inst_498:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x7, 1792, x2)
+
+inst_499:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x7, 1800, x2)
+
+inst_500:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x7, 1808, x2)
+
+inst_501:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x7, 1816, x2)
+
+inst_502:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x7, 1824, x2)
+
+inst_503:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x7, 1832, x2)
+
+inst_504:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x7, 1840, x2)
+
+inst_505:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x7, 1848, x2)
+
+inst_506:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x7, 1856, x2)
+
+inst_507:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x7, 1864, x2)
+
+inst_508:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x7, 1872, x2)
+
+inst_509:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x7, 1880, x2)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x7, 1888, x2)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x7, 1896, x2)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x7, 1904, x2)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x7, 1912, x2)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x7, 1920, x2)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x7, 1928, x2)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x7, 1936, x2)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x7, 1944, x2)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x7, 1952, x2)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x7, 1960, x2)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x7, 1968, x2)
+
+inst_521:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x7, 1976, x2)
+
+inst_522:
+// rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x7, 1984, x2)
+
+inst_523:
+// rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x7, 1992, x2)
+
+inst_524:
+// rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: xnor ; op1:x10; op2:x11; dest:x12; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(xnor, x12, x10, x11, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x7, 2000, x2)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x12_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x12_1:
+ .fill 18*(XLEN/32),4,0xdeadbeef
+
+
+signature_x7_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x7_1:
+ .fill 251*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xperm.b-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xperm.b-01.S
new file mode 100644
index 000000000..5f1f7e668
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xperm.b-01.S
@@ -0,0 +1,2816 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 27 16:46:33 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the xperm.b instruction of the RISC-V extension for the xperm.b covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",xperm.b)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",xperm.b)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",xperm.b)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",xperm.b)
+
+RVTEST_SIGBASE( x6,signature_x6_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x9, rs2==x4, rd==x25, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: xperm.b ; op1:x9; op2:x4; dest:x25; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(xperm.b, x25, x9, x4, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x6, 0, x10)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x22, rs2==x22, rd==x22, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: xperm.b ; op1:x22; op2:x22; dest:x22; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
+TEST_RR_OP(xperm.b, x22, x22, x22, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x6, 8, x10)
+
+inst_2:
+// rs1 == rd != rs2, rs1==x24, rs2==x9, rd==x24, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
+// opcode: xperm.b ; op1:x24; op2:x9; dest:x24; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
+TEST_RR_OP(xperm.b, x24, x24, x9, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x6, 16, x10)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x18, rs2==x18, rd==x17, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: xperm.b ; op1:x18; op2:x18; dest:x17; op1val:0x1f7d946f17168ab3; op2val:0x1f7d946f17168ab3
+TEST_RR_OP(xperm.b, x17, x18, x18, 0x0000000000000000, 0x1f7d946f17168ab3, 0x1f7d946f17168ab3, x6, 24, x10)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x8, rs2==x28, rd==x28, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
+// opcode: xperm.b ; op1:x8; op2:x28; dest:x28; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
+TEST_RR_OP(xperm.b, x28, x8, x28, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x6, 32, x10)
+
+inst_5:
+// rs1==x15, rs2==x3, rd==x29, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
+// opcode: xperm.b ; op1:x15; op2:x3; dest:x29; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
+TEST_RR_OP(xperm.b, x29, x15, x3, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x6, 40, x10)
+
+inst_6:
+// rs1==x14, rs2==x19, rd==x2, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: xperm.b ; op1:x14; op2:x19; dest:x2; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(xperm.b, x2, x14, x19, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x6, 48, x10)
+
+inst_7:
+// rs1==x30, rs2==x27, rd==x26, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
+// opcode: xperm.b ; op1:x30; op2:x27; dest:x26; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
+TEST_RR_OP(xperm.b, x26, x30, x27, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x6, 56, x10)
+
+inst_8:
+// rs1==x17, rs2==x24, rd==x30, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
+// opcode: xperm.b ; op1:x17; op2:x24; dest:x30; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
+TEST_RR_OP(xperm.b, x30, x17, x24, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x6, 64, x10)
+
+inst_9:
+// rs1==x27, rs2==x14, rd==x5, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
+// opcode: xperm.b ; op1:x27; op2:x14; dest:x5; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
+TEST_RR_OP(xperm.b, x5, x27, x14, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x6, 72, x10)
+
+inst_10:
+// rs1==x20, rs2==x0, rd==x9, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: xperm.b ; op1:x20; op2:x0; dest:x9; op1val:0x4113ee60952acffe; op2val:0x0
+TEST_RR_OP(xperm.b, x9, x20, x0, 0x0000000000000000, 0x4113ee60952acffe, 0x0, x6, 80, x10)
+
+inst_11:
+// rs1==x5, rs2==x20, rd==x11, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
+// opcode: xperm.b ; op1:x5; op2:x20; dest:x11; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
+TEST_RR_OP(xperm.b, x11, x5, x20, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x6, 88, x10)
+
+inst_12:
+// rs1==x0, rs2==x21, rd==x31, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
+// opcode: xperm.b ; op1:x0; op2:x21; dest:x31; op1val:0x0; op2val:0xd05668ae0fdb82bc
+TEST_RR_OP(xperm.b, x31, x0, x21, 0x0000000000000000, 0x0, 0xd05668ae0fdb82bc, x6, 96, x10)
+
+inst_13:
+// rs1==x7, rs2==x13, rd==x1, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
+// opcode: xperm.b ; op1:x7; op2:x13; dest:x1; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
+TEST_RR_OP(xperm.b, x1, x7, x13, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x6, 104, x10)
+
+inst_14:
+// rs1==x29, rs2==x5, rd==x12, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
+// opcode: xperm.b ; op1:x29; op2:x5; dest:x12; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
+TEST_RR_OP(xperm.b, x12, x29, x5, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x6, 112, x10)
+
+inst_15:
+// rs1==x25, rs2==x26, rd==x21, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
+// opcode: xperm.b ; op1:x25; op2:x26; dest:x21; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
+TEST_RR_OP(xperm.b, x21, x25, x26, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x6, 120, x5)
+
+inst_16:
+// rs1==x13, rs2==x11, rd==x19, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
+// opcode: xperm.b ; op1:x13; op2:x11; dest:x19; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
+TEST_RR_OP(xperm.b, x19, x13, x11, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x6, 128, x5)
+
+inst_17:
+// rs1==x19, rs2==x17, rd==x15, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
+// opcode: xperm.b ; op1:x19; op2:x17; dest:x15; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
+TEST_RR_OP(xperm.b, x15, x19, x17, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x6, 136, x5)
+
+inst_18:
+// rs1==x31, rs2==x1, rd==x18, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
+// opcode: xperm.b ; op1:x31; op2:x1; dest:x18; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
+TEST_RR_OP(xperm.b, x18, x31, x1, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x6, 144, x5)
+
+inst_19:
+// rs1==x12, rs2==x31, rd==x4, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
+// opcode: xperm.b ; op1:x12; op2:x31; dest:x4; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
+TEST_RR_OP(xperm.b, x4, x12, x31, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x6, 152, x5)
+
+inst_20:
+// rs1==x2, rs2==x29, rd==x7, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
+// opcode: xperm.b ; op1:x2; op2:x29; dest:x7; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
+TEST_RR_OP(xperm.b, x7, x2, x29, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x6, 160, x5)
+
+inst_21:
+// rs1==x4, rs2==x25, rd==x16, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: xperm.b ; op1:x4; op2:x25; dest:x16; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(xperm.b, x16, x4, x25, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x6, 168, x5)
+RVTEST_SIGBASE( x4,signature_x4_0)
+
+inst_22:
+// rs1==x11, rs2==x23, rd==x27, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: xperm.b ; op1:x11; op2:x23; dest:x27; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(xperm.b, x27, x11, x23, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x4, 0, x5)
+
+inst_23:
+// rs1==x10, rs2==x30, rd==x3, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: xperm.b ; op1:x10; op2:x30; dest:x3; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(xperm.b, x3, x10, x30, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x4, 8, x5)
+
+inst_24:
+// rs1==x3, rs2==x6, rd==x8, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: xperm.b ; op1:x3; op2:x6; dest:x8; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(xperm.b, x8, x3, x6, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x4, 16, x5)
+
+inst_25:
+// rs1==x26, rs2==x2, rd==x13, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: xperm.b ; op1:x26; op2:x2; dest:x13; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(xperm.b, x13, x26, x2, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x4, 24, x5)
+
+inst_26:
+// rs1==x1, rs2==x16, rd==x20, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: xperm.b ; op1:x1; op2:x16; dest:x20; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(xperm.b, x20, x1, x16, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x4, 32, x5)
+
+inst_27:
+// rs1==x23, rs2==x8, rd==x6, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: xperm.b ; op1:x23; op2:x8; dest:x6; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(xperm.b, x6, x23, x8, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x4, 40, x5)
+
+inst_28:
+// rs1==x6, rs2==x7, rd==x10, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: xperm.b ; op1:x6; op2:x7; dest:x10; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(xperm.b, x10, x6, x7, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x4, 48, x5)
+
+inst_29:
+// rs1==x16, rs2==x12, rd==x0, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: xperm.b ; op1:x16; op2:x12; dest:x0; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(xperm.b, x0, x16, x12, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x4, 56, x5)
+
+inst_30:
+// rs1==x28, rs2==x15, rd==x14, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: xperm.b ; op1:x28; op2:x15; dest:x14; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(xperm.b, x14, x28, x15, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x4, 64, x5)
+
+inst_31:
+// rs1==x21, rs2==x10, rd==x23, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: xperm.b ; op1:x21; op2:x10; dest:x23; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(xperm.b, x23, x21, x10, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x4, 72, x5)
+
+inst_32:
+// rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x4, 80, x5)
+
+inst_33:
+// rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x4, 88, x5)
+
+inst_34:
+// rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x4, 96, x5)
+
+inst_35:
+// rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x4, 104, x5)
+
+inst_36:
+// rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x4, 112, x5)
+
+inst_37:
+// rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x4, 120, x5)
+
+inst_38:
+// rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x4, 128, x5)
+
+inst_39:
+// rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x4, 136, x5)
+
+inst_40:
+// rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x4, 144, x5)
+
+inst_41:
+// rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x4, 152, x5)
+
+inst_42:
+// rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x4, 160, x5)
+
+inst_43:
+// rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x4, 168, x5)
+
+inst_44:
+// rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x4, 176, x5)
+
+inst_45:
+// rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x4, 184, x5)
+
+inst_46:
+// rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x4, 192, x5)
+
+inst_47:
+// rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x4, 200, x5)
+
+inst_48:
+// rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x4, 208, x5)
+
+inst_49:
+// rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x4, 216, x5)
+
+inst_50:
+// rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x4, 224, x5)
+
+inst_51:
+// rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x4, 232, x5)
+
+inst_52:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x4, 240, x5)
+
+inst_53:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x4, 248, x5)
+
+inst_54:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x4, 256, x5)
+
+inst_55:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x4, 264, x5)
+
+inst_56:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x4, 272, x5)
+
+inst_57:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x4, 280, x5)
+
+inst_58:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x4, 288, x5)
+
+inst_59:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x4, 296, x5)
+
+inst_60:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x4, 304, x5)
+
+inst_61:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x4, 312, x5)
+
+inst_62:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x4, 320, x5)
+
+inst_63:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x4, 328, x5)
+
+inst_64:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x4, 336, x5)
+
+inst_65:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x4, 344, x5)
+
+inst_66:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x4, 352, x5)
+
+inst_67:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x4, 360, x5)
+
+inst_68:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x4, 368, x5)
+
+inst_69:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x4, 376, x5)
+
+inst_70:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x4, 384, x5)
+
+inst_71:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x4, 392, x5)
+
+inst_72:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x4, 400, x5)
+
+inst_73:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x4, 408, x5)
+
+inst_74:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x4, 416, x5)
+
+inst_75:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x4, 424, x5)
+
+inst_76:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x4, 432, x5)
+
+inst_77:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x4, 440, x5)
+
+inst_78:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x4, 448, x5)
+
+inst_79:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x4, 456, x5)
+
+inst_80:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x4, 464, x5)
+
+inst_81:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x4, 472, x5)
+
+inst_82:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x4, 480, x5)
+
+inst_83:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x4, 488, x5)
+
+inst_84:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x4, 496, x5)
+
+inst_85:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x4, 504, x5)
+
+inst_86:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x4, 512, x5)
+
+inst_87:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x4, 520, x5)
+
+inst_88:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x4, 528, x5)
+
+inst_89:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x4, 536, x5)
+
+inst_90:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x4, 544, x5)
+
+inst_91:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x4, 552, x5)
+
+inst_92:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x4, 560, x5)
+
+inst_93:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x4, 568, x5)
+
+inst_94:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x4, 576, x5)
+
+inst_95:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x4, 584, x5)
+
+inst_96:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x4, 592, x5)
+
+inst_97:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x4, 600, x5)
+
+inst_98:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x4, 608, x5)
+
+inst_99:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x4, 616, x5)
+
+inst_100:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x4, 624, x5)
+
+inst_101:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x4, 632, x5)
+
+inst_102:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x4, 640, x5)
+
+inst_103:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x4, 648, x5)
+
+inst_104:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x4, 656, x5)
+
+inst_105:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x4, 664, x5)
+
+inst_106:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x4, 672, x5)
+
+inst_107:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x4, 680, x5)
+
+inst_108:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x4, 688, x5)
+
+inst_109:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x4, 696, x5)
+
+inst_110:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x4, 704, x5)
+
+inst_111:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x4, 712, x5)
+
+inst_112:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x4, 720, x5)
+
+inst_113:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x4, 728, x5)
+
+inst_114:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x4, 736, x5)
+
+inst_115:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x4, 744, x5)
+
+inst_116:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x4, 752, x5)
+
+inst_117:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x4, 760, x5)
+
+inst_118:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x4, 768, x5)
+
+inst_119:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x4, 776, x5)
+
+inst_120:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x4, 784, x5)
+
+inst_121:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x4, 792, x5)
+
+inst_122:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x4, 800, x5)
+
+inst_123:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x4, 808, x5)
+
+inst_124:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x4, 816, x5)
+
+inst_125:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x4, 824, x5)
+
+inst_126:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x4, 832, x5)
+
+inst_127:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x4, 840, x5)
+
+inst_128:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x4, 848, x5)
+
+inst_129:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x4, 856, x5)
+
+inst_130:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x4, 864, x5)
+
+inst_131:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x4, 872, x5)
+
+inst_132:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x4, 880, x5)
+
+inst_133:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x4, 888, x5)
+
+inst_134:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x4, 896, x5)
+
+inst_135:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x4, 904, x5)
+
+inst_136:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x4, 912, x5)
+
+inst_137:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x4, 920, x5)
+
+inst_138:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x4, 928, x5)
+
+inst_139:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x4, 936, x5)
+
+inst_140:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x4, 944, x5)
+
+inst_141:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x4, 952, x5)
+
+inst_142:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x4, 960, x5)
+
+inst_143:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x4, 968, x5)
+
+inst_144:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x4, 976, x5)
+
+inst_145:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x4, 984, x5)
+
+inst_146:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x4, 992, x5)
+
+inst_147:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x4, 1000, x5)
+
+inst_148:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x4, 1008, x5)
+
+inst_149:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x4, 1016, x5)
+
+inst_150:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x4, 1024, x5)
+
+inst_151:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x4, 1032, x5)
+
+inst_152:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x4, 1040, x5)
+
+inst_153:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x4, 1048, x5)
+
+inst_154:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x4, 1056, x5)
+
+inst_155:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x4, 1064, x5)
+
+inst_156:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x4, 1072, x5)
+
+inst_157:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x4, 1080, x5)
+
+inst_158:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x4, 1088, x5)
+
+inst_159:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x4, 1096, x5)
+
+inst_160:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x4, 1104, x5)
+
+inst_161:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x4, 1112, x5)
+
+inst_162:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x4, 1120, x5)
+
+inst_163:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x4, 1128, x5)
+
+inst_164:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x4, 1136, x5)
+
+inst_165:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x4, 1144, x5)
+
+inst_166:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x4, 1152, x5)
+
+inst_167:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x4, 1160, x5)
+
+inst_168:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x4, 1168, x5)
+
+inst_169:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x4, 1176, x5)
+
+inst_170:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x4, 1184, x5)
+
+inst_171:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x4, 1192, x5)
+
+inst_172:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x4, 1200, x5)
+
+inst_173:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x4, 1208, x5)
+
+inst_174:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x4, 1216, x5)
+
+inst_175:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x4, 1224, x5)
+
+inst_176:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x4, 1232, x5)
+
+inst_177:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x4, 1240, x5)
+
+inst_178:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x4, 1248, x5)
+
+inst_179:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x4, 1256, x5)
+
+inst_180:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x4, 1264, x5)
+
+inst_181:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x4, 1272, x5)
+
+inst_182:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x4, 1280, x5)
+
+inst_183:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x4, 1288, x5)
+
+inst_184:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x4, 1296, x5)
+
+inst_185:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x4, 1304, x5)
+
+inst_186:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x4, 1312, x5)
+
+inst_187:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x4, 1320, x5)
+
+inst_188:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x4, 1328, x5)
+
+inst_189:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x4, 1336, x5)
+
+inst_190:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x4, 1344, x5)
+
+inst_191:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x4, 1352, x5)
+
+inst_192:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x4, 1360, x5)
+
+inst_193:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x4, 1368, x5)
+
+inst_194:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x4, 1376, x5)
+
+inst_195:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x4, 1384, x5)
+
+inst_196:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x4, 1392, x5)
+
+inst_197:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x4, 1400, x5)
+
+inst_198:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x4, 1408, x5)
+
+inst_199:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x4, 1416, x5)
+
+inst_200:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x4, 1424, x5)
+
+inst_201:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x4, 1432, x5)
+
+inst_202:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x4, 1440, x5)
+
+inst_203:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x4, 1448, x5)
+
+inst_204:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x4, 1456, x5)
+
+inst_205:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x4, 1464, x5)
+
+inst_206:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x4, 1472, x5)
+
+inst_207:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x4, 1480, x5)
+
+inst_208:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x4, 1488, x5)
+
+inst_209:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x4, 1496, x5)
+
+inst_210:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x4, 1504, x5)
+
+inst_211:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x4, 1512, x5)
+
+inst_212:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x4, 1520, x5)
+
+inst_213:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x4, 1528, x5)
+
+inst_214:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x4, 1536, x5)
+
+inst_215:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x4, 1544, x5)
+
+inst_216:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x4, 1552, x5)
+
+inst_217:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x4, 1560, x5)
+
+inst_218:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x4, 1568, x5)
+
+inst_219:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x4, 1576, x5)
+
+inst_220:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x4, 1584, x5)
+
+inst_221:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x4, 1592, x5)
+
+inst_222:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x4, 1600, x5)
+
+inst_223:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x4, 1608, x5)
+
+inst_224:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x4, 1616, x5)
+
+inst_225:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x4, 1624, x5)
+
+inst_226:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x4, 1632, x5)
+
+inst_227:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x4, 1640, x5)
+
+inst_228:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x4, 1648, x5)
+
+inst_229:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x4, 1656, x5)
+
+inst_230:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x4, 1664, x5)
+
+inst_231:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x4, 1672, x5)
+
+inst_232:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x4, 1680, x5)
+
+inst_233:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x4, 1688, x5)
+
+inst_234:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x4, 1696, x5)
+
+inst_235:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x4, 1704, x5)
+
+inst_236:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x4, 1712, x5)
+
+inst_237:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x4, 1720, x5)
+
+inst_238:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x4, 1728, x5)
+
+inst_239:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x4, 1736, x5)
+
+inst_240:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x4, 1744, x5)
+
+inst_241:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x4, 1752, x5)
+
+inst_242:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x4, 1760, x5)
+
+inst_243:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x4, 1768, x5)
+
+inst_244:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x4, 1776, x5)
+
+inst_245:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x4, 1784, x5)
+
+inst_246:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x4, 1792, x5)
+
+inst_247:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x4, 1800, x5)
+
+inst_248:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x4, 1808, x5)
+
+inst_249:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x4, 1816, x5)
+
+inst_250:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x4, 1824, x5)
+
+inst_251:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x4, 1832, x5)
+
+inst_252:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x4, 1840, x5)
+
+inst_253:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x4, 1848, x5)
+
+inst_254:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x4, 1856, x5)
+
+inst_255:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x4, 1864, x5)
+
+inst_256:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x4, 1872, x5)
+
+inst_257:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x4, 1880, x5)
+
+inst_258:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x4, 1888, x5)
+
+inst_259:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x4, 1896, x5)
+
+inst_260:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x4, 1904, x5)
+
+inst_261:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x4, 1912, x5)
+
+inst_262:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x4, 1920, x5)
+
+inst_263:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x4, 1928, x5)
+
+inst_264:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x4, 1936, x5)
+
+inst_265:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x4, 1944, x5)
+
+inst_266:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x4, 1952, x5)
+
+inst_267:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x4, 1960, x5)
+
+inst_268:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x4, 1968, x5)
+
+inst_269:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x4, 1976, x5)
+
+inst_270:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x4, 1984, x5)
+
+inst_271:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x4, 1992, x5)
+
+inst_272:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x4, 2000, x5)
+
+inst_273:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x4, 2008, x5)
+
+inst_274:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x4, 2016, x5)
+
+inst_275:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x4, 2024, x5)
+
+inst_276:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x4, 2032, x5)
+
+inst_277:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x4, 2040, x5)
+RVTEST_SIGBASE( x4,signature_x4_1)
+
+inst_278:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x4, 0, x5)
+
+inst_279:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x4, 8, x5)
+
+inst_280:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x4, 16, x5)
+
+inst_281:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x4, 24, x5)
+
+inst_282:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x4, 32, x5)
+
+inst_283:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x4, 40, x5)
+
+inst_284:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x4, 48, x5)
+
+inst_285:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x4, 56, x5)
+
+inst_286:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x4, 64, x5)
+
+inst_287:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x4, 72, x5)
+
+inst_288:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x4, 80, x5)
+
+inst_289:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x4, 88, x5)
+
+inst_290:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x4, 96, x5)
+
+inst_291:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x4, 104, x5)
+
+inst_292:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x4, 112, x5)
+
+inst_293:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x4, 120, x5)
+
+inst_294:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x4, 128, x5)
+
+inst_295:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x4, 136, x5)
+
+inst_296:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x4, 144, x5)
+
+inst_297:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x4, 152, x5)
+
+inst_298:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x4, 160, x5)
+
+inst_299:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x4, 168, x5)
+
+inst_300:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x4, 176, x5)
+
+inst_301:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x4, 184, x5)
+
+inst_302:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x4, 192, x5)
+
+inst_303:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x4, 200, x5)
+
+inst_304:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x4, 208, x5)
+
+inst_305:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x4, 216, x5)
+
+inst_306:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x4, 224, x5)
+
+inst_307:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x4, 232, x5)
+
+inst_308:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x4, 240, x5)
+
+inst_309:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x4, 248, x5)
+
+inst_310:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x4, 256, x5)
+
+inst_311:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x4, 264, x5)
+
+inst_312:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x4, 272, x5)
+
+inst_313:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x4, 280, x5)
+
+inst_314:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x4, 288, x5)
+
+inst_315:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x4, 296, x5)
+
+inst_316:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x4, 304, x5)
+
+inst_317:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x4, 312, x5)
+
+inst_318:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x4, 320, x5)
+
+inst_319:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x4, 328, x5)
+
+inst_320:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x4, 336, x5)
+
+inst_321:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x4, 344, x5)
+
+inst_322:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x4, 352, x5)
+
+inst_323:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x4, 360, x5)
+
+inst_324:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x4, 368, x5)
+
+inst_325:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x4, 376, x5)
+
+inst_326:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x4, 384, x5)
+
+inst_327:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x4, 392, x5)
+
+inst_328:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x4, 400, x5)
+
+inst_329:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x4, 408, x5)
+
+inst_330:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x4, 416, x5)
+
+inst_331:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x4, 424, x5)
+
+inst_332:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x4, 432, x5)
+
+inst_333:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x4, 440, x5)
+
+inst_334:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x4, 448, x5)
+
+inst_335:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x4, 456, x5)
+
+inst_336:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x4, 464, x5)
+
+inst_337:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x4, 472, x5)
+
+inst_338:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x4, 480, x5)
+
+inst_339:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x4, 488, x5)
+
+inst_340:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x4, 496, x5)
+
+inst_341:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x4, 504, x5)
+
+inst_342:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x4, 512, x5)
+
+inst_343:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x4, 520, x5)
+
+inst_344:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x4, 528, x5)
+
+inst_345:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x4, 536, x5)
+
+inst_346:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x4, 544, x5)
+
+inst_347:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x4, 552, x5)
+
+inst_348:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x4, 560, x5)
+
+inst_349:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x4, 568, x5)
+
+inst_350:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x4, 576, x5)
+
+inst_351:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x4, 584, x5)
+
+inst_352:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x4, 592, x5)
+
+inst_353:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x4, 600, x5)
+
+inst_354:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x4, 608, x5)
+
+inst_355:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x4, 616, x5)
+
+inst_356:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x4, 624, x5)
+
+inst_357:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x4, 632, x5)
+
+inst_358:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x4, 640, x5)
+
+inst_359:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x4, 648, x5)
+
+inst_360:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x4, 656, x5)
+
+inst_361:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x4, 664, x5)
+
+inst_362:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x4, 672, x5)
+
+inst_363:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x4, 680, x5)
+
+inst_364:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x4, 688, x5)
+
+inst_365:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x4, 696, x5)
+
+inst_366:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x4, 704, x5)
+
+inst_367:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x4, 712, x5)
+
+inst_368:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x4, 720, x5)
+
+inst_369:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x4, 728, x5)
+
+inst_370:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x4, 736, x5)
+
+inst_371:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x4, 744, x5)
+
+inst_372:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x4, 752, x5)
+
+inst_373:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x4, 760, x5)
+
+inst_374:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x4, 768, x5)
+
+inst_375:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x4, 776, x5)
+
+inst_376:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x4, 784, x5)
+
+inst_377:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x4, 792, x5)
+
+inst_378:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x4, 800, x5)
+
+inst_379:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x4, 808, x5)
+
+inst_380:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x4, 816, x5)
+
+inst_381:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x4, 824, x5)
+
+inst_382:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x4, 832, x5)
+
+inst_383:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x4, 840, x5)
+
+inst_384:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x4, 848, x5)
+
+inst_385:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x4, 856, x5)
+
+inst_386:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x4, 864, x5)
+
+inst_387:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x4, 872, x5)
+
+inst_388:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x4, 880, x5)
+
+inst_389:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x4, 888, x5)
+
+inst_390:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x4, 896, x5)
+
+inst_391:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x4, 904, x5)
+
+inst_392:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x4, 912, x5)
+
+inst_393:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x4, 920, x5)
+
+inst_394:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x4, 928, x5)
+
+inst_395:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x4, 936, x5)
+
+inst_396:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x4, 944, x5)
+
+inst_397:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x4, 952, x5)
+
+inst_398:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x4, 960, x5)
+
+inst_399:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x4, 968, x5)
+
+inst_400:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x4, 976, x5)
+
+inst_401:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x4, 984, x5)
+
+inst_402:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x4, 992, x5)
+
+inst_403:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x4, 1000, x5)
+
+inst_404:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x4, 1008, x5)
+
+inst_405:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x4, 1016, x5)
+
+inst_406:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x4, 1024, x5)
+
+inst_407:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x4, 1032, x5)
+
+inst_408:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x4, 1040, x5)
+
+inst_409:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x4, 1048, x5)
+
+inst_410:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x4, 1056, x5)
+
+inst_411:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x4, 1064, x5)
+
+inst_412:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x4, 1072, x5)
+
+inst_413:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x4, 1080, x5)
+
+inst_414:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x4, 1088, x5)
+
+inst_415:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x4, 1096, x5)
+
+inst_416:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x4, 1104, x5)
+
+inst_417:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x4, 1112, x5)
+
+inst_418:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x4, 1120, x5)
+
+inst_419:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x4, 1128, x5)
+
+inst_420:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x4, 1136, x5)
+
+inst_421:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x4, 1144, x5)
+
+inst_422:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x4, 1152, x5)
+
+inst_423:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x4, 1160, x5)
+
+inst_424:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x4, 1168, x5)
+
+inst_425:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x4, 1176, x5)
+
+inst_426:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x4, 1184, x5)
+
+inst_427:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x4, 1192, x5)
+
+inst_428:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x4, 1200, x5)
+
+inst_429:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x4, 1208, x5)
+
+inst_430:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x4, 1216, x5)
+
+inst_431:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x4, 1224, x5)
+
+inst_432:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x4, 1232, x5)
+
+inst_433:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x4, 1240, x5)
+
+inst_434:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x4, 1248, x5)
+
+inst_435:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x4, 1256, x5)
+
+inst_436:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x4, 1264, x5)
+
+inst_437:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x4, 1272, x5)
+
+inst_438:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x4, 1280, x5)
+
+inst_439:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x4, 1288, x5)
+
+inst_440:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x4, 1296, x5)
+
+inst_441:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x4, 1304, x5)
+
+inst_442:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x4, 1312, x5)
+
+inst_443:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x4, 1320, x5)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x4, 1328, x5)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x4, 1336, x5)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x4, 1344, x5)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x4, 1352, x5)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x4, 1360, x5)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x4, 1368, x5)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x4, 1376, x5)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x4, 1384, x5)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x4, 1392, x5)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x4, 1400, x5)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x4, 1408, x5)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x4, 1416, x5)
+
+inst_456:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x4, 1424, x5)
+
+inst_457:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x4, 1432, x5)
+
+inst_458:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x4, 1440, x5)
+
+inst_459:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x4, 1448, x5)
+
+inst_460:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x4, 1456, x5)
+
+inst_461:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x4, 1464, x5)
+
+inst_462:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x4, 1472, x5)
+
+inst_463:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x4, 1480, x5)
+
+inst_464:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x4, 1488, x5)
+
+inst_465:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x4, 1496, x5)
+
+inst_466:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x4, 1504, x5)
+
+inst_467:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x4, 1512, x5)
+
+inst_468:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x4, 1520, x5)
+
+inst_469:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x4, 1528, x5)
+
+inst_470:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x4, 1536, x5)
+
+inst_471:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x4, 1544, x5)
+
+inst_472:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x4, 1552, x5)
+
+inst_473:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x4, 1560, x5)
+
+inst_474:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x4, 1568, x5)
+
+inst_475:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x4, 1576, x5)
+
+inst_476:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x4, 1584, x5)
+
+inst_477:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x4, 1592, x5)
+
+inst_478:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x4, 1600, x5)
+
+inst_479:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x4, 1608, x5)
+
+inst_480:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x4, 1616, x5)
+
+inst_481:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x4, 1624, x5)
+
+inst_482:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x4, 1632, x5)
+
+inst_483:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x4, 1640, x5)
+
+inst_484:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x4, 1648, x5)
+
+inst_485:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x4, 1656, x5)
+
+inst_486:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x4, 1664, x5)
+
+inst_487:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x4, 1672, x5)
+
+inst_488:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x4, 1680, x5)
+
+inst_489:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x4, 1688, x5)
+
+inst_490:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x4, 1696, x5)
+
+inst_491:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x4, 1704, x5)
+
+inst_492:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x4, 1712, x5)
+
+inst_493:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x4, 1720, x5)
+
+inst_494:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x4, 1728, x5)
+
+inst_495:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x4, 1736, x5)
+
+inst_496:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x4, 1744, x5)
+
+inst_497:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x4, 1752, x5)
+
+inst_498:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x4, 1760, x5)
+
+inst_499:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x4, 1768, x5)
+
+inst_500:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x4, 1776, x5)
+
+inst_501:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x4, 1784, x5)
+
+inst_502:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x4, 1792, x5)
+
+inst_503:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x4, 1800, x5)
+
+inst_504:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x4, 1808, x5)
+
+inst_505:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x4, 1816, x5)
+
+inst_506:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x4, 1824, x5)
+
+inst_507:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x4, 1832, x5)
+
+inst_508:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x4, 1840, x5)
+
+inst_509:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x4, 1848, x5)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x4, 1856, x5)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x4, 1864, x5)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x4, 1872, x5)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x4, 1880, x5)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x4, 1888, x5)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x4, 1896, x5)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x4, 1904, x5)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x4, 1912, x5)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x4, 1920, x5)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x4, 1928, x5)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x4, 1936, x5)
+
+inst_521:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x4, 1944, x5)
+
+inst_522:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x4, 1952, x5)
+
+inst_523:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x4, 1960, x5)
+
+inst_524:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x4, 1968, x5)
+
+inst_525:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x4, 1976, x5)
+
+inst_526:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x4, 1984, x5)
+
+inst_527:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x4, 1992, x5)
+
+inst_528:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x4, 2000, x5)
+
+inst_529:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x4, 2008, x5)
+
+inst_530:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x4, 2016, x5)
+
+inst_531:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x4, 2024, x5)
+
+inst_532:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x4, 2032, x5)
+
+inst_533:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x4, 2040, x5)
+RVTEST_SIGBASE( x4,signature_x4_2)
+
+inst_534:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x4, 0, x5)
+
+inst_535:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x4, 8, x5)
+
+inst_536:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x4, 16, x5)
+
+inst_537:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x4, 24, x5)
+
+inst_538:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x4, 32, x5)
+
+inst_539:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x4, 40, x5)
+
+inst_540:
+// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x4, 48, x5)
+
+inst_541:
+// rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x4, 56, x5)
+
+inst_542:
+// rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x4, 64, x5)
+
+inst_543:
+// rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x4, 72, x5)
+
+inst_544:
+// rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: xperm.b ; op1:x10; op2:x11; dest:x12; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(xperm.b, x12, x10, x11, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x4, 80, x5)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x6_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x6_1:
+ .fill 22*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_1:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x4_2:
+ .fill 11*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xperm.n-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xperm.n-01.S
new file mode 100644
index 000000000..1f02df067
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/K_unratified/src/xperm.n-01.S
@@ -0,0 +1,2816 @@
+// -----------
+// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
+// version : 0.4.5
+// timestamp : Thu May 27 16:46:33 2021 GMT
+// usage : riscv_ctg \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
+// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
+// --base-isa rv64i \
+// --randomize
+// -----------
+//
+// -----------
+// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the xperm.n instruction of the RISC-V extension for the xperm.n covergroup.
+//
+#include "model_test.h"
+#include "arch_test.h"
+RVTEST_ISA("RV64I")
+
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+
+#ifdef TEST_CASE_1
+
+RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*K.*);def TEST_CASE_1=True;",xperm.n)
+
+RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKs.*);def TEST_CASE_1=True;",xperm.n)
+
+RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKn.*);def TEST_CASE_1=True;",xperm.n)
+
+RVTEST_CASE(3,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*ZKb.*);def TEST_CASE_1=True;",xperm.n)
+
+RVTEST_SIGBASE( x11,signature_x11_1)
+
+inst_0:
+// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x15, rs2==x16, rd==x29, rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0x34C2DA8003CC0F27
+// opcode: xperm.n ; op1:x15; op2:x16; dest:x29; op1val:0xffffffffffffffff; op2val:0x34c2da8003cc0f27
+TEST_RR_OP(xperm.n, x29, x15, x16, 0x0000000000000000, 0xffffffffffffffff, 0x34c2da8003cc0f27, x11, 0, x18)
+
+inst_1:
+// rs1 == rs2 == rd, rs1==x22, rs2==x22, rd==x22, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: xperm.n ; op1:x22; op2:x22; dest:x22; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
+TEST_RR_OP(xperm.n, x22, x22, x22, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x11, 8, x18)
+
+inst_2:
+// rs1 == rd != rs2, rs1==x8, rs2==x9, rd==x8, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
+// opcode: xperm.n ; op1:x8; op2:x9; dest:x8; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
+TEST_RR_OP(xperm.n, x8, x8, x9, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x11, 16, x18)
+
+inst_3:
+// rs1 == rs2 != rd, rs1==x29, rs2==x29, rd==x31, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: xperm.n ; op1:x29; op2:x29; dest:x31; op1val:0x1f7d946f17168ab3; op2val:0x1f7d946f17168ab3
+TEST_RR_OP(xperm.n, x31, x29, x29, 0x0000000000000000, 0x1f7d946f17168ab3, 0x1f7d946f17168ab3, x11, 24, x18)
+
+inst_4:
+// rs2 == rd != rs1, rs1==x6, rs2==x30, rd==x30, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
+// opcode: xperm.n ; op1:x6; op2:x30; dest:x30; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
+TEST_RR_OP(xperm.n, x30, x6, x30, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x11, 32, x18)
+
+inst_5:
+// rs1==x12, rs2==x21, rd==x0, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
+// opcode: xperm.n ; op1:x12; op2:x21; dest:x0; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
+TEST_RR_OP(xperm.n, x0, x12, x21, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x11, 40, x18)
+
+inst_6:
+// rs1==x0, rs2==x25, rd==x16, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: xperm.n ; op1:x0; op2:x25; dest:x16; op1val:0x0; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(xperm.n, x16, x0, x25, 0x0000000000000000, 0x0, 0x1aa1beebefb902cb, x11, 48, x18)
+
+inst_7:
+// rs1==x7, rs2==x31, rd==x10, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
+// opcode: xperm.n ; op1:x7; op2:x31; dest:x10; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
+TEST_RR_OP(xperm.n, x10, x7, x31, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x11, 56, x18)
+
+inst_8:
+// rs1==x17, rs2==x4, rd==x14, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
+// opcode: xperm.n ; op1:x17; op2:x4; dest:x14; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
+TEST_RR_OP(xperm.n, x14, x17, x4, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x11, 64, x18)
+
+inst_9:
+// rs1==x16, rs2==x27, rd==x17, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
+// opcode: xperm.n ; op1:x16; op2:x27; dest:x17; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
+TEST_RR_OP(xperm.n, x17, x16, x27, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x11, 72, x18)
+
+inst_10:
+// rs1==x30, rs2==x28, rd==x27, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
+// opcode: xperm.n ; op1:x30; op2:x28; dest:x27; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
+TEST_RR_OP(xperm.n, x27, x30, x28, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x11, 80, x18)
+
+inst_11:
+// rs1==x24, rs2==x12, rd==x15, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
+// opcode: xperm.n ; op1:x24; op2:x12; dest:x15; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
+TEST_RR_OP(xperm.n, x15, x24, x12, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x11, 88, x18)
+
+inst_12:
+// rs1==x27, rs2==x7, rd==x6, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
+// opcode: xperm.n ; op1:x27; op2:x7; dest:x6; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
+TEST_RR_OP(xperm.n, x6, x27, x7, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x11, 96, x18)
+
+inst_13:
+// rs1==x21, rs2==x0, rd==x13, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
+// opcode: xperm.n ; op1:x21; op2:x0; dest:x13; op1val:0xd75739f82ac177c6; op2val:0x0
+TEST_RR_OP(xperm.n, x13, x21, x0, 0x0000000000000000, 0xd75739f82ac177c6, 0x0, x11, 104, x18)
+
+inst_14:
+// rs1==x19, rs2==x26, rd==x25, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
+// opcode: xperm.n ; op1:x19; op2:x26; dest:x25; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
+TEST_RR_OP(xperm.n, x25, x19, x26, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x11, 112, x18)
+
+inst_15:
+// rs1==x2, rs2==x19, rd==x3, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
+// opcode: xperm.n ; op1:x2; op2:x19; dest:x3; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
+TEST_RR_OP(xperm.n, x3, x2, x19, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x11, 120, x18)
+
+inst_16:
+// rs1==x4, rs2==x14, rd==x12, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
+// opcode: xperm.n ; op1:x4; op2:x14; dest:x12; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
+TEST_RR_OP(xperm.n, x12, x4, x14, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x11, 128, x18)
+
+inst_17:
+// rs1==x5, rs2==x24, rd==x21, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
+// opcode: xperm.n ; op1:x5; op2:x24; dest:x21; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
+TEST_RR_OP(xperm.n, x21, x5, x24, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x11, 136, x18)
+
+inst_18:
+// rs1==x26, rs2==x2, rd==x5, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
+// opcode: xperm.n ; op1:x26; op2:x2; dest:x5; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
+TEST_RR_OP(xperm.n, x5, x26, x2, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x11, 144, x18)
+
+inst_19:
+// rs1==x9, rs2==x3, rd==x2, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
+// opcode: xperm.n ; op1:x9; op2:x3; dest:x2; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
+TEST_RR_OP(xperm.n, x2, x9, x3, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x11, 152, x18)
+
+inst_20:
+// rs1==x13, rs2==x1, rd==x7, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
+// opcode: xperm.n ; op1:x13; op2:x1; dest:x7; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
+TEST_RR_OP(xperm.n, x7, x13, x1, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x11, 160, x18)
+
+inst_21:
+// rs1==x3, rs2==x10, rd==x20, rs2_val == 0x0000000000000000 and rs1_val == 0x5BA2C7DD5AE10604
+// opcode: xperm.n ; op1:x3; op2:x10; dest:x20; op1val:0x5ba2c7dd5ae10604; op2val:0x0
+TEST_RR_OP(xperm.n, x20, x3, x10, 0x0000000000000000, 0x5ba2c7dd5ae10604, 0x0, x11, 168, x7)
+RVTEST_SIGBASE( x2,signature_x2_0)
+
+inst_22:
+// rs1==x18, rs2==x8, rd==x28, rs2_val == 0x8000000000000000 and rs1_val == 0x6F061D6DC38671B6
+// opcode: xperm.n ; op1:x18; op2:x8; dest:x28; op1val:0x6f061d6dc38671b6; op2val:0x8000000000000000
+TEST_RR_OP(xperm.n, x28, x18, x8, 0x0000000000000000, 0x6f061d6dc38671b6, 0x8000000000000000, x2, 0, x7)
+
+inst_23:
+// rs1==x1, rs2==x5, rd==x18, rs2_val == 0x4000000000000000 and rs1_val == 0xD2EEEB1C2AF42D39
+// opcode: xperm.n ; op1:x1; op2:x5; dest:x18; op1val:0xd2eeeb1c2af42d39; op2val:0x4000000000000000
+TEST_RR_OP(xperm.n, x18, x1, x5, 0x0000000000000000, 0xd2eeeb1c2af42d39, 0x4000000000000000, x2, 8, x7)
+
+inst_24:
+// rs1==x25, rs2==x20, rd==x11, rs2_val == 0xA000000000000000 and rs1_val == 0x485246BF2502307F
+// opcode: xperm.n ; op1:x25; op2:x20; dest:x11; op1val:0x485246bf2502307f; op2val:0xa000000000000000
+TEST_RR_OP(xperm.n, x11, x25, x20, 0x0000000000000000, 0x485246bf2502307f, 0xa000000000000000, x2, 16, x7)
+
+inst_25:
+// rs1==x20, rs2==x13, rd==x19, rs2_val == 0x3000000000000000 and rs1_val == 0xD50BD94A392E6FA3
+// opcode: xperm.n ; op1:x20; op2:x13; dest:x19; op1val:0xd50bd94a392e6fa3; op2val:0x3000000000000000
+TEST_RR_OP(xperm.n, x19, x20, x13, 0x0000000000000000, 0xd50bd94a392e6fa3, 0x3000000000000000, x2, 24, x7)
+
+inst_26:
+// rs1==x10, rs2==x11, rd==x24, rs2_val == 0x3800000000000000 and rs1_val == 0x8862749480E4D23B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x24; op1val:0x8862749480e4d23b; op2val:0x3800000000000000
+TEST_RR_OP(xperm.n, x24, x10, x11, 0x0000000000000000, 0x8862749480e4d23b, 0x3800000000000000, x2, 32, x7)
+
+inst_27:
+// rs1==x31, rs2==x23, rd==x26, rs2_val == 0x4C00000000000000 and rs1_val == 0x2405B307CEC7313A
+// opcode: xperm.n ; op1:x31; op2:x23; dest:x26; op1val:0x2405b307cec7313a; op2val:0x4c00000000000000
+TEST_RR_OP(xperm.n, x26, x31, x23, 0x0000000000000000, 0x2405b307cec7313a, 0x4c00000000000000, x2, 40, x7)
+
+inst_28:
+// rs1==x23, rs2==x18, rd==x1, rs2_val == 0x8200000000000000 and rs1_val == 0xB1410CBA5D003E38
+// opcode: xperm.n ; op1:x23; op2:x18; dest:x1; op1val:0xb1410cba5d003e38; op2val:0x8200000000000000
+TEST_RR_OP(xperm.n, x1, x23, x18, 0x0000000000000000, 0xb1410cba5d003e38, 0x8200000000000000, x2, 48, x7)
+
+inst_29:
+// rs1==x28, rs2==x17, rd==x4, rs2_val == 0x6900000000000000 and rs1_val == 0xDE81BCAD0B815EF0
+// opcode: xperm.n ; op1:x28; op2:x17; dest:x4; op1val:0xde81bcad0b815ef0; op2val:0x6900000000000000
+TEST_RR_OP(xperm.n, x4, x28, x17, 0x0000000000000000, 0xde81bcad0b815ef0, 0x6900000000000000, x2, 56, x7)
+
+inst_30:
+// rs1==x14, rs2==x15, rd==x23, rs2_val == 0xCC80000000000000 and rs1_val == 0xBF28804A83E2BA3A
+// opcode: xperm.n ; op1:x14; op2:x15; dest:x23; op1val:0xbf28804a83e2ba3a; op2val:0xcc80000000000000
+TEST_RR_OP(xperm.n, x23, x14, x15, 0x0000000000000000, 0xbf28804a83e2ba3a, 0xcc80000000000000, x2, 64, x7)
+
+inst_31:
+// rs1==x11, rs2==x6, rd==x9, rs2_val == 0x1940000000000000 and rs1_val == 0xFD8BF41246E4ABD8
+// opcode: xperm.n ; op1:x11; op2:x6; dest:x9; op1val:0xfd8bf41246e4abd8; op2val:0x1940000000000000
+TEST_RR_OP(xperm.n, x9, x11, x6, 0x0000000000000000, 0xfd8bf41246e4abd8, 0x1940000000000000, x2, 72, x7)
+
+inst_32:
+// rs2_val == 0x20A0000000000000 and rs1_val == 0x063BF2DA242D8CEF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x63bf2da242d8cef; op2val:0x20a0000000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x63bf2da242d8cef, 0x20a0000000000000, x2, 80, x7)
+
+inst_33:
+// rs2_val == 0x5C50000000000000 and rs1_val == 0x811D9484D8D8DD47
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x811d9484d8d8dd47; op2val:0x5c50000000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x811d9484d8d8dd47, 0x5c50000000000000, x2, 88, x7)
+
+inst_34:
+// rs2_val == 0xCD28000000000000 and rs1_val == 0x8CB7ED4FC1F36FAE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8cb7ed4fc1f36fae; op2val:0xcd28000000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8cb7ed4fc1f36fae, 0xcd28000000000000, x2, 96, x7)
+
+inst_35:
+// rs2_val == 0xEB24000000000000 and rs1_val == 0x666FAFE7D7704260
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x666fafe7d7704260; op2val:0xeb24000000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x666fafe7d7704260, 0xeb24000000000000, x2, 104, x7)
+
+inst_36:
+// rs2_val == 0xCFB6000000000000 and rs1_val == 0xFDB7038B058160E6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfdb7038b058160e6; op2val:0xcfb6000000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfdb7038b058160e6, 0xcfb6000000000000, x2, 112, x7)
+
+inst_37:
+// rs2_val == 0x118F000000000000 and rs1_val == 0xA4E23852D8BCA4DF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa4e23852d8bca4df; op2val:0x118f000000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa4e23852d8bca4df, 0x118f000000000000, x2, 120, x7)
+
+inst_38:
+// rs2_val == 0x3B0B800000000000 and rs1_val == 0x718E177DE812DD49
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x718e177de812dd49; op2val:0x3b0b800000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x718e177de812dd49, 0x3b0b800000000000, x2, 128, x7)
+
+inst_39:
+// rs2_val == 0x3DA8400000000000 and rs1_val == 0x42BEA7753D32D01E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x42bea7753d32d01e; op2val:0x3da8400000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x42bea7753d32d01e, 0x3da8400000000000, x2, 136, x7)
+
+inst_40:
+// rs2_val == 0xA742A00000000000 and rs1_val == 0xE91EDE432037E34E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe91ede432037e34e; op2val:0xa742a00000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe91ede432037e34e, 0xa742a00000000000, x2, 144, x7)
+
+inst_41:
+// rs2_val == 0xA3DEF00000000000 and rs1_val == 0xD2039372874434D3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd2039372874434d3; op2val:0xa3def00000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd2039372874434d3, 0xa3def00000000000, x2, 152, x7)
+
+inst_42:
+// rs2_val == 0x3AF3780000000000 and rs1_val == 0xE8DEC4B7875E9BF5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe8dec4b7875e9bf5; op2val:0x3af3780000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe8dec4b7875e9bf5, 0x3af3780000000000, x2, 160, x7)
+
+inst_43:
+// rs2_val == 0x4D64CC0000000000 and rs1_val == 0xEED7C61C17D8A217
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xeed7c61c17d8a217; op2val:0x4d64cc0000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xeed7c61c17d8a217, 0x4d64cc0000000000, x2, 168, x7)
+
+inst_44:
+// rs2_val == 0xF37B4E0000000000 and rs1_val == 0x4EAB740B87F996D6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4eab740b87f996d6; op2val:0xf37b4e0000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4eab740b87f996d6, 0xf37b4e0000000000, x2, 176, x7)
+
+inst_45:
+// rs2_val == 0xEFE7490000000000 and rs1_val == 0x2466B4600D42EA01
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2466b4600d42ea01; op2val:0xefe7490000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2466b4600d42ea01, 0xefe7490000000000, x2, 184, x7)
+
+inst_46:
+// rs2_val == 0xE077678000000000 and rs1_val == 0x4256F18F2DE4EB20
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4256f18f2de4eb20; op2val:0xe077678000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4256f18f2de4eb20, 0xe077678000000000, x2, 192, x7)
+
+inst_47:
+// rs2_val == 0xFA56AA4000000000 and rs1_val == 0x8533DC75D6308385
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8533dc75d6308385; op2val:0xfa56aa4000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8533dc75d6308385, 0xfa56aa4000000000, x2, 200, x7)
+
+inst_48:
+// rs2_val == 0x60C9F22000000000 and rs1_val == 0xCA355A09AB72F99F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xca355a09ab72f99f; op2val:0x60c9f22000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xca355a09ab72f99f, 0x60c9f22000000000, x2, 208, x7)
+
+inst_49:
+// rs2_val == 0xAF36F11000000000 and rs1_val == 0x22FED7DB4E7B7359
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x22fed7db4e7b7359; op2val:0xaf36f11000000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x22fed7db4e7b7359, 0xaf36f11000000000, x2, 216, x7)
+
+inst_50:
+// rs2_val == 0x0333990800000000 and rs1_val == 0xB6DE8BCFD96429C9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb6de8bcfd96429c9; op2val:0x333990800000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb6de8bcfd96429c9, 0x333990800000000, x2, 224, x7)
+
+inst_51:
+// rs2_val == 0x5C67C8FC00000000 and rs1_val == 0xB9FBD369C8CDF63E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb9fbd369c8cdf63e; op2val:0x5c67c8fc00000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb9fbd369c8cdf63e, 0x5c67c8fc00000000, x2, 232, x7)
+
+inst_52:
+// rs2_val == 0xC706E0C200000000 and rs1_val == 0x324C464BC06209FB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x324c464bc06209fb; op2val:0xc706e0c200000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x324c464bc06209fb, 0xc706e0c200000000, x2, 240, x7)
+
+inst_53:
+// rs2_val == 0xEFE091E300000000 and rs1_val == 0x70FD0C20644918A7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x70fd0c20644918a7; op2val:0xefe091e300000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x70fd0c20644918a7, 0xefe091e300000000, x2, 248, x7)
+
+inst_54:
+// rs2_val == 0xCB7CDDA380000000 and rs1_val == 0x755CD0BF4F63879F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x755cd0bf4f63879f; op2val:0xcb7cdda380000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x755cd0bf4f63879f, 0xcb7cdda380000000, x2, 256, x7)
+
+inst_55:
+// rs2_val == 0x51885E99C0000000 and rs1_val == 0xA31E74CF1F3C1AD7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa31e74cf1f3c1ad7; op2val:0x51885e99c0000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa31e74cf1f3c1ad7, 0x51885e99c0000000, x2, 264, x7)
+
+inst_56:
+// rs2_val == 0x87503D9D20000000 and rs1_val == 0x300D9B713BB3E347
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x300d9b713bb3e347; op2val:0x87503d9d20000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x300d9b713bb3e347, 0x87503d9d20000000, x2, 272, x7)
+
+inst_57:
+// rs2_val == 0x1AC7983C70000000 and rs1_val == 0xCB0ACB582BEDCFC5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xcb0acb582bedcfc5; op2val:0x1ac7983c70000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xcb0acb582bedcfc5, 0x1ac7983c70000000, x2, 280, x7)
+
+inst_58:
+// rs2_val == 0x1857BC0AE8000000 and rs1_val == 0xFD5324A47C496066
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfd5324a47c496066; op2val:0x1857bc0ae8000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfd5324a47c496066, 0x1857bc0ae8000000, x2, 288, x7)
+
+inst_59:
+// rs2_val == 0xB9545B9124000000 and rs1_val == 0xA46EE1F1A8552F4B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa46ee1f1a8552f4b; op2val:0xb9545b9124000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa46ee1f1a8552f4b, 0xb9545b9124000000, x2, 296, x7)
+
+inst_60:
+// rs2_val == 0xFFE1759C3A000000 and rs1_val == 0x4BFF93C124507198
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4bff93c124507198; op2val:0xffe1759c3a000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4bff93c124507198, 0xffe1759c3a000000, x2, 304, x7)
+
+inst_61:
+// rs2_val == 0xD12C4A6DFD000000 and rs1_val == 0xE3AC03436656B0E2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe3ac03436656b0e2; op2val:0xd12c4a6dfd000000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe3ac03436656b0e2, 0xd12c4a6dfd000000, x2, 312, x7)
+
+inst_62:
+// rs2_val == 0x4978C51702800000 and rs1_val == 0x75BD36C79929DFEB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x75bd36c79929dfeb; op2val:0x4978c51702800000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x75bd36c79929dfeb, 0x4978c51702800000, x2, 320, x7)
+
+inst_63:
+// rs2_val == 0xEC557C3C4D400000 and rs1_val == 0xEA894C29FF6036ED
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xea894c29ff6036ed; op2val:0xec557c3c4d400000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xea894c29ff6036ed, 0xec557c3c4d400000, x2, 328, x7)
+
+inst_64:
+// rs2_val == 0x7FAB9B0810A00000 and rs1_val == 0x46B7549D93C22130
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x46b7549d93c22130; op2val:0x7fab9b0810a00000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x46b7549d93c22130, 0x7fab9b0810a00000, x2, 336, x7)
+
+inst_65:
+// rs2_val == 0xAF8FDA6198900000 and rs1_val == 0x7E107814A1C1C528
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7e107814a1c1c528; op2val:0xaf8fda6198900000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7e107814a1c1c528, 0xaf8fda6198900000, x2, 344, x7)
+
+inst_66:
+// rs2_val == 0x707DF5A4A8F80000 and rs1_val == 0x57E9F6C2408B97CD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x57e9f6c2408b97cd; op2val:0x707df5a4a8f80000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x57e9f6c2408b97cd, 0x707df5a4a8f80000, x2, 352, x7)
+
+inst_67:
+// rs2_val == 0x924D5D8CDB8C0000 and rs1_val == 0xF3C9FBEDAA8DC392
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf3c9fbedaa8dc392; op2val:0x924d5d8cdb8c0000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf3c9fbedaa8dc392, 0x924d5d8cdb8c0000, x2, 360, x7)
+
+inst_68:
+// rs2_val == 0x200DC7628C620000 and rs1_val == 0x1078E5395C962250
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1078e5395c962250; op2val:0x200dc7628c620000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1078e5395c962250, 0x200dc7628c620000, x2, 368, x7)
+
+inst_69:
+// rs2_val == 0x415DC3E7526B0000 and rs1_val == 0x57B0D4C17C2890B1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x57b0d4c17c2890b1; op2val:0x415dc3e7526b0000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x57b0d4c17c2890b1, 0x415dc3e7526b0000, x2, 376, x7)
+
+inst_70:
+// rs2_val == 0x448E60EF28288000 and rs1_val == 0x9812A13456F646E8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9812a13456f646e8; op2val:0x448e60ef28288000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9812a13456f646e8, 0x448e60ef28288000, x2, 384, x7)
+
+inst_71:
+// rs2_val == 0xAD881BE63AAF4000 and rs1_val == 0xD367D9F15710B7AE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd367d9f15710b7ae; op2val:0xad881be63aaf4000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd367d9f15710b7ae, 0xad881be63aaf4000, x2, 392, x7)
+
+inst_72:
+// rs2_val == 0xD3262066BA452000 and rs1_val == 0x1F8B62C23A810BD9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1f8b62c23a810bd9; op2val:0xd3262066ba452000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1f8b62c23a810bd9, 0xd3262066ba452000, x2, 400, x7)
+
+inst_73:
+// rs2_val == 0x955964C554C37000 and rs1_val == 0xAB4A4D5C22FEB755
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xab4a4d5c22feb755; op2val:0x955964c554c37000
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xab4a4d5c22feb755, 0x955964c554c37000, x2, 408, x7)
+
+inst_74:
+// rs2_val == 0x0B66A6669D416800 and rs1_val == 0x5CBAF664FCD220D7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5cbaf664fcd220d7; op2val:0xb66a6669d416800
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5cbaf664fcd220d7, 0xb66a6669d416800, x2, 416, x7)
+
+inst_75:
+// rs2_val == 0x610EA25929454400 and rs1_val == 0xD497855D8B082833
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd497855d8b082833; op2val:0x610ea25929454400
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd497855d8b082833, 0x610ea25929454400, x2, 424, x7)
+
+inst_76:
+// rs2_val == 0xC19961DDB6C00600 and rs1_val == 0x97DB1001072F6AC9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x97db1001072f6ac9; op2val:0xc19961ddb6c00600
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x97db1001072f6ac9, 0xc19961ddb6c00600, x2, 432, x7)
+
+inst_77:
+// rs2_val == 0x4C41441591107F00 and rs1_val == 0xD63EF4DE0E724556
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd63ef4de0e724556; op2val:0x4c41441591107f00
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd63ef4de0e724556, 0x4c41441591107f00, x2, 440, x7)
+
+inst_78:
+// rs2_val == 0xFC44172C98DFBD80 and rs1_val == 0x1BAF44CF3B50C99D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1baf44cf3b50c99d; op2val:0xfc44172c98dfbd80
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1baf44cf3b50c99d, 0xfc44172c98dfbd80, x2, 448, x7)
+
+inst_79:
+// rs2_val == 0x985875B03F6A4D40 and rs1_val == 0xEAB762A9D6CBF3AE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xeab762a9d6cbf3ae; op2val:0x985875b03f6a4d40
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xeab762a9d6cbf3ae, 0x985875b03f6a4d40, x2, 456, x7)
+
+inst_80:
+// rs2_val == 0xFCD876518F8264E0 and rs1_val == 0x9B90F7CAF66FA51D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9b90f7caf66fa51d; op2val:0xfcd876518f8264e0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9b90f7caf66fa51d, 0xfcd876518f8264e0, x2, 464, x7)
+
+inst_81:
+// rs2_val == 0x443A809E48B4BE70 and rs1_val == 0xCBD297D6AEB522FC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xcbd297d6aeb522fc; op2val:0x443a809e48b4be70
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xcbd297d6aeb522fc, 0x443a809e48b4be70, x2, 472, x7)
+
+inst_82:
+// rs2_val == 0xB914351D12915378 and rs1_val == 0xDA53E66763735E07
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xda53e66763735e07; op2val:0xb914351d12915378
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xda53e66763735e07, 0xb914351d12915378, x2, 480, x7)
+
+inst_83:
+// rs2_val == 0x922EC2BF33ECD4FC and rs1_val == 0x77A061BA4B1D37E9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x77a061ba4b1d37e9; op2val:0x922ec2bf33ecd4fc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x77a061ba4b1d37e9, 0x922ec2bf33ecd4fc, x2, 488, x7)
+
+inst_84:
+// rs2_val == 0x0E1DB424323E7F5E and rs1_val == 0xA6C873830196F0C0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa6c873830196f0c0; op2val:0xe1db424323e7f5e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa6c873830196f0c0, 0xe1db424323e7f5e, x2, 496, x7)
+
+inst_85:
+// rs2_val == 0x7F8C74B1AF5BC16D and rs1_val == 0x33439FC489476E6E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x33439fc489476e6e; op2val:0x7f8c74b1af5bc16d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x33439fc489476e6e, 0x7f8c74b1af5bc16d, x2, 504, x7)
+
+inst_86:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x1A323609E92A6130
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x1a323609e92a6130
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x0, 0x1a323609e92a6130, x2, 512, x7)
+
+inst_87:
+// rs1_val == 0x8000000000000000 and rs2_val == 0xED4ECED74BED2975
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8000000000000000; op2val:0xed4eced74bed2975
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8000000000000000, 0xed4eced74bed2975, x2, 520, x7)
+
+inst_88:
+// rs1_val == 0x4000000000000000 and rs2_val == 0x29CB52AF3206B471
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4000000000000000; op2val:0x29cb52af3206b471
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4000000000000000, 0x29cb52af3206b471, x2, 528, x7)
+
+inst_89:
+// rs1_val == 0x2000000000000000 and rs2_val == 0x0AE5DE174EF43B6F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2000000000000000; op2val:0xae5de174ef43b6f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2000000000000000, 0xae5de174ef43b6f, x2, 536, x7)
+
+inst_90:
+// rs1_val == 0xD000000000000000 and rs2_val == 0xB725F591D236CDED
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd000000000000000; op2val:0xb725f591d236cded
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd000000000000000, 0xb725f591d236cded, x2, 544, x7)
+
+inst_91:
+// rs1_val == 0x5800000000000000 and rs2_val == 0xD5F381D63480C0AD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5800000000000000; op2val:0xd5f381d63480c0ad
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5800000000000000, 0xd5f381d63480c0ad, x2, 552, x7)
+
+inst_92:
+// rs1_val == 0xFC00000000000000 and rs2_val == 0x56FFE58D4360FEC9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfc00000000000000; op2val:0x56ffe58d4360fec9
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfc00000000000000, 0x56ffe58d4360fec9, x2, 560, x7)
+
+inst_93:
+// rs1_val == 0x4200000000000000 and rs2_val == 0x699492C960E011EB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4200000000000000; op2val:0x699492c960e011eb
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4200000000000000, 0x699492c960e011eb, x2, 568, x7)
+
+inst_94:
+// rs1_val == 0x7700000000000000 and rs2_val == 0x25F013BA522AE822
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7700000000000000; op2val:0x25f013ba522ae822
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7700000000000000, 0x25f013ba522ae822, x2, 576, x7)
+
+inst_95:
+// rs1_val == 0x6580000000000000 and rs2_val == 0x48659245994A555F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6580000000000000; op2val:0x48659245994a555f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6580000000000000, 0x48659245994a555f, x2, 584, x7)
+
+inst_96:
+// rs1_val == 0x46C0000000000000 and rs2_val == 0x491F1B5A5D62953F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x46c0000000000000; op2val:0x491f1b5a5d62953f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x46c0000000000000, 0x491f1b5a5d62953f, x2, 592, x7)
+
+inst_97:
+// rs1_val == 0x56E0000000000000 and rs2_val == 0x8B57454ACD07888B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x56e0000000000000; op2val:0x8b57454acd07888b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x56e0000000000000, 0x8b57454acd07888b, x2, 600, x7)
+
+inst_98:
+// rs1_val == 0x56B0000000000000 and rs2_val == 0x2B9C75B64EA4788D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x56b0000000000000; op2val:0x2b9c75b64ea4788d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x56b0000000000000, 0x2b9c75b64ea4788d, x2, 608, x7)
+
+inst_99:
+// rs1_val == 0x4738000000000000 and rs2_val == 0x045ABE77BB75156A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4738000000000000; op2val:0x45abe77bb75156a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4738000000000000, 0x45abe77bb75156a, x2, 616, x7)
+
+inst_100:
+// rs1_val == 0x3544000000000000 and rs2_val == 0xA9CC49B7709E60F1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3544000000000000; op2val:0xa9cc49b7709e60f1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3544000000000000, 0xa9cc49b7709e60f1, x2, 624, x7)
+
+inst_101:
+// rs1_val == 0x0932000000000000 and rs2_val == 0x75CDCD803FF7E48D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x932000000000000; op2val:0x75cdcd803ff7e48d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x932000000000000, 0x75cdcd803ff7e48d, x2, 632, x7)
+
+inst_102:
+// rs1_val == 0xCD55000000000000 and rs2_val == 0xB2B64C4BE716713F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xcd55000000000000; op2val:0xb2b64c4be716713f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xcd55000000000000, 0xb2b64c4be716713f, x2, 640, x7)
+
+inst_103:
+// rs1_val == 0xFD42800000000000 and rs2_val == 0x6EB5568BB03FF489
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfd42800000000000; op2val:0x6eb5568bb03ff489
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfd42800000000000, 0x6eb5568bb03ff489, x2, 648, x7)
+
+inst_104:
+// rs1_val == 0x8E8A400000000000 and rs2_val == 0x5DD1EE295C3D56E7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8e8a400000000000; op2val:0x5dd1ee295c3d56e7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8e8a400000000000, 0x5dd1ee295c3d56e7, x2, 656, x7)
+
+inst_105:
+// rs1_val == 0x1370A00000000000 and rs2_val == 0xF19C9FDA18CCD7F7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1370a00000000000; op2val:0xf19c9fda18ccd7f7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1370a00000000000, 0xf19c9fda18ccd7f7, x2, 664, x7)
+
+inst_106:
+// rs1_val == 0x1408B00000000000 and rs2_val == 0x74FB05DC575D258E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1408b00000000000; op2val:0x74fb05dc575d258e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1408b00000000000, 0x74fb05dc575d258e, x2, 672, x7)
+
+inst_107:
+// rs1_val == 0xE87AF80000000000 and rs2_val == 0x9F7C62BB7CE1F4B3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe87af80000000000; op2val:0x9f7c62bb7ce1f4b3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe87af80000000000, 0x9f7c62bb7ce1f4b3, x2, 680, x7)
+
+inst_108:
+// rs1_val == 0xDBA9040000000000 and rs2_val == 0x5D98418D6F9F34B2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xdba9040000000000; op2val:0x5d98418d6f9f34b2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xdba9040000000000, 0x5d98418d6f9f34b2, x2, 688, x7)
+
+inst_109:
+// rs1_val == 0x01D61E0000000000 and rs2_val == 0xB21E137C4F832EC8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1d61e0000000000; op2val:0xb21e137c4f832ec8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1d61e0000000000, 0xb21e137c4f832ec8, x2, 696, x7)
+
+inst_110:
+// rs1_val == 0x6E90570000000000 and rs2_val == 0xAFC08ACE244D9206
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6e90570000000000; op2val:0xafc08ace244d9206
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6e90570000000000, 0xafc08ace244d9206, x2, 704, x7)
+
+inst_111:
+// rs1_val == 0x2E84D28000000000 and rs2_val == 0x52D700AC5B130474
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2e84d28000000000; op2val:0x52d700ac5b130474
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2e84d28000000000, 0x52d700ac5b130474, x2, 712, x7)
+
+inst_112:
+// rs1_val == 0xC70A28C000000000 and rs2_val == 0x94A7A5EA64E77961
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc70a28c000000000; op2val:0x94a7a5ea64e77961
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc70a28c000000000, 0x94a7a5ea64e77961, x2, 720, x7)
+
+inst_113:
+// rs1_val == 0xBAA4F32000000000 and rs2_val == 0x4FE6A6F6305E3F80
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xbaa4f32000000000; op2val:0x4fe6a6f6305e3f80
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xbaa4f32000000000, 0x4fe6a6f6305e3f80, x2, 728, x7)
+
+inst_114:
+// rs1_val == 0x5C106A3000000000 and rs2_val == 0xCADB5BEC61250888
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5c106a3000000000; op2val:0xcadb5bec61250888
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5c106a3000000000, 0xcadb5bec61250888, x2, 736, x7)
+
+inst_115:
+// rs1_val == 0x230B9F8800000000 and rs2_val == 0xCC381E1007E8BF65
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x230b9f8800000000; op2val:0xcc381e1007e8bf65
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x230b9f8800000000, 0xcc381e1007e8bf65, x2, 744, x7)
+
+inst_116:
+// rs1_val == 0x8D60807C00000000 and rs2_val == 0x903636CF6291F0E2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8d60807c00000000; op2val:0x903636cf6291f0e2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8d60807c00000000, 0x903636cf6291f0e2, x2, 752, x7)
+
+inst_117:
+// rs1_val == 0x2D47691A00000000 and rs2_val == 0xFAE216DC58F45328
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2d47691a00000000; op2val:0xfae216dc58f45328
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2d47691a00000000, 0xfae216dc58f45328, x2, 760, x7)
+
+inst_118:
+// rs1_val == 0xFABF0A7B00000000 and rs2_val == 0x6AEB7DBD0A095049
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfabf0a7b00000000; op2val:0x6aeb7dbd0a095049
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfabf0a7b00000000, 0x6aeb7dbd0a095049, x2, 768, x7)
+
+inst_119:
+// rs1_val == 0x11B6621F80000000 and rs2_val == 0x6F6E71B73344CBB0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x11b6621f80000000; op2val:0x6f6e71b73344cbb0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x11b6621f80000000, 0x6f6e71b73344cbb0, x2, 776, x7)
+
+inst_120:
+// rs1_val == 0x486E4B47C0000000 and rs2_val == 0x440D8382E2ED8971
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x486e4b47c0000000; op2val:0x440d8382e2ed8971
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x486e4b47c0000000, 0x440d8382e2ed8971, x2, 784, x7)
+
+inst_121:
+// rs1_val == 0x60E99D0E60000000 and rs2_val == 0xB1B0D8FE00F1F68E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x60e99d0e60000000; op2val:0xb1b0d8fe00f1f68e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x60e99d0e60000000, 0xb1b0d8fe00f1f68e, x2, 792, x7)
+
+inst_122:
+// rs1_val == 0xF547AF48F0000000 and rs2_val == 0x855EFA7448F71CB0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf547af48f0000000; op2val:0x855efa7448f71cb0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf547af48f0000000, 0x855efa7448f71cb0, x2, 800, x7)
+
+inst_123:
+// rs1_val == 0x9254A04D98000000 and rs2_val == 0x0BC66A8ADF880B11
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9254a04d98000000; op2val:0xbc66a8adf880b11
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9254a04d98000000, 0xbc66a8adf880b11, x2, 808, x7)
+
+inst_124:
+// rs1_val == 0xADF58064EC000000 and rs2_val == 0x29828207BD230058
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xadf58064ec000000; op2val:0x29828207bd230058
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xadf58064ec000000, 0x29828207bd230058, x2, 816, x7)
+
+inst_125:
+// rs1_val == 0x01DAE23576000000 and rs2_val == 0x80904B4C86F90255
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1dae23576000000; op2val:0x80904b4c86f90255
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1dae23576000000, 0x80904b4c86f90255, x2, 824, x7)
+
+inst_126:
+// rs1_val == 0xB1FF9D608B000000 and rs2_val == 0x27A1689480EBE557
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb1ff9d608b000000; op2val:0x27a1689480ebe557
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb1ff9d608b000000, 0x27a1689480ebe557, x2, 832, x7)
+
+inst_127:
+// rs1_val == 0x179FAFE7FB800000 and rs2_val == 0xFBDB4DE81DB6027C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x179fafe7fb800000; op2val:0xfbdb4de81db6027c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x179fafe7fb800000, 0xfbdb4de81db6027c, x2, 840, x7)
+
+inst_128:
+// rs1_val == 0xFBCF76282C400000 and rs2_val == 0x805C2F63023590F7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfbcf76282c400000; op2val:0x805c2f63023590f7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfbcf76282c400000, 0x805c2f63023590f7, x2, 848, x7)
+
+inst_129:
+// rs1_val == 0xE9FD4B63C2200000 and rs2_val == 0x577F8847CD26CE1C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe9fd4b63c2200000; op2val:0x577f8847cd26ce1c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe9fd4b63c2200000, 0x577f8847cd26ce1c, x2, 856, x7)
+
+inst_130:
+// rs1_val == 0x42DC43547B700000 and rs2_val == 0xF29C583101B56748
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x42dc43547b700000; op2val:0xf29c583101b56748
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x42dc43547b700000, 0xf29c583101b56748, x2, 864, x7)
+
+inst_131:
+// rs1_val == 0xED4764DD0CC80000 and rs2_val == 0x2E9115B65D3BBCE0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xed4764dd0cc80000; op2val:0x2e9115b65d3bbce0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xed4764dd0cc80000, 0x2e9115b65d3bbce0, x2, 872, x7)
+
+inst_132:
+// rs1_val == 0x51B0F5AB96FC0000 and rs2_val == 0x2AE568BAFD1032E8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x51b0f5ab96fc0000; op2val:0x2ae568bafd1032e8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x51b0f5ab96fc0000, 0x2ae568bafd1032e8, x2, 880, x7)
+
+inst_133:
+// rs1_val == 0xA544ADE7DDE60000 and rs2_val == 0xDB04A838F57083EF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa544ade7dde60000; op2val:0xdb04a838f57083ef
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa544ade7dde60000, 0xdb04a838f57083ef, x2, 888, x7)
+
+inst_134:
+// rs1_val == 0x925C46CBD3570000 and rs2_val == 0x5E4945ED75923260
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x925c46cbd3570000; op2val:0x5e4945ed75923260
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x925c46cbd3570000, 0x5e4945ed75923260, x2, 896, x7)
+
+inst_135:
+// rs1_val == 0x1AE589FB47F98000 and rs2_val == 0x096EBEC44616E73D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1ae589fb47f98000; op2val:0x96ebec44616e73d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1ae589fb47f98000, 0x96ebec44616e73d, x2, 904, x7)
+
+inst_136:
+// rs1_val == 0x1D2ACD14F9C74000 and rs2_val == 0x387BE8B88CCAEC71
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1d2acd14f9c74000; op2val:0x387be8b88ccaec71
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1d2acd14f9c74000, 0x387be8b88ccaec71, x2, 912, x7)
+
+inst_137:
+// rs1_val == 0x9C9D5A527952A000 and rs2_val == 0x0B21BBBA6D5FCD18
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9c9d5a527952a000; op2val:0xb21bbba6d5fcd18
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9c9d5a527952a000, 0xb21bbba6d5fcd18, x2, 920, x7)
+
+inst_138:
+// rs1_val == 0x2B20055D1CE93000 and rs2_val == 0x073465B82DEDB6A7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2b20055d1ce93000; op2val:0x73465b82dedb6a7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2b20055d1ce93000, 0x73465b82dedb6a7, x2, 928, x7)
+
+inst_139:
+// rs1_val == 0xAE39ED63E301E800 and rs2_val == 0x409BD3051D241ED6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xae39ed63e301e800; op2val:0x409bd3051d241ed6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xae39ed63e301e800, 0x409bd3051d241ed6, x2, 936, x7)
+
+inst_140:
+// rs1_val == 0xD7F893C3AC86AC00 and rs2_val == 0xB0AB577ADDBAD0B1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd7f893c3ac86ac00; op2val:0xb0ab577addbad0b1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd7f893c3ac86ac00, 0xb0ab577addbad0b1, x2, 944, x7)
+
+inst_141:
+// rs1_val == 0x19B3BFF3DE167A00 and rs2_val == 0x42F5D75EA9E16E27
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x19b3bff3de167a00; op2val:0x42f5d75ea9e16e27
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x19b3bff3de167a00, 0x42f5d75ea9e16e27, x2, 952, x7)
+
+inst_142:
+// rs1_val == 0xF09825A406BF0D00 and rs2_val == 0xF7AB62A81529755D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf09825a406bf0d00; op2val:0xf7ab62a81529755d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf09825a406bf0d00, 0xf7ab62a81529755d, x2, 960, x7)
+
+inst_143:
+// rs1_val == 0x01555A450E079180 and rs2_val == 0x8A88C0676273ED06
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1555a450e079180; op2val:0x8a88c0676273ed06
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1555a450e079180, 0x8a88c0676273ed06, x2, 968, x7)
+
+inst_144:
+// rs1_val == 0x532E2CC5D2955440 and rs2_val == 0xF8A885186C5744BC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x532e2cc5d2955440; op2val:0xf8a885186c5744bc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x532e2cc5d2955440, 0xf8a885186c5744bc, x2, 976, x7)
+
+inst_145:
+// rs1_val == 0xFB7523B06EC13320 and rs2_val == 0x8248F803A97BCC25
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfb7523b06ec13320; op2val:0x8248f803a97bcc25
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfb7523b06ec13320, 0x8248f803a97bcc25, x2, 984, x7)
+
+inst_146:
+// rs1_val == 0x382CC710F0F1C6B0 and rs2_val == 0x331B2FB3D19E3224
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x382cc710f0f1c6b0; op2val:0x331b2fb3d19e3224
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x382cc710f0f1c6b0, 0x331b2fb3d19e3224, x2, 992, x7)
+
+inst_147:
+// rs1_val == 0x4C52CFC2F0F54BC8 and rs2_val == 0xE7EDD86756F547AB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4c52cfc2f0f54bc8; op2val:0xe7edd86756f547ab
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4c52cfc2f0f54bc8, 0xe7edd86756f547ab, x2, 1000, x7)
+
+inst_148:
+// rs1_val == 0x3DCBE16292D9BE34 and rs2_val == 0xFA60DBD625329041
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3dcbe16292d9be34; op2val:0xfa60dbd625329041
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3dcbe16292d9be34, 0xfa60dbd625329041, x2, 1008, x7)
+
+inst_149:
+// rs1_val == 0xFE4544F6058F7FE6 and rs2_val == 0x7B87A9E25FEFE911
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfe4544f6058f7fe6; op2val:0x7b87a9e25fefe911
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfe4544f6058f7fe6, 0x7b87a9e25fefe911, x2, 1016, x7)
+
+inst_150:
+// rs1_val == 0x44DCDA6A797D76DF and rs2_val == 0x248174E5598B88DB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x44dcda6a797d76df; op2val:0x248174e5598b88db
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x44dcda6a797d76df, 0x248174e5598b88db, x2, 1024, x7)
+
+inst_151:
+// rs2_val == 0x7AF0702B7727BD62 and rs1_val == 0x33BFB0E80AAB4E37
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x33bfb0e80aab4e37; op2val:0x7af0702b7727bd62
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x33bfb0e80aab4e37, 0x7af0702b7727bd62, x2, 1032, x7)
+
+inst_152:
+// rs2_val == 0xEF6855EDB3AA58E5 and rs1_val == 0xDEDBF20A8F64B9BC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xdedbf20a8f64b9bc; op2val:0xef6855edb3aa58e5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xdedbf20a8f64b9bc, 0xef6855edb3aa58e5, x2, 1040, x7)
+
+inst_153:
+// rs2_val == 0xB93AC7EE3D56AC8B and rs1_val == 0x070202441D19DF81
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x70202441d19df81; op2val:0xb93ac7ee3d56ac8b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x70202441d19df81, 0xb93ac7ee3d56ac8b, x2, 1048, x7)
+
+inst_154:
+// rs2_val == 0xCC31D1DCB5FF09A7 and rs1_val == 0xA3A304857D3AED38
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa3a304857d3aed38; op2val:0xcc31d1dcb5ff09a7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa3a304857d3aed38, 0xcc31d1dcb5ff09a7, x2, 1056, x7)
+
+inst_155:
+// rs2_val == 0xEF900FB814D5348F and rs1_val == 0x0368A58382283AEE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x368a58382283aee; op2val:0xef900fb814d5348f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x368a58382283aee, 0xef900fb814d5348f, x2, 1064, x7)
+
+inst_156:
+// rs2_val == 0x7D572379F81A1E9F and rs1_val == 0xA0FA6A24963AB5D7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa0fa6a24963ab5d7; op2val:0x7d572379f81a1e9f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa0fa6a24963ab5d7, 0x7d572379f81a1e9f, x2, 1072, x7)
+
+inst_157:
+// rs2_val == 0xF5858BCCDD9329BF and rs1_val == 0x1606F8CC740E023D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1606f8cc740e023d; op2val:0xf5858bccdd9329bf
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1606f8cc740e023d, 0xf5858bccdd9329bf, x2, 1080, x7)
+
+inst_158:
+// rs2_val == 0xEA7BD40266EEF97F and rs1_val == 0x81294A71DFE4C7A5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x81294a71dfe4c7a5; op2val:0xea7bd40266eef97f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x81294a71dfe4c7a5, 0xea7bd40266eef97f, x2, 1088, x7)
+
+inst_159:
+// rs2_val == 0xB95BF2E9865292FF and rs1_val == 0x9CA99ACFAF698A52
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9ca99acfaf698a52; op2val:0xb95bf2e9865292ff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9ca99acfaf698a52, 0xb95bf2e9865292ff, x2, 1096, x7)
+
+inst_160:
+// rs2_val == 0x097CEAE809FC3DFF and rs1_val == 0x0440EA57B2FE4FC2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x440ea57b2fe4fc2; op2val:0x97ceae809fc3dff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x440ea57b2fe4fc2, 0x97ceae809fc3dff, x2, 1104, x7)
+
+inst_161:
+// rs2_val == 0x67212B9D64092BFF and rs1_val == 0x6C456BFCE10E43D4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6c456bfce10e43d4; op2val:0x67212b9d64092bff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6c456bfce10e43d4, 0x67212b9d64092bff, x2, 1112, x7)
+
+inst_162:
+// rs2_val == 0x9DA9065DD92F97FF and rs1_val == 0x64AD8CD4914AAD80
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x64ad8cd4914aad80; op2val:0x9da9065dd92f97ff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x64ad8cd4914aad80, 0x9da9065dd92f97ff, x2, 1120, x7)
+
+inst_163:
+// rs2_val == 0xBD7A505430D04FFF and rs1_val == 0x757E5228E88130BA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x757e5228e88130ba; op2val:0xbd7a505430d04fff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x757e5228e88130ba, 0xbd7a505430d04fff, x2, 1128, x7)
+
+inst_164:
+// rs2_val == 0x6CB1BE29E6371FFF and rs1_val == 0xC6592AAD0AE95557
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc6592aad0ae95557; op2val:0x6cb1be29e6371fff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc6592aad0ae95557, 0x6cb1be29e6371fff, x2, 1136, x7)
+
+inst_165:
+// rs2_val == 0x6F3B6FA6F8DD3FFF and rs1_val == 0x7FB1AC680B72BB91
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7fb1ac680b72bb91; op2val:0x6f3b6fa6f8dd3fff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7fb1ac680b72bb91, 0x6f3b6fa6f8dd3fff, x2, 1144, x7)
+
+inst_166:
+// rs2_val == 0x249808D0BE5F7FFF and rs1_val == 0x06E1DD67303CA1D0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6e1dd67303ca1d0; op2val:0x249808d0be5f7fff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6e1dd67303ca1d0, 0x249808d0be5f7fff, x2, 1152, x7)
+
+inst_167:
+// rs2_val == 0x1A5B9CCD70C2FFFF and rs1_val == 0xB8F66A4F832CBAFF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb8f66a4f832cbaff; op2val:0x1a5b9ccd70c2ffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb8f66a4f832cbaff, 0x1a5b9ccd70c2ffff, x2, 1160, x7)
+
+inst_168:
+// rs2_val == 0xF4EE2270D581FFFF and rs1_val == 0xC8738F370C99C902
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc8738f370c99c902; op2val:0xf4ee2270d581ffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc8738f370c99c902, 0xf4ee2270d581ffff, x2, 1168, x7)
+
+inst_169:
+// rs2_val == 0x8E2B5C7E1493FFFF and rs1_val == 0x66A4E1F83E0AD875
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x66a4e1f83e0ad875; op2val:0x8e2b5c7e1493ffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x66a4e1f83e0ad875, 0x8e2b5c7e1493ffff, x2, 1176, x7)
+
+inst_170:
+// rs2_val == 0x355695E68D37FFFF and rs1_val == 0x6673663C6DD54CB4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6673663c6dd54cb4; op2val:0x355695e68d37ffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6673663c6dd54cb4, 0x355695e68d37ffff, x2, 1184, x7)
+
+inst_171:
+// rs2_val == 0xF4F31A2BCC6FFFFF and rs1_val == 0x7DE7F4261F893D02
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7de7f4261f893d02; op2val:0xf4f31a2bcc6fffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7de7f4261f893d02, 0xf4f31a2bcc6fffff, x2, 1192, x7)
+
+inst_172:
+// rs2_val == 0x28F20E42BDDFFFFF and rs1_val == 0xF17DC31D6D64E7AD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf17dc31d6d64e7ad; op2val:0x28f20e42bddfffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf17dc31d6d64e7ad, 0x28f20e42bddfffff, x2, 1200, x7)
+
+inst_173:
+// rs2_val == 0x5415A0435CBFFFFF and rs1_val == 0x1B607A8D3161B010
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1b607a8d3161b010; op2val:0x5415a0435cbfffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1b607a8d3161b010, 0x5415a0435cbfffff, x2, 1208, x7)
+
+inst_174:
+// rs2_val == 0x590C01C43E7FFFFF and rs1_val == 0x04EF06236FB0F1C0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4ef06236fb0f1c0; op2val:0x590c01c43e7fffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4ef06236fb0f1c0, 0x590c01c43e7fffff, x2, 1216, x7)
+
+inst_175:
+// rs2_val == 0x004FB0B2B4FFFFFF and rs1_val == 0x853ED27FA1D02D4D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x853ed27fa1d02d4d; op2val:0x4fb0b2b4ffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x853ed27fa1d02d4d, 0x4fb0b2b4ffffff, x2, 1224, x7)
+
+inst_176:
+// rs2_val == 0x03EB3F6C71FFFFFF and rs1_val == 0xEB9A53986BE07552
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xeb9a53986be07552; op2val:0x3eb3f6c71ffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xeb9a53986be07552, 0x3eb3f6c71ffffff, x2, 1232, x7)
+
+inst_177:
+// rs2_val == 0xE30AA425B3FFFFFF and rs1_val == 0xD183808ADB0BBA39
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd183808adb0bba39; op2val:0xe30aa425b3ffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd183808adb0bba39, 0xe30aa425b3ffffff, x2, 1240, x7)
+
+inst_178:
+// rs2_val == 0xD756C0F057FFFFFF and rs1_val == 0x1FF934CB5D1139A4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1ff934cb5d1139a4; op2val:0xd756c0f057ffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1ff934cb5d1139a4, 0xd756c0f057ffffff, x2, 1248, x7)
+
+inst_179:
+// rs2_val == 0xB5BB3B242FFFFFFF and rs1_val == 0x3BBC81CE7A44C8AD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3bbc81ce7a44c8ad; op2val:0xb5bb3b242fffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3bbc81ce7a44c8ad, 0xb5bb3b242fffffff, x2, 1256, x7)
+
+inst_180:
+// rs2_val == 0xE52FB0819FFFFFFF and rs1_val == 0x8B89800093547E48
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8b89800093547e48; op2val:0xe52fb0819fffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8b89800093547e48, 0xe52fb0819fffffff, x2, 1264, x7)
+
+inst_181:
+// rs2_val == 0x710733FE3FFFFFFF and rs1_val == 0x1AB5FFE4994902CA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1ab5ffe4994902ca; op2val:0x710733fe3fffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1ab5ffe4994902ca, 0x710733fe3fffffff, x2, 1272, x7)
+
+inst_182:
+// rs2_val == 0xCEE6C9487FFFFFFF and rs1_val == 0x19A55FA94E2E7447
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x19a55fa94e2e7447; op2val:0xcee6c9487fffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x19a55fa94e2e7447, 0xcee6c9487fffffff, x2, 1280, x7)
+
+inst_183:
+// rs2_val == 0x1E903AD2FFFFFFFF and rs1_val == 0xC0A83D81F7192179
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc0a83d81f7192179; op2val:0x1e903ad2ffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc0a83d81f7192179, 0x1e903ad2ffffffff, x2, 1288, x7)
+
+inst_184:
+// rs2_val == 0xA6E915BDFFFFFFFF and rs1_val == 0x292268C615A03321
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x292268c615a03321; op2val:0xa6e915bdffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x292268c615a03321, 0xa6e915bdffffffff, x2, 1296, x7)
+
+inst_185:
+// rs2_val == 0xBE4349E3FFFFFFFF and rs1_val == 0x36370FCCB733640C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x36370fccb733640c; op2val:0xbe4349e3ffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x36370fccb733640c, 0xbe4349e3ffffffff, x2, 1304, x7)
+
+inst_186:
+// rs2_val == 0x3EA485F7FFFFFFFF and rs1_val == 0xE820BA0F6AEDE476
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe820ba0f6aede476; op2val:0x3ea485f7ffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe820ba0f6aede476, 0x3ea485f7ffffffff, x2, 1312, x7)
+
+inst_187:
+// rs2_val == 0xC680322FFFFFFFFF and rs1_val == 0x4E0AA5616D2DB9E3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4e0aa5616d2db9e3; op2val:0xc680322fffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4e0aa5616d2db9e3, 0xc680322fffffffff, x2, 1320, x7)
+
+inst_188:
+// rs2_val == 0x9EF4CE9FFFFFFFFF and rs1_val == 0x2C9AAA4CBFFB6C5C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2c9aaa4cbffb6c5c; op2val:0x9ef4ce9fffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2c9aaa4cbffb6c5c, 0x9ef4ce9fffffffff, x2, 1328, x7)
+
+inst_189:
+// rs2_val == 0x83653EBFFFFFFFFF and rs1_val == 0x1C8073CF27B012A3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1c8073cf27b012a3; op2val:0x83653ebfffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1c8073cf27b012a3, 0x83653ebfffffffff, x2, 1336, x7)
+
+inst_190:
+// rs2_val == 0x6FFD7D7FFFFFFFFF and rs1_val == 0xCC11F70E14A7DD83
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xcc11f70e14a7dd83; op2val:0x6ffd7d7fffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xcc11f70e14a7dd83, 0x6ffd7d7fffffffff, x2, 1344, x7)
+
+inst_191:
+// rs2_val == 0x365EE0FFFFFFFFFF and rs1_val == 0x0C9DC3EC2F6AA770
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc9dc3ec2f6aa770; op2val:0x365ee0ffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc9dc3ec2f6aa770, 0x365ee0ffffffffff, x2, 1352, x7)
+
+inst_192:
+// rs2_val == 0x1CE551FFFFFFFFFF and rs1_val == 0x8DF80A8D112154CC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8df80a8d112154cc; op2val:0x1ce551ffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8df80a8d112154cc, 0x1ce551ffffffffff, x2, 1360, x7)
+
+inst_193:
+// rs2_val == 0xA10263FFFFFFFFFF and rs1_val == 0xE05474E1F96EAFFA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe05474e1f96eaffa; op2val:0xa10263ffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe05474e1f96eaffa, 0xa10263ffffffffff, x2, 1368, x7)
+
+inst_194:
+// rs2_val == 0x4CC607FFFFFFFFFF and rs1_val == 0x4B6AE0AB8FBFF9BA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4b6ae0ab8fbff9ba; op2val:0x4cc607ffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4b6ae0ab8fbff9ba, 0x4cc607ffffffffff, x2, 1376, x7)
+
+inst_195:
+// rs2_val == 0x00D36FFFFFFFFFFF and rs1_val == 0x884A2AF82552FBF9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x884a2af82552fbf9; op2val:0xd36fffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x884a2af82552fbf9, 0xd36fffffffffff, x2, 1384, x7)
+
+inst_196:
+// rs2_val == 0x7B40DFFFFFFFFFFF and rs1_val == 0x1475D76C0F99D8BC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1475d76c0f99d8bc; op2val:0x7b40dfffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1475d76c0f99d8bc, 0x7b40dfffffffffff, x2, 1392, x7)
+
+inst_197:
+// rs2_val == 0x6A0F3FFFFFFFFFFF and rs1_val == 0x729D8FD2B68C8FCE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x729d8fd2b68c8fce; op2val:0x6a0f3fffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x729d8fd2b68c8fce, 0x6a0f3fffffffffff, x2, 1400, x7)
+
+inst_198:
+// rs2_val == 0x1FE47FFFFFFFFFFF and rs1_val == 0xC407E2A913E5CF6B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc407e2a913e5cf6b; op2val:0x1fe47fffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc407e2a913e5cf6b, 0x1fe47fffffffffff, x2, 1408, x7)
+
+inst_199:
+// rs2_val == 0xDBEEFFFFFFFFFFFF and rs1_val == 0x5697EBD547CD73ED
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5697ebd547cd73ed; op2val:0xdbeeffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5697ebd547cd73ed, 0xdbeeffffffffffff, x2, 1416, x7)
+
+inst_200:
+// rs2_val == 0x9269FFFFFFFFFFFF and rs1_val == 0x69F35DA38364A709
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x69f35da38364a709; op2val:0x9269ffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x69f35da38364a709, 0x9269ffffffffffff, x2, 1424, x7)
+
+inst_201:
+// rs2_val == 0x93FBFFFFFFFFFFFF and rs1_val == 0x9230A15AD0917142
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9230a15ad0917142; op2val:0x93fbffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9230a15ad0917142, 0x93fbffffffffffff, x2, 1432, x7)
+
+inst_202:
+// rs2_val == 0x1AB7FFFFFFFFFFFF and rs1_val == 0xE057776C76427709
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe057776c76427709; op2val:0x1ab7ffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe057776c76427709, 0x1ab7ffffffffffff, x2, 1440, x7)
+
+inst_203:
+// rs2_val == 0x222FFFFFFFFFFFFF and rs1_val == 0xB9E861C820176DBE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb9e861c820176dbe; op2val:0x222fffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb9e861c820176dbe, 0x222fffffffffffff, x2, 1448, x7)
+
+inst_204:
+// rs2_val == 0x489FFFFFFFFFFFFF and rs1_val == 0x17C5DA8E9738BFB9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x17c5da8e9738bfb9; op2val:0x489fffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x17c5da8e9738bfb9, 0x489fffffffffffff, x2, 1456, x7)
+
+inst_205:
+// rs2_val == 0x5A3FFFFFFFFFFFFF and rs1_val == 0xB888D0205843990B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb888d0205843990b; op2val:0x5a3fffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb888d0205843990b, 0x5a3fffffffffffff, x2, 1464, x7)
+
+inst_206:
+// rs2_val == 0xEA7FFFFFFFFFFFFF and rs1_val == 0xEE8EB1B125FB16B4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xee8eb1b125fb16b4; op2val:0xea7fffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xee8eb1b125fb16b4, 0xea7fffffffffffff, x2, 1472, x7)
+
+inst_207:
+// rs2_val == 0x82FFFFFFFFFFFFFF and rs1_val == 0x0341EA23BD94509C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x341ea23bd94509c; op2val:0x82ffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x341ea23bd94509c, 0x82ffffffffffffff, x2, 1480, x7)
+
+inst_208:
+// rs2_val == 0xB1FFFFFFFFFFFFFF and rs1_val == 0x6D5C2871FE183D04
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6d5c2871fe183d04; op2val:0xb1ffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6d5c2871fe183d04, 0xb1ffffffffffffff, x2, 1488, x7)
+
+inst_209:
+// rs2_val == 0xC3FFFFFFFFFFFFFF and rs1_val == 0x9BAE401E386EF954
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9bae401e386ef954; op2val:0xc3ffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9bae401e386ef954, 0xc3ffffffffffffff, x2, 1496, x7)
+
+inst_210:
+// rs2_val == 0x87FFFFFFFFFFFFFF and rs1_val == 0x9241B7ED0274846B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9241b7ed0274846b; op2val:0x87ffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9241b7ed0274846b, 0x87ffffffffffffff, x2, 1504, x7)
+
+inst_211:
+// rs2_val == 0x8FFFFFFFFFFFFFFF and rs1_val == 0x3E610134180C5DB5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3e610134180c5db5; op2val:0x8fffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3e610134180c5db5, 0x8fffffffffffffff, x2, 1512, x7)
+
+inst_212:
+// rs2_val == 0x9FFFFFFFFFFFFFFF and rs1_val == 0x39C88EC041E5A5DE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x39c88ec041e5a5de; op2val:0x9fffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x39c88ec041e5a5de, 0x9fffffffffffffff, x2, 1520, x7)
+
+inst_213:
+// rs2_val == 0xBFFFFFFFFFFFFFFF and rs1_val == 0xA67CE511275BBF80
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa67ce511275bbf80; op2val:0xbfffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa67ce511275bbf80, 0xbfffffffffffffff, x2, 1528, x7)
+
+inst_214:
+// rs2_val == 0x7FFFFFFFFFFFFFFF and rs1_val == 0x24B6B671AE5FDCBB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x24b6b671ae5fdcbb; op2val:0x7fffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x24b6b671ae5fdcbb, 0x7fffffffffffffff, x2, 1536, x7)
+
+inst_215:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0x6DAE4547B0F94BB3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6dae4547b0f94bb3; op2val:0xffffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6dae4547b0f94bb3, 0xffffffffffffffff, x2, 1544, x7)
+
+inst_216:
+// rs1_val == 0x0168EF241A5632E0 and rs2_val == 0x220746CC96C03042
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x168ef241a5632e0; op2val:0x220746cc96c03042
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x168ef241a5632e0, 0x220746cc96c03042, x2, 1552, x7)
+
+inst_217:
+// rs1_val == 0x30D2EC9FD4D686CD and rs2_val == 0x2DC04D358033ADA7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x30d2ec9fd4d686cd; op2val:0x2dc04d358033ada7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x30d2ec9fd4d686cd, 0x2dc04d358033ada7, x2, 1560, x7)
+
+inst_218:
+// rs1_val == 0xC42A14B631A3CF7B and rs2_val == 0xB6CF3DE46025666D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc42a14b631a3cf7b; op2val:0xb6cf3de46025666d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc42a14b631a3cf7b, 0xb6cf3de46025666d, x2, 1568, x7)
+
+inst_219:
+// rs1_val == 0x27B2BDDA42EE9AA7 and rs2_val == 0x8964663CF541AB61
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x27b2bdda42ee9aa7; op2val:0x8964663cf541ab61
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x27b2bdda42ee9aa7, 0x8964663cf541ab61, x2, 1576, x7)
+
+inst_220:
+// rs1_val == 0x2815A9156A8877CF and rs2_val == 0x7BEA8A85CD09E875
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2815a9156a8877cf; op2val:0x7bea8a85cd09e875
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2815a9156a8877cf, 0x7bea8a85cd09e875, x2, 1584, x7)
+
+inst_221:
+// rs1_val == 0xFE0022C2EFEFFC5F and rs2_val == 0xDA80DDEFF3D107A2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfe0022c2efeffc5f; op2val:0xda80ddeff3d107a2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfe0022c2efeffc5f, 0xda80ddeff3d107a2, x2, 1592, x7)
+
+inst_222:
+// rs1_val == 0x424F6311883EAD3F and rs2_val == 0x54FAD64046B88C5E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x424f6311883ead3f; op2val:0x54fad64046b88c5e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x424f6311883ead3f, 0x54fad64046b88c5e, x2, 1600, x7)
+
+inst_223:
+// rs1_val == 0x4D0957FB733F597F and rs2_val == 0x86BDDB7C00F0A572
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4d0957fb733f597f; op2val:0x86bddb7c00f0a572
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4d0957fb733f597f, 0x86bddb7c00f0a572, x2, 1608, x7)
+
+inst_224:
+// rs1_val == 0x448BFE1163DD2CFF and rs2_val == 0xC8EA69A8269E1925
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x448bfe1163dd2cff; op2val:0xc8ea69a8269e1925
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x448bfe1163dd2cff, 0xc8ea69a8269e1925, x2, 1616, x7)
+
+inst_225:
+// rs1_val == 0x67DFCA774EF73DFF and rs2_val == 0x633F9E36FF03170E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x67dfca774ef73dff; op2val:0x633f9e36ff03170e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x67dfca774ef73dff, 0x633f9e36ff03170e, x2, 1624, x7)
+
+inst_226:
+// rs1_val == 0xC312E040EB1873FF and rs2_val == 0x1C0290060A710087
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc312e040eb1873ff; op2val:0x1c0290060a710087
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc312e040eb1873ff, 0x1c0290060a710087, x2, 1632, x7)
+
+inst_227:
+// rs1_val == 0x9F440F98291917FF and rs2_val == 0xB36964F8B74D1614
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9f440f98291917ff; op2val:0xb36964f8b74d1614
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9f440f98291917ff, 0xb36964f8b74d1614, x2, 1640, x7)
+
+inst_228:
+// rs1_val == 0x5569DAB7FFE78FFF and rs2_val == 0xA09C74E3CF1EC7BA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5569dab7ffe78fff; op2val:0xa09c74e3cf1ec7ba
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5569dab7ffe78fff, 0xa09c74e3cf1ec7ba, x2, 1648, x7)
+
+inst_229:
+// rs1_val == 0x03FD3B8CBA185FFF and rs2_val == 0xDDC89919457288A2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3fd3b8cba185fff; op2val:0xddc89919457288a2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3fd3b8cba185fff, 0xddc89919457288a2, x2, 1656, x7)
+
+inst_230:
+// rs1_val == 0x0D5574B45F67BFFF and rs2_val == 0x07C8ADBBEE84A991
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd5574b45f67bfff; op2val:0x7c8adbbee84a991
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd5574b45f67bfff, 0x7c8adbbee84a991, x2, 1664, x7)
+
+inst_231:
+// rs1_val == 0x8BA43677F63C7FFF and rs2_val == 0x42C1BE6C4C4006C3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8ba43677f63c7fff; op2val:0x42c1be6c4c4006c3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8ba43677f63c7fff, 0x42c1be6c4c4006c3, x2, 1672, x7)
+
+inst_232:
+// rs1_val == 0x231D058C9D02FFFF and rs2_val == 0x4CACE19165844C17
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x231d058c9d02ffff; op2val:0x4cace19165844c17
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x231d058c9d02ffff, 0x4cace19165844c17, x2, 1680, x7)
+
+inst_233:
+// rs1_val == 0x8C0F5CBFD6F1FFFF and rs2_val == 0x0D4C58ABE5C7946A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8c0f5cbfd6f1ffff; op2val:0xd4c58abe5c7946a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8c0f5cbfd6f1ffff, 0xd4c58abe5c7946a, x2, 1688, x7)
+
+inst_234:
+// rs1_val == 0xB7E7669E0C03FFFF and rs2_val == 0x9EDFCC1B64A14081
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb7e7669e0c03ffff; op2val:0x9edfcc1b64a14081
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb7e7669e0c03ffff, 0x9edfcc1b64a14081, x2, 1696, x7)
+
+inst_235:
+// rs1_val == 0x4399EC2A5857FFFF and rs2_val == 0xD24F0724CD41CAD2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4399ec2a5857ffff; op2val:0xd24f0724cd41cad2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4399ec2a5857ffff, 0xd24f0724cd41cad2, x2, 1704, x7)
+
+inst_236:
+// rs1_val == 0x7A9AC0A716EFFFFF and rs2_val == 0x5F249E4DEE8F948A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7a9ac0a716efffff; op2val:0x5f249e4dee8f948a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7a9ac0a716efffff, 0x5f249e4dee8f948a, x2, 1712, x7)
+
+inst_237:
+// rs1_val == 0x0143AC65E6DFFFFF and rs2_val == 0xAE7C7AE4DE38D7E2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x143ac65e6dfffff; op2val:0xae7c7ae4de38d7e2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x143ac65e6dfffff, 0xae7c7ae4de38d7e2, x2, 1720, x7)
+
+inst_238:
+// rs1_val == 0xE31F9713E4BFFFFF and rs2_val == 0xBD5A3C088B9F8591
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe31f9713e4bfffff; op2val:0xbd5a3c088b9f8591
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe31f9713e4bfffff, 0xbd5a3c088b9f8591, x2, 1728, x7)
+
+inst_239:
+// rs1_val == 0xCDBD527DF77FFFFF and rs2_val == 0x529D62B60C96A183
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xcdbd527df77fffff; op2val:0x529d62b60c96a183
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xcdbd527df77fffff, 0x529d62b60c96a183, x2, 1736, x7)
+
+inst_240:
+// rs1_val == 0x59DDE3310AFFFFFF and rs2_val == 0x4BA4996688F931F4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x59dde3310affffff; op2val:0x4ba4996688f931f4
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x59dde3310affffff, 0x4ba4996688f931f4, x2, 1744, x7)
+
+inst_241:
+// rs1_val == 0xE05E8C5F95FFFFFF and rs2_val == 0xFD670591955235A4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe05e8c5f95ffffff; op2val:0xfd670591955235a4
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe05e8c5f95ffffff, 0xfd670591955235a4, x2, 1752, x7)
+
+inst_242:
+// rs1_val == 0x19835A0D23FFFFFF and rs2_val == 0x7DABB7005C6C32A5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x19835a0d23ffffff; op2val:0x7dabb7005c6c32a5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x19835a0d23ffffff, 0x7dabb7005c6c32a5, x2, 1760, x7)
+
+inst_243:
+// rs1_val == 0x636A75E397FFFFFF and rs2_val == 0x088B3E9E4A7A5C05
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x636a75e397ffffff; op2val:0x88b3e9e4a7a5c05
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x636a75e397ffffff, 0x88b3e9e4a7a5c05, x2, 1768, x7)
+
+inst_244:
+// rs1_val == 0x280088DBCFFFFFFF and rs2_val == 0x4ED6242837E0DE00
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x280088dbcfffffff; op2val:0x4ed6242837e0de00
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x280088dbcfffffff, 0x4ed6242837e0de00, x2, 1776, x7)
+
+inst_245:
+// rs1_val == 0x4A18738A1FFFFFFF and rs2_val == 0x1CA7BD1F0D770F3C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4a18738a1fffffff; op2val:0x1ca7bd1f0d770f3c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4a18738a1fffffff, 0x1ca7bd1f0d770f3c, x2, 1784, x7)
+
+inst_246:
+// rs1_val == 0xFDD2CB403FFFFFFF and rs2_val == 0x63C2504C8DFC2307
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfdd2cb403fffffff; op2val:0x63c2504c8dfc2307
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfdd2cb403fffffff, 0x63c2504c8dfc2307, x2, 1792, x7)
+
+inst_247:
+// rs1_val == 0xC61B1FBF7FFFFFFF and rs2_val == 0x30BFF1924E6EE408
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc61b1fbf7fffffff; op2val:0x30bff1924e6ee408
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc61b1fbf7fffffff, 0x30bff1924e6ee408, x2, 1800, x7)
+
+inst_248:
+// rs1_val == 0x0BACFC76FFFFFFFF and rs2_val == 0xEBDA5A4F998D1525
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xbacfc76ffffffff; op2val:0xebda5a4f998d1525
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xbacfc76ffffffff, 0xebda5a4f998d1525, x2, 1808, x7)
+
+inst_249:
+// rs1_val == 0x65CB60BDFFFFFFFF and rs2_val == 0x1635B51A75EE935F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x65cb60bdffffffff; op2val:0x1635b51a75ee935f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x65cb60bdffffffff, 0x1635b51a75ee935f, x2, 1816, x7)
+
+inst_250:
+// rs1_val == 0xA4053173FFFFFFFF and rs2_val == 0x6CE859BB59CF4BB2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa4053173ffffffff; op2val:0x6ce859bb59cf4bb2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa4053173ffffffff, 0x6ce859bb59cf4bb2, x2, 1824, x7)
+
+inst_251:
+// rs1_val == 0x3E87B427FFFFFFFF and rs2_val == 0x499006C897933E6C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3e87b427ffffffff; op2val:0x499006c897933e6c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3e87b427ffffffff, 0x499006c897933e6c, x2, 1832, x7)
+
+inst_252:
+// rs1_val == 0x6CC30F6FFFFFFFFF and rs2_val == 0x3C5B3EEE9687F28F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6cc30f6fffffffff; op2val:0x3c5b3eee9687f28f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6cc30f6fffffffff, 0x3c5b3eee9687f28f, x2, 1840, x7)
+
+inst_253:
+// rs1_val == 0x25784F5FFFFFFFFF and rs2_val == 0xD95FD86AD2FE2E7E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x25784f5fffffffff; op2val:0xd95fd86ad2fe2e7e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x25784f5fffffffff, 0xd95fd86ad2fe2e7e, x2, 1848, x7)
+
+inst_254:
+// rs1_val == 0x27B23DBFFFFFFFFF and rs2_val == 0xE91014A0B6D75E84
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x27b23dbfffffffff; op2val:0xe91014a0b6d75e84
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x27b23dbfffffffff, 0xe91014a0b6d75e84, x2, 1856, x7)
+
+inst_255:
+// rs1_val == 0xD5A2037FFFFFFFFF and rs2_val == 0x01769A3C092936E8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd5a2037fffffffff; op2val:0x1769a3c092936e8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd5a2037fffffffff, 0x1769a3c092936e8, x2, 1864, x7)
+
+inst_256:
+// rs1_val == 0xE81FDCFFFFFFFFFF and rs2_val == 0x85A300E0784ABEBB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe81fdcffffffffff; op2val:0x85a300e0784abebb
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe81fdcffffffffff, 0x85a300e0784abebb, x2, 1872, x7)
+
+inst_257:
+// rs1_val == 0xFF7745FFFFFFFFFF and rs2_val == 0x1F1BAF6A4F829B65
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xff7745ffffffffff; op2val:0x1f1baf6a4f829b65
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xff7745ffffffffff, 0x1f1baf6a4f829b65, x2, 1880, x7)
+
+inst_258:
+// rs1_val == 0x708903FFFFFFFFFF and rs2_val == 0x86CE51BD17B8B123
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x708903ffffffffff; op2val:0x86ce51bd17b8b123
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x708903ffffffffff, 0x86ce51bd17b8b123, x2, 1888, x7)
+
+inst_259:
+// rs1_val == 0xA4BE27FFFFFFFFFF and rs2_val == 0xB1F5D8538B16BB0D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa4be27ffffffffff; op2val:0xb1f5d8538b16bb0d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa4be27ffffffffff, 0xb1f5d8538b16bb0d, x2, 1896, x7)
+
+inst_260:
+// rs1_val == 0x31602FFFFFFFFFFF and rs2_val == 0x2AD6072539BE2172
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x31602fffffffffff; op2val:0x2ad6072539be2172
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x31602fffffffffff, 0x2ad6072539be2172, x2, 1904, x7)
+
+inst_261:
+// rs1_val == 0xBA4A1FFFFFFFFFFF and rs2_val == 0x5761A86691E42ACB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xba4a1fffffffffff; op2val:0x5761a86691e42acb
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xba4a1fffffffffff, 0x5761a86691e42acb, x2, 1912, x7)
+
+inst_262:
+// rs1_val == 0x7F103FFFFFFFFFFF and rs2_val == 0x09E4D1F4975A8550
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7f103fffffffffff; op2val:0x9e4d1f4975a8550
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7f103fffffffffff, 0x9e4d1f4975a8550, x2, 1920, x7)
+
+inst_263:
+// rs1_val == 0xF8A77FFFFFFFFFFF and rs2_val == 0x9A7EF9E4B432D4F7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf8a77fffffffffff; op2val:0x9a7ef9e4b432d4f7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf8a77fffffffffff, 0x9a7ef9e4b432d4f7, x2, 1928, x7)
+
+inst_264:
+// rs1_val == 0xDA88FFFFFFFFFFFF and rs2_val == 0xA827F5A3B76D454D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xda88ffffffffffff; op2val:0xa827f5a3b76d454d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xda88ffffffffffff, 0xa827f5a3b76d454d, x2, 1936, x7)
+
+inst_265:
+// rs1_val == 0x2449FFFFFFFFFFFF and rs2_val == 0x59C05BB9CD9CB03A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2449ffffffffffff; op2val:0x59c05bb9cd9cb03a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2449ffffffffffff, 0x59c05bb9cd9cb03a, x2, 1944, x7)
+
+inst_266:
+// rs1_val == 0x6C9BFFFFFFFFFFFF and rs2_val == 0xDE14BFF2EED7A24A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6c9bffffffffffff; op2val:0xde14bff2eed7a24a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6c9bffffffffffff, 0xde14bff2eed7a24a, x2, 1952, x7)
+
+inst_267:
+// rs1_val == 0x6E27FFFFFFFFFFFF and rs2_val == 0x63C2A48F76B1FD3D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6e27ffffffffffff; op2val:0x63c2a48f76b1fd3d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6e27ffffffffffff, 0x63c2a48f76b1fd3d, x2, 1960, x7)
+
+inst_268:
+// rs1_val == 0x31CFFFFFFFFFFFFF and rs2_val == 0x5DCF019DB3988B52
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x31cfffffffffffff; op2val:0x5dcf019db3988b52
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x31cfffffffffffff, 0x5dcf019db3988b52, x2, 1968, x7)
+
+inst_269:
+// rs1_val == 0x215FFFFFFFFFFFFF and rs2_val == 0x90BB34803C464110
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x215fffffffffffff; op2val:0x90bb34803c464110
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x215fffffffffffff, 0x90bb34803c464110, x2, 1976, x7)
+
+inst_270:
+// rs1_val == 0x433FFFFFFFFFFFFF and rs2_val == 0x47B7097B9B01F7CC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x433fffffffffffff; op2val:0x47b7097b9b01f7cc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x433fffffffffffff, 0x47b7097b9b01f7cc, x2, 1984, x7)
+
+inst_271:
+// rs1_val == 0x857FFFFFFFFFFFFF and rs2_val == 0x40D90A1E5B331999
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x857fffffffffffff; op2val:0x40d90a1e5b331999
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x857fffffffffffff, 0x40d90a1e5b331999, x2, 1992, x7)
+
+inst_272:
+// rs1_val == 0xACFFFFFFFFFFFFFF and rs2_val == 0x4B1634E12D37DE81
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xacffffffffffffff; op2val:0x4b1634e12d37de81
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xacffffffffffffff, 0x4b1634e12d37de81, x2, 2000, x7)
+
+inst_273:
+// rs1_val == 0x6DFFFFFFFFFFFFFF and rs2_val == 0xFCB627AFBF97E520
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6dffffffffffffff; op2val:0xfcb627afbf97e520
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6dffffffffffffff, 0xfcb627afbf97e520, x2, 2008, x7)
+
+inst_274:
+// rs1_val == 0x3BFFFFFFFFFFFFFF and rs2_val == 0xABB4DA1C6DF8CCF6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3bffffffffffffff; op2val:0xabb4da1c6df8ccf6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3bffffffffffffff, 0xabb4da1c6df8ccf6, x2, 2016, x7)
+
+inst_275:
+// rs1_val == 0x67FFFFFFFFFFFFFF and rs2_val == 0x41B79D35E08409F0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x67ffffffffffffff; op2val:0x41b79d35e08409f0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x67ffffffffffffff, 0x41b79d35e08409f0, x2, 2024, x7)
+
+inst_276:
+// rs1_val == 0x2FFFFFFFFFFFFFFF and rs2_val == 0xD38CADCD432FF218
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2fffffffffffffff; op2val:0xd38cadcd432ff218
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2fffffffffffffff, 0xd38cadcd432ff218, x2, 2032, x7)
+
+inst_277:
+// rs1_val == 0xDFFFFFFFFFFFFFFF and rs2_val == 0xFE339ECA03B1D74B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xdfffffffffffffff; op2val:0xfe339eca03b1d74b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xdfffffffffffffff, 0xfe339eca03b1d74b, x2, 2040, x7)
+RVTEST_SIGBASE( x2,signature_x2_1)
+
+inst_278:
+// rs1_val == 0xBFFFFFFFFFFFFFFF and rs2_val == 0x07AC5FED4B6EA010
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xbfffffffffffffff; op2val:0x7ac5fed4b6ea010
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xbfffffffffffffff, 0x7ac5fed4b6ea010, x2, 0, x7)
+
+inst_279:
+// rs1_val == 0x7FFFFFFFFFFFFFFF and rs2_val == 0x2FF7C0FCBBE8F88D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7fffffffffffffff; op2val:0x2ff7c0fcbbe8f88d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7fffffffffffffff, 0x2ff7c0fcbbe8f88d, x2, 8, x7)
+
+inst_280:
+// rs1_val == 0xFFFFFFFFFFFFFFFF and rs2_val == 0xA6EA1C0D2F8B9E9D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffff; op2val:0xa6ea1c0d2f8b9e9d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffff, 0xa6ea1c0d2f8b9e9d, x2, 16, x7)
+
+inst_281:
+// rs2_val == 0xF192D0D741B2BB9A and rs1_val == 0x8138093C66CC59EE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8138093c66cc59ee; op2val:0xf192d0d741b2bb9a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8138093c66cc59ee, 0xf192d0d741b2bb9a, x2, 24, x7)
+
+inst_282:
+// rs2_val == 0x5D8A9EA91D617A4D and rs1_val == 0xBD21A9561BA9A6B5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xbd21a9561ba9a6b5; op2val:0x5d8a9ea91d617a4d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xbd21a9561ba9a6b5, 0x5d8a9ea91d617a4d, x2, 32, x7)
+
+inst_283:
+// rs2_val == 0x2537437FC3015FA0 and rs1_val == 0x932D823FFAE6F67D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x932d823ffae6f67d; op2val:0x2537437fc3015fa0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x932d823ffae6f67d, 0x2537437fc3015fa0, x2, 40, x7)
+
+inst_284:
+// rs2_val == 0x17F8388BA8E61CB6 and rs1_val == 0xB3852A64369580FF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb3852a64369580ff; op2val:0x17f8388ba8e61cb6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb3852a64369580ff, 0x17f8388ba8e61cb6, x2, 48, x7)
+
+inst_285:
+// rs2_val == 0x0DE1B9523B6B6093 and rs1_val == 0x567B159A4C8281A2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x567b159a4c8281a2; op2val:0xde1b9523b6b6093
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x567b159a4c8281a2, 0xde1b9523b6b6093, x2, 56, x7)
+
+inst_286:
+// rs2_val == 0x07571FE602B653E5 and rs1_val == 0x9FBFCB0AE717A666
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9fbfcb0ae717a666; op2val:0x7571fe602b653e5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9fbfcb0ae717a666, 0x7571fe602b653e5, x2, 64, x7)
+
+inst_287:
+// rs2_val == 0x037ADFD3CC1E0438 and rs1_val == 0x7805EC944D3B8462
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7805ec944d3b8462; op2val:0x37adfd3cc1e0438
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7805ec944d3b8462, 0x37adfd3cc1e0438, x2, 72, x7)
+
+inst_288:
+// rs2_val == 0x01F2BAE567DEF006 and rs1_val == 0x2F5031F8B8FE90A6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2f5031f8b8fe90a6; op2val:0x1f2bae567def006
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2f5031f8b8fe90a6, 0x1f2bae567def006, x2, 80, x7)
+
+inst_289:
+// rs2_val == 0x00C42276E94AE4A8 and rs1_val == 0xC3E60E906E803472
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc3e60e906e803472; op2val:0xc42276e94ae4a8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc3e60e906e803472, 0xc42276e94ae4a8, x2, 88, x7)
+
+inst_290:
+// rs2_val == 0x007FB91691D6CEDD and rs1_val == 0x421D9B0AC32C4DA8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x421d9b0ac32c4da8; op2val:0x7fb91691d6cedd
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x421d9b0ac32c4da8, 0x7fb91691d6cedd, x2, 96, x7)
+
+inst_291:
+// rs2_val == 0x0037193EE4A7C5BA and rs1_val == 0xF088BED0A11F7657
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf088bed0a11f7657; op2val:0x37193ee4a7c5ba
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf088bed0a11f7657, 0x37193ee4a7c5ba, x2, 104, x7)
+
+inst_292:
+// rs2_val == 0x00172F2A1844EBD2 and rs1_val == 0x03F26964CAD764C4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3f26964cad764c4; op2val:0x172f2a1844ebd2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3f26964cad764c4, 0x172f2a1844ebd2, x2, 112, x7)
+
+inst_293:
+// rs2_val == 0x000FCB682E67A854 and rs1_val == 0x9AD8E8B131F3C57C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9ad8e8b131f3c57c; op2val:0xfcb682e67a854
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9ad8e8b131f3c57c, 0xfcb682e67a854, x2, 120, x7)
+
+inst_294:
+// rs2_val == 0x0007044699D68912 and rs1_val == 0xD8219C9D0A76F50A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd8219c9d0a76f50a; op2val:0x7044699d68912
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd8219c9d0a76f50a, 0x7044699d68912, x2, 128, x7)
+
+inst_295:
+// rs2_val == 0x0003DB776D2B6540 and rs1_val == 0x6E19CE135AC51CC8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6e19ce135ac51cc8; op2val:0x3db776d2b6540
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6e19ce135ac51cc8, 0x3db776d2b6540, x2, 136, x7)
+
+inst_296:
+// rs2_val == 0x00013EF0C3C4B8A1 and rs1_val == 0x6410FF8753AAF3B7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6410ff8753aaf3b7; op2val:0x13ef0c3c4b8a1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6410ff8753aaf3b7, 0x13ef0c3c4b8a1, x2, 144, x7)
+
+inst_297:
+// rs2_val == 0x0000AC0B226B5502 and rs1_val == 0x764A44B4AE53C374
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x764a44b4ae53c374; op2val:0xac0b226b5502
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x764a44b4ae53c374, 0xac0b226b5502, x2, 152, x7)
+
+inst_298:
+// rs2_val == 0x000067A5ED48D09E and rs1_val == 0x946C61BC186211CB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x946c61bc186211cb; op2val:0x67a5ed48d09e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x946c61bc186211cb, 0x67a5ed48d09e, x2, 160, x7)
+
+inst_299:
+// rs2_val == 0x000028A12C2869B7 and rs1_val == 0xFD8464202874799A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfd8464202874799a; op2val:0x28a12c2869b7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfd8464202874799a, 0x28a12c2869b7, x2, 168, x7)
+
+inst_300:
+// rs2_val == 0x00001BF925849DE3 and rs1_val == 0x1D6D2A932F3DC554
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1d6d2a932f3dc554; op2val:0x1bf925849de3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1d6d2a932f3dc554, 0x1bf925849de3, x2, 176, x7)
+
+inst_301:
+// rs2_val == 0x00000F99099565A3 and rs1_val == 0x9199165CE7B4B57E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9199165ce7b4b57e; op2val:0xf99099565a3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9199165ce7b4b57e, 0xf99099565a3, x2, 184, x7)
+
+inst_302:
+// rs2_val == 0x0000044ECD872AB5 and rs1_val == 0x1B2E2CD77B692CDA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1b2e2cd77b692cda; op2val:0x44ecd872ab5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1b2e2cd77b692cda, 0x44ecd872ab5, x2, 192, x7)
+
+inst_303:
+// rs2_val == 0x0000021380B68BE6 and rs1_val == 0xD53C269BAF88E590
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd53c269baf88e590; op2val:0x21380b68be6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd53c269baf88e590, 0x21380b68be6, x2, 200, x7)
+
+inst_304:
+// rs2_val == 0x00000112B467FB8B and rs1_val == 0xC21668AAA2792E75
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc21668aaa2792e75; op2val:0x112b467fb8b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc21668aaa2792e75, 0x112b467fb8b, x2, 208, x7)
+
+inst_305:
+// rs2_val == 0x000000A4E94FBD21 and rs1_val == 0x5C7FB02DF7E7A342
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5c7fb02df7e7a342; op2val:0xa4e94fbd21
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5c7fb02df7e7a342, 0xa4e94fbd21, x2, 216, x7)
+
+inst_306:
+// rs2_val == 0x0000007518972E45 and rs1_val == 0xAEB0A94C91E4F834
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xaeb0a94c91e4f834; op2val:0x7518972e45
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xaeb0a94c91e4f834, 0x7518972e45, x2, 224, x7)
+
+inst_307:
+// rs2_val == 0x0000002D671C82FC and rs1_val == 0xCC81F272AF6A3E68
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xcc81f272af6a3e68; op2val:0x2d671c82fc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xcc81f272af6a3e68, 0x2d671c82fc, x2, 232, x7)
+
+inst_308:
+// rs2_val == 0x000000118B142F97 and rs1_val == 0x2041C033B47053DE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2041c033b47053de; op2val:0x118b142f97
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2041c033b47053de, 0x118b142f97, x2, 240, x7)
+
+inst_309:
+// rs2_val == 0x0000000818D6084E and rs1_val == 0xF0F1D8DBD508FF34
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf0f1d8dbd508ff34; op2val:0x818d6084e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf0f1d8dbd508ff34, 0x818d6084e, x2, 248, x7)
+
+inst_310:
+// rs2_val == 0x0000000650DD1AF1 and rs1_val == 0x426E6DDF1690A1F7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x426e6ddf1690a1f7; op2val:0x650dd1af1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x426e6ddf1690a1f7, 0x650dd1af1, x2, 256, x7)
+
+inst_311:
+// rs2_val == 0x000000023B8F801D and rs1_val == 0xE715DFE558FC0A18
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe715dfe558fc0a18; op2val:0x23b8f801d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe715dfe558fc0a18, 0x23b8f801d, x2, 264, x7)
+
+inst_312:
+// rs2_val == 0x0000000187951CB6 and rs1_val == 0xDB54E659962E5835
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xdb54e659962e5835; op2val:0x187951cb6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xdb54e659962e5835, 0x187951cb6, x2, 272, x7)
+
+inst_313:
+// rs2_val == 0x00000000E0303F46 and rs1_val == 0xA372959988B48922
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa372959988b48922; op2val:0xe0303f46
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa372959988b48922, 0xe0303f46, x2, 280, x7)
+
+inst_314:
+// rs2_val == 0x000000007B1BDA5E and rs1_val == 0x6FD08D91E0F48D2F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6fd08d91e0f48d2f; op2val:0x7b1bda5e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6fd08d91e0f48d2f, 0x7b1bda5e, x2, 288, x7)
+
+inst_315:
+// rs2_val == 0x0000000031B0F86A and rs1_val == 0x1AD9C6D87FB2D83B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1ad9c6d87fb2d83b; op2val:0x31b0f86a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1ad9c6d87fb2d83b, 0x31b0f86a, x2, 296, x7)
+
+inst_316:
+// rs2_val == 0x000000001CDE8A08 and rs1_val == 0x05D54CB2FA2F0AFD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5d54cb2fa2f0afd; op2val:0x1cde8a08
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5d54cb2fa2f0afd, 0x1cde8a08, x2, 304, x7)
+
+inst_317:
+// rs2_val == 0x000000000BCE1A9C and rs1_val == 0x9E2E5BE56B66EC95
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9e2e5be56b66ec95; op2val:0xbce1a9c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9e2e5be56b66ec95, 0xbce1a9c, x2, 312, x7)
+
+inst_318:
+// rs2_val == 0x0000000006A1096C and rs1_val == 0x866534CD79FE0C5F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x866534cd79fe0c5f; op2val:0x6a1096c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x866534cd79fe0c5f, 0x6a1096c, x2, 320, x7)
+
+inst_319:
+// rs2_val == 0x0000000003211CB3 and rs1_val == 0x56F552452080F2AC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x56f552452080f2ac; op2val:0x3211cb3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x56f552452080f2ac, 0x3211cb3, x2, 328, x7)
+
+inst_320:
+// rs2_val == 0x0000000001E48237 and rs1_val == 0x44EB31E46776FD34
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x44eb31e46776fd34; op2val:0x1e48237
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x44eb31e46776fd34, 0x1e48237, x2, 336, x7)
+
+inst_321:
+// rs2_val == 0x0000000000B0FBCE and rs1_val == 0x7DB4D3B51F36DDF8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7db4d3b51f36ddf8; op2val:0xb0fbce
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7db4d3b51f36ddf8, 0xb0fbce, x2, 344, x7)
+
+inst_322:
+// rs2_val == 0x00000000005516A9 and rs1_val == 0x3372969F7F65D54D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3372969f7f65d54d; op2val:0x5516a9
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3372969f7f65d54d, 0x5516a9, x2, 352, x7)
+
+inst_323:
+// rs2_val == 0x000000000021BF99 and rs1_val == 0xA38D0F398FC0819E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa38d0f398fc0819e; op2val:0x21bf99
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa38d0f398fc0819e, 0x21bf99, x2, 360, x7)
+
+inst_324:
+// rs2_val == 0x00000000001F99DE and rs1_val == 0xB06670AAF2FBC7F9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb06670aaf2fbc7f9; op2val:0x1f99de
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb06670aaf2fbc7f9, 0x1f99de, x2, 368, x7)
+
+inst_325:
+// rs2_val == 0x00000000000BEEC1 and rs1_val == 0x23F7D227EA7F7301
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x23f7d227ea7f7301; op2val:0xbeec1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x23f7d227ea7f7301, 0xbeec1, x2, 376, x7)
+
+inst_326:
+// rs2_val == 0x0000000000079DD3 and rs1_val == 0x887AAE6A2C42EEAC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x887aae6a2c42eeac; op2val:0x79dd3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x887aae6a2c42eeac, 0x79dd3, x2, 384, x7)
+
+inst_327:
+// rs2_val == 0x0000000000035BC3 and rs1_val == 0x106607DCDE17B009
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x106607dcde17b009; op2val:0x35bc3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x106607dcde17b009, 0x35bc3, x2, 392, x7)
+
+inst_328:
+// rs2_val == 0x000000000001DB50 and rs1_val == 0xC4AAF35A6BE1FCDE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc4aaf35a6be1fcde; op2val:0x1db50
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc4aaf35a6be1fcde, 0x1db50, x2, 400, x7)
+
+inst_329:
+// rs2_val == 0x000000000000C1F1 and rs1_val == 0x0981ABB61530959B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x981abb61530959b; op2val:0xc1f1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x981abb61530959b, 0xc1f1, x2, 408, x7)
+
+inst_330:
+// rs2_val == 0x0000000000004632 and rs1_val == 0xDB14A009B7E06D03
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xdb14a009b7e06d03; op2val:0x4632
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xdb14a009b7e06d03, 0x4632, x2, 416, x7)
+
+inst_331:
+// rs2_val == 0x0000000000003CDC and rs1_val == 0xEEA93B6FCA71067B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xeea93b6fca71067b; op2val:0x3cdc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xeea93b6fca71067b, 0x3cdc, x2, 424, x7)
+
+inst_332:
+// rs2_val == 0x0000000000001AD8 and rs1_val == 0xFA342B15167CD62E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfa342b15167cd62e; op2val:0x1ad8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfa342b15167cd62e, 0x1ad8, x2, 432, x7)
+
+inst_333:
+// rs2_val == 0x0000000000000E5E and rs1_val == 0xB7B8B1A0EC9A5DC8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb7b8b1a0ec9a5dc8; op2val:0xe5e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb7b8b1a0ec9a5dc8, 0xe5e, x2, 440, x7)
+
+inst_334:
+// rs2_val == 0x0000000000000456 and rs1_val == 0x3473F51FFB7A3B3B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3473f51ffb7a3b3b; op2val:0x456
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3473f51ffb7a3b3b, 0x456, x2, 448, x7)
+
+inst_335:
+// rs2_val == 0x0000000000000216 and rs1_val == 0x57D53E43F1BAE498
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x57d53e43f1bae498; op2val:0x216
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x57d53e43f1bae498, 0x216, x2, 456, x7)
+
+inst_336:
+// rs2_val == 0x000000000000014D and rs1_val == 0x2141C6D163522556
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2141c6d163522556; op2val:0x14d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2141c6d163522556, 0x14d, x2, 464, x7)
+
+inst_337:
+// rs2_val == 0x00000000000000AD and rs1_val == 0xE7FF25B9B3257DDA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe7ff25b9b3257dda; op2val:0xad
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe7ff25b9b3257dda, 0xad, x2, 472, x7)
+
+inst_338:
+// rs2_val == 0x0000000000000042 and rs1_val == 0x28C0D4AEC196C5C2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x28c0d4aec196c5c2; op2val:0x42
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x28c0d4aec196c5c2, 0x42, x2, 480, x7)
+
+inst_339:
+// rs2_val == 0x0000000000000032 and rs1_val == 0x0942C3FBB6D3E879
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x942c3fbb6d3e879; op2val:0x32
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x942c3fbb6d3e879, 0x32, x2, 488, x7)
+
+inst_340:
+// rs2_val == 0x000000000000001E and rs1_val == 0x418BFBB079A2ED17
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x418bfbb079a2ed17; op2val:0x1e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x418bfbb079a2ed17, 0x1e, x2, 496, x7)
+
+inst_341:
+// rs2_val == 0x000000000000000D and rs1_val == 0xAF3AEAA313F5BC90
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xaf3aeaa313f5bc90; op2val:0xd
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xaf3aeaa313f5bc90, 0xd, x2, 504, x7)
+
+inst_342:
+// rs2_val == 0x0000000000000004 and rs1_val == 0x1D849E2BA111F5FB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1d849e2ba111f5fb; op2val:0x4
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1d849e2ba111f5fb, 0x4, x2, 512, x7)
+
+inst_343:
+// rs2_val == 0x0000000000000003 and rs1_val == 0x44339C10D4652689
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x44339c10d4652689; op2val:0x3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x44339c10d4652689, 0x3, x2, 520, x7)
+
+inst_344:
+// rs2_val == 0x0000000000000001 and rs1_val == 0x746FE5B967BA7848
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x746fe5b967ba7848; op2val:0x1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x746fe5b967ba7848, 0x1, x2, 528, x7)
+
+inst_345:
+// rs2_val == 0x0000000000000000 and rs1_val == 0x9064DBD9CAA0A141
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9064dbd9caa0a141; op2val:0x0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9064dbd9caa0a141, 0x0, x2, 536, x7)
+
+inst_346:
+// rs1_val == 0x880F73BBD42779F6 and rs2_val == 0x9211A8D847F439F3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x880f73bbd42779f6; op2val:0x9211a8d847f439f3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x880f73bbd42779f6, 0x9211a8d847f439f3, x2, 544, x7)
+
+inst_347:
+// rs1_val == 0x6030130961EEAC38 and rs2_val == 0x520235BC73D58E1C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6030130961eeac38; op2val:0x520235bc73d58e1c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6030130961eeac38, 0x520235bc73d58e1c, x2, 552, x7)
+
+inst_348:
+// rs1_val == 0x2CFCC3964671120E and rs2_val == 0xD4B59C0536CDF8A1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2cfcc3964671120e; op2val:0xd4b59c0536cdf8a1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2cfcc3964671120e, 0xd4b59c0536cdf8a1, x2, 560, x7)
+
+inst_349:
+// rs1_val == 0x1B4C0859D26542EF and rs2_val == 0x735DC3271CE262D6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1b4c0859d26542ef; op2val:0x735dc3271ce262d6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1b4c0859d26542ef, 0x735dc3271ce262d6, x2, 568, x7)
+
+inst_350:
+// rs1_val == 0x086B6A04B6125E0D and rs2_val == 0xFAF8DFCDF33335B6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x86b6a04b6125e0d; op2val:0xfaf8dfcdf33335b6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x86b6a04b6125e0d, 0xfaf8dfcdf33335b6, x2, 576, x7)
+
+inst_351:
+// rs1_val == 0x06720C5422DC73AC and rs2_val == 0xD945BBF3E5498256
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6720c5422dc73ac; op2val:0xd945bbf3e5498256
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6720c5422dc73ac, 0xd945bbf3e5498256, x2, 584, x7)
+
+inst_352:
+// rs1_val == 0x02D51BFFE1594DC5 and rs2_val == 0x51054839EBB9C596
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2d51bffe1594dc5; op2val:0x51054839ebb9c596
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2d51bffe1594dc5, 0x51054839ebb9c596, x2, 592, x7)
+
+inst_353:
+// rs1_val == 0x01554174CDC02ECE and rs2_val == 0xEA0A668AC12F694D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1554174cdc02ece; op2val:0xea0a668ac12f694d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1554174cdc02ece, 0xea0a668ac12f694d, x2, 600, x7)
+
+inst_354:
+// rs1_val == 0x00A746A4AA785C62 and rs2_val == 0xA2592B9D32D1464E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa746a4aa785c62; op2val:0xa2592b9d32d1464e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa746a4aa785c62, 0xa2592b9d32d1464e, x2, 608, x7)
+
+inst_355:
+// rs1_val == 0x005A629624AA1735 and rs2_val == 0x53B3B0FF3DD1E044
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5a629624aa1735; op2val:0x53b3b0ff3dd1e044
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5a629624aa1735, 0x53b3b0ff3dd1e044, x2, 616, x7)
+
+inst_356:
+// rs1_val == 0x00260FDDF517E383 and rs2_val == 0x5E320F4A02E50777
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x260fddf517e383; op2val:0x5e320f4a02e50777
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x260fddf517e383, 0x5e320f4a02e50777, x2, 624, x7)
+
+inst_357:
+// rs1_val == 0x00159ECB99EDD4D2 and rs2_val == 0x05B4D7567B1FFC6A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x159ecb99edd4d2; op2val:0x5b4d7567b1ffc6a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x159ecb99edd4d2, 0x5b4d7567b1ffc6a, x2, 632, x7)
+
+inst_358:
+// rs1_val == 0x000DC63D84C955F2 and rs2_val == 0x07A04E6483B852D7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xdc63d84c955f2; op2val:0x7a04e6483b852d7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xdc63d84c955f2, 0x7a04e6483b852d7, x2, 640, x7)
+
+inst_359:
+// rs1_val == 0x0006690070C61509 and rs2_val == 0x8A8F7AEFD69F6B16
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6690070c61509; op2val:0x8a8f7aefd69f6b16
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6690070c61509, 0x8a8f7aefd69f6b16, x2, 648, x7)
+
+inst_360:
+// rs1_val == 0x0002B3DBBA6BC77D and rs2_val == 0x94B953EDB1B43D07
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2b3dbba6bc77d; op2val:0x94b953edb1b43d07
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2b3dbba6bc77d, 0x94b953edb1b43d07, x2, 656, x7)
+
+inst_361:
+// rs1_val == 0x0001BC4414881EDD and rs2_val == 0xE13A099641D812CD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1bc4414881edd; op2val:0xe13a099641d812cd
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1bc4414881edd, 0xe13a099641d812cd, x2, 664, x7)
+
+inst_362:
+// rs1_val == 0x0000F1B26111B4B6 and rs2_val == 0x9BDEB398032FBCE3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf1b26111b4b6; op2val:0x9bdeb398032fbce3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf1b26111b4b6, 0x9bdeb398032fbce3, x2, 672, x7)
+
+inst_363:
+// rs1_val == 0x0000676692A38329 and rs2_val == 0xA98A372E9FFD6A18
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x676692a38329; op2val:0xa98a372e9ffd6a18
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x676692a38329, 0xa98a372e9ffd6a18, x2, 680, x7)
+
+inst_364:
+// rs1_val == 0x0000239D5A11CCA6 and rs2_val == 0xDD0C8B9407BFC096
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x239d5a11cca6; op2val:0xdd0c8b9407bfc096
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x239d5a11cca6, 0xdd0c8b9407bfc096, x2, 688, x7)
+
+inst_365:
+// rs1_val == 0x00001FA08BCCE7CE and rs2_val == 0xEA3D9BE7F6A00758
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1fa08bcce7ce; op2val:0xea3d9be7f6a00758
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1fa08bcce7ce, 0xea3d9be7f6a00758, x2, 696, x7)
+
+inst_366:
+// rs1_val == 0x00000C1FBB01EA76 and rs2_val == 0x13446DF8128AE84A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc1fbb01ea76; op2val:0x13446df8128ae84a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc1fbb01ea76, 0x13446df8128ae84a, x2, 704, x7)
+
+inst_367:
+// rs1_val == 0x000006E3F6782942 and rs2_val == 0x7B73CCF813284C79
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6e3f6782942; op2val:0x7b73ccf813284c79
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6e3f6782942, 0x7b73ccf813284c79, x2, 712, x7)
+
+inst_368:
+// rs1_val == 0x000002FA798C06FF and rs2_val == 0xB372C56B5B8349CE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2fa798c06ff; op2val:0xb372c56b5b8349ce
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2fa798c06ff, 0xb372c56b5b8349ce, x2, 720, x7)
+
+inst_369:
+// rs1_val == 0x0000012BA82CB2CE and rs2_val == 0xEC7038C908FB09A0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x12ba82cb2ce; op2val:0xec7038c908fb09a0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x12ba82cb2ce, 0xec7038c908fb09a0, x2, 728, x7)
+
+inst_370:
+// rs1_val == 0x000000AA236EBA20 and rs2_val == 0xFB019DF47349DBC4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xaa236eba20; op2val:0xfb019df47349dbc4
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xaa236eba20, 0xfb019df47349dbc4, x2, 736, x7)
+
+inst_371:
+// rs1_val == 0x0000004A482EA761 and rs2_val == 0x1799E72821AF214A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4a482ea761; op2val:0x1799e72821af214a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4a482ea761, 0x1799e72821af214a, x2, 744, x7)
+
+inst_372:
+// rs1_val == 0x000000287219C1DB and rs2_val == 0x0BEDDB070F7A0443
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x287219c1db; op2val:0xbeddb070f7a0443
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x287219c1db, 0xbeddb070f7a0443, x2, 752, x7)
+
+inst_373:
+// rs1_val == 0x00000015BFBD7D15 and rs2_val == 0x44E9E4A511B41900
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x15bfbd7d15; op2val:0x44e9e4a511b41900
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x15bfbd7d15, 0x44e9e4a511b41900, x2, 760, x7)
+
+inst_374:
+// rs1_val == 0x0000000E47BC7549 and rs2_val == 0xEA3A0683EAD81DCD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe47bc7549; op2val:0xea3a0683ead81dcd
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe47bc7549, 0xea3a0683ead81dcd, x2, 768, x7)
+
+inst_375:
+// rs1_val == 0x000000063A782EBC and rs2_val == 0x9D42F6709DA9B14D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x63a782ebc; op2val:0x9d42f6709da9b14d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x63a782ebc, 0x9d42f6709da9b14d, x2, 776, x7)
+
+inst_376:
+// rs1_val == 0x000000024B1E943F and rs2_val == 0x119B4FE5FA285A0D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x24b1e943f; op2val:0x119b4fe5fa285a0d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x24b1e943f, 0x119b4fe5fa285a0d, x2, 784, x7)
+
+inst_377:
+// rs1_val == 0x000000016BBA8D22 and rs2_val == 0x98B20411E7A28CBD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x16bba8d22; op2val:0x98b20411e7a28cbd
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x16bba8d22, 0x98b20411e7a28cbd, x2, 792, x7)
+
+inst_378:
+// rs1_val == 0x00000000BD0840FC and rs2_val == 0x64409DDBB45F51C3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xbd0840fc; op2val:0x64409ddbb45f51c3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xbd0840fc, 0x64409ddbb45f51c3, x2, 800, x7)
+
+inst_379:
+// rs1_val == 0x000000005BEA8594 and rs2_val == 0xF6724BA08329C05B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5bea8594; op2val:0xf6724ba08329c05b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5bea8594, 0xf6724ba08329c05b, x2, 808, x7)
+
+inst_380:
+// rs1_val == 0x000000003A8137EA and rs2_val == 0x0C2282666BE49EE7
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3a8137ea; op2val:0xc2282666be49ee7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3a8137ea, 0xc2282666be49ee7, x2, 816, x7)
+
+inst_381:
+// rs1_val == 0x000000001891DD3D and rs2_val == 0xE1D7300F6361B9F8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1891dd3d; op2val:0xe1d7300f6361b9f8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1891dd3d, 0xe1d7300f6361b9f8, x2, 824, x7)
+
+inst_382:
+// rs1_val == 0x000000000BF8670E and rs2_val == 0xB9B338EB3FDF2348
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xbf8670e; op2val:0xb9b338eb3fdf2348
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xbf8670e, 0xb9b338eb3fdf2348, x2, 832, x7)
+
+inst_383:
+// rs1_val == 0x000000000711EB58 and rs2_val == 0xA2F7647A952E1B8B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x711eb58; op2val:0xa2f7647a952e1b8b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x711eb58, 0xa2f7647a952e1b8b, x2, 840, x7)
+
+inst_384:
+// rs1_val == 0x00000000028DD9F4 and rs2_val == 0x12CA3F7062DC08D6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x28dd9f4; op2val:0x12ca3f7062dc08d6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x28dd9f4, 0x12ca3f7062dc08d6, x2, 848, x7)
+
+inst_385:
+// rs1_val == 0x00000000011E7A61 and rs2_val == 0x9C3ECB54C5CEFDD8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x11e7a61; op2val:0x9c3ecb54c5cefdd8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x11e7a61, 0x9c3ecb54c5cefdd8, x2, 856, x7)
+
+inst_386:
+// rs1_val == 0x0000000000C793F6 and rs2_val == 0x36971E1B2577C1EC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc793f6; op2val:0x36971e1b2577c1ec
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc793f6, 0x36971e1b2577c1ec, x2, 864, x7)
+
+inst_387:
+// rs1_val == 0x0000000000736008 and rs2_val == 0x93B3A3D9A44F576A
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x736008; op2val:0x93b3a3d9a44f576a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x736008, 0x93b3a3d9a44f576a, x2, 872, x7)
+
+inst_388:
+// rs1_val == 0x000000000034106A and rs2_val == 0x050684BFE286852C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x34106a; op2val:0x50684bfe286852c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x34106a, 0x50684bfe286852c, x2, 880, x7)
+
+inst_389:
+// rs1_val == 0x00000000001A83B3 and rs2_val == 0x65151C401DD377BF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1a83b3; op2val:0x65151c401dd377bf
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1a83b3, 0x65151c401dd377bf, x2, 888, x7)
+
+inst_390:
+// rs1_val == 0x0000000000099A1F and rs2_val == 0x21870F0BC4FF64DE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x99a1f; op2val:0x21870f0bc4ff64de
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x99a1f, 0x21870f0bc4ff64de, x2, 896, x7)
+
+inst_391:
+// rs1_val == 0x00000000000700AF and rs2_val == 0x0F552C9402CDF2AF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x700af; op2val:0xf552c9402cdf2af
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x700af, 0xf552c9402cdf2af, x2, 904, x7)
+
+inst_392:
+// rs1_val == 0x000000000002F165 and rs2_val == 0x2274EA181E34B3F1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2f165; op2val:0x2274ea181e34b3f1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2f165, 0x2274ea181e34b3f1, x2, 912, x7)
+
+inst_393:
+// rs1_val == 0x0000000000016F3F and rs2_val == 0xF6CDB2F803E0D681
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x16f3f; op2val:0xf6cdb2f803e0d681
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x16f3f, 0xf6cdb2f803e0d681, x2, 920, x7)
+
+inst_394:
+// rs1_val == 0x000000000000B80F and rs2_val == 0x563E9BED45100358
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb80f; op2val:0x563e9bed45100358
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb80f, 0x563e9bed45100358, x2, 928, x7)
+
+inst_395:
+// rs1_val == 0x0000000000004DAA and rs2_val == 0x6B77730F65BD9ACB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x4daa; op2val:0x6b77730f65bd9acb
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x4daa, 0x6b77730f65bd9acb, x2, 936, x7)
+
+inst_396:
+// rs1_val == 0x0000000000002242 and rs2_val == 0x785116080D650372
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2242; op2val:0x785116080d650372
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2242, 0x785116080d650372, x2, 944, x7)
+
+inst_397:
+// rs1_val == 0x0000000000001AAB and rs2_val == 0x36A80BDF0023B682
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1aab; op2val:0x36a80bdf0023b682
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1aab, 0x36a80bdf0023b682, x2, 952, x7)
+
+inst_398:
+// rs1_val == 0x0000000000000A12 and rs2_val == 0x4A789CB3D8B9B45C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa12; op2val:0x4a789cb3d8b9b45c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa12, 0x4a789cb3d8b9b45c, x2, 960, x7)
+
+inst_399:
+// rs1_val == 0x000000000000065B and rs2_val == 0xC42B7170902A174F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x65b; op2val:0xc42b7170902a174f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x65b, 0xc42b7170902a174f, x2, 968, x7)
+
+inst_400:
+// rs1_val == 0x00000000000003FD and rs2_val == 0x834C687A3ACB6266
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3fd; op2val:0x834c687a3acb6266
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3fd, 0x834c687a3acb6266, x2, 976, x7)
+
+inst_401:
+// rs1_val == 0x0000000000000191 and rs2_val == 0xB53302FC154CD2AA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x191; op2val:0xb53302fc154cd2aa
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x191, 0xb53302fc154cd2aa, x2, 984, x7)
+
+inst_402:
+// rs1_val == 0x00000000000000AA and rs2_val == 0x15C1D2DFA9964AEF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xaa; op2val:0x15c1d2dfa9964aef
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xaa, 0x15c1d2dfa9964aef, x2, 992, x7)
+
+inst_403:
+// rs1_val == 0x0000000000000079 and rs2_val == 0xA3EA284D3BD03346
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x79; op2val:0xa3ea284d3bd03346
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x79, 0xa3ea284d3bd03346, x2, 1000, x7)
+
+inst_404:
+// rs1_val == 0x0000000000000026 and rs2_val == 0x76C468AEC7321CC0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x26; op2val:0x76c468aec7321cc0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x26, 0x76c468aec7321cc0, x2, 1008, x7)
+
+inst_405:
+// rs1_val == 0x0000000000000014 and rs2_val == 0xE12B2B8F30B17D0B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x14; op2val:0xe12b2b8f30b17d0b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x14, 0xe12b2b8f30b17d0b, x2, 1016, x7)
+
+inst_406:
+// rs1_val == 0x000000000000000F and rs2_val == 0x8743FEB6D4EA65D0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf; op2val:0x8743feb6d4ea65d0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf, 0x8743feb6d4ea65d0, x2, 1024, x7)
+
+inst_407:
+// rs1_val == 0x0000000000000007 and rs2_val == 0xA66B0D389D95847E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7; op2val:0xa66b0d389d95847e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7, 0xa66b0d389d95847e, x2, 1032, x7)
+
+inst_408:
+// rs1_val == 0x0000000000000002 and rs2_val == 0x2FA91425CB008853
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2; op2val:0x2fa91425cb008853
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2, 0x2fa91425cb008853, x2, 1040, x7)
+
+inst_409:
+// rs1_val == 0x0000000000000001 and rs2_val == 0x309D6B79965EDA32
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1; op2val:0x309d6b79965eda32
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1, 0x309d6b79965eda32, x2, 1048, x7)
+
+inst_410:
+// rs1_val == 0x0000000000000000 and rs2_val == 0x7734D7C1C7FDE805
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x0; op2val:0x7734d7c1c7fde805
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x0, 0x7734d7c1c7fde805, x2, 1056, x7)
+
+inst_411:
+// rs2_val == 0x2DC86F6D7443F200 and rs1_val == 0x2BB9DAA6AA01E126
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2bb9daa6aa01e126; op2val:0x2dc86f6d7443f200
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2bb9daa6aa01e126, 0x2dc86f6d7443f200, x2, 1064, x7)
+
+inst_412:
+// rs2_val == 0xB2DE7072DAB0001E and rs1_val == 0xF01528EC3591DB10
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf01528ec3591db10; op2val:0xb2de7072dab0001e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf01528ec3591db10, 0xb2de7072dab0001e, x2, 1072, x7)
+
+inst_413:
+// rs2_val == 0xDABFC6D78901096D and rs1_val == 0x74A8EAEC656224E9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x74a8eaec656224e9; op2val:0xdabfc6d78901096d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x74a8eaec656224e9, 0xdabfc6d78901096d, x2, 1080, x7)
+
+inst_414:
+// rs2_val == 0xE3FF5EC4DCF0C656 and rs1_val == 0xFCC1650F30D268BD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfcc1650f30d268bd; op2val:0xe3ff5ec4dcf0c656
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfcc1650f30d268bd, 0xe3ff5ec4dcf0c656, x2, 1088, x7)
+
+inst_415:
+// rs2_val == 0xF7FE676EB828FD34 and rs1_val == 0x61D4C262D69F32E6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x61d4c262d69f32e6; op2val:0xf7fe676eb828fd34
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x61d4c262d69f32e6, 0xf7fe676eb828fd34, x2, 1096, x7)
+
+inst_416:
+// rs2_val == 0xFBDE6F8E2D79E311 and rs1_val == 0xBEE2EE6EF38E735F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xbee2ee6ef38e735f; op2val:0xfbde6f8e2d79e311
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xbee2ee6ef38e735f, 0xfbde6f8e2d79e311, x2, 1104, x7)
+
+inst_417:
+// rs2_val == 0xFD5D359F1A5928F7 and rs1_val == 0x6D80FEEE74BC1570
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6d80feee74bc1570; op2val:0xfd5d359f1a5928f7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6d80feee74bc1570, 0xfd5d359f1a5928f7, x2, 1112, x7)
+
+inst_418:
+// rs2_val == 0xFEB171E36F6DA856 and rs1_val == 0xEFB5B593B918B7FA
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xefb5b593b918b7fa; op2val:0xfeb171e36f6da856
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xefb5b593b918b7fa, 0xfeb171e36f6da856, x2, 1120, x7)
+
+inst_419:
+// rs2_val == 0xFF4F4D100880B668 and rs1_val == 0xEE412DA70282F24D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xee412da70282f24d; op2val:0xff4f4d100880b668
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xee412da70282f24d, 0xff4f4d100880b668, x2, 1128, x7)
+
+inst_420:
+// rs2_val == 0xFFA80C91E9E678BB and rs1_val == 0x09322235B8B00CB6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9322235b8b00cb6; op2val:0xffa80c91e9e678bb
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9322235b8b00cb6, 0xffa80c91e9e678bb, x2, 1136, x7)
+
+inst_421:
+// rs2_val == 0xFFDB13919C23BDB8 and rs1_val == 0xC9763989EB74F8BB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc9763989eb74f8bb; op2val:0xffdb13919c23bdb8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc9763989eb74f8bb, 0xffdb13919c23bdb8, x2, 1144, x7)
+
+inst_422:
+// rs2_val == 0xFFE25182F83106C9 and rs1_val == 0x0C64D280859B4C3F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc64d280859b4c3f; op2val:0xffe25182f83106c9
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc64d280859b4c3f, 0xffe25182f83106c9, x2, 1152, x7)
+
+inst_423:
+// rs2_val == 0xFFF0FFC40E22C1E0 and rs1_val == 0xAC79FC270DA5F55F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xac79fc270da5f55f; op2val:0xfff0ffc40e22c1e0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xac79fc270da5f55f, 0xfff0ffc40e22c1e0, x2, 1160, x7)
+
+inst_424:
+// rs2_val == 0xFFF8E49CE41BA01B and rs1_val == 0x513EE651F044106F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x513ee651f044106f; op2val:0xfff8e49ce41ba01b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x513ee651f044106f, 0xfff8e49ce41ba01b, x2, 1168, x7)
+
+inst_425:
+// rs2_val == 0xFFFCD94D8514F49D and rs1_val == 0x612FAF5E8E73758E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x612faf5e8e73758e; op2val:0xfffcd94d8514f49d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x612faf5e8e73758e, 0xfffcd94d8514f49d, x2, 1176, x7)
+
+inst_426:
+// rs2_val == 0xFFFEE5CEB3B2FA55 and rs1_val == 0x36334245FB566E3E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x36334245fb566e3e; op2val:0xfffee5ceb3b2fa55
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x36334245fb566e3e, 0xfffee5ceb3b2fa55, x2, 1184, x7)
+
+inst_427:
+// rs2_val == 0xFFFF34A37D61CE76 and rs1_val == 0x2A9CC14F63ADCDBB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2a9cc14f63adcdbb; op2val:0xffff34a37d61ce76
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2a9cc14f63adcdbb, 0xffff34a37d61ce76, x2, 1192, x7)
+
+inst_428:
+// rs2_val == 0xFFFFB7E981B4D2D8 and rs1_val == 0x279EE9737825D0F4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x279ee9737825d0f4; op2val:0xffffb7e981b4d2d8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x279ee9737825d0f4, 0xffffb7e981b4d2d8, x2, 1200, x7)
+
+inst_429:
+// rs2_val == 0xFFFFC1B69BFA3293 and rs1_val == 0x2DD60261C5F0A710
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2dd60261c5f0a710; op2val:0xffffc1b69bfa3293
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2dd60261c5f0a710, 0xffffc1b69bfa3293, x2, 1208, x7)
+
+inst_430:
+// rs2_val == 0xFFFFEB07E778555D and rs1_val == 0x071C80A02407E26D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x71c80a02407e26d; op2val:0xffffeb07e778555d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x71c80a02407e26d, 0xffffeb07e778555d, x2, 1216, x7)
+
+inst_431:
+// rs2_val == 0xFFFFF54D4CAE8B6C and rs1_val == 0x76B4A3DDD9E0E7FE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x76b4a3ddd9e0e7fe; op2val:0xfffff54d4cae8b6c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x76b4a3ddd9e0e7fe, 0xfffff54d4cae8b6c, x2, 1224, x7)
+
+inst_432:
+// rs2_val == 0xFFFFF905DBC1F2B1 and rs1_val == 0x1D95CDB0B5C06C9D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1d95cdb0b5c06c9d; op2val:0xfffff905dbc1f2b1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1d95cdb0b5c06c9d, 0xfffff905dbc1f2b1, x2, 1232, x7)
+
+inst_433:
+// rs2_val == 0xFFFFFCC036C35DC6 and rs1_val == 0x6B3D9C59D788D65B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6b3d9c59d788d65b; op2val:0xfffffcc036c35dc6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6b3d9c59d788d65b, 0xfffffcc036c35dc6, x2, 1240, x7)
+
+inst_434:
+// rs2_val == 0xFFFFFE5BA2465D2A and rs1_val == 0x891B827336015D9B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x891b827336015d9b; op2val:0xfffffe5ba2465d2a
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x891b827336015d9b, 0xfffffe5ba2465d2a, x2, 1248, x7)
+
+inst_435:
+// rs2_val == 0xFFFFFF0FCF4C7D09 and rs1_val == 0xB68A272A255C09E0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb68a272a255c09e0; op2val:0xffffff0fcf4c7d09
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb68a272a255c09e0, 0xffffff0fcf4c7d09, x2, 1256, x7)
+
+inst_436:
+// rs2_val == 0xFFFFFF8D49AAE370 and rs1_val == 0xCE80F7B19E49C4A1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xce80f7b19e49c4a1; op2val:0xffffff8d49aae370
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xce80f7b19e49c4a1, 0xffffff8d49aae370, x2, 1264, x7)
+
+inst_437:
+// rs2_val == 0xFFFFFFDF2752AA64 and rs1_val == 0x897D9FC51AC24829
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x897d9fc51ac24829; op2val:0xffffffdf2752aa64
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x897d9fc51ac24829, 0xffffffdf2752aa64, x2, 1272, x7)
+
+inst_438:
+// rs2_val == 0xFFFFFFEE40D0E5E8 and rs1_val == 0x75F32B5017550D1C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x75f32b5017550d1c; op2val:0xffffffee40d0e5e8
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x75f32b5017550d1c, 0xffffffee40d0e5e8, x2, 1280, x7)
+
+inst_439:
+// rs2_val == 0xFFFFFFF3A0A1C6F0 and rs1_val == 0x239853F9120FF957
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x239853f9120ff957; op2val:0xfffffff3a0a1c6f0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x239853f9120ff957, 0xfffffff3a0a1c6f0, x2, 1288, x7)
+
+inst_440:
+// rs2_val == 0xFFFFFFFA748CA591 and rs1_val == 0x08D6920B2F8D1335
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x8d6920b2f8d1335; op2val:0xfffffffa748ca591
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x8d6920b2f8d1335, 0xfffffffa748ca591, x2, 1296, x7)
+
+inst_441:
+// rs2_val == 0xFFFFFFFC9FC745D1 and rs1_val == 0x94038F336056F5E8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x94038f336056f5e8; op2val:0xfffffffc9fc745d1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x94038f336056f5e8, 0xfffffffc9fc745d1, x2, 1304, x7)
+
+inst_442:
+// rs2_val == 0xFFFFFFFEA97CBF85 and rs1_val == 0xA9632E3DBD0070AE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa9632e3dbd0070ae; op2val:0xfffffffea97cbf85
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa9632e3dbd0070ae, 0xfffffffea97cbf85, x2, 1312, x7)
+
+inst_443:
+// rs2_val == 0xFFFFFFFF1FE84EBD and rs1_val == 0x1141B67F62A12347
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1141b67f62a12347; op2val:0xffffffff1fe84ebd
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1141b67f62a12347, 0xffffffff1fe84ebd, x2, 1320, x7)
+
+inst_444:
+// rs2_val == 0xFFFFFFFFAF8957F9 and rs1_val == 0xFAA97965C478EF2D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfaa97965c478ef2d; op2val:0xffffffffaf8957f9
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfaa97965c478ef2d, 0xffffffffaf8957f9, x2, 1328, x7)
+
+inst_445:
+// rs2_val == 0xFFFFFFFFC165F0F1 and rs1_val == 0xD6AC851F07155A89
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd6ac851f07155a89; op2val:0xffffffffc165f0f1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd6ac851f07155a89, 0xffffffffc165f0f1, x2, 1336, x7)
+
+inst_446:
+// rs2_val == 0xFFFFFFFFEFADEA82 and rs1_val == 0x07F5E51DC2CC1D38
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x7f5e51dc2cc1d38; op2val:0xffffffffefadea82
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x7f5e51dc2cc1d38, 0xffffffffefadea82, x2, 1344, x7)
+
+inst_447:
+// rs2_val == 0xFFFFFFFFF7FCC18C and rs1_val == 0x9875BAD195A6BEA9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9875bad195a6bea9; op2val:0xfffffffff7fcc18c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9875bad195a6bea9, 0xfffffffff7fcc18c, x2, 1352, x7)
+
+inst_448:
+// rs2_val == 0xFFFFFFFFF8D3E5F5 and rs1_val == 0x339863C4D216EEA8
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x339863c4d216eea8; op2val:0xfffffffff8d3e5f5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x339863c4d216eea8, 0xfffffffff8d3e5f5, x2, 1360, x7)
+
+inst_449:
+// rs2_val == 0xFFFFFFFFFC15B0F7 and rs1_val == 0xC988A7CCFC9A02B1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc988a7ccfc9a02b1; op2val:0xfffffffffc15b0f7
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc988a7ccfc9a02b1, 0xfffffffffc15b0f7, x2, 1368, x7)
+
+inst_450:
+// rs2_val == 0xFFFFFFFFFEAC3217 and rs1_val == 0x5BC1C3660C20B9EE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5bc1c3660c20b9ee; op2val:0xfffffffffeac3217
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5bc1c3660c20b9ee, 0xfffffffffeac3217, x2, 1376, x7)
+
+inst_451:
+// rs2_val == 0xFFFFFFFFFF5BA80C and rs1_val == 0x132A717606AEC150
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x132a717606aec150; op2val:0xffffffffff5ba80c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x132a717606aec150, 0xffffffffff5ba80c, x2, 1384, x7)
+
+inst_452:
+// rs2_val == 0xFFFFFFFFFF87984F and rs1_val == 0x498DB88F37C4C6B9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x498db88f37c4c6b9; op2val:0xffffffffff87984f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x498db88f37c4c6b9, 0xffffffffff87984f, x2, 1392, x7)
+
+inst_453:
+// rs2_val == 0xFFFFFFFFFFCE1BBC and rs1_val == 0xC313BC1FA311D81E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xc313bc1fa311d81e; op2val:0xffffffffffce1bbc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xc313bc1fa311d81e, 0xffffffffffce1bbc, x2, 1400, x7)
+
+inst_454:
+// rs2_val == 0xFFFFFFFFFFEF1D76 and rs1_val == 0xB183406662EBF954
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb183406662ebf954; op2val:0xffffffffffef1d76
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb183406662ebf954, 0xffffffffffef1d76, x2, 1408, x7)
+
+inst_455:
+// rs2_val == 0xFFFFFFFFFFF3AE62 and rs1_val == 0xAA467BBE0320DF72
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xaa467bbe0320df72; op2val:0xfffffffffff3ae62
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xaa467bbe0320df72, 0xfffffffffff3ae62, x2, 1416, x7)
+
+inst_456:
+// rs2_val == 0xFFFFFFFFFFF81475 and rs1_val == 0x9B9AAAD179A6551F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9b9aaad179a6551f; op2val:0xfffffffffff81475
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9b9aaad179a6551f, 0xfffffffffff81475, x2, 1424, x7)
+
+inst_457:
+// rs2_val == 0xFFFFFFFFFFFCE9A5 and rs1_val == 0xE4367CCAD9716F2C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe4367ccad9716f2c; op2val:0xfffffffffffce9a5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe4367ccad9716f2c, 0xfffffffffffce9a5, x2, 1432, x7)
+
+inst_458:
+// rs2_val == 0xFFFFFFFFFFFE5770 and rs1_val == 0x3C2C0E921E4E0FAD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x3c2c0e921e4e0fad; op2val:0xfffffffffffe5770
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x3c2c0e921e4e0fad, 0xfffffffffffe5770, x2, 1440, x7)
+
+inst_459:
+// rs2_val == 0xFFFFFFFFFFFF4877 and rs1_val == 0xB264D045E3D4DD27
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb264d045e3d4dd27; op2val:0xffffffffffff4877
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb264d045e3d4dd27, 0xffffffffffff4877, x2, 1448, x7)
+
+inst_460:
+// rs2_val == 0xFFFFFFFFFFFFB0B3 and rs1_val == 0x6BAEEA37B4C8839B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6baeea37b4c8839b; op2val:0xffffffffffffb0b3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6baeea37b4c8839b, 0xffffffffffffb0b3, x2, 1456, x7)
+
+inst_461:
+// rs2_val == 0xFFFFFFFFFFFFDD0F and rs1_val == 0xE0F003E954084572
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe0f003e954084572; op2val:0xffffffffffffdd0f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe0f003e954084572, 0xffffffffffffdd0f, x2, 1464, x7)
+
+inst_462:
+// rs2_val == 0xFFFFFFFFFFFFE1E2 and rs1_val == 0xF69B0AE6C099BC4C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf69b0ae6c099bc4c; op2val:0xffffffffffffe1e2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf69b0ae6c099bc4c, 0xffffffffffffe1e2, x2, 1472, x7)
+
+inst_463:
+// rs2_val == 0xFFFFFFFFFFFFF4E3 and rs1_val == 0x29ADE05F7DDDCC72
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x29ade05f7dddcc72; op2val:0xfffffffffffff4e3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x29ade05f7dddcc72, 0xfffffffffffff4e3, x2, 1480, x7)
+
+inst_464:
+// rs2_val == 0xFFFFFFFFFFFFFB86 and rs1_val == 0x13E6D9036DC3CCEE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x13e6d9036dc3ccee; op2val:0xfffffffffffffb86
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x13e6d9036dc3ccee, 0xfffffffffffffb86, x2, 1488, x7)
+
+inst_465:
+// rs2_val == 0xFFFFFFFFFFFFFDC4 and rs1_val == 0x0AF2EE97D9ADF5D6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xaf2ee97d9adf5d6; op2val:0xfffffffffffffdc4
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xaf2ee97d9adf5d6, 0xfffffffffffffdc4, x2, 1496, x7)
+
+inst_466:
+// rs2_val == 0xFFFFFFFFFFFFFEC3 and rs1_val == 0x2A5DC0A00D453CDF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x2a5dc0a00d453cdf; op2val:0xfffffffffffffec3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x2a5dc0a00d453cdf, 0xfffffffffffffec3, x2, 1504, x7)
+
+inst_467:
+// rs2_val == 0xFFFFFFFFFFFFFF3F and rs1_val == 0xE6A4D5CACB293EBD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe6a4d5cacb293ebd; op2val:0xffffffffffffff3f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe6a4d5cacb293ebd, 0xffffffffffffff3f, x2, 1512, x7)
+
+inst_468:
+// rs2_val == 0xFFFFFFFFFFFFFFB1 and rs1_val == 0xA422AF666ED26006
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xa422af666ed26006; op2val:0xffffffffffffffb1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xa422af666ed26006, 0xffffffffffffffb1, x2, 1520, x7)
+
+inst_469:
+// rs2_val == 0xFFFFFFFFFFFFFFD6 and rs1_val == 0x755961A98347DDF5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x755961a98347ddf5; op2val:0xffffffffffffffd6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x755961a98347ddf5, 0xffffffffffffffd6, x2, 1528, x7)
+
+inst_470:
+// rs2_val == 0xFFFFFFFFFFFFFFEF and rs1_val == 0x9AAACD63FC6C3192
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9aaacd63fc6c3192; op2val:0xffffffffffffffef
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9aaacd63fc6c3192, 0xffffffffffffffef, x2, 1536, x7)
+
+inst_471:
+// rs2_val == 0xFFFFFFFFFFFFFFF4 and rs1_val == 0x9C1F741F7886E3EB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x9c1f741f7886e3eb; op2val:0xfffffffffffffff4
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x9c1f741f7886e3eb, 0xfffffffffffffff4, x2, 1544, x7)
+
+inst_472:
+// rs2_val == 0xFFFFFFFFFFFFFFFB and rs1_val == 0x5902A9DBE1832AB6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x5902a9dbe1832ab6; op2val:0xfffffffffffffffb
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x5902a9dbe1832ab6, 0xfffffffffffffffb, x2, 1552, x7)
+
+inst_473:
+// rs2_val == 0xFFFFFFFFFFFFFFFC and rs1_val == 0x1694BD33596F5F89
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1694bd33596f5f89; op2val:0xfffffffffffffffc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1694bd33596f5f89, 0xfffffffffffffffc, x2, 1560, x7)
+
+inst_474:
+// rs2_val == 0xFFFFFFFFFFFFFFFE and rs1_val == 0xDD4EC4D8CA11073D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xdd4ec4d8ca11073d; op2val:0xfffffffffffffffe
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xdd4ec4d8ca11073d, 0xfffffffffffffffe, x2, 1568, x7)
+
+inst_475:
+// rs2_val == 0xFFFFFFFFFFFFFFFF and rs1_val == 0xEF677106DC17AE6E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xef677106dc17ae6e; op2val:0xffffffffffffffff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xef677106dc17ae6e, 0xffffffffffffffff, x2, 1576, x7)
+
+inst_476:
+// rs1_val == 0x313971C0A85AB567 and rs2_val == 0x0CD5D8E29408AD7D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x313971c0a85ab567; op2val:0xcd5d8e29408ad7d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x313971c0a85ab567, 0xcd5d8e29408ad7d, x2, 1584, x7)
+
+inst_477:
+// rs1_val == 0xAEC1527485D77C9B and rs2_val == 0xDEC85B0D53A27EE1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xaec1527485d77c9b; op2val:0xdec85b0d53a27ee1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xaec1527485d77c9b, 0xdec85b0d53a27ee1, x2, 1592, x7)
+
+inst_478:
+// rs1_val == 0xD9157BEE56DF45DE and rs2_val == 0x93017690E356529C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd9157bee56df45de; op2val:0x93017690e356529c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd9157bee56df45de, 0x93017690e356529c, x2, 1600, x7)
+
+inst_479:
+// rs1_val == 0xE9907C4BEA37DC21 and rs2_val == 0x647981B7041BBAAB
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xe9907c4bea37dc21; op2val:0x647981b7041bbaab
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xe9907c4bea37dc21, 0x647981b7041bbaab, x2, 1608, x7)
+
+inst_480:
+// rs1_val == 0xF1CCAECF31150919 and rs2_val == 0xFBDF8F979267ACB5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xf1ccaecf31150919; op2val:0xfbdf8f979267acb5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xf1ccaecf31150919, 0xfbdf8f979267acb5, x2, 1616, x7)
+
+inst_481:
+// rs1_val == 0xFAB2993A91ED6C94 and rs2_val == 0xF37E27A312EA67E4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfab2993a91ed6c94; op2val:0xf37e27a312ea67e4
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfab2993a91ed6c94, 0xf37e27a312ea67e4, x2, 1624, x7)
+
+inst_482:
+// rs1_val == 0xFC6F9F6B4EC6F18C and rs2_val == 0x0DA64FCFEF8C60C0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfc6f9f6b4ec6f18c; op2val:0xda64fcfef8c60c0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfc6f9f6b4ec6f18c, 0xda64fcfef8c60c0, x2, 1632, x7)
+
+inst_483:
+// rs1_val == 0xFE11D383484641F6 and rs2_val == 0x3DA82C982FB5A758
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfe11d383484641f6; op2val:0x3da82c982fb5a758
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfe11d383484641f6, 0x3da82c982fb5a758, x2, 1640, x7)
+
+inst_484:
+// rs1_val == 0xFF0D9D6012E91176 and rs2_val == 0x9C3D087C65835BDF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xff0d9d6012e91176; op2val:0x9c3d087c65835bdf
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xff0d9d6012e91176, 0x9c3d087c65835bdf, x2, 1648, x7)
+
+inst_485:
+// rs1_val == 0xFFBE66B1042D678A and rs2_val == 0xA6C5E21453E1E6BC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffbe66b1042d678a; op2val:0xa6c5e21453e1e6bc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffbe66b1042d678a, 0xa6c5e21453e1e6bc, x2, 1656, x7)
+
+inst_486:
+// rs1_val == 0xFFD1F3AAB87CE2A6 and rs2_val == 0xD6220B4FBBC9DF37
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffd1f3aab87ce2a6; op2val:0xd6220b4fbbc9df37
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffd1f3aab87ce2a6, 0xd6220b4fbbc9df37, x2, 1664, x7)
+
+inst_487:
+// rs1_val == 0xFFEB78CC9651EE66 and rs2_val == 0xFE0A9C6C9A592829
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffeb78cc9651ee66; op2val:0xfe0a9c6c9a592829
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffeb78cc9651ee66, 0xfe0a9c6c9a592829, x2, 1672, x7)
+
+inst_488:
+// rs1_val == 0xFFF6F2FC7B8B7233 and rs2_val == 0xDA70525A725F3A8F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfff6f2fc7b8b7233; op2val:0xda70525a725f3a8f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfff6f2fc7b8b7233, 0xda70525a725f3a8f, x2, 1680, x7)
+
+inst_489:
+// rs1_val == 0xFFFA3D4FA3B633AC and rs2_val == 0xB9FEF1D65956B39D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffa3d4fa3b633ac; op2val:0xb9fef1d65956b39d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffa3d4fa3b633ac, 0xb9fef1d65956b39d, x2, 1688, x7)
+
+inst_490:
+// rs1_val == 0xFFFD116081ED75E8 and rs2_val == 0x67913217437CBC41
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffd116081ed75e8; op2val:0x67913217437cbc41
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffd116081ed75e8, 0x67913217437cbc41, x2, 1696, x7)
+
+inst_491:
+// rs1_val == 0xFFFEB3BEA0FBC248 and rs2_val == 0x81AA70AC4B43AD85
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffeb3bea0fbc248; op2val:0x81aa70ac4b43ad85
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffeb3bea0fbc248, 0x81aa70ac4b43ad85, x2, 1704, x7)
+
+inst_492:
+// rs1_val == 0xFFFF2DD55C37849B and rs2_val == 0xC26801926C967B0E
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffff2dd55c37849b; op2val:0xc26801926c967b0e
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffff2dd55c37849b, 0xc26801926c967b0e, x2, 1712, x7)
+
+inst_493:
+// rs1_val == 0xFFFFAE62C5B3E01C and rs2_val == 0x5916D2810E24D9CC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffae62c5b3e01c; op2val:0x5916d2810e24d9cc
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffae62c5b3e01c, 0x5916d2810e24d9cc, x2, 1720, x7)
+
+inst_494:
+// rs1_val == 0xFFFFC75235A7EFC1 and rs2_val == 0x3322358CA6FABA7B
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffc75235a7efc1; op2val:0x3322358ca6faba7b
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffc75235a7efc1, 0x3322358ca6faba7b, x2, 1728, x7)
+
+inst_495:
+// rs1_val == 0xFFFFE41C44115B05 and rs2_val == 0xA08B84F3C86342C2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffe41c44115b05; op2val:0xa08b84f3c86342c2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffe41c44115b05, 0xa08b84f3c86342c2, x2, 1736, x7)
+
+inst_496:
+// rs1_val == 0xFFFFF59572976012 and rs2_val == 0x8E368CE0BE5265F3
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffff59572976012; op2val:0x8e368ce0be5265f3
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffff59572976012, 0x8e368ce0be5265f3, x2, 1744, x7)
+
+inst_497:
+// rs1_val == 0xFFFFF9E2E3356CC4 and rs2_val == 0xB8F4169F85BF95C0
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffff9e2e3356cc4; op2val:0xb8f4169f85bf95c0
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffff9e2e3356cc4, 0xb8f4169f85bf95c0, x2, 1752, x7)
+
+inst_498:
+// rs1_val == 0xFFFFFC47FC7C6D0B and rs2_val == 0xFFEC35FEAF334E15
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffc47fc7c6d0b; op2val:0xffec35feaf334e15
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffc47fc7c6d0b, 0xffec35feaf334e15, x2, 1760, x7)
+
+inst_499:
+// rs1_val == 0xFFFFFE96FC6113A4 and rs2_val == 0x6D3F408B31D4FF08
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffe96fc6113a4; op2val:0x6d3f408b31d4ff08
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffe96fc6113a4, 0x6d3f408b31d4ff08, x2, 1768, x7)
+
+inst_500:
+// rs1_val == 0xFFFFFF3F985A9EF1 and rs2_val == 0xC96EFDC4EB6992D5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffff3f985a9ef1; op2val:0xc96efdc4eb6992d5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffff3f985a9ef1, 0xc96efdc4eb6992d5, x2, 1776, x7)
+
+inst_501:
+// rs1_val == 0xFFFFFFA4FB37BEC9 and rs2_val == 0x242A809B7A3209FE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffa4fb37bec9; op2val:0x242a809b7a3209fe
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffa4fb37bec9, 0x242a809b7a3209fe, x2, 1784, x7)
+
+inst_502:
+// rs1_val == 0xFFFFFFC50BD61D6D and rs2_val == 0xF65E7737FBD2570D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffc50bd61d6d; op2val:0xf65e7737fbd2570d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffc50bd61d6d, 0xf65e7737fbd2570d, x2, 1792, x7)
+
+inst_503:
+// rs1_val == 0xFFFFFFE96F738905 and rs2_val == 0xE380A1764A104E66
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffe96f738905; op2val:0xe380a1764a104e66
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffe96f738905, 0xe380a1764a104e66, x2, 1800, x7)
+
+inst_504:
+// rs1_val == 0xFFFFFFF1AFE08A14 and rs2_val == 0xF65CF3F31DCACF74
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffff1afe08a14; op2val:0xf65cf3f31dcacf74
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffff1afe08a14, 0xf65cf3f31dcacf74, x2, 1808, x7)
+
+inst_505:
+// rs1_val == 0xFFFFFFFBBD59213F and rs2_val == 0x9E7E1FC352B42EFF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffbbd59213f; op2val:0x9e7e1fc352b42eff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffbbd59213f, 0x9e7e1fc352b42eff, x2, 1816, x7)
+
+inst_506:
+// rs1_val == 0xFFFFFFFDA6478A56 and rs2_val == 0x85FCD601E8D7A714
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffda6478a56; op2val:0x85fcd601e8d7a714
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffda6478a56, 0x85fcd601e8d7a714, x2, 1824, x7)
+
+inst_507:
+// rs1_val == 0xFFFFFFFEB9E93D53 and rs2_val == 0x6C5E1578754F9B96
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffeb9e93d53; op2val:0x6c5e1578754f9b96
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffeb9e93d53, 0x6c5e1578754f9b96, x2, 1832, x7)
+
+inst_508:
+// rs1_val == 0xFFFFFFFF75697302 and rs2_val == 0x72745307EC325EEC
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff75697302; op2val:0x72745307ec325eec
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffff75697302, 0x72745307ec325eec, x2, 1840, x7)
+
+inst_509:
+// rs1_val == 0xFFFFFFFF955D1CE8 and rs2_val == 0x7C2C966DCCADB61F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffff955d1ce8; op2val:0x7c2c966dccadb61f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffff955d1ce8, 0x7c2c966dccadb61f, x2, 1848, x7)
+
+inst_510:
+// rs1_val == 0xFFFFFFFFD7BE0830 and rs2_val == 0x9BB4752D1BD775C5
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffd7be0830; op2val:0x9bb4752d1bd775c5
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffd7be0830, 0x9bb4752d1bd775c5, x2, 1856, x7)
+
+inst_511:
+// rs1_val == 0xFFFFFFFFE046AB61 and rs2_val == 0x0CF25923109FF475
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffe046ab61; op2val:0xcf25923109ff475
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffe046ab61, 0xcf25923109ff475, x2, 1864, x7)
+
+inst_512:
+// rs1_val == 0xFFFFFFFFF14135A5 and rs2_val == 0xDF3C45B4090A96C9
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffff14135a5; op2val:0xdf3c45b4090a96c9
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffff14135a5, 0xdf3c45b4090a96c9, x2, 1872, x7)
+
+inst_513:
+// rs1_val == 0xFFFFFFFFFBA1A6CB and rs2_val == 0x8F0846A22A71A2AD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffba1a6cb; op2val:0x8f0846a22a71a2ad
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffba1a6cb, 0x8f0846a22a71a2ad, x2, 1880, x7)
+
+inst_514:
+// rs1_val == 0xFFFFFFFFFC9E9033 and rs2_val == 0x66B072B9E5E290BE
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffc9e9033; op2val:0x66b072b9e5e290be
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffc9e9033, 0x66b072b9e5e290be, x2, 1888, x7)
+
+inst_515:
+// rs1_val == 0xFFFFFFFFFE238B6B and rs2_val == 0x2A933AD31011EEB4
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffe238b6b; op2val:0x2a933ad31011eeb4
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffe238b6b, 0x2a933ad31011eeb4, x2, 1896, x7)
+
+inst_516:
+// rs1_val == 0xFFFFFFFFFF7D8180 and rs2_val == 0x8525E8A8458DA5EF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff7d8180; op2val:0x8525e8a8458da5ef
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffff7d8180, 0x8525e8a8458da5ef, x2, 1904, x7)
+
+inst_517:
+// rs1_val == 0xFFFFFFFFFF832E3F and rs2_val == 0x9535971C67A07B54
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffff832e3f; op2val:0x9535971c67a07b54
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffff832e3f, 0x9535971c67a07b54, x2, 1912, x7)
+
+inst_518:
+// rs1_val == 0xFFFFFFFFFFC77CDC and rs2_val == 0x3E1C852151C5B8B2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffc77cdc; op2val:0x3e1c852151c5b8b2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffc77cdc, 0x3e1c852151c5b8b2, x2, 1920, x7)
+
+inst_519:
+// rs1_val == 0xFFFFFFFFFFE22746 and rs2_val == 0xB66B32848B7B5378
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffe22746; op2val:0xb66b32848b7b5378
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffe22746, 0xb66b32848b7b5378, x2, 1928, x7)
+
+inst_520:
+// rs1_val == 0xFFFFFFFFFFF20599 and rs2_val == 0x53FBFF6C58FA6E1C
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffff20599; op2val:0x53fbff6c58fa6e1c
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffff20599, 0x53fbff6c58fa6e1c, x2, 1936, x7)
+
+inst_521:
+// rs1_val == 0xFFFFFFFFFFFBE2C6 and rs2_val == 0xC70AFC922C9F7296
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffbe2c6; op2val:0xc70afc922c9f7296
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffbe2c6, 0xc70afc922c9f7296, x2, 1944, x7)
+
+inst_522:
+// rs1_val == 0xFFFFFFFFFFFC39A2 and rs2_val == 0xDD68F2012DAF94C1
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffc39a2; op2val:0xdd68f2012daf94c1
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffc39a2, 0xdd68f2012daf94c1, x2, 1952, x7)
+
+inst_523:
+// rs1_val == 0xFFFFFFFFFFFED06B and rs2_val == 0x7213516D6A013380
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffed06b; op2val:0x7213516d6a013380
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffed06b, 0x7213516d6a013380, x2, 1960, x7)
+
+inst_524:
+// rs1_val == 0xFFFFFFFFFFFF5EA2 and rs2_val == 0x18BB28E9C5EC6148
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff5ea2; op2val:0x18bb28e9c5ec6148
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffff5ea2, 0x18bb28e9c5ec6148, x2, 1968, x7)
+
+inst_525:
+// rs1_val == 0xFFFFFFFFFFFF8647 and rs2_val == 0x265039F699EF1857
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffff8647; op2val:0x265039f699ef1857
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffff8647, 0x265039f699ef1857, x2, 1976, x7)
+
+inst_526:
+// rs1_val == 0xFFFFFFFFFFFFC823 and rs2_val == 0x14B91C79DAE98554
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffc823; op2val:0x14b91c79dae98554
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffffc823, 0x14b91c79dae98554, x2, 1984, x7)
+
+inst_527:
+// rs1_val == 0xFFFFFFFFFFFFEDB9 and rs2_val == 0x0973E89C3D061437
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffedb9; op2val:0x973e89c3d061437
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffffedb9, 0x973e89c3d061437, x2, 1992, x7)
+
+inst_528:
+// rs1_val == 0xFFFFFFFFFFFFF576 and rs2_val == 0xD798C9CF280B11FD
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffff576; op2val:0xd798c9cf280b11fd
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffff576, 0xd798c9cf280b11fd, x2, 2000, x7)
+
+inst_529:
+// rs1_val == 0xFFFFFFFFFFFFFADF and rs2_val == 0x95A4D257A7298C66
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffadf; op2val:0x95a4d257a7298c66
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffadf, 0x95a4d257a7298c66, x2, 2008, x7)
+
+inst_530:
+// rs1_val == 0xFFFFFFFFFFFFFD7F and rs2_val == 0x735C076B8C8A18B2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffd7f; op2val:0x735c076b8c8a18b2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffd7f, 0x735c076b8c8a18b2, x2, 2016, x7)
+
+inst_531:
+// rs1_val == 0xFFFFFFFFFFFFFEE4 and rs2_val == 0x894DEAB44D88450F
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffee4; op2val:0x894deab44d88450f
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffee4, 0x894deab44d88450f, x2, 2024, x7)
+
+inst_532:
+// rs1_val == 0xFFFFFFFFFFFFFF11 and rs2_val == 0x953B00B00B54AA22
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff11; op2val:0x953b00b00b54aa22
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff11, 0x953b00b00b54aa22, x2, 2032, x7)
+
+inst_533:
+// rs1_val == 0xFFFFFFFFFFFFFF8B and rs2_val == 0xF829D29F3D4806C2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffff8b; op2val:0xf829d29f3d4806c2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffffff8b, 0xf829d29f3d4806c2, x2, 2040, x7)
+RVTEST_SIGBASE( x2,signature_x2_2)
+
+inst_534:
+// rs1_val == 0xFFFFFFFFFFFFFFCD and rs2_val == 0xA96EC2B34D984BFF
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffcd; op2val:0xa96ec2b34d984bff
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffcd, 0xa96ec2b34d984bff, x2, 0, x7)
+
+inst_535:
+// rs1_val == 0xFFFFFFFFFFFFFFE0 and rs2_val == 0x432779EEACCA7F0D
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xffffffffffffffe0; op2val:0x432779eeacca7f0d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xffffffffffffffe0, 0x432779eeacca7f0d, x2, 8, x7)
+
+inst_536:
+// rs1_val == 0xFFFFFFFFFFFFFFF5 and rs2_val == 0x61B0EE095AE6A228
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffff5; op2val:0x61b0ee095ae6a228
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffff5, 0x61b0ee095ae6a228, x2, 16, x7)
+
+inst_537:
+// rs1_val == 0xFFFFFFFFFFFFFFFB and rs2_val == 0xFF1E5BEFBEDC25E6
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffb; op2val:0xff1e5befbedc25e6
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffb, 0xff1e5befbedc25e6, x2, 24, x7)
+
+inst_538:
+// rs1_val == 0xFFFFFFFFFFFFFFFC and rs2_val == 0x137A977753E8EB43
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffc; op2val:0x137a977753e8eb43
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffc, 0x137a977753e8eb43, x2, 32, x7)
+
+inst_539:
+// rs1_val == 0xFFFFFFFFFFFFFFFE and rs2_val == 0x2904CDEFCF84B683
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xfffffffffffffffe; op2val:0x2904cdefcf84b683
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xfffffffffffffffe, 0x2904cdefcf84b683, x2, 40, x7)
+
+inst_540:
+// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x2, 48, x7)
+
+inst_541:
+// rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x2, 56, x7)
+
+inst_542:
+// rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x2, 64, x7)
+
+inst_543:
+// rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x2, 72, x7)
+
+inst_544:
+// rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
+// opcode: xperm.n ; op1:x10; op2:x11; dest:x12; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
+TEST_RR_OP(xperm.n, x12, x10, x11, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x2, 80, x7)
+#endif
+
+
+RVTEST_CODE_END
+RVMODEL_HALT
+
+RVTEST_DATA_BEGIN
+.align 4
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+
+RVMODEL_DATA_BEGIN
+
+
+signature_x11_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x11_1:
+ .fill 22*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_0:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_1:
+ .fill 256*(XLEN/32),4,0xdeadbeef
+
+
+signature_x2_2:
+ .fill 11*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/Makefile
new file mode 100644
index 000000000..f767da3a4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv64im -mabi=lp64 -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/Makefrag
new file mode 100644
index 000000000..261a9a852
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/Makefrag
@@ -0,0 +1,35 @@
+# RISC-V Architecture Test RV64IM Makefrag
+#
+# Copyright (c) 2018, Imperas Software Ltd.
+# Copyright (c) 2020, InCore Semiconductors. Pvt. Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Imperas Software Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Imperas Software Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV64IM architectural tests
+
+rv64im_sc_tests = \
+
+rv64im_tests = $(addsuffix .elf, $(rv64im_sc_tests))
+
+target_tests += $(rv64im_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/div-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/div-01.reference_output
new file mode 100644
index 000000000..9f5ca9ebe
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/div-01.reference_output
@@ -0,0 +1,1356 @@
+00000001
+00000000
+ffffffff
+ffffffff
+1f07c1f0
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+b504f335
+00000000
+00000000
+00000000
+fc000001
+ffffffff
+00000000
+00000000
+00000000
+00020000
+00000001
+00000000
+f0000000
+ffffffff
+fffc0000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffc000
+00000000
+00000000
+00040000
+00000000
+40000000
+00000000
+00000000
+00000000
+00004000
+00000000
+00000000
+00000000
+00016a09
+00000000
+33333333
+00003333
+00000001
+00000000
+55555555
+00001555
+00080000
+00000000
+66666666
+00000666
+01000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffc0
+ffffffff
+00000000
+00000000
+fffffff5
+ffffffff
+00000000
+00000000
+20000000
+00000000
+00002000
+00000000
+f0000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+fc000000
+ffffffff
+fff80000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+fffc0000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000800
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffff80
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000066
+00000000
+00000008
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffffe
+ffffffff
+ddddddde
+dddddddd
+00000000
+00000000
+3c3c3c3d
+fffc3c3c
+00000000
+00000000
+00000000
+00000000
+ffffe020
+ffffffff
+ff007fc1
+fffffc01
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+fffff001
+ffffffff
+00000000
+00000000
+fffff001
+ffffffff
+fffff4b0
+ffffffff
+000005a8
+00000000
+00000000
+00000000
+00000000
+00000000
+0000007f
+00000000
+00000000
+00000000
+00000000
+00000000
+00000fff
+00000000
+00000000
+00000000
+ffc00001
+ffffffff
+ffffffc1
+ffffffff
+00000000
+00000000
+fff00001
+ffffffff
+00000000
+00000000
+0000003f
+00000000
+00000000
+00000000
+00000000
+00000000
+feaaaaab
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffe1
+ffffffff
+00000000
+00000000
+ffff5556
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffd56
+ffffffff
+fffffff1
+ffffffff
+00000000
+00000000
+ffffff9a
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000000e
+00000000
+00000000
+00000000
+fffffff1
+ffffffff
+fffffff9
+ffffffff
+00000000
+00000000
+00000008
+00000000
+00000000
+00000000
+00000040
+00000000
+01000000
+00000000
+fffe0002
+ffffffff
+00000000
+00000000
+00000010
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffa57e
+ffffffff
+08000000
+00000000
+66666667
+ffffe666
+aaaaaaaa
+0000aaaa
+66666666
+00066666
+00000000
+00000000
+f001ffc1
+fffc007f
+00000000
+e0000000
+00000000
+00000000
+00000000
+00000000
+ffffff9a
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffc0000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00003fe0
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffff0
+ffffffff
+00000000
+00000000
+00000000
+00000000
+0f83e0f8
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+fffffff8
+ffffffff
+00000000
+00000000
+00000000
+ffffffc0
+00000000
+00000000
+001fffff
+00000000
+7fffc000
+00000000
+0002d413
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0fc0fc0f
+000fc0fc
+55555555
+01555555
+fffffff0
+ffffffff
+55001550
+00155001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+00000001
+00000000
+00000000
+00000000
+11111111
+11111111
+00000001
+00000000
+00000000
+00000000
+87520888
+ffffffff
+78adf778
+00000000
+aaaaaaaa
+2aaaaaaa
+00000001
+00000000
+ffffffff
+ffffffff
+55555555
+15555555
+00000001
+00000000
+00000000
+00000000
+78adf779
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+38e38e38
+0e38e38e
+00000001
+00000000
+00000000
+00000000
+87520887
+ffffffff
+78adf777
+00000000
+8e38e38e
+e38e38e3
+ffffffff
+ffffffff
+00000001
+00000000
+eeeeeeef
+eeeeeeee
+ffffffff
+ffffffff
+00000000
+00000000
+78adf778
+00000000
+87520888
+ffffffff
+55555555
+d5555555
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+aaaaaaab
+eaaaaaaa
+ffffffff
+ffffffff
+00000000
+00000000
+87520887
+ffffffff
+ffffffff
+ffffffff
+00000001
+00000000
+c71c71c7
+f1c71c71
+ffffffff
+ffffffff
+00000000
+00000000
+78adf779
+00000000
+87520889
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+11111111
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+00000001
+00000000
+00000000
+00000000
+b7979eb8
+ffffffff
+48686148
+00000000
+99999999
+19999999
+00000000
+00000000
+ffffffff
+ffffffff
+cccccccc
+0ccccccc
+00000001
+00000000
+00000000
+00000000
+48686148
+00000000
+00000000
+00000000
+00000000
+00000000
+88888888
+08888888
+00000000
+00000000
+00000000
+00000000
+b7979eb8
+ffffffff
+48686147
+00000000
+22222222
+22222222
+00000001
+00000000
+ffffffff
+ffffffff
+ae147ae1
+147ae147
+00000002
+00000000
+00000001
+00000000
+6f2f3d70
+ffffffff
+90d0c290
+00000000
+33333333
+33333333
+00000001
+00000000
+ffffffff
+ffffffff
+99999999
+19999999
+00000002
+00000000
+00000001
+00000000
+90d0c291
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+11111111
+11111111
+00000001
+00000000
+00000000
+00000000
+6f2f3d6f
+ffffffff
+90d0c28f
+00000000
+c3a90445
+ffffffff
+00000000
+00000000
+00000000
+00000000
+dbcbcf5d
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+a57d8667
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+d2bec334
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+e1d48223
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a3
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+5a827999
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+2d413ccc
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+1e2b7ddd
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+00000001
+00000000
+00000000
+00000000
+87520888
+ffffffff
+78adf778
+00000000
+aaaaaaaa
+2aaaaaaa
+00000001
+00000000
+ffffffff
+ffffffff
+55555555
+15555555
+00000001
+00000000
+00000000
+00000000
+78adf779
+00000000
+00000000
+00000000
+00000000
+00000000
+38e38e38
+0e38e38e
+00000001
+00000000
+00000000
+00000000
+87520887
+ffffffff
+78adf777
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+00000000
+00000000
+00000000
+00000000
+b7979eb8
+ffffffff
+48686148
+00000000
+99999999
+19999999
+00000000
+00000000
+ffffffff
+ffffffff
+cccccccc
+0ccccccc
+00000001
+00000000
+00000000
+00000000
+48686148
+00000000
+00000000
+00000000
+00000000
+00000000
+88888888
+08888888
+00000000
+00000000
+00000000
+00000000
+b7979eb8
+ffffffff
+48686147
+00000000
+22222221
+22222222
+00000001
+00000000
+ffffffff
+ffffffff
+ae147ae1
+147ae147
+00000001
+00000000
+00000000
+00000000
+6f2f3d70
+ffffffff
+90d0c290
+00000000
+33333332
+33333333
+00000001
+00000000
+ffffffff
+ffffffff
+99999999
+19999999
+00000002
+00000000
+00000001
+00000000
+90d0c291
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+11111110
+11111111
+00000001
+00000000
+00000000
+00000000
+6f2f3d6f
+ffffffff
+90d0c28f
+00000000
+3c56fbbb
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a3
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+5a827999
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+2d413ccc
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+1e2b7ddd
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+71c71c72
+1c71c71c
+00000001
+00000000
+ffffffff
+ffffffff
+11111111
+11111111
+00000001
+00000000
+00000000
+00000000
+87520888
+ffffffff
+78adf778
+00000000
+aaaaaaab
+2aaaaaaa
+00000001
+00000000
+ffffffff
+ffffffff
+55555555
+15555555
+00000001
+00000000
+00000000
+00000000
+78adf779
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+38e38e39
+0e38e38e
+00000001
+00000000
+00000000
+00000000
+87520887
+ffffffff
+78adf777
+00000000
+8e38e38f
+e38e38e3
+ffffffff
+ffffffff
+00000000
+00000000
+eeeeeeef
+eeeeeeee
+ffffffff
+ffffffff
+00000000
+00000000
+78adf778
+00000000
+87520888
+ffffffff
+55555556
+d5555555
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+aaaaaaab
+eaaaaaaa
+ffffffff
+ffffffff
+00000000
+00000000
+87520887
+ffffffff
+00000000
+00000000
+00000001
+00000000
+c71c71c8
+f1c71c71
+ffffffff
+ffffffff
+00000000
+00000000
+78adf779
+00000000
+87520889
+ffffffff
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+11111111
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+00000001
+00000000
+00000000
+00000000
+b7979eb8
+ffffffff
+48686148
+00000000
+9999999a
+19999999
+00000000
+00000000
+ffffffff
+ffffffff
+cccccccd
+0ccccccc
+00000001
+00000000
+00000000
+00000000
+48686148
+00000000
+00000000
+00000000
+00000000
+00000000
+88888888
+08888888
+00000001
+00000000
+00000000
+00000000
+b7979eb8
+ffffffff
+48686147
+00000000
+22222222
+22222222
+00000001
+00000000
+ffffffff
+ffffffff
+ae147ae1
+147ae147
+00000002
+00000000
+00000001
+00000000
+6f2f3d70
+ffffffff
+90d0c290
+00000000
+33333333
+33333333
+00000001
+00000000
+ffffffff
+ffffffff
+99999999
+19999999
+00000002
+00000000
+00000001
+00000000
+90d0c291
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+11111111
+11111111
+00000001
+00000000
+00000001
+00000000
+6f2f3d6f
+ffffffff
+90d0c28f
+00000000
+c3a90445
+ffffffff
+00000000
+00000000
+00000000
+00000000
+dbcbcf5d
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+a57d8667
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+d2bec334
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+e1d48223
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+3c56fbbc
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a4
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+5a82799a
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+2d413ccd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+1e2b7dde
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+38e38e39
+fffffffe
+00000001
+00000000
+00000000
+00000080
+99999999
+00019999
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divu-01.reference_output
new file mode 100644
index 000000000..f9d0068d6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divu-01.reference_output
@@ -0,0 +1,1648 @@
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+0000000d
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+ffdfffff
+3fffffff
+ffffffff
+1ffeffff
+00000000
+00000001
+00000000
+00000020
+00000000
+00000000
+ffffffff
+01ffbfff
+00000080
+00000000
+00000000
+00000000
+00000000
+00000200
+00000000
+00000000
+000fffff
+00000000
+ffffffff
+0006ffff
+ffffffff
+ffffffff
+00000004
+00000000
+ffffffff
+00007fff
+33333333
+00003333
+ffffbfff
+00003fff
+00000000
+00000000
+fffbffff
+00000fff
+00000100
+00000000
+00000000
+00000000
+000001ff
+00000000
+00000000
+00000000
+00000000
+00000000
+fff7ffff
+0000003f
+ffffffff
+0000001f
+00000080
+00000000
+bfffffff
+00000007
+ffffffff
+00000003
+00000001
+00000000
+00000000
+00000000
+2aaaaaaa
+00000000
+3fffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+02aaaaaa
+00000000
+00000000
+00000000
+01ffffff
+00000000
+00ffffdf
+00000000
+007fefff
+00000000
+003ff7ff
+00000000
+00000000
+00000000
+000bffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00003fff
+00000000
+00000000
+00000000
+00000fff
+00000000
+000007ff
+00000000
+00000002
+00000000
+000001ff
+00000000
+000000ff
+00000000
+00000000
+00000000
+0000003f
+00000000
+0000001f
+00000000
+00000000
+00000000
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000000b
+00000000
+0000001c
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000800
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00002000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000200
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+04000000
+00000000
+00002000
+000fffff
+00000000
+50d79435
+0d79435e
+000001ff
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+b13b139d
+13b13b13
+00000000
+00000000
+00000001
+00000000
+ffffffbf
+000fffff
+110fffff
+11111111
+332ccccc
+33333333
+1fffffff
+00000000
+ffffbfff
+001fffff
+00000001
+00000000
+fffeffff
+0003ffff
+0000ffff
+00000000
+1fffffff
+00000000
+fdffffff
+0003ffff
+ffffffff
+1999997f
+ffffffff
+3fffff7f
+00000000
+00000000
+fdffffff
+00001fff
+ffffffff
+00fffeff
+f7ffffff
+000003ff
+3ffeffff
+00000000
+ffffffff
+ffefffff
+ffffffff
+000003fd
+ffffffff
+07dfffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+00000001
+00000000
+00000000
+00000000
+11111111
+11111111
+00000001
+00000000
+00000000
+00000000
+78adf778
+00000000
+ffffffff
+ffffffff
+55555555
+00000000
+aaaaaaaa
+2aaaaaaa
+00000001
+00000000
+00000000
+00000000
+55555555
+15555555
+00000001
+00000000
+00000000
+00000000
+78adf779
+00000000
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+38e38e38
+0e38e38e
+00000001
+00000000
+00000000
+00000000
+78adf777
+00000000
+55555555
+55555555
+55555555
+00000000
+e38e38e3
+38e38e38
+00000002
+00000000
+00000001
+00000000
+22222222
+22222222
+00000003
+00000000
+00000001
+00000000
+f15beef1
+00000000
+ffffffff
+ffffffff
+aaaaaaaa
+00000000
+55555555
+55555555
+00000002
+00000000
+00000001
+00000000
+aaaaaaaa
+2aaaaaaa
+00000003
+00000000
+00000001
+00000000
+f15beef2
+00000000
+aaaaaaab
+00000000
+00000001
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+00000003
+00000000
+00000001
+00000000
+f15beeef
+00000000
+aaaaaaaa
+aaaaaaaa
+aaaaaaaa
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000005
+00000000
+00000000
+00000000
+11111111
+11111111
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+00000001
+00000000
+00000000
+00000000
+48686148
+00000000
+ffffffff
+ffffffff
+33333333
+00000000
+99999999
+19999999
+00000000
+00000000
+00000000
+00000000
+cccccccc
+0ccccccc
+00000001
+00000000
+00000000
+00000000
+48686148
+00000000
+33333333
+00000000
+00000000
+00000000
+00000000
+00000000
+88888888
+08888888
+00000000
+00000000
+00000000
+00000000
+48686147
+00000000
+33333333
+33333333
+33333333
+00000000
+22222222
+22222222
+00000001
+00000000
+00000000
+00000000
+ae147ae1
+147ae147
+00000002
+00000000
+00000001
+00000000
+90d0c290
+00000000
+ffffffff
+ffffffff
+66666666
+00000000
+33333333
+33333333
+00000001
+00000000
+00000000
+00000000
+99999999
+19999999
+00000002
+00000000
+00000001
+00000000
+90d0c291
+00000000
+66666666
+00000000
+00000001
+00000000
+00000000
+00000000
+11111111
+11111111
+00000001
+00000000
+00000000
+00000000
+90d0c28f
+00000000
+66666666
+66666666
+66666666
+00000000
+3c56fbbb
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a3
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+5a827999
+00000000
+00000000
+00000000
+00000000
+00000000
+2d413ccc
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+1e2b7ddd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+b504f333
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+80000000
+00000000
+00000000
+00000000
+00000000
+00000000
+40000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+2aaaaaaa
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+00000001
+00000000
+00000000
+00000000
+78adf778
+00000000
+ffffffff
+ffffffff
+55555555
+00000000
+aaaaaaaa
+2aaaaaaa
+00000001
+00000000
+00000000
+00000000
+55555555
+15555555
+00000001
+00000000
+00000000
+00000000
+78adf779
+00000000
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+38e38e38
+0e38e38e
+00000001
+00000000
+00000000
+00000000
+78adf777
+00000000
+55555554
+55555555
+55555554
+00000000
+e38e38e3
+38e38e38
+00000001
+00000000
+00000000
+00000000
+22222221
+22222222
+00000003
+00000000
+00000001
+00000000
+f15beef1
+00000000
+ffffffff
+ffffffff
+aaaaaaaa
+00000000
+55555554
+55555555
+00000002
+00000000
+00000001
+00000000
+aaaaaaaa
+2aaaaaaa
+00000003
+00000000
+00000001
+00000000
+f15beef2
+00000000
+aaaaaaab
+00000000
+00000001
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+00000003
+00000000
+00000001
+00000000
+f15beeef
+00000000
+aaaaaaa9
+aaaaaaaa
+aaaaaaa9
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000000
+00000000
+11111110
+11111111
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+00000000
+00000000
+00000000
+00000000
+48686148
+00000000
+ffffffff
+ffffffff
+33333333
+00000000
+99999999
+19999999
+00000000
+00000000
+00000000
+00000000
+cccccccc
+0ccccccc
+00000001
+00000000
+00000000
+00000000
+48686148
+00000000
+33333333
+00000000
+00000000
+00000000
+00000000
+00000000
+88888888
+08888888
+00000000
+00000000
+00000000
+00000000
+48686147
+00000000
+33333332
+33333333
+33333332
+00000000
+22222221
+22222222
+00000001
+00000000
+00000000
+00000000
+ae147ae1
+147ae147
+00000001
+00000000
+00000000
+00000000
+90d0c290
+00000000
+ffffffff
+ffffffff
+66666666
+00000000
+33333332
+33333333
+00000001
+00000000
+00000000
+00000000
+99999999
+19999999
+00000002
+00000000
+00000001
+00000000
+90d0c291
+00000000
+66666666
+00000000
+00000001
+00000000
+00000000
+00000000
+11111110
+11111111
+00000001
+00000000
+00000000
+00000000
+90d0c28f
+00000000
+66666665
+66666666
+66666665
+00000000
+3c56fbbb
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a3
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+5a827999
+00000000
+00000000
+00000000
+00000000
+00000000
+2d413ccc
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+1e2b7ddd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+b504f332
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+7fffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+3fffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+2aaaaaaa
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+00000000
+00000000
+00000000
+71c71c72
+1c71c71c
+00000001
+00000000
+00000000
+00000000
+11111111
+11111111
+00000001
+00000000
+00000000
+00000000
+78adf778
+00000000
+ffffffff
+ffffffff
+55555555
+00000000
+aaaaaaab
+2aaaaaaa
+00000001
+00000000
+00000000
+00000000
+55555555
+15555555
+00000001
+00000000
+00000000
+00000000
+78adf779
+00000000
+55555555
+00000000
+00000001
+00000000
+00000000
+00000000
+38e38e39
+0e38e38e
+00000001
+00000000
+00000000
+00000000
+78adf777
+00000000
+55555556
+55555555
+55555555
+00000000
+e38e38e3
+38e38e38
+00000002
+00000000
+00000001
+00000000
+22222222
+22222222
+00000003
+00000000
+00000001
+00000000
+f15beef1
+00000000
+ffffffff
+ffffffff
+aaaaaaaa
+00000000
+55555555
+55555555
+00000002
+00000000
+00000001
+00000000
+aaaaaaaa
+2aaaaaaa
+00000003
+00000000
+00000001
+00000000
+f15beef2
+00000000
+aaaaaaab
+00000000
+00000001
+00000000
+71c71c71
+1c71c71c
+00000003
+00000000
+00000001
+00000000
+f15beeef
+00000000
+aaaaaaab
+aaaaaaaa
+aaaaaaaa
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+00000001
+00000000
+00000000
+00000000
+48686148
+00000000
+ffffffff
+ffffffff
+33333333
+00000000
+9999999a
+19999999
+00000000
+00000000
+00000000
+00000000
+cccccccd
+0ccccccc
+00000001
+00000000
+00000000
+00000000
+48686148
+00000000
+33333333
+00000000
+00000000
+00000000
+00000000
+00000000
+88888888
+08888888
+00000001
+00000000
+00000000
+00000000
+48686147
+00000000
+33333334
+33333333
+33333333
+00000000
+22222222
+22222222
+00000001
+00000000
+00000000
+00000000
+ae147ae1
+147ae147
+00000002
+00000000
+00000001
+00000000
+90d0c290
+00000000
+ffffffff
+ffffffff
+66666666
+00000000
+33333333
+33333333
+00000001
+00000000
+00000000
+00000000
+99999999
+19999999
+00000002
+00000000
+00000001
+00000000
+90d0c291
+00000000
+66666666
+00000000
+00000001
+00000000
+00000000
+00000000
+11111111
+11111111
+00000001
+00000000
+00000001
+00000000
+90d0c28f
+00000000
+66666667
+66666666
+66666666
+00000000
+3c56fbbc
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a4
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+5a82799a
+00000000
+00000000
+00000000
+00000000
+00000000
+2d413ccd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+1e2b7dde
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+b504f334
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+80000000
+00000000
+00000000
+00000000
+00000000
+00000000
+40000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+2aaaaaaa
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000000
+00000006
+00000000
+00000000
+00000000
+11111111
+11111111
+00000001
+00000000
+00200000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divuw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divuw-01.reference_output
new file mode 100644
index 000000000..b69cd713c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divuw-01.reference_output
@@ -0,0 +1,1644 @@
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00100000
+00000000
+19999999
+00000000
+00000000
+00000000
+0b504f33
+00000000
+06ffffff
+00000000
+00000000
+00000000
+01ffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+003ffffd
+00000000
+001ffeff
+00000000
+000fffff
+00000000
+00000000
+00000000
+00015555
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00003fef
+00000000
+00001fff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+0000001f
+00000000
+0000000f
+00000000
+00000007
+00000000
+00000003
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000010
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000666
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000040
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+20000000
+00000000
+00000040
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000fff
+00000000
+2aaaaaa9
+00000000
+00000001
+00000000
+000fffff
+00000000
+00000000
+00000000
+001ffff7
+00000000
+00000000
+00000000
+000003ff
+00000000
+ffffffff
+ffffffff
+7fefffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+0000000f
+00000000
+00000001
+00000000
+1fffffff
+00000000
+00000001
+00000000
+00000001
+00000000
+3fffffff
+00000000
+33333333
+00000000
+ffffffff
+ffffffff
+000003ff
+00000000
+7fffffff
+00000000
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000003
+00000000
+00000003
+00000000
+1c71c71c
+00000000
+00000001
+00000000
+00000000
+00000000
+11111111
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+2aaaaaaa
+00000000
+00000001
+00000000
+00000000
+00000000
+15555555
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0e38e38e
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+55555555
+00000000
+55555555
+00000000
+38e38e38
+00000000
+00000002
+00000000
+00000001
+00000000
+22222222
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+55555555
+00000000
+00000002
+00000000
+00000001
+00000000
+2aaaaaaa
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+1c71c71c
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+aaaaaaaa
+ffffffff
+aaaaaaaa
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000005
+00000000
+00000005
+00000000
+11111111
+00000000
+00000000
+00000000
+00000000
+00000000
+0a3d70a3
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+19999999
+00000000
+00000000
+00000000
+00000000
+00000000
+0ccccccc
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+08888888
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+33333333
+00000000
+33333333
+00000000
+22222222
+00000000
+00000001
+00000000
+00000000
+00000000
+147ae147
+00000000
+00000002
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+33333333
+00000000
+00000001
+00000000
+00000000
+00000000
+19999999
+00000000
+00000002
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+11111111
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+66666666
+00000000
+66666666
+00000000
+3c56fbbb
+00000000
+00000002
+00000000
+00000001
+00000000
+243430a3
+00000000
+00000003
+00000000
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+5a827999
+00000000
+00000002
+00000000
+00000001
+00000000
+2d413ccc
+00000000
+00000003
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+1e2b7ddd
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+b504f333
+ffffffff
+b504f333
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+00000000
+11111110
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+2aaaaaaa
+00000000
+00000001
+00000000
+00000000
+00000000
+15555555
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0e38e38e
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+00000000
+55555554
+00000000
+38e38e38
+00000000
+00000001
+00000000
+00000000
+00000000
+22222221
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+55555554
+00000000
+00000002
+00000000
+00000001
+00000000
+2aaaaaaa
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+1c71c71c
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+aaaaaaa9
+ffffffff
+aaaaaaa9
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+11111110
+00000000
+00000000
+00000000
+00000000
+00000000
+0a3d70a3
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+19999999
+00000000
+00000000
+00000000
+00000000
+00000000
+0ccccccc
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+08888888
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+33333332
+00000000
+33333332
+00000000
+22222221
+00000000
+00000001
+00000000
+00000000
+00000000
+147ae147
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+33333332
+00000000
+00000001
+00000000
+00000000
+00000000
+19999999
+00000000
+00000002
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+11111110
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+66666665
+00000000
+66666665
+00000000
+3c56fbbb
+00000000
+00000002
+00000000
+00000001
+00000000
+243430a3
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+5a827999
+00000000
+00000002
+00000000
+00000001
+00000000
+2d413ccc
+00000000
+00000003
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+1e2b7ddd
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+b504f332
+ffffffff
+b504f332
+ffffffff
+55555555
+00000000
+00000003
+00000000
+00000001
+00000000
+33333333
+00000000
+00000005
+00000000
+00000002
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+7fffffff
+00000000
+00000003
+00000000
+00000001
+00000000
+3fffffff
+00000000
+00000005
+00000000
+00000002
+00000000
+00000001
+00000000
+00000001
+00000000
+00000002
+00000000
+00000001
+00000000
+2aaaaaaa
+00000000
+00000004
+00000000
+00000002
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+1c71c71c
+00000000
+00000001
+00000000
+00000000
+00000000
+11111111
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+2aaaaaab
+00000000
+00000001
+00000000
+00000000
+00000000
+15555555
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+0e38e38e
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+55555556
+00000000
+55555556
+00000000
+38e38e39
+00000000
+00000002
+00000000
+00000001
+00000000
+22222222
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+55555555
+00000000
+00000002
+00000000
+00000001
+00000000
+2aaaaaaa
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+1c71c71c
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+aaaaaaab
+ffffffff
+aaaaaaab
+ffffffff
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0a3d70a4
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+1999999a
+00000000
+00000000
+00000000
+00000000
+00000000
+0ccccccd
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+08888888
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+33333334
+00000000
+33333334
+00000000
+22222222
+00000000
+00000000
+00000000
+147ae147
+00000000
+00000002
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+33333333
+00000000
+00000001
+00000000
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+11111111
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+66666667
+00000000
+66666667
+00000000
+3c56fbbc
+00000000
+00000002
+00000000
+00000001
+00000000
+243430a4
+00000000
+00000003
+00000000
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+5a82799a
+00000000
+00000002
+00000000
+00000001
+00000000
+2d413ccd
+00000000
+00000003
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+11111111
+00000000
+00000002
+00000000
+00000001
+00000000
+1e2b7dde
+00000000
+00000003
+00000000
+00000001
+00000000
+00000001
+00000000
+b504f334
+ffffffff
+b504f334
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divw-01.reference_output
new file mode 100644
index 000000000..377ac7085
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/divw-01.reference_output
@@ -0,0 +1,1344 @@
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ff800000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000080
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffff8
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffeaab
+ffffffff
+00000000
+00000000
+fcfcfcfe
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffff8080
+ffffffff
+00000000
+00000000
+00000000
+00000000
+fffffff9
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000001f
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffe00
+ffffffff
+04000001
+00000000
+00000001
+00000000
+fffe0000
+ffffffff
+b504f332
+ffffffff
+00000001
+00000000
+55555555
+00000000
+aaaaaaab
+ffffffff
+00000000
+00000000
+00000000
+00000000
+01000001
+00000000
+00800001
+00000000
+00200001
+00000000
+00000008
+00000000
+00000001
+00000000
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+00000000
+00000000
+00000081
+00000000
+fffffffc
+ffffffff
+00000000
+00000000
+4afb0cce
+00000000
+04000001
+00000000
+00000001
+00000000
+00400001
+00000000
+fff00000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000201
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffff0
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+fe000000
+ffffffff
+ffc3c3c4
+ffffffff
+00000000
+00000000
+f3333334
+ffffffff
+c0000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000401
+00000000
+00000200
+00000000
+00000000
+00000000
+fffff8e4
+ffffffff
+000007c1
+00000000
+00020001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+10000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+1c71c71c
+00000000
+00000001
+00000000
+00000000
+00000000
+11111111
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+2aaaaaaa
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+15555555
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+0e38e38e
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+e38e38e4
+ffffffff
+ffffffff
+ffffffff
+00000001
+00000000
+eeeeeeef
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+d5555555
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+eaaaaaab
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+f1c71c72
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+00000000
+00000000
+00000000
+00000000
+00000000
+0a3d70a3
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+19999999
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+0ccccccc
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+08888888
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+22222222
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+147ae147
+00000000
+00000002
+00000000
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+33333333
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+19999999
+00000000
+00000002
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+ffffffff
+ffffffff
+11111111
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+18fe5999
+00000000
+00000000
+00000000
+00000000
+00000000
+0eff028f
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+257d8666
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+12bec333
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0c7f2ccc
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+e701a667
+ffffffff
+00000000
+00000000
+00000000
+00000000
+f100fd71
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+da82799a
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ed413ccd
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+f380d334
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+1c71c71c
+00000000
+00000000
+00000000
+00000000
+00000000
+11111110
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+2aaaaaaa
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+15555555
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+0e38e38e
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111110
+00000000
+00000000
+00000000
+00000000
+00000000
+0a3d70a3
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+19999999
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+0ccccccc
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+08888888
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+22222221
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+147ae147
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+33333332
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+19999999
+00000000
+00000002
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+ffffffff
+ffffffff
+11111110
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+e701a666
+ffffffff
+00000000
+00000000
+00000000
+00000000
+f100fd71
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+da827999
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ed413ccd
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+f380d333
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+1c71c71c
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+11111111
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+2aaaaaab
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+15555555
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+ffffffff
+ffffffff
+0e38e38e
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+e38e38e4
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+eeeeeeef
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+d5555556
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+eaaaaaab
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+f1c71c72
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+00000000
+00000000
+00000000
+00000000
+00000000
+0a3d70a4
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+1999999a
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+0ccccccd
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+08888888
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+22222222
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+147ae147
+00000000
+00000002
+00000000
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+33333333
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+19999999
+00000000
+00000002
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+ffffffff
+ffffffff
+11111111
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+18fe599a
+00000000
+00000000
+00000000
+00000000
+00000000
+0eff028f
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+257d8667
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+12bec333
+00000000
+00000001
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+0c7f2ccd
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+e701a667
+ffffffff
+00000000
+00000000
+00000000
+00000000
+f100fd71
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+da82799a
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ed413ccd
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+f380d334
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+fffffc00
+ffffffff
+00000000
+00000000
+00004000
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mul-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mul-01.reference_output
new file mode 100644
index 000000000..05417e617
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mul-01.reference_output
@@ -0,0 +1,1364 @@
+00000000
+00000010
+0a3d70a4
+3d70a3d7
+b504f333
+33300000
+00000000
+efffe000
+00200001
+00000100
+00000000
+00000000
+00000000
+00000000
+00000001
+a0000000
+00000000
+00000000
+00000000
+80000000
+00000000
+00000000
+fffffffc
+ffffffff
+00000100
+00000000
+00000000
+04000000
+00000400
+00000000
+55555560
+55555555
+00000000
+00000000
+fffffd80
+ffffffff
+00000180
+00000000
+00000000
+00000004
+00000000
+04000000
+fefff800
+ffffffff
+00000000
+00000000
+ffffe000
+dfffffff
+00004000
+00000000
+00000000
+00001000
+ffff0000
+bfffffff
+aaaa0000
+aaaaaaaa
+fffc0000
+7fffffff
+fff80000
+fffffeff
+33300000
+000b504f
+ffc00000
+ffffffff
+ff800000
+ffffffff
+f8000000
+ffffffff
+cc000000
+cccccccc
+e8000000
+ffffffff
+e0000000
+ffffffff
+d0000000
+ffffffff
+e0000000
+fffffdff
+80000000
+2d413ccc
+80000000
+00000001
+00000000
+55555556
+00000000
+fffffffe
+00000000
+00000080
+00000000
+00100000
+00000000
+fffffdf0
+00000000
+00000000
+00000000
+dfffffc0
+00000000
+00200000
+00000000
+55555600
+00000000
+00010000
+00000000
+fffffc00
+00000000
+fffff800
+00000000
+00000000
+00000000
+00000000
+00000000
+00018000
+00000000
+55560000
+00000000
+00080000
+00000000
+fffc0000
+00000000
+fff80000
+00000000
+00000000
+00000000
+00000000
+00000000
+01c00000
+00000000
+ff800000
+00000000
+ff000000
+00000000
+fe000000
+00000000
+e8000000
+00000000
+90000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffee0
+ffffffff
+20000011
+00000002
+00000021
+00000420
+f641bfb2
+0000002d
+00000000
+fffdfc00
+ffffdfe0
+ffffffff
+fffdff00
+ffffffff
+fffbff00
+ffffffff
+00040881
+00000000
+00001001
+02002000
+00000000
+fffdfff0
+bfff0000
+ffffffff
+00002aab
+00000000
+00030001
+00000002
+ff800000
+fffffeff
+00048001
+00000002
+b15b0ccc
+fffa57d7
+00000000
+f7ffffc0
+00401001
+00000004
+80000000
+ffbfffff
+01000001
+00020000
+ffffc000
+ffffff7f
+44000011
+00000000
+c7fffff9
+ffffffff
+10000001
+00000000
+fffff000
+fffffdff
+aaaaaaac
+55555555
+80004001
+00002000
+00100001
+00100001
+00000000
+fffffc00
+00000001
+00040004
+ffffffc0
+fffffdff
+fff80000
+ff7fffff
+fff80000
+feffffff
+ccccccce
+0000004c
+00000000
+ffffc000
+ffffffe0
+ffffbfff
+ff800000
+ffffffff
+00000001
+00000880
+ffffff00
+ffefffff
+00000000
+ffff8000
+00000000
+ffffe000
+00000001
+00008008
+55555556
+aaab5555
+99999999
+cccb9999
+00000001
+80040000
+fff80000
+ffffffff
+00000001
+04200000
+ff000000
+ffffffff
+00000101
+80800000
+9999999a
+33999999
+00000000
+fff80000
+00000001
+08000000
+fffffe00
+ffffffff
+00000081
+10000000
+40000001
+20000000
+fffffffe
+7fffffff
+55555554
+55555555
+5555555c
+55555555
+fffffff8
+efffffff
+00000000
+00000000
+99999000
+99999999
+cccca000
+cccccccc
+00000000
+00040000
+66600000
+66666666
+ffe00000
+fffffff7
+00c00000
+00000000
+9c000000
+99999999
+98000000
+99999999
+00000000
+00080000
+00000000
+00000000
+00000000
+00000200
+00000000
+55555556
+00000000
+00000024
+00000000
+02000000
+00000000
+10000000
+00000000
+fffffe00
+00000000
+fffff800
+00000000
+fffe0000
+00000000
+fffc0000
+00000000
+00000000
+00000000
+00800000
+00000000
+00000000
+00000000
+ff800000
+00000000
+ff000000
+00000000
+00000000
+00000000
+f8000000
+00000000
+00000000
+00000000
+e0000000
+00000005
+14000000
+00001209
+00000000
+bf000000
+ffffffff
+40000201
+00000080
+00008421
+00000000
+33333cce
+33333333
+fffe0000
+fffffffd
+40041001
+00000000
+00000000
+fbffff80
+00400001
+02000000
+04000004
+00000000
+01555556
+00000000
+00000000
+fffff800
+00000000
+fffffe00
+dffffffe
+ffffffff
+00000000
+ff000000
+00000001
+00020001
+fffffff9
+fffffff1
+00800001
+02000004
+00000000
+00000000
+02000001
+80000040
+fe000000
+ffffffff
+fff00000
+7fffffff
+ffffff00
+ffefffff
+00000000
+ffff0000
+fffffe00
+efffffff
+00000001
+08100000
+fffff800
+ffffffff
+00000000
+fffff800
+00000001
+01000001
+55555556
+01555555
+00000000
+e0000000
+0000000a
+80000000
+00000009
+00000000
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+0000000f
+00000000
+99999999
+99999999
+33333332
+33333333
+e0f12667
+fffffffd
+1f0ed999
+00000002
+00000006
+00000000
+fffffffc
+ffffffff
+00000000
+00000000
+0000000c
+00000000
+99999996
+99999999
+3333332f
+33333333
+1f0ed996
+00000002
+00000002
+00000000
+00000001
+00000000
+00000012
+00000000
+9999999c
+99999999
+33333335
+33333333
+e0f1266a
+fffffffd
+1f0ed99c
+00000002
+ffffffff
+ffffffff
+38e38e39
+8e38e38e
+71c71c72
+1c71c71c
+aaaaaaa9
+aaaaaaaa
+eeeeeeef
+eeeeeeee
+ddddddde
+dddddddd
+91ac5111
+55555555
+6e53aeef
+aaaaaaaa
+aaaaaaaa
+aaaaaaaa
+e38e38e4
+38e38e38
+00000000
+00000000
+55555554
+55555555
+9999999a
+99999999
+88888889
+88888888
+18fe599a
+55555555
+8e38e38e
+e38e38e3
+c71c71c7
+71c71c71
+fffffffe
+ffffffff
+44444444
+44444444
+33333333
+33333333
+e701a666
+aaaaaaaa
+c3a90444
+ffffffff
+fffffffe
+ffffffff
+71c71c72
+1c71c71c
+e38e38e4
+38e38e38
+55555552
+55555555
+ddddddde
+dddddddd
+bbbbbbbc
+bbbbbbbb
+2358a222
+aaaaaaab
+dca75dde
+55555554
+55555554
+55555555
+c71c71c8
+71c71c71
+00000000
+00000000
+aaaaaaa8
+aaaaaaaa
+33333334
+33333333
+11111112
+11111111
+31fcb334
+aaaaaaaa
+1c71c71c
+c71c71c7
+8e38e38e
+e38e38e3
+fffffffc
+ffffffff
+88888888
+88888888
+66666666
+66666666
+ce034ccc
+55555555
+87520888
+ffffffff
+0000000f
+00000000
+aaaaaaa9
+aaaaaaaa
+55555552
+55555555
+00000019
+00000000
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+76e74001
+fffffffc
+8918bfff
+00000003
+0000000a
+00000000
+aaaaaaa4
+aaaaaaaa
+00000000
+00000000
+00000014
+00000000
+fffffffa
+ffffffff
+fffffff9
+ffffffff
+8918bffa
+00000003
+aaaaaaae
+aaaaaaaa
+55555557
+55555555
+0000001e
+00000000
+00000004
+00000000
+00000003
+00000000
+76e74006
+fffffffc
+8918c004
+00000003
+99999999
+99999999
+eeeeeeef
+eeeeeeee
+ddddddde
+dddddddd
+ffffffff
+ffffffff
+c28f5c29
+8f5c28f5
+851eb852
+1eb851eb
+576763d7
+33333333
+a8989c29
+cccccccc
+66666666
+66666666
+bbbbbbbc
+bbbbbbbb
+00000000
+00000000
+cccccccc
+cccccccc
+8f5c28f6
+5c28f5c2
+51eb851f
+eb851eb8
+756568f6
+99999999
+22222222
+22222222
+11111111
+11111111
+33333332
+33333333
+f5c28f5c
+c28f5c28
+b851eb85
+51eb851e
+8a9a970a
+66666666
+dbcbcf5c
+ffffffff
+33333332
+33333333
+ddddddde
+dddddddd
+bbbbbbbc
+bbbbbbbb
+fffffffe
+ffffffff
+851eb852
+1eb851eb
+0a3d70a4
+3d70a3d7
+aecec7ae
+66666666
+51313852
+99999999
+cccccccc
+cccccccc
+77777778
+77777777
+00000000
+00000000
+99999998
+99999999
+1eb851ec
+b851eb85
+a3d70a3e
+d70a3d70
+eacad1ec
+33333332
+44444444
+44444444
+22222222
+22222222
+66666664
+66666666
+eb851eb8
+851eb851
+70a3d70a
+a3d70a3d
+15352e14
+cccccccd
+b7979eb8
+ffffffff
+e0f12667
+fffffffd
+91ac5111
+55555555
+2358a222
+aaaaaaab
+76e74001
+fffffffc
+576763d7
+33333333
+aecec7ae
+66666666
+9ea1dc29
+7ffffffe
+615e23d7
+80000001
+95f6199a
+fffffffe
+46b14444
+55555556
+00000000
+00000000
+2bec3334
+fffffffd
+0c6c570a
+33333334
+63d3bae1
+66666667
+1663170a
+80000002
+dca75dde
+55555554
+6e53aeef
+aaaaaaaa
+c1e24cce
+fffffffb
+a26270a4
+33333332
+f9c9d47b
+66666665
+e99ce8f6
+7ffffffd
+ac5930a4
+80000000
+1f0ed999
+00000002
+6e53aeef
+aaaaaaaa
+dca75dde
+55555554
+8918bfff
+00000003
+a8989c29
+cccccccc
+51313852
+99999999
+615e23d7
+80000001
+9ea1dc29
+7ffffffe
+6a09e666
+00000001
+b94ebbbc
+aaaaaaa9
+00000000
+00000000
+d413cccc
+00000002
+f393a8f6
+cccccccb
+9c2c451f
+99999998
+e99ce8f6
+7ffffffd
+2358a222
+aaaaaaab
+91ac5111
+55555555
+3e1db332
+00000004
+5d9d8f5c
+cccccccd
+06362b85
+9999999a
+1663170a
+80000002
+53a6cf5c
+7fffffff
+00000006
+00000000
+aaaaaaaa
+aaaaaaaa
+55555554
+55555555
+0000000a
+00000000
+66666666
+66666666
+cccccccc
+cccccccc
+95f6199a
+fffffffe
+6a09e666
+00000001
+00000004
+00000000
+aaaaaaa8
+aaaaaaaa
+00000000
+00000000
+00000008
+00000000
+66666664
+66666666
+ccccccca
+cccccccc
+6a09e664
+00000001
+aaaaaaac
+aaaaaaaa
+55555556
+55555555
+0000000c
+00000000
+66666668
+66666666
+ccccccce
+cccccccc
+95f6199c
+fffffffe
+6a09e668
+00000001
+fffffffc
+ffffffff
+e38e38e4
+38e38e38
+c71c71c8
+71c71c71
+aaaaaaa4
+aaaaaaaa
+bbbbbbbc
+bbbbbbbb
+77777778
+77777777
+46b14444
+55555556
+b94ebbbc
+aaaaaaa9
+aaaaaaa8
+aaaaaaaa
+8e38e390
+e38e38e3
+00000000
+00000000
+55555550
+55555555
+66666668
+66666666
+22222224
+22222222
+63f96668
+55555554
+38e38e38
+8e38e38e
+1c71c71c
+c71c71c7
+fffffff8
+ffffffff
+11111110
+11111111
+cccccccc
+cccccccc
+9c069998
+aaaaaaab
+0ea41110
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000000c
+00000000
+aaaaaaa8
+aaaaaaaa
+00000014
+00000000
+cccccccc
+cccccccc
+99999998
+99999999
+2bec3334
+fffffffd
+d413cccc
+00000002
+00000008
+00000000
+55555550
+55555555
+00000000
+00000000
+00000010
+00000000
+ccccccc8
+cccccccc
+99999994
+99999999
+d413ccc8
+00000002
+55555558
+55555555
+aaaaaaac
+aaaaaaaa
+00000018
+00000000
+ccccccd0
+cccccccc
+9999999c
+99999999
+2bec3338
+fffffffd
+d413ccd0
+00000002
+99999996
+99999999
+9999999a
+99999999
+33333334
+33333333
+fffffffa
+ffffffff
+8f5c28f6
+5c28f5c2
+1eb851ec
+b851eb85
+0c6c570a
+33333334
+f393a8f6
+cccccccb
+66666664
+66666666
+66666668
+66666666
+00000000
+00000000
+ccccccc8
+cccccccc
+5c28f5c4
+28f5c28f
+eb851eba
+851eb851
+c06075c4
+99999998
+cccccccc
+cccccccc
+66666666
+66666666
+3333332c
+33333333
+c28f5c28
+8f5c28f5
+51eb851e
+eb851eb8
+3f9f8a3c
+66666667
+26c6dc28
+ffffffff
+3333332f
+33333333
+88888889
+88888888
+11111112
+11111111
+fffffff9
+ffffffff
+51eb851f
+eb851eb8
+a3d70a3e
+d70a3d70
+63d3bae1
+66666667
+9c2c451f
+99999998
+ccccccca
+cccccccc
+22222224
+22222222
+00000000
+00000000
+99999994
+99999999
+eb851eba
+851eb851
+3d70a3d9
+70a3d70a
+35c5deba
+33333332
+eeeeeeee
+eeeeeeee
+77777777
+77777777
+6666665e
+66666666
+b851eb84
+51eb851e
+0a3d70a3
+3d70a3d7
+ca3a2146
+cccccccd
+0292ab84
+ffffffff
+1f0ed996
+00000002
+18fe599a
+55555555
+31fcb334
+aaaaaaaa
+8918bffa
+00000003
+756568f6
+99999999
+eacad1ec
+33333332
+1663170a
+80000002
+e99ce8f6
+7ffffffd
+6a09e664
+00000001
+63f96668
+55555554
+00000000
+00000000
+d413ccc8
+00000002
+c06075c4
+99999998
+35c5deba
+33333332
+3497f5c4
+7ffffffd
+ce034ccc
+55555555
+e701a666
+aaaaaaaa
+3e1db32c
+00000004
+2a6a5c28
+9999999a
+9fcfc51e
+33333333
+cb680a3c
+80000002
+9ea1dc28
+7ffffffe
+00000002
+00000000
+8e38e38e
+e38e38e3
+1c71c71c
+c71c71c7
+aaaaaaae
+aaaaaaaa
+22222222
+22222222
+44444444
+44444444
+dca75dde
+55555554
+2358a222
+aaaaaaab
+aaaaaaac
+aaaaaaaa
+38e38e38
+8e38e38e
+00000000
+00000000
+55555558
+55555555
+cccccccc
+cccccccc
+eeeeeeee
+eeeeeeee
+ce034ccc
+55555555
+e38e38e4
+38e38e38
+71c71c72
+1c71c71c
+00000004
+00000000
+77777778
+77777777
+9999999a
+99999999
+31fcb334
+aaaaaaaa
+78adf778
+00000000
+00000001
+00000000
+c71c71c7
+71c71c71
+8e38e38e
+e38e38e3
+55555557
+55555555
+11111111
+11111111
+22222222
+22222222
+6e53aeef
+aaaaaaaa
+91ac5111
+55555555
+55555556
+55555555
+1c71c71c
+c71c71c7
+00000000
+00000000
+aaaaaaac
+aaaaaaaa
+66666666
+66666666
+77777777
+77777777
+e701a666
+aaaaaaaa
+71c71c72
+1c71c71c
+38e38e39
+8e38e38e
+00000000
+00000000
+00000002
+00000000
+bbbbbbbc
+bbbbbbbb
+cccccccd
+cccccccc
+18fe599a
+55555555
+3c56fbbc
+00000000
+00000012
+00000000
+fffffffe
+ffffffff
+fffffffc
+ffffffff
+0000001e
+00000000
+33333332
+33333333
+66666664
+66666666
+c1e24cce
+fffffffb
+3e1db332
+00000004
+0000000c
+00000000
+fffffff8
+ffffffff
+00000000
+00000000
+00000018
+00000000
+3333332c
+33333333
+6666665e
+66666666
+3e1db32c
+00000004
+00000004
+00000000
+00000002
+00000000
+00000024
+00000000
+33333338
+33333333
+6666666a
+66666666
+c1e24cd4
+fffffffb
+3e1db338
+00000004
+9999999c
+99999999
+44444444
+44444444
+88888888
+88888888
+00000004
+00000000
+f5c28f5c
+c28f5c28
+eb851eb8
+851eb851
+a26270a4
+33333332
+5d9d8f5c
+cccccccd
+66666668
+66666666
+11111110
+11111111
+00000000
+00000000
+ccccccd0
+cccccccc
+c28f5c28
+8f5c28f5
+b851eb84
+51eb851e
+2a6a5c28
+9999999a
+77777778
+77777777
+bbbbbbbc
+bbbbbbbb
+33333338
+33333333
+28f5c290
+f5c28f5c
+1eb851ec
+b851eb85
+d595a3d8
+66666665
+90d0c290
+00000000
+33333335
+33333333
+33333333
+33333333
+66666666
+66666666
+00000003
+00000000
+b851eb85
+51eb851e
+70a3d70a
+a3d70a3d
+f9c9d47b
+66666665
+06362b85
+9999999a
+ccccccce
+cccccccc
+cccccccc
+cccccccc
+00000000
+00000000
+9999999c
+99999999
+51eb851e
+eb851eb8
+0a3d70a3
+3d70a3d7
+9fcfc51e
+33333333
+9999999a
+99999999
+cccccccd
+cccccccc
+6666666a
+66666666
+1eb851ec
+b851eb85
+d70a3d71
+0a3d70a3
+60303ae2
+cccccccc
+6c9c91ec
+00000000
+e0f1266a
+fffffffd
+e701a666
+aaaaaaaa
+ce034ccc
+55555555
+76e74006
+fffffffc
+8a9a970a
+66666666
+15352e14
+cccccccd
+e99ce8f6
+7ffffffd
+1663170a
+80000002
+95f6199c
+fffffffe
+9c069998
+aaaaaaab
+00000000
+00000000
+2bec3338
+fffffffd
+3f9f8a3c
+66666667
+ca3a2146
+cccccccd
+cb680a3c
+80000002
+31fcb334
+aaaaaaaa
+18fe599a
+55555555
+c1e24cd4
+fffffffb
+d595a3d8
+66666665
+60303ae2
+cccccccc
+3497f5c4
+7ffffffd
+615e23d8
+80000001
+1f0ed99c
+00000002
+c3a90444
+ffffffff
+87520888
+ffffffff
+8918c004
+00000003
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ac5930a4
+80000000
+53a6cf5c
+7fffffff
+6a09e668
+00000001
+0ea41110
+ffffffff
+00000000
+00000000
+d413ccd0
+00000002
+26c6dc28
+ffffffff
+0292ab84
+ffffffff
+9ea1dc28
+7ffffffe
+78adf778
+00000000
+3c56fbbc
+00000000
+3e1db338
+00000004
+90d0c290
+00000000
+6c9c91ec
+00000000
+615e23d8
+80000001
+08abc290
+80000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000080
+9999999a
+33333399
+00000010
+00000000
+ffffffc0
+ffffffff
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulh-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulh-01.reference_output
new file mode 100644
index 000000000..89450d6f1
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulh-01.reference_output
@@ -0,0 +1,1356 @@
+04000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000010
+55555555
+d5555555
+00000000
+00000000
+000000ff
+00000000
+ffffffff
+ffffffff
+fc000000
+ffffffff
+00000000
+00000000
+1fffffff
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffe0
+ffffffff
+00000008
+00000000
+00000000
+00000000
+00000008
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000aaa
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00001000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffbffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00800000
+00000000
+ffffffff
+ffffffff
+0aaaaaaa
+00000000
+00000000
+00000000
+ff7fffff
+ffffffff
+01000000
+00000000
+00000000
+00000000
+fdffffff
+ffffffff
+00080000
+00000000
+00000200
+00000000
+ffffffff
+ffffffff
+00080000
+00000000
+000000b5
+00000000
+fffffffe
+ffffffff
+00010000
+00000000
+00800000
+00000000
+33333333
+00000333
+00000000
+00000000
+fffbffff
+ffffffff
+feffffff
+ffffffff
+fffffffd
+ffffffff
+fffffeff
+ffffffff
+00040000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000040
+00000000
+ffffffff
+ffffffff
+00000000
+00200000
+00001000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00800000
+00000000
+ffffbfff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+fffffccc
+ffffffff
+fffffaaa
+ffffffff
+00000000
+00000000
+fffffeff
+ffffffff
+00000000
+00000000
+00000004
+00000000
+ffffff7f
+ffffffff
+fffffff7
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000100
+00000000
+00000000
+00000000
+00000000
+00000000
+ff555555
+ffffffff
+ffffffff
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00020000
+00000000
+bfffffff
+ffffffff
+00000080
+00000000
+20000000
+00000000
+00000000
+00000002
+ffffffff
+ffffffff
+ffffffa5
+ffffffff
+fffffbff
+ffffffff
+00100000
+00000000
+02000000
+00000000
+00000000
+00000000
+00200000
+00000000
+80000000
+00000000
+ffffffef
+ffffffff
+ffffffff
+ffffffdf
+00000000
+00001000
+00400000
+00000000
+ff7fffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00080000
+00000000
+99999999
+ff999999
+00000004
+00000000
+fff7ffff
+ffffffff
+fffffffb
+ffffffff
+aaaaaaaa
+faaaaaaa
+33333332
+f3333333
+7fffffff
+ffffffff
+00000005
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000100
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000040
+00000000
+00000000
+00000000
+55555555
+00000155
+ffffffff
+ffffffff
+fffffbff
+ffffffff
+ffffffff
+ffffffff
+fffffdff
+ffffffff
+00008000
+00000000
+00000000
+00000008
+aaaaaaaa
+00aaaaaa
+00000001
+00000000
+80000000
+00000000
+00000000
+00000000
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000100
+00000000
+ffbfffff
+ffffffff
+00000000
+00000000
+ffffffef
+ffffffff
+ffffffff
+ffffffff
+00000002
+00000000
+00000000
+00000000
+ffbfffff
+ffffffff
+bfffffff
+ffffffff
+ffffffff
+fffffeff
+ffffffff
+fffffeff
+ffffffff
+ffffffff
+02000000
+00000000
+ffffffbf
+ffffffff
+ffffffff
+ffdfffff
+ffffffff
+ffffff7f
+fffffdff
+ffffffff
+00000400
+00000000
+c3a90444
+ffffffff
+00000000
+00000000
+00000000
+00000000
+fffffffe
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+8e38e38e
+e38e38e3
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+c3a90444
+ffffffff
+3c56fbbb
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+00000000
+00000000
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+71c71c71
+1c71c71c
+8e38e38e
+e38e38e3
+00000001
+00000000
+11111111
+11111111
+22222222
+22222222
+c3a90444
+ffffffff
+3c56fbbb
+00000000
+fffffffe
+ffffffff
+8e38e38e
+e38e38e3
+71c71c72
+1c71c71c
+fffffffe
+ffffffff
+eeeeeeee
+eeeeeeee
+dddddddd
+dddddddd
+3c56fbbb
+00000000
+ffffffff
+ffffffff
+8e38e38e
+e38e38e3
+00000000
+00000000
+fffffffe
+ffffffff
+eeeeeeef
+eeeeeeee
+ddddddde
+dddddddd
+c3a90444
+ffffffff
+8e38e38d
+e38e38e3
+71c71c71
+1c71c71c
+fffffffd
+ffffffff
+eeeeeeee
+eeeeeeee
+dddddddd
+dddddddd
+3c56fbbb
+00000000
+c3a90443
+ffffffff
+00000000
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+eeeeeeee
+eeeeeeee
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+dbcbcf5c
+ffffffff
+243430a3
+00000000
+00000000
+00000000
+11111110
+11111111
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+11111111
+11111111
+eeeeeeef
+eeeeeeee
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+dbcbcf5c
+ffffffff
+243430a3
+00000000
+00000001
+00000000
+22222221
+22222222
+dddddddd
+dddddddd
+00000001
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+b7979eb8
+ffffffff
+48686147
+00000000
+00000000
+00000000
+22222221
+22222222
+00000000
+00000000
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+48686147
+00000000
+22222222
+22222222
+ddddddde
+dddddddd
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+b7979eb8
+ffffffff
+48686147
+00000000
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+3c56fbbb
+00000000
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+3c56fbbb
+00000000
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+3c56fbbb
+00000000
+c3a90444
+ffffffff
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+c3a90444
+ffffffff
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+8e38e38e
+e38e38e3
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+c3a90444
+ffffffff
+3c56fbbb
+00000000
+00000000
+00000000
+71c71c70
+1c71c71c
+00000000
+00000000
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+71c71c71
+1c71c71c
+8e38e38e
+e38e38e3
+00000001
+00000000
+11111111
+11111111
+22222221
+22222222
+c3a90444
+ffffffff
+3c56fbbb
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+eeeeeeef
+eeeeeeee
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+dbcbcf5c
+ffffffff
+243430a3
+00000000
+00000000
+00000000
+11111110
+11111111
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+11111110
+11111111
+eeeeeeef
+eeeeeeee
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+dbcbcf5c
+ffffffff
+243430a3
+00000000
+00000001
+00000000
+22222221
+22222222
+ddddddde
+dddddddd
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+b7979eb8
+ffffffff
+48686147
+00000000
+00000000
+00000000
+22222221
+22222222
+00000000
+00000000
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+48686147
+00000000
+22222221
+22222222
+ddddddde
+dddddddd
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+b7979eb8
+ffffffff
+48686147
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+c3a90444
+ffffffff
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+c3a90444
+ffffffff
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000001
+00000000
+71c71c71
+1c71c71c
+8e38e38d
+e38e38e3
+00000001
+00000000
+11111111
+11111111
+22222222
+22222222
+c3a90444
+ffffffff
+3c56fbbb
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+00000000
+00000000
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+71c71c72
+1c71c71c
+8e38e38e
+e38e38e3
+00000002
+00000000
+11111111
+11111111
+22222222
+22222222
+c3a90444
+ffffffff
+3c56fbbc
+00000000
+ffffffff
+ffffffff
+8e38e38e
+e38e38e3
+71c71c71
+1c71c71c
+fffffffe
+ffffffff
+eeeeeeef
+eeeeeeee
+ddddddde
+dddddddd
+3c56fbbb
+00000000
+c3a90444
+ffffffff
+ffffffff
+ffffffff
+8e38e38e
+e38e38e3
+00000000
+00000000
+fffffffe
+ffffffff
+eeeeeeef
+eeeeeeee
+ddddddde
+dddddddd
+c3a90444
+ffffffff
+8e38e38e
+e38e38e3
+71c71c71
+1c71c71c
+fffffffe
+ffffffff
+eeeeeeee
+eeeeeeee
+dddddddd
+dddddddd
+3c56fbbb
+00000000
+c3a90444
+ffffffff
+00000000
+00000000
+00000001
+00000000
+fffffffd
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+fffffffe
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+11111111
+11111111
+eeeeeeee
+eeeeeeee
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+dbcbcf5c
+ffffffff
+243430a3
+00000000
+00000000
+00000000
+11111111
+11111111
+00000000
+00000000
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+11111111
+11111111
+eeeeeeee
+eeeeeeee
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+dbcbcf5c
+ffffffff
+243430a4
+00000000
+00000001
+00000000
+22222222
+22222222
+dddddddd
+dddddddd
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+b7979eb8
+ffffffff
+48686147
+00000000
+00000000
+00000000
+22222221
+22222222
+00000000
+00000000
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+22222222
+22222222
+dddddddd
+dddddddd
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c3
+28f5c28f
+b7979eb8
+ffffffff
+48686148
+00000000
+ffffffff
+ffffffff
+3c56fbbb
+00000000
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+3c56fbbb
+00000000
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+3c56fbbb
+00000000
+c3a90443
+ffffffff
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+00000000
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+3c56fbbc
+00000000
+c3a90444
+ffffffff
+00000000
+00000000
+243430a4
+00000000
+48686148
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulhsu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulhsu-01.reference_output
new file mode 100644
index 000000000..1e298a0db
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulhsu-01.reference_output
@@ -0,0 +1,1484 @@
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000000f
+00000000
+ffffffff
+ffffffff
+00010000
+80000000
+00000000
+00000000
+ffffffff
+01ffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffff7f
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffff7ff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00006666
+00000000
+00000400
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffefffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00200000
+00000000
+ffffffff
+ffffffff
+fff7ffff
+ffffffff
+00000000
+00000000
+f5555555
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffb
+ffffffff
+00000020
+00000000
+00020000
+00000000
+cccccccc
+0000000c
+00000000
+00000000
+fff7ffff
+ffffffff
+fffff7ff
+ffffffff
+ffffffff
+fffffffd
+ffffffff
+fffffffd
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000400
+00000002
+00000000
+00010000
+00000000
+7fffffff
+ffffffff
+ffffdfff
+ffffffff
+00010000
+00000000
+ffffffbf
+ffffffff
+00000000
+00000000
+00002000
+00000000
+f7ffffff
+ffffffff
+fffbffff
+ffffffff
+33333333
+03333333
+ffffffff
+ffffffff
+00000004
+00000000
+ffffff7f
+ffffffff
+00020000
+00000000
+00ffffff
+00000000
+efffffff
+ffffffff
+33333332
+33333333
+ffffffff
+000007ff
+ffffffff
+000003ff
+ffffffff
+001fffff
+ffffffff
+003fffff
+ffffffbe
+7fffffff
+00000000
+00000000
+ffffffff
+00003fff
+33333199
+33333333
+ffffefff
+ffffffff
+00001fff
+00000000
+33332666
+33333333
+003fffff
+00000000
+ffffffff
+000003ff
+fffffbff
+00ffffff
+00000004
+00000000
+ffffffff
+0000000f
+07ffffff
+00000000
+33266665
+33333333
+33199999
+33333333
+fffeffff
+00ffffff
+0000000f
+fffff800
+53ffffff
+55555555
+0000007f
+00000000
+4fffffff
+55555555
+0000ffff
+00000000
+fffff7ff
+00001fff
+fffffffb
+00000007
+fffffff6
+ffffffff
+fdffffff
+00ffffff
+1fffffff
+00000000
+00000fff
+fffffe00
+007fffff
+00000000
+ff7fffff
+0003ffff
+ffffffff
+07fffffd
+ff7fffff
+ffffffff
+ffffffff
+fe000003
+b504f05e
+00000000
+00ffffff
+ffffe000
+ffffffff
+f00000ff
+4afb236e
+ffffffff
+ffffffff
+fff00003
+b50498b0
+00000000
+fffffffd
+ffffffff
+fc0007ff
+ffffffff
+0003ffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+fdffffff
+0000000f
+fbffffff
+0000000f
+00000006
+00000000
+ffffffff
+ffffffff
+00003f7f
+00000000
+fffffffd
+ffffffff
+fffffffc
+ffffffff
+ffffffff
+000077ff
+ffffffff
+000dffff
+ffffffff
+017fffff
+00000000
+00000000
+ffffeaaa
+ffffffff
+00000000
+00000000
+00000007
+00000000
+0000002f
+00000000
+00000000
+00000000
+000001ff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+03fffffd
+00000000
+3fffffdf
+00000000
+00800000
+00000000
+ffffffff
+00000003
+00000000
+00000000
+ffffffff
+0000003f
+ffffffff
+0000007f
+00000000
+00000000
+ffffffff
+000001ff
+08000000
+00000000
+00000000
+00000800
+00000010
+00000000
+00000000
+00002000
+ffffffff
+03ffffff
+00000000
+00000020
+ff7fffff
+3fffffff
+fffffffe
+ffffffff
+fffffffb
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffbf
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffbff
+ffffffff
+ffffffff
+ffffffff
+ffffff7f
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffefffff
+ffffffff
+ffbfffff
+ffffffff
+fffffdff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffdfff
+ffffffff
+aaaaaaaa
+fffffffa
+00000000
+00000000
+ffffffff
+ffffffff
+ffffefff
+ffffffff
+ffffffff
+ffffffff
+fffffd2b
+ffffffff
+fffff000
+ffffffff
+ffffffff
+ffffbfff
+00000000
+00000000
+fdffffff
+ffffffff
+00000003
+fffc0000
+fffff7ff
+ffffffff
+ffffffff
+ffdfffff
+ffffffff
+fffffffb
+ffffdfff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+e38e38e3
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+e38e38e2
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+55555554
+00000000
+71c71c71
+1c71c71c
+e38e38e3
+38e38e38
+00000001
+00000000
+11111111
+11111111
+22222222
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+fffffffe
+ffffffff
+8e38e38e
+e38e38e3
+1c71c71c
+c71c71c7
+fffffffe
+ffffffff
+eeeeeeee
+eeeeeeee
+dddddddd
+dddddddd
+c3a90444
+ffffffff
+00000000
+00000000
+aaaaaaaa
+ffffffff
+ffffffff
+ffffffff
+8e38e38e
+e38e38e3
+1c71c71c
+c71c71c7
+fffffffe
+ffffffff
+eeeeeeef
+eeeeeeee
+ddddddde
+dddddddd
+c3a90444
+ffffffff
+aaaaaaaa
+ffffffff
+8e38e38d
+e38e38e3
+1c71c71b
+c71c71c7
+fffffffd
+ffffffff
+eeeeeeee
+eeeeeeee
+dddddddd
+dddddddd
+c3a90443
+ffffffff
+aaaaaaaa
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+22222221
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+11111110
+11111111
+22222221
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+33333332
+00000000
+11111111
+11111111
+22222222
+22222222
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000001
+00000000
+22222221
+22222222
+44444443
+44444444
+00000001
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+22222221
+22222222
+44444443
+44444444
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+48686147
+00000000
+66666665
+00000000
+22222222
+22222222
+44444444
+44444444
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+87520888
+ffffffff
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+87520888
+ffffffff
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+87520888
+ffffffff
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+e38e38e2
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+71c71c70
+1c71c71c
+e38e38e2
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+55555554
+00000000
+71c71c71
+1c71c71c
+e38e38e2
+38e38e38
+00000001
+00000000
+11111111
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+22222221
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+11111110
+11111111
+22222221
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+33333332
+00000000
+11111110
+11111111
+22222221
+22222222
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000001
+00000000
+22222221
+22222222
+44444443
+44444444
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+22222221
+22222222
+44444442
+44444444
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+48686147
+00000000
+66666665
+00000000
+22222221
+22222222
+44444443
+44444444
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf776
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf776
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf776
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+71c71c71
+1c71c71c
+e38e38e3
+38e38e38
+00000001
+00000000
+11111111
+11111111
+22222222
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+e38e38e3
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+55555555
+00000000
+71c71c72
+1c71c71c
+e38e38e4
+38e38e38
+00000002
+00000000
+11111111
+11111111
+22222222
+22222222
+3c56fbbc
+00000000
+00000000
+00000000
+55555555
+00000000
+ffffffff
+ffffffff
+8e38e38e
+e38e38e3
+1c71c71c
+c71c71c7
+fffffffe
+ffffffff
+eeeeeeef
+eeeeeeee
+ddddddde
+dddddddd
+c3a90444
+ffffffff
+00000000
+00000000
+aaaaaaaa
+ffffffff
+ffffffff
+ffffffff
+8e38e38e
+e38e38e3
+1c71c71d
+c71c71c7
+fffffffe
+ffffffff
+eeeeeeef
+eeeeeeee
+ddddddde
+dddddddd
+c3a90444
+ffffffff
+aaaaaaab
+ffffffff
+8e38e38e
+e38e38e3
+1c71c71c
+c71c71c7
+fffffffe
+ffffffff
+eeeeeeee
+eeeeeeee
+dddddddd
+dddddddd
+c3a90444
+ffffffff
+66666666
+00000000
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+87520889
+ffffffff
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+87520889
+ffffffff
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+c3a90444
+ffffffff
+87520889
+ffffffff
+ffffffff
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbc
+00000000
+78adf778
+00000000
+00000000
+00000000
+243430a4
+00000000
+48686148
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+aaaaaaaa
+ffffffff
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000004
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+11111111
+22222222
+22222222
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+11111111
+11111111
+22222222
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+33333333
+00000000
+11111111
+11111111
+22222222
+22222222
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a4
+00000000
+00000000
+00000000
+33333333
+00000000
+00000001
+00000000
+22222222
+22222222
+44444444
+44444444
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+22222221
+22222222
+44444443
+44444444
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+66666666
+00000000
+22222222
+22222222
+44444444
+44444444
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c3
+28f5c28f
+48686148
+00000000
+00000000
+00000000
+00003fff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulhu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulhu-01.reference_output
new file mode 100644
index 000000000..22ad15dc2
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulhu-01.reference_output
@@ -0,0 +1,1628 @@
+000000fe
+ffffffe0
+fffffffe
+fe00ffff
+00000000
+00000000
+fffffffe
+fffdffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000007
+00000000
+0000000f
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+000007ff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00007fff
+00000000
+00000004
+00000000
+0001ffff
+00000000
+0003ffef
+00000000
+00000400
+00000000
+000fffff
+00000000
+001fffff
+00000000
+00001000
+00000000
+007fffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0fffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00040000
+00000000
+00008000
+00000000
+ffefffff
+00000001
+00000000
+00000000
+00004000
+00000000
+aaaaaaaa
+0000000a
+ffffffff
+0000001f
+00000020
+00000000
+01000000
+00000000
+00000000
+00000000
+feffffff
+000001ff
+00000000
+00000000
+ffffffff
+000007ff
+66666666
+00000666
+00000000
+00000000
+01000000
+00000000
+00000000
+00000200
+ffffdfff
+0000ffff
+bfffffff
+0001ffff
+aaaaaaaa
+0002aaaa
+00000000
+00002000
+00000000
+00000000
+0016a09e
+00000000
+feffffff
+003fffff
+00000000
+00002000
+00000000
+00000001
+00010000
+00000000
+ffffefff
+03ffffff
+ffffffff
+07ffffef
+33333333
+03333333
+00200000
+00000000
+ffffffff
+2fffffff
+00000000
+00000000
+00000004
+00000000
+ffffffff
+000001ff
+0000000f
+00000000
+0007ffff
+00000000
+ffffffec
+ffffffff
+ffffffff
+007fffff
+0001ffff
+00000000
+00000003
+00000000
+000003ff
+00000000
+ffffffff
+0000007f
+f7fffbfe
+ffffffff
+00000012
+00000000
+ffff6ffe
+ffffffff
+ffffdffe
+ffffbfff
+55552aaa
+55555555
+fffe7ffe
+ffffffff
+fffdfffe
+ffffffff
+0000003f
+00000000
+fff7fffe
+fffff7ff
+ffeffffa
+ffffffff
+ffffffdf
+0000ffff
+fffffdff
+0007ffff
+ff80000e
+ffffdfff
+a9fffffe
+aaaaaaaa
+fffffffd
+000000ff
+fc0003fe
+fffeffff
+0000000a
+00000000
+9fffffff
+aaaaaaaa
+00000009
+00000000
+00000005
+00000000
+7fffffee
+ffffffff
+0003ffff
+00000000
+fdfffffe
+fffffffd
+fffffeff
+0000003f
+00000003
+00000000
+ffeffffe
+ffffffef
+fffefffe
+ffffffbf
+ffffffff
+0ffffff7
+fff7fffe
+fffffeff
+fffffbfe
+fffffdff
+ffffffde
+fffffbff
+ffffffde
+fffff7ff
+fffffdfe
+ffffefff
+7ffffffe
+fffbe000
+fffffffe
+bfffcfff
+00000006
+00000000
+fffffffe
+ffef000f
+cccccccd
+3332cccc
+fffffffe
+fffbc000
+0000000e
+00000000
+fffffffe
+ffe000ff
+ffffffff
+000ffdff
+bfffffff
+000000ff
+1fefffff
+00000000
+00000000
+00000000
+c0fffffe
+fbffffff
+ffffffff
+003dffff
+00000009
+00000000
+fffffffd
+dfffffff
+000005ff
+00000000
+00000000
+00000000
+aaa95554
+aaaaaaaa
+00000000
+00000000
+00000007
+00000000
+0000001f
+00000000
+000000ff
+00000000
+00000000
+00000000
+00003fff
+00000000
+0000ffff
+00000000
+00000000
+00000000
+001fffff
+00000000
+00000000
+00000000
+00000000
+00000000
+3fffffff
+00000000
+ffffbfff
+00000000
+fffeffff
+00000001
+ffffffef
+00000003
+00000000
+00000000
+fffff7ff
+0000000f
+fff7ffff
+0000001f
+7fffffff
+00000fff
+fffffffd
+00001fff
+bfffffff
+00003fff
+00000000
+00001000
+fffffeff
+00ffffff
+00000000
+00000000
+fffffffe
+1fffffff
+ffffffff
+3ffffffb
+00000000
+00000004
+ffffffbe
+ffffefff
+ffffbf7e
+ffffffff
+ffffffff
+0000000f
+fff7f7fe
+ffffffff
+feffeffe
+ffffffff
+ffffffff
+00003fff
+ffffbffe
+fffffffe
+ffd7fffe
+ffffffff
+fffffeff
+0003ffff
+fffffffb
+000007ff
+fefffffa
+ffffffff
+ffffffff
+00000001
+8000000e
+ffffffdf
+efffffff
+0fffffff
+99999999
+66666665
+00000006
+fffffff7
+fffdffff
+00000fff
+00003ffe
+fffffec0
+bfffffff
+007fffff
+00000003
+00000000
+7ffffdff
+00000000
+ffffefff
+00000000
+0ffbffff
+00000000
+fff803fe
+ff7fffff
+99999997
+65999999
+b230df65
+00000000
+01efffff
+00000000
+bfffffff
+00000003
+0037ffff
+00000000
+ffffffff
+00ffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+e38e38e3
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+e38e38e2
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+55555554
+00000000
+71c71c71
+1c71c71c
+e38e38e3
+38e38e38
+00000001
+00000000
+11111111
+11111111
+22222222
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000001
+00000000
+e38e38e3
+38e38e38
+c71c71c6
+71c71c71
+00000003
+00000000
+22222221
+22222222
+44444443
+44444444
+78adf777
+00000000
+00000000
+00000000
+aaaaaaaa
+00000000
+00000001
+00000000
+e38e38e2
+38e38e38
+c71c71c5
+71c71c71
+00000002
+00000000
+22222221
+22222222
+44444443
+44444444
+78adf776
+00000000
+aaaaaaa9
+00000000
+e38e38e3
+38e38e38
+c71c71c6
+71c71c71
+00000003
+00000000
+22222222
+22222222
+44444444
+44444444
+78adf777
+00000000
+00000000
+00000000
+aaaaaaab
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+22222221
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+11111110
+11111111
+22222221
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+33333332
+00000000
+11111111
+11111111
+22222222
+22222222
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000001
+00000000
+22222221
+22222222
+44444443
+44444444
+00000001
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+22222221
+22222222
+44444443
+44444444
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+48686147
+00000000
+66666665
+00000000
+22222222
+22222222
+44444444
+44444444
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+55555555
+00000000
+aaaaaaaa
+00000000
+00000000
+00000000
+33333333
+00000000
+66666666
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+55555555
+00000000
+aaaaaaaa
+00000000
+00000000
+00000000
+33333333
+00000000
+66666666
+00000000
+00000000
+00000000
+00000000
+00000000
+55555555
+00000000
+aaaaaaaa
+00000000
+00000000
+00000000
+33333333
+00000000
+66666666
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+e38e38e2
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+71c71c70
+1c71c71c
+e38e38e2
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+55555554
+00000000
+71c71c71
+1c71c71c
+e38e38e2
+38e38e38
+00000001
+00000000
+11111111
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000001
+00000000
+e38e38e2
+38e38e38
+c71c71c5
+71c71c71
+00000003
+00000000
+22222221
+22222222
+44444443
+44444444
+78adf777
+00000000
+00000000
+00000000
+aaaaaaaa
+00000000
+00000001
+00000000
+e38e38e2
+38e38e38
+c71c71c4
+71c71c71
+00000002
+00000000
+22222221
+22222222
+44444442
+44444444
+78adf776
+00000000
+aaaaaaa9
+00000000
+e38e38e3
+38e38e38
+c71c71c6
+71c71c71
+00000003
+00000000
+22222222
+22222222
+44444443
+44444444
+78adf777
+00000000
+00000000
+00000000
+aaaaaaab
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111110
+11111111
+22222221
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+11111110
+11111111
+22222221
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+33333332
+00000000
+11111110
+11111111
+22222221
+22222222
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae0
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000001
+00000000
+22222221
+22222222
+44444443
+44444444
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+48686147
+00000000
+66666666
+00000000
+00000000
+00000000
+22222221
+22222222
+44444442
+44444444
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c1
+28f5c28f
+48686147
+00000000
+66666665
+00000000
+22222221
+22222222
+44444443
+44444444
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf776
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf776
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf776
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+00000000
+aaaaaaa9
+00000000
+00000000
+00000000
+33333332
+00000000
+66666665
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+00000000
+aaaaaaa9
+00000000
+00000000
+00000000
+33333332
+00000000
+66666665
+00000000
+00000000
+00000000
+00000000
+00000000
+55555555
+00000000
+aaaaaaaa
+00000000
+00000000
+00000000
+33333333
+00000000
+66666666
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+71c71c71
+1c71c71c
+e38e38e3
+38e38e38
+00000001
+00000000
+11111111
+11111111
+22222222
+22222222
+3c56fbbb
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+71c71c71
+1c71c71c
+e38e38e3
+38e38e38
+00000001
+00000000
+11111110
+11111111
+22222221
+22222222
+3c56fbbb
+00000000
+55555555
+00000000
+71c71c72
+1c71c71c
+e38e38e4
+38e38e38
+00000002
+00000000
+11111111
+11111111
+22222222
+22222222
+3c56fbbc
+00000000
+00000000
+00000000
+55555555
+00000000
+00000002
+00000000
+e38e38e3
+38e38e38
+c71c71c6
+71c71c71
+00000003
+00000000
+22222222
+22222222
+44444444
+44444444
+78adf777
+00000000
+00000000
+00000000
+aaaaaaaa
+00000000
+00000001
+00000000
+e38e38e2
+38e38e38
+c71c71c6
+71c71c71
+00000002
+00000000
+22222221
+22222222
+44444443
+44444444
+78adf776
+00000000
+aaaaaaaa
+00000000
+e38e38e4
+38e38e38
+c71c71c7
+71c71c71
+00000004
+00000000
+22222222
+22222222
+44444444
+44444444
+78adf778
+00000000
+00000000
+00000000
+aaaaaaab
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000003
+00000000
+00000001
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000004
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+11111111
+11111111
+22222222
+22222222
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+00000000
+00000000
+33333333
+00000000
+00000000
+00000000
+11111111
+11111111
+22222222
+22222222
+00000000
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a3
+00000000
+33333333
+00000000
+11111111
+11111111
+22222222
+22222222
+00000001
+00000000
+d70a3d70
+0a3d70a3
+ae147ae1
+147ae147
+243430a4
+00000000
+00000000
+00000000
+33333333
+00000000
+00000001
+00000000
+22222222
+22222222
+44444444
+44444444
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+22222221
+22222222
+44444443
+44444444
+00000001
+00000000
+ae147ae0
+147ae147
+5c28f5c2
+28f5c28f
+48686147
+00000000
+66666666
+00000000
+22222222
+22222222
+44444444
+44444444
+00000002
+00000000
+ae147ae1
+147ae147
+5c28f5c3
+28f5c28f
+48686148
+00000000
+00000000
+00000000
+66666666
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbb
+00000000
+78adf777
+00000000
+00000000
+00000000
+243430a3
+00000000
+48686147
+00000000
+00000000
+00000000
+00000000
+00000000
+3c56fbbc
+00000000
+78adf778
+00000000
+00000000
+00000000
+243430a4
+00000000
+48686148
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+55555555
+00000000
+aaaaaaab
+00000000
+00000000
+00000000
+33333333
+00000000
+66666666
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+55555555
+00000000
+aaaaaaab
+00000000
+00000000
+00000000
+33333333
+00000000
+66666666
+00000000
+00000000
+00000000
+00000000
+00000000
+55555555
+00000000
+aaaaaaab
+00000000
+00000000
+00000000
+33333333
+00000000
+66666666
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffffe
+fe00ffff
+0000003f
+00000000
+00020000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulw-01.reference_output
new file mode 100644
index 000000000..2c7902422
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/mulw-01.reference_output
@@ -0,0 +1,1344 @@
+00000100
+00000000
+00000000
+00000000
+aaaaaad6
+ffffffff
+aaaaaaaa
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+fffff800
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00200001
+00000000
+00008000
+00000000
+aaaaaaa8
+ffffffff
+10000000
+00000000
+fffffbf8
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffc0
+ffffffff
+ffffff00
+ffffffff
+08000000
+00000000
+00040000
+00000000
+ff7ffc00
+ffffffff
+33333000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fff60000
+ffffffff
+199c0000
+00000000
+00000000
+00000000
+00000000
+00000000
+fff00000
+ffffffff
+00000000
+00000000
+ffc00000
+ffffffff
+ff800000
+ffffffff
+ff000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+f8000000
+ffffffff
+00000000
+00000000
+e0000000
+ffffffff
+c0000000
+ffffffff
+80000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffe00000
+ffffffff
+00000003
+00000000
+0000002d
+00000000
+ffffff70
+ffffffff
+00000099
+00000000
+00021021
+00000000
+fffffdfc
+ffffffff
+ffbfc000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffe7fd
+ffffffff
+00000000
+00000000
+dfff8000
+ffffffff
+00000000
+00000000
+00010001
+00000000
+cccb9999
+ffffffff
+00040001
+00000000
+04080001
+00000000
+fdffffe0
+ffffffff
+aad55556
+ffffffff
+33ccccce
+00000000
+e0000000
+ffffffff
+02800001
+00000000
+f7fffffe
+ffffffff
+48000001
+00000000
+10000801
+00000000
+e0000007
+ffffffff
+40000001
+00000000
+aaaaaaaa
+ffffffff
+00000001
+00000000
+00800001
+00000000
+55555556
+00000000
+00000001
+00000000
+00000001
+00000000
+02000001
+00000000
+00000000
+00000000
+aaaaaaaa
+ffffffff
+00000001
+00000000
+aaaaaaaa
+ffffffff
+00008001
+00000000
+00004001
+00000000
+00000001
+00000000
+9999999b
+ffffffff
+00000000
+00000000
+ccccccce
+ffffffff
+ff800000
+ffffffff
+fffffff9
+ffffffff
+ffff8000
+ffffffff
+00000009
+00000000
+04000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+ffe00000
+ffffffff
+00000001
+00000000
+fffffc00
+ffffffff
+10000001
+00000000
+00000000
+00000000
+000aaaab
+00000000
+00555556
+00000000
+00001000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffe0000
+ffffffff
+ffc00000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+c0000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffff4
+ffffffff
+aaaaaaa9
+ffffffff
+00022011
+00000000
+ffdf0000
+ffffffff
+20000101
+00000000
+ffeff800
+ffffffff
+555552aa
+00000000
+fdffff00
+ffffffff
+00000000
+00000000
+00100001
+00000000
+00400001
+00000000
+ff000000
+ffffffff
+b9999999
+ffffffff
+fc000000
+ffffffff
+00000000
+00000000
+00010001
+00000000
+00000001
+00000000
+00020001
+00000000
+00000000
+00000000
+40000001
+00000000
+00000000
+00000000
+4afb0ccd
+00000000
+00000000
+00000000
+b504f332
+ffffffff
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000801
+00000000
+aaaaaaac
+ffffffff
+00000009
+00000000
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+0000000f
+00000000
+99999999
+ffffffff
+33333332
+00000000
+e0f12667
+ffffffff
+1f0ed999
+00000000
+00000006
+00000000
+fffffffc
+ffffffff
+00000000
+00000000
+0000000c
+00000000
+99999996
+ffffffff
+3333332f
+00000000
+1f0ed996
+00000000
+00000002
+00000000
+00000001
+00000000
+00000012
+00000000
+9999999c
+ffffffff
+33333335
+00000000
+e0f1266a
+ffffffff
+1f0ed99c
+00000000
+ffffffff
+ffffffff
+38e38e39
+00000000
+71c71c72
+00000000
+aaaaaaa9
+ffffffff
+eeeeeeef
+ffffffff
+ddddddde
+ffffffff
+91ac5111
+ffffffff
+6e53aeef
+00000000
+aaaaaaaa
+ffffffff
+e38e38e4
+ffffffff
+00000000
+00000000
+55555554
+00000000
+9999999a
+ffffffff
+88888889
+ffffffff
+18fe599a
+00000000
+8e38e38e
+ffffffff
+c71c71c7
+ffffffff
+fffffffe
+ffffffff
+44444444
+00000000
+33333333
+00000000
+e701a666
+ffffffff
+c3a90444
+ffffffff
+fffffffe
+ffffffff
+71c71c72
+00000000
+e38e38e4
+ffffffff
+55555552
+00000000
+ddddddde
+ffffffff
+bbbbbbbc
+ffffffff
+2358a222
+00000000
+dca75dde
+ffffffff
+55555554
+00000000
+c71c71c8
+ffffffff
+00000000
+00000000
+aaaaaaa8
+ffffffff
+33333334
+00000000
+11111112
+00000000
+31fcb334
+00000000
+1c71c71c
+00000000
+8e38e38e
+ffffffff
+fffffffc
+ffffffff
+88888888
+ffffffff
+66666666
+00000000
+ce034ccc
+ffffffff
+87520888
+ffffffff
+0000000f
+00000000
+aaaaaaa9
+ffffffff
+55555552
+00000000
+00000019
+00000000
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+76e74001
+00000000
+8918bfff
+ffffffff
+0000000a
+00000000
+aaaaaaa4
+ffffffff
+00000000
+00000000
+00000014
+00000000
+fffffffa
+ffffffff
+fffffff9
+ffffffff
+8918bffa
+ffffffff
+aaaaaaae
+ffffffff
+55555557
+00000000
+0000001e
+00000000
+00000004
+00000000
+00000003
+00000000
+76e74006
+00000000
+8918c004
+ffffffff
+99999999
+ffffffff
+eeeeeeef
+ffffffff
+ddddddde
+ffffffff
+ffffffff
+ffffffff
+c28f5c29
+ffffffff
+851eb852
+ffffffff
+576763d7
+00000000
+a8989c29
+ffffffff
+66666666
+00000000
+bbbbbbbc
+ffffffff
+00000000
+00000000
+cccccccc
+ffffffff
+8f5c28f6
+ffffffff
+51eb851f
+00000000
+756568f6
+00000000
+22222222
+00000000
+11111111
+00000000
+33333332
+00000000
+f5c28f5c
+ffffffff
+b851eb85
+ffffffff
+8a9a970a
+ffffffff
+dbcbcf5c
+ffffffff
+33333332
+00000000
+ddddddde
+ffffffff
+bbbbbbbc
+ffffffff
+fffffffe
+ffffffff
+851eb852
+ffffffff
+0a3d70a4
+00000000
+aecec7ae
+ffffffff
+51313852
+00000000
+cccccccc
+ffffffff
+77777778
+00000000
+00000000
+00000000
+99999998
+ffffffff
+1eb851ec
+00000000
+a3d70a3e
+ffffffff
+eacad1ec
+ffffffff
+44444444
+00000000
+22222222
+00000000
+66666664
+00000000
+eb851eb8
+ffffffff
+70a3d70a
+00000000
+15352e14
+00000000
+b7979eb8
+ffffffff
+e0f12667
+ffffffff
+91ac5111
+ffffffff
+2358a222
+00000000
+76e74001
+00000000
+576763d7
+00000000
+aecec7ae
+ffffffff
+9ea1dc29
+ffffffff
+615e23d7
+00000000
+95f6199a
+ffffffff
+46b14444
+00000000
+00000000
+00000000
+2bec3334
+00000000
+0c6c570a
+00000000
+63d3bae1
+00000000
+1663170a
+00000000
+dca75dde
+ffffffff
+6e53aeef
+00000000
+c1e24cce
+ffffffff
+a26270a4
+ffffffff
+f9c9d47b
+ffffffff
+e99ce8f6
+ffffffff
+ac5930a4
+ffffffff
+1f0ed999
+00000000
+6e53aeef
+00000000
+dca75dde
+ffffffff
+8918bfff
+ffffffff
+a8989c29
+ffffffff
+51313852
+00000000
+615e23d7
+00000000
+9ea1dc29
+ffffffff
+6a09e666
+00000000
+b94ebbbc
+ffffffff
+00000000
+00000000
+d413cccc
+ffffffff
+f393a8f6
+ffffffff
+9c2c451f
+ffffffff
+e99ce8f6
+ffffffff
+2358a222
+00000000
+91ac5111
+ffffffff
+3e1db332
+00000000
+5d9d8f5c
+00000000
+06362b85
+00000000
+1663170a
+00000000
+53a6cf5c
+00000000
+00000006
+00000000
+aaaaaaaa
+ffffffff
+55555554
+00000000
+0000000a
+00000000
+66666666
+00000000
+cccccccc
+ffffffff
+95f6199a
+ffffffff
+6a09e666
+00000000
+00000004
+00000000
+aaaaaaa8
+ffffffff
+00000000
+00000000
+00000008
+00000000
+66666664
+00000000
+ccccccca
+ffffffff
+6a09e664
+00000000
+aaaaaaac
+ffffffff
+55555556
+00000000
+0000000c
+00000000
+66666668
+00000000
+ccccccce
+ffffffff
+95f6199c
+ffffffff
+6a09e668
+00000000
+fffffffc
+ffffffff
+e38e38e4
+ffffffff
+c71c71c8
+ffffffff
+aaaaaaa4
+ffffffff
+bbbbbbbc
+ffffffff
+77777778
+00000000
+46b14444
+00000000
+b94ebbbc
+ffffffff
+8e38e390
+ffffffff
+00000000
+00000000
+55555550
+00000000
+66666668
+00000000
+22222224
+00000000
+63f96668
+00000000
+38e38e38
+00000000
+1c71c71c
+00000000
+fffffff8
+ffffffff
+11111110
+00000000
+cccccccc
+ffffffff
+9c069998
+ffffffff
+0ea41110
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000000c
+00000000
+55555554
+00000000
+aaaaaaa8
+ffffffff
+00000014
+00000000
+cccccccc
+ffffffff
+99999998
+ffffffff
+2bec3334
+00000000
+d413cccc
+ffffffff
+00000008
+00000000
+55555550
+00000000
+00000000
+00000000
+00000010
+00000000
+ccccccc8
+ffffffff
+99999994
+ffffffff
+d413ccc8
+ffffffff
+55555558
+00000000
+aaaaaaac
+ffffffff
+00000018
+00000000
+ccccccd0
+ffffffff
+9999999c
+ffffffff
+2bec3338
+00000000
+d413ccd0
+ffffffff
+99999996
+ffffffff
+9999999a
+ffffffff
+33333334
+00000000
+fffffffa
+ffffffff
+8f5c28f6
+ffffffff
+1eb851ec
+00000000
+0c6c570a
+00000000
+f393a8f6
+ffffffff
+66666664
+00000000
+66666668
+00000000
+00000000
+00000000
+ccccccc8
+ffffffff
+5c28f5c4
+00000000
+eb851eba
+ffffffff
+c06075c4
+ffffffff
+cccccccc
+ffffffff
+66666666
+00000000
+3333332c
+00000000
+c28f5c28
+ffffffff
+51eb851e
+00000000
+3f9f8a3c
+00000000
+26c6dc28
+00000000
+3333332f
+00000000
+88888889
+ffffffff
+11111112
+00000000
+fffffff9
+ffffffff
+51eb851f
+00000000
+a3d70a3e
+ffffffff
+63d3bae1
+00000000
+9c2c451f
+ffffffff
+ccccccca
+ffffffff
+22222224
+00000000
+00000000
+00000000
+99999994
+ffffffff
+eb851eba
+ffffffff
+3d70a3d9
+00000000
+35c5deba
+00000000
+eeeeeeee
+ffffffff
+77777777
+00000000
+6666665e
+00000000
+b851eb84
+ffffffff
+0a3d70a3
+00000000
+ca3a2146
+ffffffff
+0292ab84
+00000000
+1f0ed996
+00000000
+18fe599a
+00000000
+31fcb334
+00000000
+8918bffa
+ffffffff
+756568f6
+00000000
+eacad1ec
+ffffffff
+1663170a
+00000000
+e99ce8f6
+ffffffff
+6a09e664
+00000000
+63f96668
+00000000
+00000000
+00000000
+d413ccc8
+ffffffff
+c06075c4
+ffffffff
+35c5deba
+00000000
+3497f5c4
+00000000
+ce034ccc
+ffffffff
+e701a666
+ffffffff
+3e1db32c
+00000000
+2a6a5c28
+00000000
+9fcfc51e
+ffffffff
+cb680a3c
+ffffffff
+9ea1dc28
+ffffffff
+00000002
+00000000
+8e38e38e
+ffffffff
+1c71c71c
+00000000
+aaaaaaae
+ffffffff
+22222222
+00000000
+44444444
+00000000
+dca75dde
+ffffffff
+2358a222
+00000000
+aaaaaaac
+ffffffff
+38e38e38
+00000000
+00000000
+00000000
+55555558
+00000000
+cccccccc
+ffffffff
+eeeeeeee
+ffffffff
+ce034ccc
+ffffffff
+e38e38e4
+ffffffff
+71c71c72
+00000000
+00000004
+00000000
+77777778
+00000000
+9999999a
+ffffffff
+31fcb334
+00000000
+78adf778
+00000000
+00000001
+00000000
+c71c71c7
+ffffffff
+8e38e38e
+ffffffff
+55555557
+00000000
+11111111
+00000000
+22222222
+00000000
+6e53aeef
+00000000
+91ac5111
+ffffffff
+55555556
+00000000
+1c71c71c
+00000000
+00000000
+00000000
+aaaaaaac
+ffffffff
+66666666
+00000000
+77777777
+00000000
+e701a666
+ffffffff
+71c71c72
+00000000
+38e38e39
+00000000
+00000002
+00000000
+bbbbbbbc
+ffffffff
+cccccccd
+ffffffff
+18fe599a
+00000000
+3c56fbbc
+00000000
+00000012
+00000000
+fffffffe
+ffffffff
+fffffffc
+ffffffff
+0000001e
+00000000
+33333332
+00000000
+66666664
+00000000
+c1e24cce
+ffffffff
+3e1db332
+00000000
+0000000c
+00000000
+fffffff8
+ffffffff
+00000000
+00000000
+00000018
+00000000
+3333332c
+00000000
+6666665e
+00000000
+3e1db32c
+00000000
+00000004
+00000000
+00000002
+00000000
+00000024
+00000000
+33333338
+00000000
+6666666a
+00000000
+c1e24cd4
+ffffffff
+3e1db338
+00000000
+9999999c
+ffffffff
+44444444
+00000000
+88888888
+ffffffff
+00000004
+00000000
+f5c28f5c
+ffffffff
+eb851eb8
+ffffffff
+a26270a4
+ffffffff
+5d9d8f5c
+00000000
+66666668
+00000000
+11111110
+00000000
+00000000
+00000000
+ccccccd0
+ffffffff
+c28f5c28
+ffffffff
+b851eb84
+ffffffff
+2a6a5c28
+00000000
+77777778
+00000000
+bbbbbbbc
+ffffffff
+33333338
+00000000
+28f5c290
+00000000
+1eb851ec
+00000000
+d595a3d8
+ffffffff
+90d0c290
+ffffffff
+33333335
+00000000
+33333333
+00000000
+66666666
+00000000
+00000003
+00000000
+b851eb85
+ffffffff
+70a3d70a
+00000000
+f9c9d47b
+ffffffff
+06362b85
+00000000
+ccccccce
+ffffffff
+cccccccc
+ffffffff
+00000000
+00000000
+9999999c
+ffffffff
+51eb851e
+00000000
+0a3d70a3
+00000000
+9fcfc51e
+ffffffff
+9999999a
+ffffffff
+cccccccd
+ffffffff
+6666666a
+00000000
+1eb851ec
+00000000
+d70a3d71
+ffffffff
+60303ae2
+00000000
+6c9c91ec
+00000000
+e0f1266a
+ffffffff
+e701a666
+ffffffff
+ce034ccc
+ffffffff
+76e74006
+00000000
+8a9a970a
+ffffffff
+15352e14
+00000000
+e99ce8f6
+ffffffff
+1663170a
+00000000
+95f6199c
+ffffffff
+9c069998
+ffffffff
+00000000
+00000000
+2bec3338
+00000000
+3f9f8a3c
+00000000
+ca3a2146
+ffffffff
+cb680a3c
+ffffffff
+31fcb334
+00000000
+18fe599a
+00000000
+c1e24cd4
+ffffffff
+d595a3d8
+ffffffff
+60303ae2
+00000000
+3497f5c4
+00000000
+615e23d8
+00000000
+1f0ed99c
+00000000
+c3a90444
+ffffffff
+87520888
+ffffffff
+8918c004
+ffffffff
+dbcbcf5c
+ffffffff
+b7979eb8
+ffffffff
+ac5930a4
+ffffffff
+53a6cf5c
+00000000
+6a09e668
+00000000
+0ea41110
+00000000
+00000000
+00000000
+d413ccd0
+ffffffff
+26c6dc28
+00000000
+0292ab84
+00000000
+9ea1dc28
+ffffffff
+78adf778
+00000000
+3c56fbbc
+00000000
+3e1db338
+00000000
+90d0c290
+ffffffff
+6c9c91ec
+00000000
+615e23d8
+00000000
+08abc290
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffb00000
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/rem-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/rem-01.reference_output
new file mode 100644
index 000000000..6f197d865
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/rem-01.reference_output
@@ -0,0 +1,1332 @@
+00000000
+01000000
+00000000
+00000000
+fffffffe
+ffffffff
+fffffff8
+ffffffff
+00000000
+00000000
+ffffffff
+f7ffffff
+00000000
+00000004
+ffffffdf
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+0000003f
+00000000
+00000000
+00000000
+00000004
+00000000
+00000333
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00001555
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffbfff
+ffffffff
+00000000
+00000000
+fffffffa
+ffffffff
+00004000
+00000000
+ffffffff
+ffffffff
+ffffbfff
+ffffffff
+ffffffff
+ffffffff
+00080000
+00000000
+fffbffff
+ffffffff
+ffffffff
+ffffffff
+00020000
+00000000
+20000000
+00000000
+00000000
+00000000
+fffff7ff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fdffffff
+ffffffff
+fffffffa
+ffffffff
+bfffffff
+ffffffff
+00000400
+00000000
+fffeffff
+ffffffff
+ffffffff
+ffffffff
+fffffffa
+ffffffff
+00000020
+00000000
+00000000
+00000000
+00000000
+00000000
+00000009
+00000000
+00008000
+00000000
+ffffffff
+fffffffb
+00000000
+00000000
+ffffffff
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+ffffffbf
+ffffffff
+ffff7fff
+00000800
+00000000
+00000000
+00010000
+ffffffff
+fffff7ff
+00000004
+00000000
+ffffffff
+fffffbff
+00000000
+00000100
+10000000
+00000000
+4afb0cce
+ffffffff
+ffffffff
+ffffffff
+00000002
+00000000
+fffffffd
+ffffffff
+00000007
+00000000
+fffffffe
+ffffffff
+fffffff7
+ffffffff
+ffffffdf
+ffffffff
+ffffffdf
+ffffffff
+00000010
+00000000
+fffffe7e
+ffffffff
+fffffffb
+ffffffff
+fffffe00
+ffffffff
+00000fc1
+00000000
+00000004
+00000000
+00000002
+00000000
+fffffff8
+ffffffff
+fffffeff
+ffffffff
+00000004
+00000000
+00000040
+00000000
+00000004
+00000000
+fffbffff
+ffffffff
+00000005
+00000000
+00000020
+00000000
+00000100
+00000000
+00ffffc1
+00000000
+00000002
+00000000
+fc00fffe
+ffffffff
+fffffbff
+ffffffff
+0fffffe1
+00000000
+e000001e
+ffffffff
+c3fffffe
+ffffffff
+00000080
+00000000
+fffdffff
+ffffffff
+e0000001
+00000001
+fffe0001
+00000003
+00000001
+00000000
+b504f332
+00000000
+08000000
+00000000
+ff800000
+000000ff
+fffffffd
+ffffffff
+000001fe
+fffffc00
+00080000
+00000000
+fff7ffff
+ffffffff
+ffffffbf
+ffffffff
+000001fe
+ffff8000
+fffffbff
+ffffffff
+00000000
+00000200
+ffffffff
+fffffffb
+ffdfffff
+ffffffff
+fffffc01
+000fffff
+fffff7ff
+ffffffff
+fffeffff
+ffffffff
+0000001e
+ff000000
+00000008
+00000000
+ffff7fff
+ffffffff
+00000000
+00000004
+ffffffef
+ffffffff
+00000008
+00000000
+ffefffff
+ffffffff
+00008000
+00000000
+00000000
+00000000
+000000f1
+00000000
+00002000
+00000000
+00010000
+00000000
+00400000
+00000000
+04000000
+00000000
+80000000
+00000000
+00000000
+00000001
+000003e1
+00000000
+00000080
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffe001
+00000000
+ffffffff
+00001fff
+00000000
+00000000
+00000000
+00000000
+00000000
+00200000
+fffe0001
+0000003f
+7685e185
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffffb
+ffffffff
+00000000
+00000000
+ffffff7f
+ffffffff
+fffffdff
+ffffffff
+fffffffb
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+dfffffff
+ffffffff
+fffffffd
+ffffffff
+ffffffff
+fffffffd
+ffffffff
+ffffffef
+fffffffd
+ffffffff
+ffffffff
+ffffff7f
+ffffffff
+ffffffff
+00000ffe
+fffffffc
+ffffffff
+fffeffff
+ffffffff
+fffdffff
+ffffffff
+ffffffff
+fffffffb
+ffffffff
+db43aa5b
+ffffffff
+ffffffff
+efffffff
+ffffaaaa
+ffffffff
+00000000
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000001
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000002
+00000000
+00000000
+00000000
+55555555
+55555555
+00000000
+00000000
+22222222
+22222222
+55555555
+55555555
+72e6206d
+00000000
+72e6206d
+00000000
+00000001
+00000000
+00000001
+00000000
+55555555
+55555555
+00000001
+00000000
+22222223
+22222222
+55555555
+55555555
+368f24b3
+00000000
+55555555
+55555555
+00000000
+00000000
+00000005
+00000000
+22222221
+22222222
+55555555
+55555555
+368f24b3
+00000000
+af3d1c29
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+dddddddd
+dddddddd
+aaaaaaaa
+aaaaaaaa
+8d19df92
+ffffffff
+8d19df92
+ffffffff
+00000000
+00000000
+fffffffe
+ffffffff
+aaaaaaaa
+aaaaaaaa
+fffffffe
+ffffffff
+dddddddc
+dddddddd
+aaaaaaaa
+aaaaaaaa
+c970db4c
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ddddddde
+dddddddd
+aaaaaaaa
+aaaaaaaa
+c970db4c
+ffffffff
+50c2e3d6
+ffffffff
+00000002
+00000000
+00000005
+00000000
+00000005
+00000000
+00000000
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000000
+00000000
+33333333
+33333333
+33333333
+33333333
+00000003
+00000000
+00000000
+00000000
+33333333
+33333333
+44f079db
+00000000
+44f079db
+00000000
+00000001
+00000000
+33333333
+33333333
+33333333
+33333333
+00000003
+00000000
+00000001
+00000000
+33333333
+33333333
+8d58db23
+00000000
+33333333
+33333333
+33333333
+33333333
+00000003
+00000000
+33333333
+33333333
+33333333
+33333333
+8d58db23
+00000000
+b18d0bc7
+00000000
+00000000
+00000000
+11111111
+11111111
+11111110
+11111111
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+89e0f3b6
+00000000
+89e0f3b6
+00000000
+00000000
+00000000
+11111112
+11111111
+66666666
+66666666
+00000002
+00000000
+00000002
+00000000
+00000001
+00000000
+65acc314
+00000000
+11111110
+11111111
+11111111
+11111111
+00000000
+00000000
+33333332
+33333333
+66666666
+66666666
+65acc314
+00000000
+ae15245a
+00000000
+fffffffe
+ffffffff
+4afb0ccd
+ffffffff
+4afb0ccd
+ffffffff
+fffffffc
+ffffffff
+4afb0ccd
+ffffffff
+4afb0ccd
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+4afb0ccd
+ffffffff
+4afb0ccd
+ffffffff
+fffffffd
+ffffffff
+4afb0ccd
+ffffffff
+4afb0ccd
+ffffffff
+ffffffff
+ffffffff
+4afb0ccd
+ffffffff
+4afb0ccd
+ffffffff
+fffffffb
+ffffffff
+4afb0ccd
+ffffffff
+4afb0ccd
+ffffffff
+ffffffff
+ffffffff
+4afb0ccd
+ffffffff
+00000002
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000004
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000003
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000001
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000005
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000001
+00000000
+b504f333
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000001
+00000000
+55555554
+55555555
+55555554
+55555555
+00000004
+00000000
+22222221
+22222222
+55555554
+55555555
+72e6206c
+00000000
+72e6206c
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+55555555
+00000000
+00000000
+22222222
+22222222
+55555554
+55555555
+368f24b2
+00000000
+55555554
+55555555
+55555554
+55555555
+00000004
+00000000
+22222220
+22222222
+55555554
+55555555
+368f24b2
+00000000
+af3d1c28
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000002
+00000000
+33333332
+33333333
+33333332
+33333333
+00000002
+00000000
+33333332
+33333333
+33333332
+33333333
+44f079da
+00000000
+44f079da
+00000000
+00000000
+00000000
+33333332
+33333333
+33333332
+33333333
+00000002
+00000000
+00000000
+00000000
+33333332
+33333333
+8d58db22
+00000000
+33333332
+33333333
+33333332
+33333333
+00000002
+00000000
+33333332
+33333333
+33333332
+33333333
+8d58db22
+00000000
+b18d0bc6
+00000000
+00000002
+00000000
+11111110
+11111111
+1111110f
+11111111
+00000000
+00000000
+33333332
+33333333
+66666665
+66666666
+89e0f3b5
+00000000
+89e0f3b5
+00000000
+00000001
+00000000
+11111111
+11111111
+66666665
+66666666
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+65acc313
+00000000
+1111110f
+11111111
+11111110
+11111111
+00000005
+00000000
+33333331
+33333333
+66666665
+66666666
+65acc313
+00000000
+ae152459
+00000000
+00000001
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000003
+00000000
+b504f332
+00000000
+b504f332
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000000
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000002
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000000
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000004
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000000
+00000000
+b504f332
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+22222223
+22222222
+55555556
+55555555
+72e6206e
+00000000
+72e6206e
+00000000
+00000000
+00000000
+00000002
+00000000
+55555556
+55555555
+00000002
+00000000
+22222224
+22222222
+55555556
+55555555
+368f24b4
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+22222222
+22222222
+55555556
+55555555
+368f24b4
+00000000
+af3d1c2a
+00000000
+fffffffe
+ffffffff
+00000000
+00000000
+aaaaaaab
+aaaaaaaa
+00000000
+00000000
+ddddddde
+dddddddd
+aaaaaaab
+aaaaaaaa
+8d19df93
+ffffffff
+8d19df93
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+aaaaaaab
+aaaaaaaa
+ffffffff
+ffffffff
+dddddddd
+dddddddd
+aaaaaaab
+aaaaaaaa
+c970db4d
+ffffffff
+aaaaaaab
+aaaaaaaa
+00000000
+00000000
+fffffffb
+ffffffff
+dddddddf
+dddddddd
+aaaaaaab
+aaaaaaaa
+c970db4d
+ffffffff
+50c2e3d7
+ffffffff
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000001
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000002
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000001
+00000000
+33333334
+33333333
+33333334
+33333333
+00000004
+00000000
+00000001
+00000000
+33333334
+33333333
+44f079dc
+00000000
+44f079dc
+00000000
+00000000
+00000000
+33333334
+33333333
+33333334
+33333333
+00000000
+00000000
+00000002
+00000000
+33333334
+33333333
+8d58db24
+00000000
+33333334
+33333333
+33333334
+33333333
+00000004
+00000000
+00000000
+00000000
+33333334
+33333333
+8d58db24
+00000000
+b18d0bc8
+00000000
+00000001
+00000000
+11111112
+11111111
+11111111
+11111111
+00000002
+00000000
+00000001
+00000000
+00000001
+00000000
+89e0f3b7
+00000000
+89e0f3b7
+00000000
+00000001
+00000000
+11111113
+11111111
+66666667
+66666666
+00000003
+00000000
+00000003
+00000000
+00000002
+00000000
+65acc315
+00000000
+11111111
+11111111
+11111112
+11111111
+00000001
+00000000
+33333333
+33333333
+00000000
+00000000
+65acc315
+00000000
+ae15245b
+00000000
+ffffffff
+ffffffff
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+fffffffd
+ffffffff
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+00000000
+00000000
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+fffffffe
+ffffffff
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+00000000
+00000000
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+fffffffc
+ffffffff
+4afb0cce
+ffffffff
+4afb0cce
+ffffffff
+00000000
+00000000
+4afb0cce
+ffffffff
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000002
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00800000
+00000000
+00000040
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remu-01.reference_output
new file mode 100644
index 000000000..637ba5ce6
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remu-01.reference_output
@@ -0,0 +1,1644 @@
+55555555
+55555555
+00000000
+00000000
+fffff7ff
+ffffffff
+aaaaaaaa
+aaaaaaaa
+00000000
+00000000
+00000000
+00000000
+0000ffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0000000f
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000006
+00000000
+00000001
+00000000
+00000000
+00000000
+00000555
+00000000
+00000000
+00000000
+00000000
+00000000
+00007fff
+00000000
+00000000
+00000000
+00000010
+00000000
+00000004
+00000000
+000fffff
+00000000
+00000000
+00000000
+00000020
+00000000
+0004f332
+00000000
+ffffffef
+ffffffff
+00000002
+00000000
+03feffff
+00000000
+07ffffff
+00000000
+00000000
+00000000
+1bffffff
+00000000
+01000000
+00000000
+66666665
+00000000
+ffffffff
+00000000
+b504f332
+00000000
+ffffffff
+00000003
+00000000
+00000000
+ffffffff
+0000001f
+aaaaaaaa
+0000002a
+ffffffff
+0000007f
+00000006
+00000000
+00000000
+00000000
+ffffffbf
+000003ff
+04000000
+00000000
+ffefffff
+00000fff
+00800000
+00000000
+ffffffff
+00003fff
+fff7ffff
+00007fff
+00000009
+00000000
+55555555
+00015555
+00000002
+00000000
+00000000
+00000010
+ffffffff
+000fffbf
+00000004
+00000000
+00000009
+00000000
+ffffffff
+0077ffff
+00000001
+00000000
+00100000
+00000000
+ffffbfff
+03ffffff
+20000000
+00000000
+00000100
+00000000
+dfffffff
+1fffffff
+00000000
+00001000
+00400000
+00000000
+00000000
+00000020
+66666667
+66666666
+33333332
+33333333
+ffffbfff
+ffffffff
+66666666
+66666666
+00100000
+00000000
+55555556
+55555555
+ffffffff
+fffffbff
+00080000
+00000000
+ffffffff
+ffffefff
+000003f0
+00000000
+aaaaaaa9
+aaaaaaaa
+00000003
+00000000
+00000009
+00000000
+00000012
+00000000
+02000000
+00000000
+0000000e
+00000000
+00000000
+00400000
+ffffffff
+ffffffef
+00000000
+00000000
+00000040
+00000000
+00180000
+00000000
+aaaaaaaa
+aaaaaaaa
+55555555
+55555555
+00000000
+00040000
+ffffffff
+fffffffd
+00000005
+00000000
+00000000
+00001000
+0ffffc00
+00000000
+ffffffff
+fffeffff
+55555555
+55555555
+ffffffff
+fdffffff
+ffe00000
+00000000
+00000001
+00000000
+ffffffff
+fff7ffff
+00000000
+08000000
+04000000
+00000000
+fc000000
+0000003f
+00000000
+00000100
+33333334
+33333333
+00000000
+10000000
+00000000
+000003e0
+00008000
+00000000
+00080000
+00000000
+0000000a
+00000000
+00000000
+00000400
+0000000f
+00000000
+10000000
+00000000
+ffffff80
+0003ffff
+00000000
+00040000
+00000000
+00000800
+10000000
+00000000
+ffffffff
+ff7fffff
+00002000
+00000000
+00000040
+00000000
+33333333
+33333333
+01000000
+00000000
+00000000
+07c00000
+33333334
+33333333
+20000000
+00000000
+00000000
+3ffe0000
+00000004
+00000000
+55555555
+55555455
+00000000
+00000040
+00000002
+00000000
+00000080
+00000000
+00000200
+00000000
+00000004
+00000000
+00000800
+00000000
+00000001
+00000000
+00004000
+00000000
+00020000
+00000000
+08000000
+00000000
+80000000
+00000000
+00000000
+00000002
+00000000
+00000004
+00000000
+00000000
+00000000
+00000080
+00000000
+00000200
+00000000
+00002000
+00000000
+00004000
+00000000
+00008000
+00000002
+00000000
+00000000
+00080000
+00000000
+00100000
+00000000
+00200000
+00000000
+00800000
+00000000
+01000000
+00000000
+00000000
+00000000
+04000000
+00000000
+20000000
+00000000
+40000000
+0000000e
+00000000
+0000007d
+00000000
+5555554f
+55555555
+00000007
+00000000
+ffffffdf
+000001ff
+0007ff00
+00000000
+000ffe00
+00000000
+000003ff
+00000000
+003fe000
+00000000
+3332b331
+33333333
+00000003
+00000000
+55515555
+55555555
+ffbfffff
+ffffffff
+ff800000
+000fffff
+1f000000
+00000000
+fdffffff
+0000003f
+f7ffffff
+0003ffff
+45555554
+55555555
+c0000000
+0001ffff
+00000001
+00000000
+58b26147
+00000000
+0000000a
+00000000
+00000000
+00000380
+00000003
+00000000
+07ffffff
+00000000
+00000007
+00000000
+00000000
+00300000
+ffffffff
+0007ffff
+ffffffff
+00000003
+55555556
+51555555
+00000000
+10000000
+00003fff
+00000000
+ffffffff
+bfffffff
+00000000
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000001
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000000
+00000000
+00000003
+00000000
+00000002
+00000000
+00000000
+00000000
+55555555
+55555555
+00000000
+00000000
+22222222
+22222222
+55555555
+55555555
+72e6206d
+00000000
+55555555
+55555555
+55555555
+00000000
+00000001
+00000000
+00000001
+00000000
+55555555
+55555555
+00000001
+00000000
+22222223
+22222222
+55555555
+55555555
+368f24b3
+00000000
+aaaaaaaa
+00000000
+55555555
+55555555
+55555555
+55555555
+00000005
+00000000
+22222221
+22222222
+55555555
+55555555
+af3d1c29
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+11111111
+44444444
+44444444
+30c74da7
+00000000
+aaaaaaaa
+aaaaaaaa
+aaaaaaaa
+00000000
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+00000002
+00000000
+11111114
+11111111
+44444445
+44444444
+6d1e4966
+00000000
+55555555
+00000000
+55555554
+55555555
+aaaaaaaa
+aaaaaaaa
+00000004
+00000000
+1111110e
+11111111
+44444443
+44444444
+a975451e
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000005
+00000000
+00000005
+00000000
+00000000
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000000
+00000000
+00000005
+00000000
+00000000
+00000000
+33333333
+33333333
+33333333
+33333333
+00000003
+00000000
+00000000
+00000000
+33333333
+33333333
+44f079db
+00000000
+33333333
+33333333
+33333333
+00000000
+00000001
+00000000
+33333333
+33333333
+33333333
+33333333
+00000003
+00000000
+00000001
+00000000
+33333333
+33333333
+8d58db23
+00000000
+66666666
+00000000
+33333333
+33333333
+33333333
+33333333
+00000003
+00000000
+33333333
+33333333
+33333333
+33333333
+b18d0bc7
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+11111111
+66666666
+66666666
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+89e0f3b6
+00000000
+66666666
+66666666
+66666666
+00000000
+11111112
+11111111
+66666666
+66666666
+00000002
+00000000
+00000002
+00000000
+00000001
+00000000
+65acc314
+00000000
+cccccccc
+00000000
+11111110
+11111111
+66666666
+66666666
+00000000
+00000000
+33333332
+33333333
+66666666
+66666666
+ae15245a
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000004
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000000
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000001
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000003
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000001
+00000000
+b504f333
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000005
+00000000
+b504f333
+00000000
+b504f333
+00000000
+b504f333
+00000000
+00000000
+00000000
+b504f333
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+4afb0ccd
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+4afb0cce
+00000000
+00000001
+00000000
+00000000
+00000001
+00000000
+00000001
+00000004
+00000000
+00000000
+00000001
+00000000
+00000001
+4afb0ccc
+00000000
+00000000
+00000000
+00000000
+00000001
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+55555554
+55555555
+55555554
+55555555
+00000004
+00000000
+22222221
+22222222
+55555554
+55555555
+72e6206c
+00000000
+55555554
+55555555
+55555554
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+55555555
+00000000
+00000000
+22222222
+22222222
+55555554
+55555555
+368f24b2
+00000000
+aaaaaaa9
+00000000
+55555554
+55555555
+55555554
+55555555
+00000004
+00000000
+22222220
+22222222
+55555554
+55555555
+af3d1c28
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+55555554
+55555555
+aaaaaaa9
+aaaaaaaa
+00000004
+00000000
+11111110
+11111111
+44444443
+44444444
+30c74da6
+00000000
+aaaaaaa9
+aaaaaaaa
+aaaaaaa9
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+11111113
+11111111
+44444444
+44444444
+6d1e4965
+00000000
+55555554
+00000000
+55555553
+55555555
+aaaaaaa9
+aaaaaaaa
+00000003
+00000000
+1111110d
+11111111
+44444442
+44444444
+a975451d
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000002
+00000000
+33333332
+33333333
+33333332
+33333333
+00000002
+00000000
+33333332
+33333333
+33333332
+33333333
+44f079da
+00000000
+33333332
+33333333
+33333332
+00000000
+00000000
+00000000
+33333332
+33333333
+33333332
+33333333
+00000002
+00000000
+00000000
+00000000
+33333332
+33333333
+8d58db22
+00000000
+66666665
+00000000
+33333332
+33333333
+33333332
+33333333
+00000002
+00000000
+33333332
+33333333
+33333332
+33333333
+b18d0bc6
+00000000
+00000000
+00000000
+00000000
+00000001
+00000002
+00000000
+11111110
+11111111
+66666665
+66666666
+00000000
+00000000
+33333332
+33333333
+66666665
+66666666
+89e0f3b5
+00000000
+66666665
+66666666
+66666665
+00000000
+00000001
+00000000
+11111111
+11111111
+66666665
+66666666
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+65acc313
+00000000
+cccccccb
+00000000
+1111110f
+11111111
+66666665
+66666666
+00000005
+00000000
+33333331
+33333333
+66666665
+66666666
+ae152459
+00000000
+00000000
+00000000
+00000000
+00000001
+00000001
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000003
+00000000
+b504f332
+00000000
+b504f332
+00000000
+b504f332
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000000
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000002
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000000
+00000000
+b504f332
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000004
+00000000
+b504f332
+00000000
+b504f332
+00000000
+b504f332
+00000000
+00000000
+00000000
+b504f332
+00000000
+00000000
+00000000
+ffffffff
+00000000
+ffffffff
+00000000
+00000000
+00000000
+ffffffff
+00000000
+ffffffff
+00000000
+4afb0ccc
+00000000
+ffffffff
+00000000
+ffffffff
+00000000
+00000001
+00000000
+ffffffff
+00000000
+ffffffff
+00000000
+00000003
+00000000
+ffffffff
+00000000
+ffffffff
+00000000
+4afb0ccd
+00000000
+00000000
+00000000
+ffffffff
+00000000
+ffffffff
+00000000
+00000003
+00000000
+ffffffff
+00000000
+ffffffff
+00000000
+4afb0ccb
+00000000
+00000000
+00000000
+ffffffff
+00000000
+00000000
+00000000
+00000001
+00000000
+55555556
+55555555
+00000001
+00000000
+22222223
+22222222
+55555556
+55555555
+72e6206e
+00000000
+55555556
+55555555
+55555556
+00000000
+00000000
+00000000
+00000002
+00000000
+55555556
+55555555
+00000002
+00000000
+22222224
+22222222
+55555556
+55555555
+368f24b4
+00000000
+aaaaaaab
+00000000
+00000000
+00000000
+55555556
+55555555
+00000000
+00000000
+22222222
+22222222
+55555556
+55555555
+af3d1c2a
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+11111112
+11111111
+44444445
+44444444
+30c74da8
+00000000
+aaaaaaab
+aaaaaaaa
+aaaaaaab
+00000000
+00000001
+00000000
+00000003
+00000000
+00000002
+00000000
+00000003
+00000000
+11111115
+11111111
+44444446
+44444444
+6d1e4967
+00000000
+55555556
+00000000
+55555555
+55555555
+00000000
+00000000
+00000005
+00000000
+1111110f
+11111111
+44444444
+44444444
+a975451f
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000001
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000002
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+33333334
+33333333
+33333334
+33333333
+00000004
+00000000
+00000001
+00000000
+33333334
+33333333
+44f079dc
+00000000
+33333334
+33333333
+33333334
+00000000
+00000000
+00000000
+33333334
+33333333
+33333334
+33333333
+00000000
+00000000
+00000002
+00000000
+33333334
+33333333
+8d58db24
+00000000
+66666667
+00000000
+33333334
+33333333
+33333334
+33333333
+00000004
+00000000
+00000000
+00000000
+33333334
+33333333
+b18d0bc8
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+11111112
+11111111
+66666667
+66666666
+00000002
+00000000
+00000001
+00000000
+00000001
+00000000
+89e0f3b7
+00000000
+66666667
+66666666
+66666667
+00000000
+00000001
+00000000
+11111113
+11111111
+66666667
+66666666
+00000003
+00000000
+00000003
+00000000
+00000002
+00000000
+65acc315
+00000000
+cccccccd
+00000000
+11111111
+11111111
+66666667
+66666666
+00000001
+00000000
+33333333
+33333333
+00000000
+00000000
+ae15245b
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000001
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000002
+00000000
+b504f334
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000000
+00000000
+b504f334
+00000000
+b504f334
+00000000
+00000000
+00000000
+00000000
+00000000
+b504f334
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+00000001
+00000001
+00000001
+00000001
+00000002
+00000000
+00000001
+00000001
+00000001
+00000001
+4afb0cce
+00000000
+00000001
+00000001
+00000001
+00000000
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+00000001
+00000000
+00000001
+00000001
+00000001
+00000001
+4afb0ccf
+00000000
+00000002
+00000000
+00000001
+00000001
+00000001
+00000001
+00000005
+00000000
+00000001
+00000001
+00000001
+00000001
+4afb0ccd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000006
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00ffffef
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remuw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remuw-01.reference_output
new file mode 100644
index 000000000..d208d5667
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remuw-01.reference_output
@@ -0,0 +1,1636 @@
+00000002
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000007
+00000000
+0000000f
+00000000
+0000001f
+00000000
+0000003f
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+000003ff
+00000000
+000007ff
+00000000
+00000000
+00000000
+00000000
+00000000
+00003ffe
+00000000
+00000000
+00000000
+0000ffff
+00000000
+00000000
+00000000
+0002aaab
+00000000
+0007ffff
+00000000
+00000000
+00000000
+001fffff
+00000000
+00000000
+00000000
+00000000
+00000000
+01ffffff
+00000000
+00002000
+00000000
+05555556
+00000000
+0ffffffd
+00000000
+00000000
+00000000
+00000800
+00000000
+33333333
+00000000
+00100000
+00000000
+00000000
+00000000
+00000010
+00000000
+55555555
+00000000
+00000000
+00000000
+aaaaaaaa
+ffffffff
+fffffdff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000005
+00000000
+00000000
+00000000
+0000000f
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000006
+00000000
+ffffffbf
+ffffffff
+00000002
+00000000
+00000012
+00000000
+00000080
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+66666666
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+0000000b
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000005
+00000000
+55555554
+00000000
+00000003
+00000000
+b504f333
+ffffffff
+00000000
+00000000
+33333334
+00000000
+00000040
+00000000
+00000000
+00000000
+ffffdfff
+ffffffff
+00000000
+00000000
+00080000
+00000000
+00000800
+00000000
+00000000
+00000000
+00000200
+00000000
+b504f332
+ffffffff
+00007fe0
+00000000
+10000000
+00000000
+fffbffff
+ffffffff
+00000000
+00000000
+00080000
+00000000
+00000003
+00000000
+00000000
+00000000
+00000040
+00000000
+00000000
+00000000
+00000011
+00000000
+01fffe00
+00000000
+aaaaaaab
+ffffffff
+00000001
+00000000
+00000000
+00000000
+20000000
+00000000
+00000007
+00000000
+00000001
+00000000
+66666666
+00000000
+7fffffff
+00000000
+00000002
+00000000
+00000000
+00000000
+00004000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffdfff
+ffffffff
+00000000
+00000000
+00000080
+00000000
+00000008
+00000000
+ffff7fff
+ffffffff
+fffffeff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+fffff7ff
+ffffffff
+efffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000012
+00000000
+55555556
+00000000
+00000000
+00000000
+ffffffdf
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fff7ffff
+ffffffff
+fffff7ff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000004
+00000000
+00000020
+00000000
+00000001
+00000000
+00000400
+00000000
+00001000
+00000000
+00000000
+00000000
+00010000
+00000000
+00020000
+00000000
+00040000
+00000000
+00200000
+00000000
+00000004
+00000000
+00800000
+00000000
+01000000
+00000000
+04000000
+00000000
+08000000
+00000000
+20000000
+00000000
+40000000
+00000000
+80000000
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000005
+00000000
+0ffffff7
+00000000
+000ffff0
+00000000
+ffffff7f
+ffffffff
+00000005
+00000000
+007ff000
+00000000
+0007bfff
+00000000
+001effff
+00000000
+fffdffff
+ffffffff
+00300000
+00000000
+ff7fffff
+ffffffff
+feffffff
+ffffffff
+fdffffff
+ffffffff
+fbffffff
+ffffffff
+f7ffffff
+ffffffff
+bfffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00003fff
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+00008000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+03ffffff
+00000000
+00004000
+00000000
+000001ff
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000001
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+22222222
+00000000
+55555555
+00000000
+55555555
+00000000
+55555555
+00000000
+55555555
+00000000
+00000001
+00000000
+00000001
+00000000
+55555555
+00000000
+00000001
+00000000
+22222223
+00000000
+55555555
+00000000
+55555555
+00000000
+55555555
+00000000
+55555555
+00000000
+55555555
+00000000
+00000001
+00000000
+22222221
+00000000
+55555555
+00000000
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+00000000
+44444444
+00000000
+aaaaaaaa
+ffffffff
+aaaaaaaa
+ffffffff
+aaaaaaaa
+ffffffff
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+00000002
+00000000
+11111114
+00000000
+44444445
+00000000
+aaaaaaaa
+ffffffff
+aaaaaaaa
+ffffffff
+55555554
+00000000
+aaaaaaaa
+ffffffff
+00000002
+00000000
+1111110e
+00000000
+44444443
+00000000
+aaaaaaaa
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000005
+00000000
+00000005
+00000000
+00000000
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+33333333
+00000000
+33333333
+00000000
+00000004
+00000000
+00000000
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+00000001
+00000000
+33333333
+00000000
+33333333
+00000000
+00000003
+00000000
+00000001
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+00000003
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+11111111
+00000000
+66666666
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+66666666
+00000000
+66666666
+00000000
+66666666
+00000000
+00000000
+00000000
+11111112
+00000000
+66666666
+00000000
+00000002
+00000000
+00000002
+00000000
+00000001
+00000000
+66666666
+00000000
+66666666
+00000000
+11111110
+00000000
+66666666
+00000000
+00000000
+00000000
+33333332
+00000000
+66666666
+00000000
+66666666
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+0a5a4889
+00000000
+0a5a4889
+00000000
+00000004
+00000000
+1b6b599a
+00000000
+4e9e8ccd
+00000000
+00000000
+00000000
+b504f333
+ffffffff
+b504f333
+ffffffff
+00000001
+00000000
+0a5a488b
+00000000
+0a5a488a
+00000000
+00000003
+00000000
+1b6b599d
+00000000
+4e9e8cce
+00000000
+00000001
+00000000
+b504f333
+ffffffff
+0a5a4887
+00000000
+0a5a4888
+00000000
+00000005
+00000000
+1b6b5997
+00000000
+4e9e8ccc
+00000000
+b504f333
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+00000000
+55555554
+00000000
+00000004
+00000000
+22222221
+00000000
+55555554
+00000000
+55555554
+00000000
+55555554
+00000000
+55555554
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+00000000
+00000000
+00000000
+22222222
+00000000
+55555554
+00000000
+55555554
+00000000
+55555554
+00000000
+55555554
+00000000
+55555554
+00000000
+00000000
+00000000
+22222220
+00000000
+55555554
+00000000
+55555554
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+55555554
+00000000
+aaaaaaa9
+ffffffff
+00000004
+00000000
+11111110
+00000000
+44444443
+00000000
+aaaaaaa9
+ffffffff
+aaaaaaa9
+ffffffff
+aaaaaaa9
+ffffffff
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+11111113
+00000000
+44444444
+00000000
+aaaaaaa9
+ffffffff
+aaaaaaa9
+ffffffff
+55555553
+00000000
+aaaaaaa9
+ffffffff
+00000001
+00000000
+1111110d
+00000000
+44444442
+00000000
+aaaaaaa9
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+33333332
+00000000
+33333332
+00000000
+00000003
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+00000000
+00000000
+33333332
+00000000
+33333332
+00000000
+00000002
+00000000
+00000000
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+00000002
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+11111110
+00000000
+66666665
+00000000
+00000002
+00000000
+33333332
+00000000
+66666665
+00000000
+66666665
+00000000
+66666665
+00000000
+66666665
+00000000
+00000001
+00000000
+11111111
+00000000
+66666665
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+66666665
+00000000
+66666665
+00000000
+1111110f
+00000000
+66666665
+00000000
+00000005
+00000000
+33333331
+00000000
+66666665
+00000000
+66666665
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+0a5a4888
+00000000
+0a5a4888
+00000000
+00000003
+00000000
+1b6b5999
+00000000
+4e9e8ccc
+00000000
+b504f332
+ffffffff
+b504f332
+ffffffff
+b504f332
+ffffffff
+00000000
+00000000
+0a5a488a
+00000000
+0a5a4889
+00000000
+00000002
+00000000
+1b6b599c
+00000000
+4e9e8ccd
+00000000
+00000000
+00000000
+b504f332
+ffffffff
+0a5a4886
+00000000
+0a5a4887
+00000000
+00000004
+00000000
+1b6b5996
+00000000
+4e9e8ccb
+00000000
+b504f332
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+00000000
+00000000
+33333333
+00000000
+4afb0ccc
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000001
+00000000
+00000003
+00000000
+55555556
+00000000
+00000003
+00000000
+00000005
+00000000
+33333335
+00000000
+4afb0ccd
+00000000
+00000000
+00000000
+55555553
+00000000
+55555554
+00000000
+00000003
+00000000
+3333332f
+00000000
+33333331
+00000000
+4afb0ccb
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000001
+00000000
+55555556
+00000000
+00000001
+00000000
+22222223
+00000000
+55555556
+00000000
+55555556
+00000000
+55555556
+00000000
+55555556
+00000000
+00000000
+00000000
+00000002
+00000000
+55555556
+00000000
+00000002
+00000000
+22222224
+00000000
+55555556
+00000000
+55555556
+00000000
+55555556
+00000000
+00000000
+00000000
+55555556
+00000000
+00000002
+00000000
+22222222
+00000000
+55555556
+00000000
+55555556
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+11111112
+00000000
+44444445
+00000000
+aaaaaaab
+ffffffff
+aaaaaaab
+ffffffff
+aaaaaaab
+ffffffff
+00000001
+00000000
+00000003
+00000000
+00000002
+00000000
+00000003
+00000000
+11111115
+00000000
+44444446
+00000000
+aaaaaaab
+ffffffff
+aaaaaaab
+ffffffff
+55555555
+00000000
+00000000
+00000000
+00000003
+00000000
+1111110f
+00000000
+44444444
+00000000
+aaaaaaab
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000001
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000002
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+33333334
+00000000
+33333334
+00000000
+00000000
+00000000
+00000001
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+00000000
+00000000
+33333334
+00000000
+33333334
+00000000
+00000000
+00000000
+00000002
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+00000004
+00000000
+00000000
+00000000
+33333334
+00000000
+33333334
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+11111112
+00000000
+66666667
+00000000
+00000004
+00000000
+00000001
+00000000
+00000001
+00000000
+66666667
+00000000
+66666667
+00000000
+66666667
+00000000
+00000001
+00000000
+11111113
+00000000
+66666667
+00000000
+00000003
+00000000
+00000003
+00000000
+00000002
+00000000
+66666667
+00000000
+66666667
+00000000
+11111111
+00000000
+66666667
+00000000
+00000001
+00000000
+33333333
+00000000
+00000000
+00000000
+66666667
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+0a5a488a
+00000000
+0a5a488a
+00000000
+00000000
+00000000
+1b6b599b
+00000000
+4e9e8cce
+00000000
+00000001
+00000000
+b504f334
+ffffffff
+b504f334
+ffffffff
+00000000
+00000000
+0a5a488c
+00000000
+0a5a488b
+00000000
+00000000
+00000000
+1b6b599e
+00000000
+4e9e8ccf
+00000000
+00000002
+00000000
+b504f334
+ffffffff
+0a5a4888
+00000000
+0a5a4889
+00000000
+00000000
+00000000
+1b6b5998
+00000000
+4e9e8ccd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000006
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+00000055
+00000000
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remw-01.reference_output
new file mode 100644
index 000000000..a7eadfb99
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/M/references/remw-01.reference_output
@@ -0,0 +1,1352 @@
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000002
+00000000
+00000000
+00000000
+ffffefff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+fffffff7
+ffffffff
+00000000
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffeff
+ffffffff
+00000004
+00000000
+ffffffff
+ffffffff
+ffffff7f
+ffffffff
+dfffffff
+ffffffff
+00000005
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00155555
+00000000
+fffffff7
+ffffffff
+fffdffff
+ffffffff
+fff7ffff
+ffffffff
+fffffbff
+ffffffff
+00000000
+00000000
+00001000
+00000000
+00000000
+00000000
+0afb0cce
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+fffbffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+aaaaaaaa
+ffffffff
+00000006
+00000000
+00000100
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000400
+00000000
+ffffffff
+ffffffff
+aaaaaaaa
+ffffffff
+4afb0ccd
+00000000
+00000009
+00000000
+00000000
+00000000
+fffffffa
+ffffffff
+00000003
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000003
+00000000
+ffffffff
+ffffffff
+b504f334
+ffffffff
+ffffefff
+ffffffff
+fffff7ff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+fffffff7
+ffffffff
+00000000
+00000000
+00000005
+00000000
+00000007
+00000000
+ffffffff
+ffffffff
+000001fd
+00000000
+00000000
+00000000
+fffffffb
+ffffffff
+fffffffc
+ffffffff
+00000000
+00000000
+00000006
+00000000
+00000000
+00000000
+ffff01fe
+ffffffff
+fffe000e
+ffffffff
+0003f001
+00000000
+fff80fff
+ffffffff
+fffffff9
+ffffffff
+00000000
+00000000
+00000080
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+fe00001e
+ffffffff
+02fb0cbc
+00000000
+02000000
+00000000
+faaaaaaf
+ffffffff
+ffffffff
+ffffffff
+00000001
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+00000004
+00000000
+00000010
+00000000
+00000002
+00000000
+00001fff
+00000000
+00008000
+00000000
+00010000
+00000000
+00020000
+00000000
+00100000
+00000000
+00200000
+00000000
+00400000
+00000000
+00800000
+00000000
+00000004
+00000000
+04000000
+00000000
+08000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+fffffffe
+ffffffff
+fffffffb
+ffffffff
+00000000
+00000000
+ffffffdf
+ffffffff
+ffffffbf
+ffffffff
+fffffdff
+ffffffff
+ffffffff
+ffffffff
+fffffffc
+ffffffff
+fffeffff
+ffffffff
+ffefffff
+ffffffff
+ffbfffff
+ffffffff
+ffffffff
+ffffffff
+ff000002
+ffffffff
+00000001
+00000000
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000001
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000003
+00000000
+00000001
+00000000
+00000000
+00000000
+55555555
+00000000
+00000000
+00000000
+22222222
+00000000
+55555555
+00000000
+0a5a4888
+00000000
+0a5a4888
+00000000
+00000001
+00000000
+00000001
+00000000
+55555555
+00000000
+00000001
+00000000
+22222223
+00000000
+55555555
+00000000
+0a5a4887
+00000000
+55555555
+00000000
+00000000
+00000000
+00000001
+00000000
+22222221
+00000000
+55555555
+00000000
+0a5a4887
+00000000
+0a5a4889
+00000000
+fffffffe
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+dddddddd
+ffffffff
+aaaaaaaa
+ffffffff
+f5a5b777
+ffffffff
+f5a5b777
+ffffffff
+00000000
+00000000
+fffffffe
+ffffffff
+aaaaaaaa
+ffffffff
+fffffffe
+ffffffff
+dddddddc
+ffffffff
+aaaaaaaa
+ffffffff
+f5a5b778
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+fffffffe
+ffffffff
+ddddddde
+ffffffff
+aaaaaaaa
+ffffffff
+f5a5b778
+ffffffff
+f5a5b776
+ffffffff
+00000002
+00000000
+00000005
+00000000
+00000005
+00000000
+00000000
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000001
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000005
+00000000
+00000000
+00000000
+33333333
+00000000
+33333333
+00000000
+00000004
+00000000
+00000000
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+00000001
+00000000
+33333333
+00000000
+33333333
+00000000
+00000003
+00000000
+00000001
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+00000003
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+33333333
+00000000
+00000000
+00000000
+11111111
+00000000
+11111110
+00000000
+00000003
+00000000
+00000000
+00000000
+00000000
+00000000
+1b6b5999
+00000000
+1b6b5999
+00000000
+00000000
+00000000
+11111112
+00000000
+66666666
+00000000
+00000002
+00000000
+00000002
+00000000
+00000001
+00000000
+1b6b5998
+00000000
+11111110
+00000000
+11111111
+00000000
+00000000
+00000000
+33333332
+00000000
+66666666
+00000000
+1b6b5998
+00000000
+1b6b599a
+00000000
+00000002
+00000000
+4afb0ccd
+00000000
+4afb0ccd
+00000000
+00000002
+00000000
+17c7d99a
+00000000
+4afb0ccd
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+4afb0ccd
+00000000
+4afb0ccd
+00000000
+00000001
+00000000
+17c7d99b
+00000000
+4afb0ccd
+00000000
+4afb0ccd
+00000000
+4afb0ccd
+00000000
+4afb0ccd
+00000000
+00000005
+00000000
+17c7d999
+00000000
+4afb0ccd
+00000000
+4afb0ccd
+00000000
+00000001
+00000000
+fffffffe
+ffffffff
+b504f333
+ffffffff
+b504f333
+ffffffff
+fffffffe
+ffffffff
+e8382666
+ffffffff
+b504f333
+ffffffff
+00000000
+00000000
+00000000
+00000000
+ffffffff
+ffffffff
+b504f333
+ffffffff
+b504f333
+ffffffff
+ffffffff
+ffffffff
+e8382665
+ffffffff
+b504f333
+ffffffff
+b504f333
+ffffffff
+b504f333
+ffffffff
+b504f333
+ffffffff
+fffffffb
+ffffffff
+e8382667
+ffffffff
+b504f333
+ffffffff
+b504f333
+ffffffff
+ffffffff
+ffffffff
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000002
+00000000
+00000000
+00000000
+55555554
+00000000
+55555554
+00000000
+00000004
+00000000
+22222221
+00000000
+55555554
+00000000
+0a5a4887
+00000000
+0a5a4887
+00000000
+00000000
+00000000
+00000000
+00000000
+55555554
+00000000
+00000000
+00000000
+22222222
+00000000
+55555554
+00000000
+0a5a4886
+00000000
+55555554
+00000000
+55555554
+00000000
+00000000
+00000000
+22222220
+00000000
+55555554
+00000000
+0a5a4886
+00000000
+0a5a4888
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000001
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000000
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000004
+00000000
+00000002
+00000000
+33333332
+00000000
+33333332
+00000000
+00000003
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+00000000
+00000000
+33333332
+00000000
+33333332
+00000000
+00000002
+00000000
+00000000
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+00000002
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+33333332
+00000000
+00000002
+00000000
+11111110
+00000000
+1111110f
+00000000
+00000002
+00000000
+33333332
+00000000
+66666665
+00000000
+1b6b5998
+00000000
+1b6b5998
+00000000
+00000001
+00000000
+11111111
+00000000
+66666665
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+1b6b5997
+00000000
+1111110f
+00000000
+11111110
+00000000
+00000005
+00000000
+33333331
+00000000
+66666665
+00000000
+1b6b5997
+00000000
+1b6b5999
+00000000
+00000000
+00000000
+b504f332
+ffffffff
+b504f332
+ffffffff
+fffffffd
+ffffffff
+e8382665
+ffffffff
+b504f332
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+00000000
+00000000
+b504f332
+ffffffff
+b504f332
+ffffffff
+fffffffe
+ffffffff
+e8382664
+ffffffff
+b504f332
+ffffffff
+00000000
+00000000
+b504f332
+ffffffff
+b504f332
+ffffffff
+00000000
+00000000
+e8382666
+ffffffff
+b504f332
+ffffffff
+00000000
+00000000
+fffffffe
+ffffffff
+00000002
+00000000
+00000001
+00000000
+00000000
+00000000
+00000001
+00000000
+22222223
+00000000
+55555556
+00000000
+0a5a4889
+00000000
+0a5a4889
+00000000
+00000000
+00000000
+00000002
+00000000
+55555556
+00000000
+00000002
+00000000
+22222224
+00000000
+55555556
+00000000
+0a5a4888
+00000000
+00000000
+00000000
+00000001
+00000000
+00000002
+00000000
+22222222
+00000000
+55555556
+00000000
+0a5a4888
+00000000
+0a5a488a
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+aaaaaaab
+ffffffff
+00000000
+00000000
+ddddddde
+ffffffff
+aaaaaaab
+ffffffff
+f5a5b778
+ffffffff
+f5a5b778
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+ffffffff
+aaaaaaab
+ffffffff
+ffffffff
+ffffffff
+dddddddd
+ffffffff
+aaaaaaab
+ffffffff
+f5a5b779
+ffffffff
+aaaaaaab
+ffffffff
+00000000
+00000000
+ffffffff
+ffffffff
+00000000
+00000000
+00000000
+00000000
+dddddddf
+ffffffff
+aaaaaaab
+ffffffff
+f5a5b779
+ffffffff
+f5a5b777
+ffffffff
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000001
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000002
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000000
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000006
+00000000
+00000001
+00000000
+33333334
+00000000
+33333334
+00000000
+00000000
+00000000
+00000001
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+00000000
+00000000
+33333334
+00000000
+33333334
+00000000
+00000000
+00000000
+00000002
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+00000004
+00000000
+00000000
+00000000
+33333334
+00000000
+33333334
+00000000
+33333334
+00000000
+00000001
+00000000
+11111112
+00000000
+11111111
+00000000
+00000004
+00000000
+00000001
+00000000
+00000001
+00000000
+1b6b599a
+00000000
+1b6b599a
+00000000
+00000001
+00000000
+11111113
+00000000
+66666667
+00000000
+00000003
+00000000
+00000003
+00000000
+00000002
+00000000
+1b6b5999
+00000000
+11111111
+00000000
+11111112
+00000000
+00000001
+00000000
+33333333
+00000000
+00000000
+00000000
+1b6b5999
+00000000
+1b6b599b
+00000000
+00000000
+00000000
+4afb0cce
+00000000
+4afb0cce
+00000000
+00000003
+00000000
+17c7d99b
+00000000
+4afb0cce
+00000000
+00000001
+00000000
+00000001
+00000000
+00000000
+00000000
+4afb0cce
+00000000
+4afb0cce
+00000000
+17c7d99c
+00000000
+4afb0cce
+00000000
+00000000
+00000000
+4afb0cce
+00000000
+4afb0cce
+00000000
+00000000
+00000000
+17c7d99a
+00000000
+4afb0cce
+00000000
+00000000
+00000000
+00000002
+00000000
+ffffffff
+ffffffff
+b504f334
+ffffffff
+b504f334
+ffffffff
+ffffffff
+ffffffff
+e8382667
+ffffffff
+b504f334
+ffffffff
+b504f334
+ffffffff
+b504f334
+ffffffff
+00000000
+00000000
+b504f334
+ffffffff
+b504f334
+ffffffff
+00000000
+00000000
+e8382666
+ffffffff
+b504f334
+ffffffff
+b504f334
+ffffffff
+b504f334
+ffffffff
+b504f334
+ffffffff
+fffffffc
+ffffffff
+e8382668
+ffffffff
+b504f334
+ffffffff
+b504f334
+ffffffff
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000008
+00000000
+ffffffff
+ffffffff
+00000001
+00000000
+ffffffff
+ffffffff
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/Makefile
new file mode 100644
index 000000000..18dc245c8
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv64i -mabi=lp64 -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/Makefrag
new file mode 100644
index 000000000..e6b9e250a
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/Makefrag
@@ -0,0 +1,34 @@
+# RISC-V Architecture Test RV64I Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV64I architectural tests
+
+rv64i_sc_tests = \
+
+rv64i_tests = $(addsuffix .elf, $(rv64i_sc_tests))
+
+target_tests += $(rv64i_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/references/Fencei.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/references/Fencei.reference_output
new file mode 100644
index 000000000..1a31ff373
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/references/Fencei.reference_output
@@ -0,0 +1,4 @@
+00000030
+00000012
+00000042
+001101b3
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/src/Fencei.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/src/Fencei.S
new file mode 100644
index 000000000..701b28235
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/Zifencei/src/Fencei.S
@@ -0,0 +1,96 @@
+// -----------
+// Copyright (c) 2020. RISC-V International. All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+// -----------
+//
+// This assembly file tests the fence.i instruction of the RISC-V Zifencei extension.
+//
+#include "model_test.h"
+#include "arch_test.h"
+
+# Test Virtual Machine (TVM) used by program.
+RVTEST_ISA("RV64I")
+
+# Test code region
+.section .text.init
+.globl rvtest_entry_point
+rvtest_entry_point:
+RVMODEL_BOOT
+RVTEST_CODE_BEGIN
+RVMODEL_IO_WRITE_STR(x31, "# Test Begin\n")
+
+#ifdef TEST_CASE_1
+ RVTEST_CASE(1,"//check ISA:=regex(.*64.*); check ISA:=regex(.*I.*); check ISA:=regex(.*Zifencei.*); def TEST_CASE_1=True", fencei)
+
+ # ---------------------------------------------------------------------------------------------
+ RVMODEL_IO_WRITE_STR(x31, "# Test part A - test fence\n");
+
+ # Addresses for test data and results
+ la x16, test_A_data
+ la x17, test_A_res
+
+ # Register initialization
+ li x3, 0
+
+ # Load testdata
+ lw x1, 0(x16)
+ lw x2, 4(x16)
+
+ # Test
+ la x20, instr_A_src
+ la x21, instr_A_dst
+ lw x15, 0(x20)
+ sw x15, 0(x21)
+ fence.i
+instr_A_dst:
+ lui x2, 0
+
+ # Store results
+ sw x1, 0(x17)
+ sw x2, 4(x17)
+ sw x3, 8(x17)
+ sw x15, 12(x17)
+
+ //
+ // Assert
+ //
+ RVMODEL_IO_ASSERT_GPR_EQ(x17, x2, 0x00000012)
+ RVMODEL_IO_ASSERT_GPR_EQ(x17, x3, 0x00000042)
+ RVMODEL_IO_ASSERT_GPR_EQ(x17, x15, 0x001101B3)
+
+ RVMODEL_IO_WRITE_STR(x31, "# Test part A1 - Complete\n");
+
+ RVMODEL_IO_WRITE_STR(x31, "# Test End\n")
+
+#endif
+
+ # ---------------------------------------------------------------------------------------------
+ # HALT
+ RVMODEL_HALT
+
+RVTEST_CODE_END
+
+RVTEST_DATA_BEGIN
+# Input data section.
+ .data
+ .align 4
+
+instr_A_src:
+ add x3, x2, x1
+
+test_A_data:
+ .word 0x30
+ .word 0x12
+RVTEST_DATA_END
+
+# Output data section.
+RVMODEL_DATA_BEGIN
+test_A_res:
+ .fill 4, 4, 0xdeadbeef
+
+#ifdef rvtest_gpr_save
+gpr_save:
+ .fill 32*(XLEN/32), 4, 0xdeadbeef
+#endif
+
+RVMODEL_DATA_END
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/Makefile b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/Makefile
new file mode 100644
index 000000000..c5a3eabd4
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/Makefile
@@ -0,0 +1,3 @@
+include ../../Makefile.include
+
+$(eval $(call compile_template,-march=rv64i -mabi=lp64 -Drvtest_mtrap_routine=True -DXLEN=$(XLEN)))
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/Makefrag
new file mode 100644
index 000000000..d7032fc71
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/Makefrag
@@ -0,0 +1,35 @@
+# RISC-V Architecture Test RV64I Makefrag
+#
+# Copyright (c) 2017, Codasip Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the Codasip Ltd. nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Codasip Ltd. BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Description: Makefrag for RV64I architectural tests
+
+rv64i_sc_tests = \
+
+
+rv64i_tests = $(addsuffix .elf, $(rv64i_sc_tests))
+
+target_tests += $(rv64i_tests)
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/ebreak.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/ebreak.reference_output
new file mode 100644
index 000000000..91fef5137
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/ebreak.reference_output
@@ -0,0 +1,8 @@
+00000000
+11111111
+0000010f
+00000000
+00000003
+00000000
+000003a0
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/ecall.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/ecall.reference_output
new file mode 100644
index 000000000..12e14f72b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/ecall.reference_output
@@ -0,0 +1,8 @@
+00000000
+11111111
+0000010f
+00000000
+0000000b
+00000000
+000003a0
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-beq-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-beq-01.reference_output
new file mode 100644
index 000000000..091dcebed
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-beq-01.reference_output
@@ -0,0 +1,132 @@
+00000001
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bge-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bge-01.reference_output
new file mode 100644
index 000000000..25fb03a8c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bge-01.reference_output
@@ -0,0 +1,132 @@
+00000003
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bgeu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bgeu-01.reference_output
new file mode 100644
index 000000000..25fb03a8c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bgeu-01.reference_output
@@ -0,0 +1,132 @@
+00000003
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-blt-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-blt-01.reference_output
new file mode 100644
index 000000000..091dcebed
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-blt-01.reference_output
@@ -0,0 +1,132 @@
+00000001
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bltu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bltu-01.reference_output
new file mode 100644
index 000000000..25fb03a8c
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bltu-01.reference_output
@@ -0,0 +1,132 @@
+00000003
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bne-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bne-01.reference_output
new file mode 100644
index 000000000..091dcebed
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-bne-01.reference_output
@@ -0,0 +1,132 @@
+00000001
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-jal-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-jal-01.reference_output
new file mode 100644
index 000000000..c48a73dfe
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-jal-01.reference_output
@@ -0,0 +1,132 @@
+00000029
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-ld-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-ld-01.reference_output
new file mode 100644
index 000000000..c0ec8248b
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-ld-01.reference_output
@@ -0,0 +1,144 @@
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+0000010f
+00000000
+00000004
+00000000
+000003a0
+00000000
+ffffffb9
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+000003b8
+00000000
+ffffffba
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+000003d0
+00000000
+ffffffbb
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+000003e8
+00000000
+ffffffbc
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+00000400
+00000000
+ffffffbd
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+00000418
+00000000
+ffffffbe
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+00000430
+00000000
+ffffffbf
+ffffffff
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lh-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lh-01.reference_output
new file mode 100644
index 000000000..156ac16e0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lh-01.reference_output
@@ -0,0 +1,132 @@
+ab7fbb6f
+ab7fbb6f
+0000010f
+00000000
+00000004
+00000000
+000003a0
+00000000
+ffffffe9
+ffffffff
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lhu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lhu-01.reference_output
new file mode 100644
index 000000000..156ac16e0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lhu-01.reference_output
@@ -0,0 +1,132 @@
+ab7fbb6f
+ab7fbb6f
+0000010f
+00000000
+00000004
+00000000
+000003a0
+00000000
+ffffffe9
+ffffffff
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lw-01.reference_output
new file mode 100644
index 000000000..bd374bf5f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lw-01.reference_output
@@ -0,0 +1,136 @@
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+0000010f
+00000000
+00000004
+00000000
+000003a0
+00000000
+ffffffd9
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+000003b8
+00000000
+ffffffda
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+000003d0
+00000000
+ffffffdb
+ffffffff
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lwu-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lwu-01.reference_output
new file mode 100644
index 000000000..bd374bf5f
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-lwu-01.reference_output
@@ -0,0 +1,136 @@
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+ab7fbb6f
+0000010f
+00000000
+00000004
+00000000
+000003a0
+00000000
+ffffffd9
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+000003b8
+00000000
+ffffffda
+ffffffff
+0000010f
+00000000
+00000004
+00000000
+000003d0
+00000000
+ffffffdb
+ffffffff
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sd-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sd-01.reference_output
new file mode 100644
index 000000000..9c8548129
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sd-01.reference_output
@@ -0,0 +1,144 @@
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+0000010f
+00000000
+00000006
+00000000
+000003b0
+00000000
+ffffffc9
+ffffffff
+0000010f
+00000000
+00000006
+00000000
+000003d0
+00000000
+ffffffd2
+ffffffff
+0000010f
+00000000
+00000006
+00000000
+000003f0
+00000000
+ffffffdb
+ffffffff
+0000010f
+00000000
+00000006
+00000000
+00000428
+00000000
+ffffffe4
+ffffffff
+0000010f
+00000000
+00000006
+00000000
+00000444
+00000000
+ffffffed
+ffffffff
+0000010f
+00000000
+00000006
+00000000
+00000460
+00000000
+fffffff6
+ffffffff
+0000010f
+00000000
+00000006
+00000000
+0000047c
+00000000
+ffffffff
+ffffffff
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sh-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sh-01.reference_output
new file mode 100644
index 000000000..bc44c9d33
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sh-01.reference_output
@@ -0,0 +1,132 @@
+deadbeef
+deadbeef
+0000010f
+00000000
+00000006
+00000000
+000003a8
+00000000
+fffffff9
+ffffffff
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sw-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sw-01.reference_output
new file mode 100644
index 000000000..6e075a3e0
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign-sw-01.reference_output
@@ -0,0 +1,136 @@
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+0000010f
+00000000
+00000006
+00000000
+000003ac
+00000000
+ffffffe9
+ffffffff
+0000010f
+00000000
+00000006
+00000000
+000003cc
+00000000
+fffffff2
+ffffffff
+0000010f
+00000000
+00000006
+00000000
+000003e8
+00000000
+fffffffb
+ffffffff
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign1-jalr-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign1-jalr-01.reference_output
new file mode 100644
index 000000000..e30551993
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign1-jalr-01.reference_output
@@ -0,0 +1,132 @@
+00000017
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign2-jalr-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign2-jalr-01.reference_output
new file mode 100644
index 000000000..e30551993
--- /dev/null
+++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv64i_m/privilege/references/misalign2-jalr-01.reference_output
@@ -0,0 +1,132 @@
+00000017
+00000000
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+deadbeef
+00000000
+00000000
diff --git a/tests/wally-riscv-arch-test/spec/TestFormatSpec.adoc b/tests/wally-riscv-arch-test/spec/TestFormatSpec.adoc
new file mode 100644
index 000000000..ec67dabae
--- /dev/null
+++ b/tests/wally-riscv-arch-test/spec/TestFormatSpec.adoc
@@ -0,0 +1,606 @@
+= RISC-V Architecture Test Format Specification =
+RISC-V Foundation Architecture Test SIG
+Issue 1.2.6 Draft
+:toc:
+:icons: font
+:numbered:
+:source-highlighter: rouge
+
+////
+SPDX-License-Identifier: CC-BY-4.0
+
+Document conventions:
+- one line per paragraph (don't fill lines - this makes changes clearer)
+- Wikipedia heading conventions (First word only capitalized)
+- US spelling throughout.
+- Run "make spell" before committing changes.
+- Build the HTML and commit it with any changed source.
+- Do not commit the PDF!
+////
+
+== Introduction
+=== About
+
+This document contains the RISC-V <> structure and <> format specification which shall be used as a reference document for those who write or are going to write tests for the RISC-V architectural test pool and for those who are going to use the <> in their own architectural test framework.
+
+* It includes, as example, source code listing and detailed description of one <>
+
+Framework specification which includes description of how the <> are built and used for the appropriate RISC-V configurations is given in the complementary Framework Specification document. This document is made freely available under a <>.
+
+
+=== Intended audience
+
+This document is intended for design and verification engineers who wish to develop new architectural tests and also for those who wish to write or adapt their own test framework.
+
+=== Future work
+
+This is a draft document; it partially documents what exists, and partially documents the longer-term goal.
+As such, this document still under review and its content will change.
+Its primary aim is to get a long-term stable version of the spec and to give test authors sufficient lead time to prepare test authoring tools and strategies.
+
+=== Contributors
+
+This document has been created by the following people (in alphabetical order of surname).
+
+
+* Allen Baum
+* Jeremy Bennett
+* Radek Hajek
+* Premysl Vaclavik
+
+=== Document history
+[cols="<1,<2,<3,<4",options="header,pagewidth",]
+|================================================================================
+| _Revision_ | _Date_ | _Author_ | _Modification_
+
+| 1.2.6 Draft | 24 September 2020 | Neel Gala | Replaced Compliance with Architecture/Architectural. Minor beautification in macro definitions.
+
+| 1.2.5 Draft | 22 Jan 2020 |
+
+Allen Baum |
+
+ * removed references to test pool reference doc, mentioned that the framework will generate it
+ * clarified that macros defined in a test may be used in a test
+ * minor clarifications, consistency changes, added page breaks
+
+| 1.2.4 Draft | 08 Jan 2020 |
+
+Allen Baum |
+
+ * typos fixed
+ * added RVTEST_BASEUPD macro
+ * added explanations for each macro
+ * clarified restrictions on #ifdefs
+ * added comment that test cases with identical conditions should be combined into a single case
+ * documented that test case first parameter should match the #ifdef parameter that precedes it
+
+| 1.2.3 Draft | 02 Dec 2019 |
+
+Allen Baum |
+
+ * modified macro names to conformn to riscof naming convention of model specific vs. pre-defined
+ * add more complete list of macros, their uses, parameters, and whether they are required or optional
+ * minor structural changes (moving sentences, renumbering) and typo fixes
+ * clarified impact of debug macros
+ * clarified how SIGUPD and BASEUPD must be used, fixed parameter description
+
+| 1.2.2 Draft | 21 Nov 2019 |
+
+Allen Baum |
+
+ * remove section about test taxonomy, binary tests, emulated ops
+ * clarify/fix boundary between test target and framework responsibilities
+ (split test target into test target and test shell)
+ * remove To Be discussed items that have been discussed
+ * remove default case condition; if conditions are unchaged, part of same case
+ * minor grammatical changes related to the above
+
+| 1.2.1 Draft | 19 Nov 2019 |
+
+Allen Baum |
+
+ * spec/TestFormatSpec.adoc: changed the format of the signature to fixed 32b data size only extracted from COMPLIANCE_DATA_BEGIN/END range.
+ * made test suite subdirectories upper case, with sub-extensions camel case
+ * updated example to match most recent riscof implement macros
+ * fix format so Appendix is now in TOC
+ * moved note about multiple test cases in a test closer to definition
+ * fixed cut/paste error in example of test pool
+ * more gramatical fixes, clarifications added
+ * added To Be Discussed items regarding emulated instruction and binary tests
+ * added graphic of test suite/test_pool/test/test_case hierarchy
+
+
+| 1.2.1 Draft | 12 Oct 2019 |
+
+Allen Baum |
+
+minor grammar, wording, syntax corrections, added detail and clarification from suggestions by Paul Donahue
+
+| 1.2 Draft | 12 Sep 2019 |
+
+Allen Baum |
+
+minor grammar, wording, syntax corrections, added detail and clarification
+Added detail regarding the 2 approaches for test selection: central database, or embedded conditions embedded in macros
+Added detail of proposed standard macros RVTEST_SIGBASE, RVTEST_SIGUPD, RVTEST_CASE
+More explanation of spec status in initial _future work_ paragraph (i.e. goal, not yet accomplished)
+Removed many "to Be Discussed items and made them official
+Removed options, made POR for test selection and standard macros RVTEST_SIGBASE, RVTEST_SIGUPD, RVTEST_CASE
+Removed prohibition on absolute addresses
+Clarified which test suites a test should be in where they are dependent on multiple extensions
+Clarified use of includes and macros (and documented exsiting deviations)
+Clarified use of YAML files
+Added detail to description and uses of common compliance test pool reference document
+
+| 1.1 Draft | 15 Feb 2019 |
+
+Radek Hajek |
+
+Appendix A: example assertions update
+
+| 1.0 Draft | 10 Dec 2018 |
+
+Radek Hajek, Premysl Vaclavik |
+
+First version of the document under this file name. Document may contain some segments of the README.adoc from the compatibility reasons.
+
+|================================================================================
+<<<
+== Foreword
+The architectural test pool shall become a complete set of architectural tests which will allow developers to build an architectural test suite for any legal RISC-V configuration. The architectural tests will be very likely written by various authors and therefore it is very important to define the architectural test pool structure and architectural test form, which will be obligatory for all tests. Unification of tests will guarantee optimal architectural test pool management and also better quality and readability of the tests. Last but not least, it will simplify the process of adding new tests into the existing architectural test pool and the formal revision process.
+
+== Vocabulary
+=== The architectural test
+The architectural test is a nonfunctional testing technique which is done to validate whether the system developed meets the prescribed standard or not. In this particular case the golden reference is the RISC-V ISA standard.
+
+For purpose of this document we understand that the architectural test is a single test which represents the minimum test code that can be compiled and run. It is written in assembler code and its product is a <>. A architectural test may consist of several <>.
+
+=== The RISC-V architectural test pool
+The RISC-V architectural test pool consists of all approved <> that can be assembled by the test framework, forming the <>. The RISC-V architectural test pool must be test target independent (so, should correctly run on any compliant target). Note that this nonfunctional testing is not a substitute for verification or device test.
+
+=== The RISC-V architectural test suite
+The RISC-V architectural test suite is a group of tests selected from the <> to test adherence for the specific RISC-V configuration. Test results are obtained in the form of a <>. Selection of tests is performed based on the target's asserted configuration, and the spec, Execution Environment or platform requirements. Compliant processor or processor models shall exhibit the same test suite signature as the golden reference test suite signature for the specific configuration being tested.
+
+=== The test case
+A _test case_ is part of the architectural test that tests just one feature of the specification.
+
+----
+Note: a single test can contain multiple test cases, each of which can have its own test inclusion condition (as defined by the cond_str parameter of the RVTEST_CASE macro.
+----
+
+[#img-testStruct]
+.Test Suite, Test_Pool, Test, Test_Case relationship
+image::./testpool.jpg[testStruct]
+
+=== The test case signature
+The _test case signature_ is represented by single or multiple values. Values are written to memory at the address starting at the address specified by the RVMODEL_DATA_BEGIN and ending at RVMODEL_DATA_END. Signatures can be generated most easily using the RVTEST_SIGUPD macro.
+
+=== The test signature
+The <> is a characteristic value which is generated by the architectural test run. The <> may consist of several <>, prefixed with a separate line containing the name of the test and a unique value indicating its version (e.g. git checkin hash). The test target is responsible for extracting values from memory and properly formatting them, using metadata provided to it by the framework using the RVMODEL_DATA_BEGIN and RVMODEL_DATA_END macros. Test case signature values are written one per line, starting with the most-significant byte on the left-hand side with the format where the length of value will be 32 bits (so 8 characters), regardless of the actual value length computed by the test. Furthermore, the signature should always begin at a 16-byte (128-bit) boundary and the size of the signature should be a multiple of 16-bytes (i.e. it should also end at a 16-byte boundary).
+
+=== The test suite signature
+The _test suite signature_ is defined as a set of <> valid for given <>. It represents the test signature of the particular RISC-V configuration selected for the architectural test.
+
+=== The target shell
+The <> is the software and hardware environment around the <> that enables it to communicate with the framework, including assembling and linking tests, loading tests into memory, executing tests, and extracting the signature. The input to the <> is a .S <> file, and the output is a <>.
+
+=== The test target
+The <> can be either a RISC-V Instruction Set Simulator (ISS), a RISC-V emulator, a RISC-V RTL model running on an HDL simulator, a RISC-V FPGA implementation or a physical chip. Each of the target types offers specific features and represents specific interface challenges. It is a role of the <> to handle different targets while using the same <> as a test source.
+
+=== The RISC-V processor (device) configuration
+The RISC-V ISA specification allows many optional instructions, registers, and other features. Production directed targets typically have a fixed subset of available options. A simulator, on the other hand, may implement all known options which may be constrained to mimic the behavior of the RISC-V processor with the particular configuration. It is a role of the Architectural Test Framework to build and use the <> suitable for the selected RISC-V configuration.
+
+
+=== The architectural test framework
+The <> selects and configures the <> from the <> for the selected <> based on both the specific architectural choices made by an implementation and those required by the Execution Environment It causes the <> to build, execute, and report a signature. The <> then compares reported signatures, inserts test part names and version numbers and summarizes differences (or lack of them) into a RISC-V test report. The primary role of the well-defined <> structure is to provide the tests in a form suitable for the Architectural Test Framework selection engine.
+
+<<<
+== Architectural test pool
+=== Test pool structure
+
+The structure of <> in the <> shall be based on defined RISC-V extensions and privileged mode selection. This will provide a good overview of which parts of the ISA specification are already covered in the <>, and which tests are suitable for certain configurations. The architectural test pool has this structure:
+
+----
+architectural-tests-suite (root)
+|-- _/, where
+ is [ RV32I | RV64I | RV32E ]
+ is [ M | MU | MS | MSU ], where
+ M Machine mode tests - tests execute in M-mode only
+ MU Machine/User mode tests - tests execute in both M- & U-modes (S-mode may exist)
+ MS Machine/Supv mode tests - tests execute in both M- & S-modes (not U-mode)
+ MSU All mode tests - tests execute in all of M-, S-, & U-Modes
+ are the lettered extension [A | B | C | M ...] or subextension [Zifencei | Zam | ...] when the tests involve extensions, or more general names when tests cut across extension definitionss (e.g. Priv, Interrupt, Vm). The feature string consists of an initial capital letter, followed by any further letters in lower case.
+
+----
+
+Note that this structure is for organizational purposes, not functional purposes, although full test names will take advantage of it.
+
+Tests that will be executed in different modes, even if the results are identical, should be replicated in each mode directory, e.g. RV32I_M/, RV32I_MS/, and RV32I_MU/. These tests are typically those involving trapping behavior, e.g load, store, and privilged ops.
+
+=== Test naming
+
+The naming convention of a single test:
+
+<__test objective__>-<__test number__>.S
+
+* __test objective__ – an aspect that the test is focused on. A test objective may be an instruction for ISA tests (ADD, SUB, ...), or a characteristic covering multiple instructions, e.g. exception event (misaligned fetch, misalign load/store) and others.
+
+* __test number__ – number of the test. It is expected that multiple tests may be specified for one test objective. We recommend to break down complex tests into a set of small tests. A simple rule of thumb is one simple test objective = one simple test. The code becomes more readable and the test of the objective can be improved just by adding <>. The typical example are instruction tests for the F extension.
+
+* A test name shall not include an ISA category as part of its name (i.e. the directory, subdirectory names). +
+Experience has shown that including ISA category in the test name leads to very long test names. Instead, we have introduced the <> where the full name is composed of the test path in the <> and the simple test name. +
+Since full names can be reconstructed easily it is not necessary to include the path in test names.
+
+=== Assembly macros and test labels
+
+There are both pre-defined and model-specific macros which shall be used in every test to guarantee
+their portability. In addition, there are both pre-defined and model specific macros that are not required,
+but may be used in tests for either convenience or debugging purposes.
+
+==== *Required, Pre-defined Macros*
+
+These macros are be defined in the file **compilance_test.h** by the author of the test. A
+significant amount of the framework shall depend on the existence of these macros.
+
+ `RVTEST_ISA(isa_str)`::
+
+ - defines the Test Virtual Machine (TVM, the ISA being tested) +
+ - empty macro to specify the isa required for compilation of the test. +
+ - this is mandated to be present at the start of the test.
+
+
+ `RVTEST_CODE_BEGIN`::
+ - start of code (test) section
+ - macro to indicate test code start add and where test startup routine is inserted. +
+ - no part of the test-code section should precede this macro
+ - this macro includes an initialization routine which pre-loads all the GPRs with unique values
+ (not `0xdeadbeef`). Register t0 and t1 are initialized to point to the labels :
+ `rvtest_code_begin` and `rvtest_code_end` respectively.
+ - the macros contains a label `rvtest_code_begin` after the above initilization routine to mark
+ the begining of the actual test.
+
+ `RVTEST_CODE_END`::
+ - end of code (test) section +
+ - macro to indicate test code end. +
+ - no part of the test-code section should follow after this macro.
+ - the macro enforces a 16-byte boundary alignment
+ - the macro also inlcudes the label `rvtest_code_end` which marks the end of the actual test.
+ - if trap handling is enabled, this macro contains the entire trap handler code required by the
+ test.
+
+ `RVTEST_DATA_BEGIN`::
+ - marks the begining of the test data section +
+ - used to provided initialized data regions to be used by the test +
+ - this region starts at a 16-byte boundary +
+ - the start of this is macro can be addressed using the label: `rvtest_data_begin`
+ - when trap handling is enabled, this macro also includes the following labels :
+ . trapreg_sv: This region is used to save the temporary registers used in the trap-handler
+ code
+ . tramptbl_sv: This region is used to save the contents of the test-target's initial
+ code-section which is overwritten with the necessary trampoline table.
+ . mtvec_save: a double-word region to save the test-target specific mtvec register
+ . mscratch_save: a double-word region to save the test-target specific mscratch register
+
+ `RVTEST_DATA_END`::
+ - this macros marks the end of the test input data section.
+ - the start of this macro can be addressed using the label: `rvtest_data_end`
+
+ `RVTEST_CASE(CaseName, CondStr)`::
+ - execute this case only if condition in cond_str are met +
+ - caseName is arbitrary string +
+ - condStr is evaluated to determine if the test-case is enabled and sets name variable +
+ - condStr can also define compile time macros required for the test-case to be enabled. +
+ - the test-case must be delimited with an #ifdef CaseName/#endif pair +
+ - the format of CondStr can be found in https://riscof.readthedocs.io/en/latest/cond_spec.html#cond-spec
+
+==== *Required, Model-defined Macros*
+
+These macros are be defined by the owner of the test target in the file **model_test.h**.
+These macros are required to define the signature regions and also the logic required to halt/exit
+the test.
+
+ `RVMODEL_DATA_BEGIN`::
+ - This macro marks the start of signature regions. The test-target should use this macro to create a label to indicate the begining of the signature region. For example : `.globl begin_signature; begin_signature`. This macro must also begin at a 16-byte boundary and must not include anything else.
+
+ `RVMODEL_DATA_END`::
+ - This macros marks the end of the signature-region. The test-target must declare any labels required to indicate the end of the signature region. For example : `.globl end_signature; end_signature`. This label must be at a 16-byte boundary. The entire signature region must be included within the RVMODEL_DATA_BEGIN macro and the start of the RVMODEL_DATA_END macro. The RVMODEL_DATA_END macro can also contain other target specific data regions and initializations but only after the end of the signature.
+
+ `RVMODEL_HALT`::
+ - This macros must define the test-target halt mechanism. This macro is called when the test is
+ to be terminated either due to completion or dur to unsupported behavior. This macro could
+ also include routines to dump the signature region to a file on the host system which can be
+ used for comparison.
+
+==== *Optional, Pre-defined Macros*
+
+ `RVTEST_SIGBASE(BaseReg,Val)`::
+ - defines the base register used to update signature values +
+ - Register BaseReg is loaded with value Val +
+ - hidden_offset is initialized to zero
+
+ `RVTEST_SIGUPD(BaseReg, SigReg [, Offset])`::
+ - if Offset is present in the arguments, hidden_offset if set to Offset +
+ - Sigreg is stored at hidden_offset[BaseReg]
+ - hidden_offset is post incremented so repeated uses store signature values sequentially
+
+ `RVTEST_BASEUPD(BaseReg[oldBase[,newOff]])`::
+ - [moves &] updates BaseReg past stored signature +
+ - Register BaseReg is loaded with the oldReg+newOff+hidden_offset +
+ - BaseReg is used if oldBase isn't specified; 0 is used if newOff isn't specified +
+ - hidden_offset is re-initialized to 0 afterwards
+
+ `RVTEST_SIGUPD_F(BaseReg, SigReg, FlagReg [, Offset])`::
+ - This macro is used for RV32F and RV64D (where XLEN==FLEN).
+ - if Offset is present in the arguments, hidden_offset if set to Offset+(XLEN*2) +
+ - SigReg is stored at hidden_offset[BaseReg]
+ - FlagReg is stored at hidden_offset+XLEN[BaseReg]
+ - hidden_offset is post incremented so repeated uses store signature values sequentially
+
+==== *Optional, Model-defined Macros*
+
+ `RVMODEL_BOOT`::
+ - contains boot code for the test-target; may include emulation code or trap stub. If the
+ test-target enforces alignment or value restrictions on the mtvec csr, it is required that
+ this macro sets the value of mtvec to a region which is readable and writable by the machine
+ mode. May include code to copy the data sections from boot device to ram. Or any other code
+ that needs to be run prior to running the tests.
+
+ `RVMODEL_IO_INIT`::
+ - initializes IO for debug output
+ - this must be invoked if any of the other RV_MODEL_IO_* macros are used
+
+// `RVMODEL_IO_CHECK`
+// - checks IO for debug output
+// -
+
+ `RVMODEL_IO_ASSERT_GPR_EQ(ScrReg, Reg, Value)`::
+ - debug assertion that GPR should have value +
+ - outputs a debug message if Reg!=Value +
+ - ScrReg is a scratch register used by the output routine; its final value cannot be guaranteed
+ - Can be used to help debug what tests have passed/failed
+
+ `RVMODEL_IO_WRITE_STR(ScrReg, String)`::
+ - output debug string, using a scratch register +
+ - outputs the message String
+ - ScrReg is a scratch register used by the output routine; its final value cannot be guaranteed
+
+ `RVMODEL_SET_MSW_INT`::
+ - This macro needs to include a routine to set the machine software interrupt.
+ - Currently the test forces an empty macro if a target does not declare this. Future tests may
+ change this.
+
+ `RVMODEL_CLEAR_MSW_INT`::
+ - This macro needs to include a routine to clear the machine software interrupt.
+ - Currently the test forces an empty macro if a target does not declare this. Future tests may
+ change this.
+
+ `RVMODEL_CLEAR_MTIMER_INT`::
+ - This macro needs to include a routine to clear the machine timer interrupt.
+ - Currently the test forces an empty macro if a target does not declare this. Future tests may
+ change this.
+
+ `RVMODEL_CLEAR_MEXT_INT`::
+ - This macro needs to include a routine to clear the machine external interrupt.
+ - Currently the test forces an empty macro if a target does not declare this. Future tests may
+ change this.
+
+=== Required labels
+
+The test must define a `rvtest_entry_point` label to indicate the location to be used by the linker
+as the entry point in the test. Generally, this would be before the `RVMODEL_BOOT` macro and should
+belong to the `text.init` section.
+
+=== The test structure of an architectural test
+
+All tests shall use a signature approach. Each test shall be written in the same style, with defined mandatory items.
+The test structure of an architectural test shall have the following sections in the order as follows:
+
+. Header + license (including a specification link, a brief test description and RVTEST_ISA macro)).
+. Includes of header files (see Common Header Files section).
+. Test Virtual Machine (TVM) specification,
+. Test code between “RVTEST_CODE_BEGIN” and “RVTEST_CODE_END”.
+. Input data section, marked with "RVTEST_DATA_BEGIN" and "RVTEST_DATA_END".
+. Output data section between “RVMODEL_DATA_BEGIN” and “RVMODEL_DATA_END”.
+
+
+Note:: Note that there is no requirement that the code or scratch data sections must be contiguous
+in memory, or that they be located before or after data or code sections
+(configured by embedded directives recognized by the linker)
+
+==== Common test format rules
+
+There are the following common rules that shall be applied to each <>:
+
+. Always use “//” as commentary. “#” should be used only for includes and defines.
+. As part of the initialization code, all GPRs are preloaded with unique predefined values (which is
+not `0xdeadbeef`). However, t0 is initialized with `rvtest_code_begin` and t1 is initialized with
+`rvtest_data_begin`.
+. The signature section of every test is pre-loaded with the word `0xdeadbeef`
+. The signature region should always begin at a 16-byte boundary
+. A test shall be divided into logical blocks (<>) according to the test goals. Test cases are enclosed in an `#ifdef <__CaseName__>, #endif` pair and begin with the RVTEST_CASE(CaseName,CondStr) macro that specifies the test case name, and a string that defines the conditions under which that <> can be selected for assembly and execution. Those conditions will be collected and used to generate the database which in turn is used to select tests for inclusion in the test suite for this target.
+. Tests should use the RVTEST_SIGBASE(BaseReg,Val) macro to define the GPR used as a pointer to the output signature area, and its initial value. It can be used multiple times within a test to reassign the output area or change the base register. This value will be used by the invocations of the RVTEST_SIGUPD macro.
+. Tests should use the RVTEST_SIGUPD(BaseReg, SigReg, ScratchReg, Value) macro to store signature values using (only) the base register defined in the most recently encountered RVTEST_SIGBASE(BaseReg,Val) macro. Repeated uses will automatically have an increasing offset that is managed by the macro.
+.. Uses of RVTEST_SIGUPD shall always be preceded sometime in the test case by RVTEST_SIGBASE. +
+.. Tests that use SIGUPD inside a loop or in any section of code that will be repeated (e.g. traps) must use the BASEUPD macro between each loop iteration or repeated code to ensure static values of the base and offset don't overwrite older values.
+. When macros are needed for debug purposes, only macros from _model_test.h_ shall be used.
+ Note that using this feature shall not affect the signature results of the test run.
+. Test shall not include other tests (e.g. #include “../add.S”) to prevent non-complete tests, compilation issues, and problems with code maintenance.
+. Tests and test cases shall be skipped if not required for a specific model test configuration based on test conditions defined in the RVTEST_CASE macro. Tests that are selected may be further configured using variables (e.g. XLEN) which are passed into the tests and used to compile them. In either case, those conditions and variables are derived from the YAML specification of the device and execution environment that are passed into the framework. The flow is to run an architectural test suite built by the <> from the <> to determine which tests and test cases to run.
+. Tests shall not depend on tool specific features. For example, tests shall avoid usage of internal GCC macros (e..g. ____risc_xlen__), specific syntax (char 'a' instead of 'a) or simulator features (e.g. tohost) etc.
+. A test will end by either jumping to or implicitly reaching the `RVTEST_CODE_END` macro (i.e.
+rvtest_code_end label). The `RVTEST_CODE_END` macro is always followed by the `RVMODEL_HALT` macro.
+. Macros defined outside of a test shall only be defined in specific predefined header files (see <> below), and once they are in use, they may be modified only if the function of all affected tests remains unchanged.
+It is acceptable that macros use may lead to operand repetition (register X is used every time).
+- The aim of this restriction is to have test code more readable and to avoid side effects which may occur when different contributors will include new <> or updates of existing ones in the <>.
+This measure results from the negative experience, where the <> could be used just for one target while the architectural test code changes were necessary to have it also running for other targets.
+. All contents of the signature region must always be initialized to `0xdeadbeef`.
+. The result of no operation should be stored in the signature even though not register has
+been altered.
+. Pseudo ops other than `li` and `la` which can map to multiple standard instruction sequences
+ should not be used.
+. The actual test-section of the assembly must always start with the `RVTEST_CODE_BEGIN` which contains a routine to initialize the registers to specific values.
+
+==== Common Header Files
+
+Each test shall include only the following header files:
+
+. _model_test.h_ – defines target-specific macros, both required and optional: (e.g. RVMODEL_xxx)
+. _arch_test.h_ – defines pre-defined test macros both required and optional: (e.g. RVTEST_xxx)
+
+The inclusion of the _arch_test.h_ should always occur after the _model_test.h_ file.
+
+Important points to be noted regarding header files :
+
+. Adding new header files is forbidden in the test. It may lead to macro redefinition and compilation issues.
+. Macros maybe defined and used inside a test, as they will not be defined and used outside that specific test.
+// . Assertions will generate code that reports assertion failures (and optionally successes?) only if enabled by the framework.
+// . In addition, the framework may collect the assertion values and save them as a signature output file if enabled by the framework.
+
+==== Framework Requirements
+
+The framework will import files that describe
+
+- the implemented, target-specific configuration parameters in YAML format
+
+- the required, platform-specific configuration parameters in YAML format
+
+The framework will generate intermediate files, including a Test Database YAML file that selects tests from the test pool to generate a test suite for the target.
+
+The framework will also invoke the <> as appropriate to cause tests to be built, loaded, executed, and results reported.
+
+The YAML files define both the values of those conditions and values that can be used by the framework to configure tests (e.g. format of WARL CSR fields).
+Tests should not have #if, #ifdef, etc. for conditional assembly except those that surround RVMODEL_CASE macros
+Instead, each of those should be a separate <> whose conditions are defined in
+ the common reference document entry for that test and test case number.
+
+
+<<<
+[appendix]
+
+== Example ISA test _add-01.S_
+
+.1) Header to inlcude comments
+
+----
+#This assembly file tests the add instruction of the RISC-V I extension for the add covergroup.
+
+----
+
+.2) Includes of header files
+
+----
+#include "model_test.h"
+#include "arch_test.h"
+----
+
+.3) Set the TVM of the test
+
+----
+
+RVTEST_ISA("RV32I")
+----
+
+.4) Test target specifc boot-code
+
+----
+RVMODEL_BOOT
+----
+
+.5) Start of GPR intialization routine and test code
+
+----
+RVTEST_CODE_BEGIN
+----
+
+.6) Define the RVTEST_CASE string and conditions
+
+----
+#ifdef TEST_CASE_1
+
+// this test is meant for devices implementing rv32I extension and requires enabling the compile
+// macro TEST_CASE_1. This test will contribute to the "add" coverage label.
+
+RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*I.*);def TEST_CASE_1=True;",add)
+----
+
+.7) Initialize pointer to the signature region
+
+----
+RVTEST_SIGBASE( x16,signature_x16_1) // x16 will point to signature_x16_1 label in the signature region
+----
+
+.8) Define the test cases
+
+----
+TEST_RR_OP(add, x9, x4, x6, 0x80000005, 0x80000000, 0x00000005, x16, 0, x24)
+TEST_RR_OP(add, x5, x5, x14, 0xfffffeff, 0x00000000, 0xfffffeff, x16, 4, x24)
+...
+...
+
+----
+
+.9) Change signature base register
+
+----
+// this will change the signature base register to x3. x3 will not point to signature_x3_0 in
+// the signature region
+RVTEST_SIGBASE( x3,signature_x3_0)
+
+// continue with new test cases ..
+TEST_RR_OP(add, x4, x24, x27, 0x55555955, 0x00000400, 0x55555555, x3, 0, x5)
+...
+...
+
+----
+
+.10) End the test and halt the test-target
+
+----
+RVTEST_CODE_END
+RVMODEL_HALT
+----
+
+.11) Create test input data section
+
+----
+RVTEST_DATA_BEGIN
+rvtest_data:
+.word 0xbabecafe
+RVTEST_DATA_END
+----
+
+.12) Create pre-loaded signature region
+
+----
+
+RVMODEL_DATA_BEGIN
+.align 4
+
+signature_x16_0:
+ .fill 0*(XLEN/32),4,0xdeadbeef
+
+
+signature_x16_1:
+ .fill 16*(XLEN/32),4,0xdeadbeef
+
+
+signature_x3_0:
+ .fill 86*(XLEN/32),4,0xdeadbeef
+
+#ifdef rvtest_mtrap_routine
+
+mtrap_sigptr:
+ .fill 64*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+#ifdef rvtest_gpr_save
+
+gpr_save:
+ .fill 32*(XLEN/32),4,0xdeadbeef
+
+#endif
+
+RVMODEL_DATA_END
+----
+
diff --git a/tests/wally-riscv-arch-test/spec/testpool.jpg b/tests/wally-riscv-arch-test/spec/testpool.jpg
new file mode 100644
index 000000000..228d0f43a
Binary files /dev/null and b/tests/wally-riscv-arch-test/spec/testpool.jpg differ
diff --git a/wally-pipelined/config/buildroot/wally-config.vh b/wally-pipelined/config/buildroot/wally-config.vh
index 0a59bc3ad..5ccac7dea 100644
--- a/wally-pipelined/config/buildroot/wally-config.vh
+++ b/wally-pipelined/config/buildroot/wally-config.vh
@@ -41,6 +41,7 @@
`define ZIFENCEI_SUPPORTED 1
`define ZICOUNTERS_SUPPORTED 1
`define COUNTERS 32
+`define DESIGN_COMPILER 0
// Microarchitectural Features
`define UARCH_PIPELINED 1
diff --git a/wally-pipelined/config/busybear/wally-config.vh b/wally-pipelined/config/busybear/wally-config.vh
index 614cfb2e5..9ab21baed 100644
--- a/wally-pipelined/config/busybear/wally-config.vh
+++ b/wally-pipelined/config/busybear/wally-config.vh
@@ -41,6 +41,7 @@
`define ZIFENCEI_SUPPORTED 1
`define ZICOUNTERS_SUPPORTED 1
`define COUNTERS 32
+`define DESIGN_COMPILER 0
// Microarchitectural Features
`define UARCH_PIPELINED 1
diff --git a/wally-pipelined/config/coremark/wally-config.vh b/wally-pipelined/config/coremark/wally-config.vh
index 8b1ae7dc7..f147ef0d9 100644
--- a/wally-pipelined/config/coremark/wally-config.vh
+++ b/wally-pipelined/config/coremark/wally-config.vh
@@ -40,6 +40,8 @@
`define ZIFENCEI_SUPPORTED 1
`define COUNTERS 32
`define ZICOUNTERS_SUPPORTED 1
+`define DESIGN_COMPILER 0
+
// Microarchitectural Features
`define UARCH_PIPELINED 1
diff --git a/wally-pipelined/config/coremark_bare/wally-config.vh b/wally-pipelined/config/coremark_bare/wally-config.vh
index be4a83205..ad3deb607 100644
--- a/wally-pipelined/config/coremark_bare/wally-config.vh
+++ b/wally-pipelined/config/coremark_bare/wally-config.vh
@@ -41,6 +41,8 @@
`define ZIFENCEI_SUPPORTED 1
`define COUNTERS 32
`define ZICOUNTERS_SUPPORTED 1
+`define DESIGN_COMPILER 0
+
// Microarchitectural Features
`define UARCH_PIPELINED 1
diff --git a/wally-pipelined/config/rv32icfd/BTBPredictor.txt b/wally-pipelined/config/old/rv32icfd/BTBPredictor.txt
similarity index 100%
rename from wally-pipelined/config/rv32icfd/BTBPredictor.txt
rename to wally-pipelined/config/old/rv32icfd/BTBPredictor.txt
diff --git a/wally-pipelined/config/rv32icfd/twoBitPredictor.txt b/wally-pipelined/config/old/rv32icfd/twoBitPredictor.txt
similarity index 100%
rename from wally-pipelined/config/rv32icfd/twoBitPredictor.txt
rename to wally-pipelined/config/old/rv32icfd/twoBitPredictor.txt
diff --git a/wally-pipelined/config/rv32icfd/wally-config.vh b/wally-pipelined/config/old/rv32icfd/wally-config.vh
similarity index 100%
rename from wally-pipelined/config/rv32icfd/wally-config.vh
rename to wally-pipelined/config/old/rv32icfd/wally-config.vh
diff --git a/wally-pipelined/config/rv64icfd/BTBPredictor.txt b/wally-pipelined/config/old/rv64icfd/BTBPredictor.txt
similarity index 100%
rename from wally-pipelined/config/rv64icfd/BTBPredictor.txt
rename to wally-pipelined/config/old/rv64icfd/BTBPredictor.txt
diff --git a/wally-pipelined/config/rv64icfd/twoBitPredictor.txt b/wally-pipelined/config/old/rv64icfd/twoBitPredictor.txt
similarity index 100%
rename from wally-pipelined/config/rv64icfd/twoBitPredictor.txt
rename to wally-pipelined/config/old/rv64icfd/twoBitPredictor.txt
diff --git a/wally-pipelined/config/rv64icfd/wally-config.vh b/wally-pipelined/config/old/rv64icfd/wally-config.vh
similarity index 100%
rename from wally-pipelined/config/rv64icfd/wally-config.vh
rename to wally-pipelined/config/old/rv64icfd/wally-config.vh
diff --git a/wally-pipelined/config/rv64imc/BTBPredictor.txt b/wally-pipelined/config/old/rv64imc/BTBPredictor.txt
similarity index 100%
rename from wally-pipelined/config/rv64imc/BTBPredictor.txt
rename to wally-pipelined/config/old/rv64imc/BTBPredictor.txt
diff --git a/wally-pipelined/config/rv64imc/twoBitPredictor.txt b/wally-pipelined/config/old/rv64imc/twoBitPredictor.txt
similarity index 100%
rename from wally-pipelined/config/rv64imc/twoBitPredictor.txt
rename to wally-pipelined/config/old/rv64imc/twoBitPredictor.txt
diff --git a/wally-pipelined/config/rv64imc/wally-config.vh b/wally-pipelined/config/old/rv64imc/wally-config.vh
similarity index 100%
rename from wally-pipelined/config/rv64imc/wally-config.vh
rename to wally-pipelined/config/old/rv64imc/wally-config.vh
diff --git a/wally-pipelined/config/rv32g/BTBPredictor.txt b/wally-pipelined/config/rv32g/BTBPredictor.txt
new file mode 100644
index 000000000..fd3eedffb
--- /dev/null
+++ b/wally-pipelined/config/rv32g/BTBPredictor.txt
@@ -0,0 +1,1024 @@
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
+000000000000000000000000000000000000
diff --git a/wally-pipelined/config/rv32g/twoBitPredictor.txt b/wally-pipelined/config/rv32g/twoBitPredictor.txt
new file mode 100644
index 000000000..ff57bd473
--- /dev/null
+++ b/wally-pipelined/config/rv32g/twoBitPredictor.txt
@@ -0,0 +1,1024 @@
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
diff --git a/wally-pipelined/config/rv32g/wally-config.vh b/wally-pipelined/config/rv32g/wally-config.vh
new file mode 100644
index 000000000..c4ce6f628
--- /dev/null
+++ b/wally-pipelined/config/rv32g/wally-config.vh
@@ -0,0 +1,122 @@
+//////////////////////////////////////////
+// wally-config.vh
+//
+// Written: David_Harris@hmc.edu 4 January 2021
+// Modified:
+//
+// Purpose: Specify which features are configured
+// Macros to determine which modes are supported based on MISA
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+// include shared configuration
+`include "wally-shared.vh"
+
+`define QEMU 0
+`define BUILDROOT 0
+`define BUSYBEAR 0
+`define DESIGN_COMPILER 0
+
+// RV32 or RV64: XLEN = 32 or 64
+`define XLEN 32
+
+`define MISA (32'h00000104 | 1 << 20 | 1 << 18 | 1 << 12 | 1 << 0 | 1 <<3 | 1 << 5)
+`define ZICSR_SUPPORTED 1
+`define ZIFENCEI_SUPPORTED 1
+`define COUNTERS 32
+`define ZICOUNTERS_SUPPORTED 1
+
+// Microarchitectural Features
+`define UARCH_PIPELINED 1
+`define UARCH_SUPERSCALR 0
+`define UARCH_SINGLECYCLE 0
+`define MEM_DCACHE 1
+`define MEM_DTIM 1
+`define MEM_ICACHE 1
+`define MEM_VIRTMEM 1
+`define VECTORED_INTERRUPTS_SUPPORTED 1
+
+// TLB configuration. Entries should be a power of 2
+`define ITLB_ENTRIES 32
+`define DTLB_ENTRIES 32
+
+// Cache configuration. Sizes should be a power of two
+// typical configuration 4 ways, 4096 bytes per way, 256 bit or more blocks
+`define DCACHE_NUMWAYS 4
+`define DCACHE_WAYSIZEINBYTES 4096
+`define DCACHE_BLOCKLENINBITS 256
+`define DCACHE_REPLBITS 3
+`define ICACHE_NUMWAYS 4
+`define ICACHE_WAYSIZEINBYTES 4096
+`define ICACHE_BLOCKLENINBITS 256
+
+// Integer Divider Configuration
+// DIV_BITSPERCYCLE must be 1, 2, or 4
+`define DIV_BITSPERCYCLE 4
+
+// Legal number of PMP entries are 0, 16, or 64
+`define PMP_ENTRIES 16
+
+// Address space
+`define RESET_VECTOR 32'h80000000
+
+// Peripheral Addresses
+// Peripheral memory space extends from BASE to BASE+RANGE
+// Range should be a thermometer code with 0's in the upper bits and 1s in the lower bits
+`define BOOTTIM_SUPPORTED 1'b1
+`define BOOTTIM_BASE 34'h00001000
+`define BOOTTIM_RANGE 34'h00000FFF
+`define TIM_SUPPORTED 1'b1
+`define TIM_BASE 34'h80000000
+`define TIM_RANGE 34'h07FFFFFF
+`define CLINT_SUPPORTED 1'b1
+`define CLINT_BASE 34'h02000000
+`define CLINT_RANGE 34'h0000FFFF
+`define GPIO_SUPPORTED 1'b1
+`define GPIO_BASE 34'h10012000
+`define GPIO_RANGE 34'h000000FF
+`define UART_SUPPORTED 1'b1
+`define UART_BASE 34'h10000000
+`define UART_RANGE 34'h00000007
+`define PLIC_SUPPORTED 1'b1
+`define PLIC_BASE 34'h0C000000
+`define PLIC_RANGE 34'h03FFFFFF
+
+// Bus Interface width
+`define AHBW 32
+
+// Test modes
+
+// Tie GPIO outputs back to inputs
+`define GPIO_LOOPBACK_TEST 1
+
+// Hardware configuration
+`define UART_PRESCALE 1
+
+// Interrupt configuration
+`define PLIC_NUM_SRC 4
+// comment out the following if >=32 sources
+`define PLIC_NUM_SRC_LT_32
+`define PLIC_GPIO_ID 3
+`define PLIC_UART_ID 4
+
+`define TWO_BIT_PRELOAD "../config/rv32ic/twoBitPredictor.txt"
+`define BTB_PRELOAD "../config/rv32ic/BTBPredictor.txt"
+`define BPRED_ENABLED 1
+`define BPTYPE "BPGSHARE" // BPLOCALPAg or BPGLOBAL or BPTWOBIT or BPGSHARE
+`define TESTSBP 0
diff --git a/wally-pipelined/config/rv32ic/wally-config.vh b/wally-pipelined/config/rv32ic/wally-config.vh
index 3280c3759..f86204306 100644
--- a/wally-pipelined/config/rv32ic/wally-config.vh
+++ b/wally-pipelined/config/rv32ic/wally-config.vh
@@ -30,11 +30,12 @@
`define QEMU 0
`define BUILDROOT 0
`define BUSYBEAR 0
+`define DESIGN_COMPILER 0
// RV32 or RV64: XLEN = 32 or 64
`define XLEN 32
-`define MISA (32'h00000104 | 1 << 20 | 1 << 18 | 1 << 12 | 1 << 0)
+`define MISA (32'h00000104)
`define ZICSR_SUPPORTED 1
`define ZIFENCEI_SUPPORTED 1
`define COUNTERS 32
@@ -77,8 +78,6 @@
// Peripheral Addresses
// Peripheral memory space extends from BASE to BASE+RANGE
// Range should be a thermometer code with 0's in the upper bits and 1s in the lower bits
-
-// *** each of these is `PA_BITS wide. is this paramaterizable INSIDE the config file?
`define BOOTTIM_SUPPORTED 1'b1
`define BOOTTIM_BASE 34'h00001000
`define BOOTTIM_RANGE 34'h00000FFF
diff --git a/wally-pipelined/config/rv64BP/wally-config.vh b/wally-pipelined/config/rv64BP/wally-config.vh
index 162192495..f79eba7eb 100644
--- a/wally-pipelined/config/rv64BP/wally-config.vh
+++ b/wally-pipelined/config/rv64BP/wally-config.vh
@@ -31,6 +31,7 @@
`define QEMU 0
`define BUILDROOT 0
`define BUSYBEAR 0
+`define DESIGN_COMPILER 0
// RV32 or RV64: XLEN = 32 or 64
`define XLEN 64
diff --git a/wally-pipelined/config/rv64g/BTBPredictor.txt b/wally-pipelined/config/rv64g/BTBPredictor.txt
new file mode 100644
index 000000000..b761147c6
--- /dev/null
+++ b/wally-pipelined/config/rv64g/BTBPredictor.txt
@@ -0,0 +1,1024 @@
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
diff --git a/wally-pipelined/config/rv64g/twoBitPredictor.txt b/wally-pipelined/config/rv64g/twoBitPredictor.txt
new file mode 100644
index 000000000..ff57bd473
--- /dev/null
+++ b/wally-pipelined/config/rv64g/twoBitPredictor.txt
@@ -0,0 +1,1024 @@
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
diff --git a/wally-pipelined/config/rv64g/wally-config.vh b/wally-pipelined/config/rv64g/wally-config.vh
new file mode 100644
index 000000000..d0ead2cdc
--- /dev/null
+++ b/wally-pipelined/config/rv64g/wally-config.vh
@@ -0,0 +1,126 @@
+//////////////////////////////////////////
+// wally-config.vh
+//
+// Written: David_Harris@hmc.edu 4 January 2021
+// Modified:
+//
+// Purpose: Specify which features are configured
+// Macros to determine which modes are supported based on MISA
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+// include shared configuration
+`include "wally-shared.vh"
+
+`define QEMU 0
+`define BUILDROOT 0
+`define BUSYBEAR 0
+`define DESIGN_COMPILER 0
+
+// RV32 or RV64: XLEN = 32 or 64
+`define XLEN 64
+
+// MISA RISC-V configuration per specification
+`define MISA (32'h00000104 | 1 << 5 | 1 << 3 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0 )
+`define ZICSR_SUPPORTED 1
+`define ZIFENCEI_SUPPORTED 1
+`define COUNTERS 32
+`define ZICOUNTERS_SUPPORTED 1
+
+// Microarchitectural Features
+`define UARCH_PIPELINED 1
+`define UARCH_SUPERSCALR 0
+`define UARCH_SINGLECYCLE 0
+`define MEM_DCACHE 1
+`define MEM_DTIM 1
+`define MEM_ICACHE 1
+`define MEM_VIRTMEM 1
+`define VECTORED_INTERRUPTS_SUPPORTED 1
+
+// TLB configuration. Entries should be a power of 2
+`define ITLB_ENTRIES 32
+`define DTLB_ENTRIES 32
+
+// Cache configuration. Sizes should be a power of two
+// typical configuration 4 ways, 4096 bytes per way, 256 bit or more blocks
+`define DCACHE_NUMWAYS 4
+`define DCACHE_WAYSIZEINBYTES 4096
+`define DCACHE_BLOCKLENINBITS 256
+`define DCACHE_REPLBITS 3
+`define ICACHE_NUMWAYS 4
+`define ICACHE_WAYSIZEINBYTES 4096
+`define ICACHE_BLOCKLENINBITS 256
+
+// Integer Divider Configuration
+// DIV_BITSPERCYCLE must be 1, 2, or 4
+`define DIV_BITSPERCYCLE 4
+
+// Legal number of PMP entries are 0, 16, or 64
+`define PMP_ENTRIES 64
+
+// Address space
+`define RESET_VECTOR 64'h0000000080000000
+
+// Bus Interface width
+`define AHBW 64
+
+// Peripheral Physiccal Addresses
+// Peripheral memory space extends from BASE to BASE+RANGE
+// Range should be a thermometer code with 0's in the upper bits and 1s in the lower bits
+
+// *** each of these is `PA_BITS wide. is this paramaterizable INSIDE the config file?
+`define BOOTTIM_SUPPORTED 1'b1
+`define BOOTTIM_BASE 56'h00001000 // spec had been 0x1000 to 0x2FFF, but dh truncated to 0x1000 to 0x1FFF because upper half seems to be all zeros and this is easier for decoder
+`define BOOTTIM_RANGE 56'h00000FFF
+`define TIM_SUPPORTED 1'b1
+`define TIM_BASE 56'h80000000
+`define TIM_RANGE 56'h7FFFFFFF
+`define CLINT_SUPPORTED 1'b1
+`define CLINT_BASE 56'h02000000
+`define CLINT_RANGE 56'h0000FFFF
+`define GPIO_SUPPORTED 1'b1
+`define GPIO_BASE 56'h10012000
+`define GPIO_RANGE 56'h000000FF
+`define UART_SUPPORTED 1'b1
+`define UART_BASE 56'h10000000
+`define UART_RANGE 56'h00000007
+`define PLIC_SUPPORTED 1'b1
+`define PLIC_BASE 56'h0C000000
+`define PLIC_RANGE 56'h03FFFFFF
+
+// Test modes
+
+// Tie GPIO outputs back to inputs
+`define GPIO_LOOPBACK_TEST 1
+
+// Hardware configuration
+`define UART_PRESCALE 1
+
+// Interrupt configuration
+`define PLIC_NUM_SRC 4
+// comment out the following if >=32 sources
+`define PLIC_NUM_SRC_LT_32
+`define PLIC_GPIO_ID 3
+`define PLIC_UART_ID 4
+
+`define TWO_BIT_PRELOAD "../config/rv64ic/twoBitPredictor.txt"
+`define BTB_PRELOAD "../config/rv64ic/BTBPredictor.txt"
+`define BPRED_ENABLED 1
+`define BPTYPE "BPGSHARE" // BPLOCALPAg or BPGLOBAL or BPTWOBIT or BPGSHARE
+`define TESTSBP 0
+
diff --git a/wally-pipelined/config/rv64ic/wally-config.vh b/wally-pipelined/config/rv64ic/wally-config.vh
index bedfc4f3f..c0e0860cb 100644
--- a/wally-pipelined/config/rv64ic/wally-config.vh
+++ b/wally-pipelined/config/rv64ic/wally-config.vh
@@ -30,12 +30,13 @@
`define QEMU 0
`define BUILDROOT 0
`define BUSYBEAR 0
+`define DESIGN_COMPILER 0
// RV32 or RV64: XLEN = 32 or 64
`define XLEN 64
// MISA RISC-V configuration per specification
-`define MISA (32'h00000104 | 0 << 5 | 0 << 3 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0)
+`define MISA (32'h00000104)
`define ZICSR_SUPPORTED 1
`define ZIFENCEI_SUPPORTED 1
`define COUNTERS 32
@@ -67,7 +68,7 @@
// Integer Divider Configuration
// DIV_BITSPERCYCLE must be 1, 2, or 4
-`define DIV_BITSPERCYCLE 1
+`define DIV_BITSPERCYCLE 4
// Legal number of PMP entries are 0, 16, or 64
`define PMP_ENTRIES 64
diff --git a/wally-pipelined/fpu-testfloat/FMA/tbgen/tb.sv b/wally-pipelined/fpu-testfloat/FMA/tbgen/tb.sv
index 3ae751e52..de5e849d9 100644
--- a/wally-pipelined/fpu-testfloat/FMA/tbgen/tb.sv
+++ b/wally-pipelined/fpu-testfloat/FMA/tbgen/tb.sv
@@ -139,12 +139,12 @@ assign ansnan = FmtE ? &ans[`FLEN-2:`NF] && |ans[`NF-1:0] : &ans[30:23] && |ans[
logic [8:0] NormCntE, NormCntM;
fma1 fma1 (.XSgnE, .YSgnE, .ZSgnE, .XExpE, .YExpE, .ZExpE, .XManE({XAssumed1E,XFracE}), .YManE({YAssumed1E,YFracE}), .ZManE({ZAssumed1E,ZFracE}),
- .BiasE, .XDenormE, .YDenormE, .ZDenormE, .XZeroE, .YZeroE, .ZZeroE,
+ .XDenormE, .YDenormE, .ZDenormE, .XZeroE, .YZeroE, .ZZeroE,
.FOpCtrlE, .FmtE, .SumE, .NegSumE, .InvZE, .NormCntE, .ZSgnEffE, .PSgnE,
.ProdExpE, .AddendStickyE, .KillProdE);
fma2 UUT2(.XSgnM(XSgnE), .YSgnM(YSgnE), .XExpM(XExpE), .YExpM(YExpE), .ZExpM(ZExpE), .XManM({XAssumed1E,XFracE}), .YManM({YAssumed1E,YFracE}), .ZManM({ZAssumed1E,ZFracE}), .XNaNM(XNaNE), .YNaNM(YNaNE), .ZNaNM(ZNaNE), .XZeroM(XZeroE), .YZeroM(YZeroE), .ZZeroM(ZZeroE), .XInfM(XInfE), .YInfM(YInfE), .ZInfM(ZInfE), .XSNaNM(XSNaNE), .YSNaNM(YSNaNE), .ZSNaNM(ZSNaNE),
// .FSrcXE, .FSrcYE, .FSrcZE, .FSrcXM, .FSrcYM, .FSrcZM,
- .FOpCtrlM(FOpCtrlE[2:0]), .KillProdM(KillProdE), .AddendStickyM(AddendStickyE), .ProdExpM(ProdExpE), .SumM(SumE), .NegSumM(NegSumE), .InvZM(InvZE), .NormCntM(NormCntE), .ZSgnEffM(ZSgnEffE), .PSgnM(PSgnE),
+ .KillProdM(KillProdE), .AddendStickyM(AddendStickyE), .ProdExpM(ProdExpE), .SumM(SumE), .NegSumM(NegSumE), .InvZM(InvZE), .NormCntM(NormCntE), .ZSgnEffM(ZSgnEffE), .PSgnM(PSgnE),
.FmtM(FmtE), .FrmM(FrmE), .FMAFlgM, .FMAResM);
diff --git a/wally-pipelined/lint-wally b/wally-pipelined/lint-wally
deleted file mode 100755
index fbad26515..000000000
--- a/wally-pipelined/lint-wally
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# check for warnings in Verilog code
-# The verilator lint tool is faster and better than Modelsim so it is best to run this first.
-export PATH=$PATH:/usr/local/bin/
-verilator=`which verilator`
-
-basepath=$(dirname $0)
-for config in rv64ic rv32ic; do
- echo "$config linting..."
- if !($verilator --lint-only "$@" --top-module wallypipelinedsoc "-I$basepath/config/shared" "-I$basepath/config/$config" $basepath/src/*/*.sv --relative-includes); then
- echo "Exiting after $config lint due to errors or warnings"
- exit 1
- fi
-done
-echo "All lints run with no errors or warnings"
-
-# --lint-only just runs lint rather than trying to compile and simulate
-# -I points to the include directory where files such as `include wally-config.vh are found
-
-# For more exhaustive (and sometimes spurious) warnings, run:
-# verilator --lint-only -Wall -Iconfig/rv64ic src/*
-# Unfortunately, this produces a bunch of UNUSED and UNDRIVEN signal warnings in blocks that are configured to not exist.
diff --git a/wally-pipelined/regression/lint-wally b/wally-pipelined/regression/lint-wally
new file mode 100755
index 000000000..67cc7a640
--- /dev/null
+++ b/wally-pipelined/regression/lint-wally
@@ -0,0 +1,22 @@
+#!/bin/bash
+# check for warnings in Verilog code
+# The verilator lint tool is faster and better than Modelsim so it is best to run this first.
+export PATH=$PATH:/usr/local/bin/
+verilator=`which verilator`
+
+basepath=$(dirname $0)/..
+for config in rv64g rv32g; do
+ echo "$config linting..."
+ if !($verilator --lint-only --Wall "$@" --top-module wallypipelinedsoc "-I$basepath/config/shared" "-I$basepath/config/$config" $basepath/src/*/*.sv $basepath/src/*/*/*.sv --relative-includes); then
+ echo "Exiting after $config lint due to errors or warnings"
+ exit 1
+ fi
+done
+echo "All lints run with no errors or warnings"
+
+# --lint-only just runs lint rather than trying to compile and simulate
+# -I points to the include directory where files such as `include wally-config.vh are found
+
+# For more exhaustive (and sometimes spurious) warnings, run:
+# verilator --lint-only -Wall -Iconfig/rv64ic src/*
+# Unfortunately, this produces a bunch of UNUSED and UNDRIVEN signal warnings in blocks that are configured to not exist.
diff --git a/wally-pipelined/regression/old/qrun.do b/wally-pipelined/regression/old/qrun.do
new file mode 100644
index 000000000..cff7fec5f
--- /dev/null
+++ b/wally-pipelined/regression/old/qrun.do
@@ -0,0 +1,24 @@
+# qrun.do
+#
+# Modification by Oklahoma State University & Harvey Mudd College
+# Use with Testbench
+# James Stine, 2008; David Harris 2021
+# Go Cowboys!!!!!!
+#
+# Takes 1:10 to run RV64IC tests using gui
+
+# Usage: do wally-pipelined-batch.do
+# Example: do wally-pipelined-batch.do rv32 imperas-32i
+
+# Use this wally-pipelined-batch.do file to run this example.
+# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
+# do wally-pipelined-batch.do
+# or, to run from a shell, type the following at the shell prompt:
+# vsim -do wally-pipelined-batch.do -c
+# (omit the "-c" to see the GUI while running from the shell)
+
+qrun -clean
+qrun +incdir+../config/rv32ic +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583 -optimize -snapshot wally +notimingchecks +nospecify
+qrun -simulate -snapshot wally
+qrun -simulate -snapshot wally
+
diff --git a/wally-pipelined/regression/old/qrun.log b/wally-pipelined/regression/old/qrun.log
new file mode 100644
index 000000000..28d788306
--- /dev/null
+++ b/wally-pipelined/regression/old/qrun.log
@@ -0,0 +1,215 @@
+QuestaSim-64 qrun 2021.2_1 Utility 2021.05 May 15 2021
+Start time: 21:17:08 on Oct 09,2021
+qrun -simulate -snapshot wally
+# vsim -lib qrun.out/work -c -do "run -all; quit -f" -statslog qrun.out/stats_log wally -appendlog -l qrun.log
+# Start time: 21:17:09 on Oct 09,2021
+# // Questa Sim-64
+# // Version 2021.2_1 linux_x86_64 May 15 2021
+# //
+# // Copyright 1991-2021 Mentor Graphics Corporation
+# // All Rights Reserved.
+# //
+# // QuestaSim and its associated documentation contain trade
+# // secrets and commercial or financial information that are the property of
+# // Mentor Graphics Corporation and are privileged, confidential,
+# // and exempt from disclosure under the Freedom of Information Act,
+# // 5 U.S.C. Section 552. Furthermore, this information
+# // is prohibited from disclosure under the Trade Secrets Act,
+# // 18 U.S.C. Section 1905.
+# //
+# Loading sv_std.std
+# Loading work.cla_sub52(fast)
+# Loading work.convert_inputs(fast)
+# Loading work.convert_inputs_div(fast)
+# Loading work.decoder(fast)
+# Loading work.faddcvt(fast)
+# Loading work.floprc(fast)
+# Loading work.fpudivsqrtrecur(fast)
+# Loading work.intdiv(fast)
+# Loading work.lz52(fast)
+# Loading work.qsel(fast)
+# Loading work.ahbliteState(fast)
+# Loading work.testbench_sv_unit(fast)
+# Loading work.testbench(fast)
+# Loading work.regfile(fast)
+# Loading work.csrn(fast)
+# Loading work.instrTrackerTB(fast)
+# Loading work.instrNameDecTB(fast)
+# Loading work.copyShadow(fast)
+# Loading work.tlbcamline(fast)
+# Loading work.pmpadrdec(fast)
+# Loading work.cacheway(fast)
+# Loading work.cacheway(fast__1)
+# run -all
+# ** Warning: Multiple Instruction Cache ways not yet implemented
+# Time: 0 ns Scope: testbench.riscvassertions File: ../testbench/testbench.sv Line: 327
+# ** Error: Some regression tests will fail if TIM_RANGE is less than 56'h07FFFFFF
+# Time: 0 ns Scope: testbench.riscvassertions File: ../testbench/testbench.sv Line: 330
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-ADD-01.elf.memfile
+# rv32i/I-ADD-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-ADDI-01.elf.memfile
+# rv32i/I-ADDI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-AND-01.elf.memfile
+# rv32i/I-AND-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-ANDI-01.elf.memfile
+# rv32i/I-ANDI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-AUIPC-01.elf.memfile
+# rv32i/I-AUIPC-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-BEQ-01.elf.memfile
+# rv32i/I-BEQ-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-BGE-01.elf.memfile
+# rv32i/I-BGE-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-BGEU-01.elf.memfile
+# rv32i/I-BGEU-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-BLT-01.elf.memfile
+# rv32i/I-BLT-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-BLTU-01.elf.memfile
+# rv32i/I-BLTU-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-BNE-01.elf.memfile
+# rv32i/I-BNE-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-DELAY_SLOTS-01.elf.memfile
+# rv32i/I-DELAY_SLOTS-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-EBREAK-01.elf.memfile
+# rv32i/I-EBREAK-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-ECALL-01.elf.memfile
+# rv32i/I-ECALL-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-ENDIANESS-01.elf.memfile
+# rv32i/I-ENDIANESS-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-IO-01.elf.memfile
+# rv32i/I-IO-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-JAL-01.elf.memfile
+# rv32i/I-JAL-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-JALR-01.elf.memfile
+# rv32i/I-JALR-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-LB-01.elf.memfile
+# 790020 Warning: access to memory address 0
+#
+# rv32i/I-LB-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-LBU-01.elf.memfile
+# rv32i/I-LBU-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-LH-01.elf.memfile
+# rv32i/I-LH-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-LHU-01.elf.memfile
+# rv32i/I-LHU-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-LUI-01.elf.memfile
+# rv32i/I-LUI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-LW-01.elf.memfile
+# rv32i/I-LW-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-MISALIGN_LDST-01.elf.memfile
+# rv32i/I-MISALIGN_LDST-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-NOP-01.elf.memfile
+# rv32i/I-NOP-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-OR-01.elf.memfile
+# rv32i/I-OR-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-ORI-01.elf.memfile
+# rv32i/I-ORI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-RF_size-01.elf.memfile
+# rv32i/I-RF_size-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-RF_width-01.elf.memfile
+# rv32i/I-RF_width-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-RF_x0-01.elf.memfile
+# rv32i/I-RF_x0-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SB-01.elf.memfile
+# 1233020 Warning: access to memory address 0
+#
+# rv32i/I-SB-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SH-01.elf.memfile
+# rv32i/I-SH-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SLL-01.elf.memfile
+# rv32i/I-SLL-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SLLI-01.elf.memfile
+# rv32i/I-SLLI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SLT-01.elf.memfile
+# rv32i/I-SLT-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SLTI-01.elf.memfile
+# rv32i/I-SLTI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SLTIU-01.elf.memfile
+# rv32i/I-SLTIU-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SLTU-01.elf.memfile
+# rv32i/I-SLTU-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SRA-01.elf.memfile
+# rv32i/I-SRA-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SRAI-01.elf.memfile
+# rv32i/I-SRAI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SRL-01.elf.memfile
+# rv32i/I-SRL-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SRLI-01.elf.memfile
+# rv32i/I-SRLI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SUB-01.elf.memfile
+# rv32i/I-SUB-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-SW-01.elf.memfile
+# rv32i/I-SW-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-XOR-01.elf.memfile
+# rv32i/I-XOR-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/I-XORI-01.elf.memfile
+# rv32i/I-XORI-01 succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-ADD.elf.memfile
+# rv32i/WALLY-ADD succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-SUB.elf.memfile
+# rv32i/WALLY-SUB succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-ADDI.elf.memfile
+# rv32i/WALLY-ADDI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-ANDI.elf.memfile
+# rv32i/WALLY-ANDI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-ORI.elf.memfile
+# rv32i/WALLY-ORI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-XORI.elf.memfile
+# rv32i/WALLY-XORI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-SLTI.elf.memfile
+# rv32i/WALLY-SLTI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-SLTIU.elf.memfile
+# rv32i/WALLY-SLTIU succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-SLLI.elf.memfile
+# rv32i/WALLY-SLLI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-SRLI.elf.memfile
+# rv32i/WALLY-SRLI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-SRAI.elf.memfile
+# rv32i/WALLY-SRAI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-LOAD.elf.memfile
+# rv32i/WALLY-LOAD succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-SUB.elf.memfile
+# rv32i/WALLY-SUB succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-STORE.elf.memfile
+# rv32i/WALLY-STORE succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-JAL.elf.memfile
+# rv32i/WALLY-JAL succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-JALR.elf.memfile
+# rv32i/WALLY-JALR succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-BEQ.elf.memfile
+# 2846200 Warning: access to memory address 0
+#
+# rv32i/WALLY-BEQ succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-BNE.elf.memfile
+# rv32i/WALLY-BNE succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-BLTU.elf.memfile
+# rv32i/WALLY-BLTU succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-BLT.elf.memfile
+# rv32i/WALLY-BLT succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-BGE.elf.memfile
+# rv32i/WALLY-BGE succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-BGEU.elf.memfile
+# rv32i/WALLY-BGEU succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-CSRRW.elf.memfile
+# rv32i/WALLY-CSRRW succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-CSRRS.elf.memfile
+# rv32i/WALLY-CSRRS succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-CSRRC.elf.memfile
+# rv32i/WALLY-CSRRC succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-CSRRWI.elf.memfile
+# rv32i/WALLY-CSRRWI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-CSRRSI.elf.memfile
+# rv32i/WALLY-CSRRSI succeeded. Brilliant!!!
+# Read memfile ../../imperas-riscv-tests/work/rv32i/WALLY-CSRRCI.elf.memfile
+# rv32i/WALLY-CSRRCI succeeded. Brilliant!!!
+# SUCCESS! All tests ran without failures.
+# ** Note: $stop : ../testbench/testbench.sv(244)
+# Time: 4170295 ns Iteration: 0 Instance: /testbench
+# Break at ../testbench/testbench.sv line 244
+# Stopped at ../testbench/testbench.sv line 244
+# quit -f
+# End time: 21:17:54 on Oct 09,2021, Elapsed time: 0:00:45
+# Errors: 1, Warnings: 1
+# *** Summary *********************************************
+# qrun: Errors: 0, Warnings: 0
+# vsim: Errors: 1, Warnings: 1
+# Totals: Errors: 1, Warnings: 1
diff --git a/wally-pipelined/regression/old/qrun.out/history b/wally-pipelined/regression/old/qrun.out/history
new file mode 100644
index 000000000..daf20a20f
--- /dev/null
+++ b/wally-pipelined/regression/old/qrun.out/history
@@ -0,0 +1,6 @@
+- Entry: 1
+ Time: Sat Oct 9 21:16:56 2021
+ Command: /cad/mentor/questa_sim-2021.2_1/questasim/linux_x86_64/qrun +incdir+../config/rv32ic +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/function_radix.sv ../testbench/common/instrNameDecTB.sv ../testbench/common/instrTrackerTB.sv ../testbench/common/logging.sv ../src/cache/cachereplacementpolicy.sv ../src/cache/cacheway.sv ../src/cache/dcache.sv ../src/cache/dcachefsm.sv ../src/cache/icache.sv ../src/cache/icachefsm.sv ../src/cache/sram1rw.sv ../src/ebu/ahblite.sv ../src/ebu/amoalu.sv ../src/fpu/adder.sv ../src/fpu/cla12.sv ../src/fpu/cla52.sv ../src/fpu/cla64.sv ../src/fpu/convert_inputs.sv ../src/fpu/convert_inputs_div.sv ../src/fpu/cvtfp.sv ../src/fpu/divconv.sv ../src/fpu/exception.sv ../src/fpu/exception_div.sv ../src/fpu/faddcvt.sv ../src/fpu/fclassify.sv ../src/fpu/fcmp.sv ../src/fpu/fctrl.sv ../src/fpu/fcvt.sv ../src/fpu/fhazard.sv ../src/fpu/fma.sv ../src/fpu/fpdiv.sv ../src/fpu/fpu.sv ../src/fpu/fpudivsqrtrecur.sv ../src/fpu/fpudivsqrtrecurcore.sv ../src/fpu/fregfile.sv ../src/fpu/fsgn.sv ../src/fpu/fsm.sv ../src/fpu/lzd_denorm.sv ../src/fpu/rounder_denorm.sv ../src/fpu/rounder_div.sv ../src/fpu/sbtm_a0.sv ../src/fpu/sbtm_a1.sv ../src/fpu/sbtm_a2.sv ../src/fpu/sbtm_a3.sv ../src/fpu/sbtm_div.sv ../src/fpu/sbtm_sqrt.sv ../src/fpu/shifter_denorm.sv ../src/fpu/unpacking.sv ../src/generic/adder.sv ../src/generic/clockgater.sv ../src/generic/flop.sv ../src/generic/lzd.sv ../src/generic/mux.sv ../src/generic/neg.sv ../src/generic/onehotdecoder.sv ../src/generic/or_rows.sv ../src/generic/shift.sv ../src/hazard/hazard.sv ../src/ieu/alu.sv ../src/ieu/controller.sv ../src/ieu/datapath.sv ../src/ieu/extend.sv ../src/ieu/forward.sv ../src/ieu/ieu.sv ../src/ieu/regfile.sv ../src/ieu/shifter.sv ../src/ifu/BTBPredictor.sv ../src/ifu/RAsPredictor.sv ../src/ifu/SRAM2P1R1W.sv ../src/ifu/bpred.sv ../src/ifu/decompress.sv ../src/ifu/globalHistoryPredictor.sv ../src/ifu/gsharePredictor.sv ../src/ifu/ifu.sv ../src/ifu/localHistoryPredictor.sv ../src/ifu/satCounter2.sv ../src/ifu/twoBitPredictor.sv ../src/lsu/lrsc.sv ../src/lsu/lsu.sv ../src/lsu/lsuArb.sv ../src/lsu/subwordread.sv ../src/mmu/adrdec.sv ../src/mmu/adrdecs.sv ../src/mmu/decoder.sv ../src/mmu/hptw.sv ../src/mmu/mmu.sv ../src/mmu/pmachecker.sv ../src/mmu/pmpadrdec.sv ../src/mmu/pmpchecker.sv ../src/mmu/priorityonehot.sv ../src/mmu/prioritythermometer.sv ../src/mmu/tlb.sv ../src/mmu/tlbcam.sv ../src/mmu/tlbcamline.sv ../src/mmu/tlbcontrol.sv ../src/mmu/tlblru.sv ../src/mmu/tlbmixer.sv ../src/mmu/tlbram.sv ../src/mmu/tlbramline.sv ../src/muldiv/div.sv ../src/muldiv/intdivrestoring.sv ../src/muldiv/intdivrestoringstep.sv ../src/muldiv/mul.sv ../src/muldiv/muldiv.sv ../src/privileged/csr.sv ../src/privileged/csrc.sv ../src/privileged/csri.sv ../src/privileged/csrm.sv ../src/privileged/csrn.sv ../src/privileged/csrs.sv ../src/privileged/csrsr.sv ../src/privileged/csru.sv ../src/privileged/privdec.sv ../src/privileged/privileged.sv ../src/privileged/trap.sv ../src/uncore/clint.sv ../src/uncore/dtim.sv ../src/uncore/gpio.sv ../src/uncore/plic.sv ../src/uncore/subwordwrite.sv ../src/uncore/uart.sv ../src/uncore/uartPC16550D.sv ../src/uncore/uncore.sv ../src/wally/wallypipelinedhart.sv ../src/wally/wallypipelinedsoc.sv -suppress 2583 -optimize -snapshot wally +notimingchecks +nospecify
+- Entry: 2
+ Time: Sat Oct 9 21:17:08 2021
+ Command: /cad/mentor/questa_sim-2021.2_1/questasim/linux_x86_64/qrun -simulate -snapshot wally
diff --git a/wally-pipelined/regression/old/qrun.out/history.cnt b/wally-pipelined/regression/old/qrun.out/history.cnt
new file mode 100644
index 000000000..0cfbf0888
--- /dev/null
+++ b/wally-pipelined/regression/old/qrun.out/history.cnt
@@ -0,0 +1 @@
+2
diff --git a/wally-pipelined/regression/old/qrun.out/sessions/qrun.out$work b/wally-pipelined/regression/old/qrun.out/sessions/qrun.out$work
new file mode 100644
index 000000000..cb7ac5842
Binary files /dev/null and b/wally-pipelined/regression/old/qrun.out/sessions/qrun.out$work differ
diff --git a/wally-pipelined/regression/old/qrun.out/stats_log b/wally-pipelined/regression/old/qrun.out/stats_log
new file mode 100644
index 000000000..c7d500fcd
--- /dev/null
+++ b/wally-pipelined/regression/old/qrun.out/stats_log
@@ -0,0 +1,2 @@
+qrun: Errors: 0, Warnings: 0
+vsim: Errors: 1, Warnings: 1
diff --git a/wally-pipelined/regression/old/qrun.out/top_dus b/wally-pipelined/regression/old/qrun.out/top_dus
new file mode 100644
index 000000000..edcb6622a
--- /dev/null
+++ b/wally-pipelined/regression/old/qrun.out/top_dus
@@ -0,0 +1 @@
+/mnt/scratch/harris_scratch/riscv-wally/wally-pipelined/regression/qrun.out/work 0 compiled
diff --git a/wally-pipelined/regression/old/qrun.out/version b/wally-pipelined/regression/old/qrun.out/version
new file mode 100644
index 000000000..f1f03fff8
--- /dev/null
+++ b/wally-pipelined/regression/old/qrun.out/version
@@ -0,0 +1 @@
+qrun 0.5
diff --git a/wally-pipelined/regression/sim-busybear b/wally-pipelined/regression/old/sim-busybear
similarity index 100%
rename from wally-pipelined/regression/sim-busybear
rename to wally-pipelined/regression/old/sim-busybear
diff --git a/wally-pipelined/regression/sim-busybear-batch b/wally-pipelined/regression/old/sim-busybear-batch
similarity index 100%
rename from wally-pipelined/regression/sim-busybear-batch
rename to wally-pipelined/regression/old/sim-busybear-batch
diff --git a/wally-pipelined/regression/old/sim-fp64 b/wally-pipelined/regression/old/sim-fp64
new file mode 100755
index 000000000..b6b8ba5ca
--- /dev/null
+++ b/wally-pipelined/regression/old/sim-fp64
@@ -0,0 +1 @@
+vsim -do wally-fp64.do
diff --git a/wally-pipelined/regression/old/sim-fp64-batch b/wally-pipelined/regression/old/sim-fp64-batch
new file mode 100755
index 000000000..81ef807e2
--- /dev/null
+++ b/wally-pipelined/regression/old/sim-fp64-batch
@@ -0,0 +1,3 @@
+vsim -c < {}",
- # grepstr="loaded 100000 instructions"
- #),
- TestCase(
- name="buildroot",
- cmd="vsim -do wally-buildroot-batch.do -c > {}",
- grepstr="8900000 instructions"
- ),
- TestCase(
- name="arch64",
- cmd="vsim > {} -c < {} -c < {} -c < {} -c < {}",
+ cmd="./lint-wally &> {}",
grepstr="All lints run with no errors or warnings"
- ),
+ )
]
+def getBuildrootTC(short):
+ INSTR_LIMIT = 100000 # multiple of 100000
+ MAX_EXPECTED = 3000000
+ if short:
+ BRcmd="vsim > {} -c < {} -c < {} -c < {} -c <
-#include
-#include
-
-int main() {
-
- uint64_t N;
- uint64_t D;
- uint64_t Q;
-
- D = 0xdf7f3844121bcc23;
- N = 0x10fd3dedadea5195;
- Q = N/D;
-
- printf("N = %" PRIx64 "\n", N);
- printf("D = %" PRIx64 "\n", D);
- printf("Q = %" PRIx64 "\n", Q);
- printf("R = %" PRIx64 "\n", N%D);
-
-
-
-}
diff --git a/wally-pipelined/regression/wally-buildroot-batch.do b/wally-pipelined/regression/wally-buildroot-batch.do
index bca3ca35e..13a072bbf 100644
--- a/wally-pipelined/regression/wally-buildroot-batch.do
+++ b/wally-pipelined/regression/wally-buildroot-batch.do
@@ -25,12 +25,12 @@ vlib work-buildroot
# suppress spurious warnngs about
# "Extra checking for conflicts with always_comb done at vopt time"
# because vsim will run vopt
-vlog +incdir+../config/buildroot +incdir+../config/shared ../testbench/testbench-linux.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583
+vlog -lint +incdir+../config/buildroot +incdir+../config/shared ../testbench/testbench-linux.sv ../testbench/common/*.sv ../src/*/*.sv ../src/*/*/*.sv -suppress 2583
# start and run simulation
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
-vopt work.testbench -o workopt
+vopt work.testbench -G INSTR_LIMIT=$1 -o workopt
vsim workopt -suppress 8852,12070
diff --git a/wally-pipelined/regression/wally-buildroot.do b/wally-pipelined/regression/wally-buildroot.do
index e412c2398..daa1f6e68 100644
--- a/wally-pipelined/regression/wally-buildroot.do
+++ b/wally-pipelined/regression/wally-buildroot.do
@@ -25,7 +25,7 @@ vlib work-buildroot
# suppress spurious warnngs about
# "Extra checking for conflicts with always_comb done at vopt time"
# because vsim will run vopt
-vlog +incdir+../config/buildroot +incdir+../config/shared ../testbench/testbench-linux.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583
+vlog -lint +incdir+../config/buildroot +incdir+../config/shared ../testbench/testbench-linux.sv ../testbench/common/*.sv ../src/*/*.sv ../src/*/*/*.sv -suppress 2583
# start and run simulation
diff --git a/wally-pipelined/regression/wally-fp64-batch.do b/wally-pipelined/regression/wally-fp64-batch.do
new file mode 100644
index 000000000..33398dc6c
--- /dev/null
+++ b/wally-pipelined/regression/wally-fp64-batch.do
@@ -0,0 +1,50 @@
+# wally-pipelined-batch.do
+#
+# Modification by Oklahoma State University & Harvey Mudd College
+# Use with Testbench
+# James Stine, 2008; David Harris 2021
+# Go Cowboys!!!!!!
+#
+# Takes 1:10 to run RV64IC tests using gui
+
+# Usage: do wally-pipelined-batch.do
+# Example: do wally-pipelined-batch.do rv32ic imperas-32i
+
+# Use this wally-pipelined-batch.do file to run this example.
+# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
+# do wally-pipelined-batch.do
+# or, to run from a shell, type the following at the shell prompt:
+# vsim -do wally-pipelined-batch.do -c
+# (omit the "-c" to see the GUI while running from the shell)
+
+onbreak {resume}
+
+# create library
+if [file exists work_${1}_${2}] {
+ vdel -lib work_${1}_${2} -all
+}
+vlib work_${1}_${2}
+
+# compile source files
+# suppress spurious warnngs about
+# "Extra checking for conflicts with always_comb done at vopt time"
+# because vsim will run vopt
+
+# default to config/rv64ic, but allow this to be overridden at the command line. For example:
+# do wally-pipelined-batch.do ../config/rv32ic rv32ic
+vlog -work work_${1}_${2} +incdir+../config/$1 +incdir+../config/shared ../testbench/testbench-f64.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583
+
+# start and run simulation
+# remove +acc flag for faster sim during regressions if there is no need to access internal signals
+vopt work_${1}_${2}.testbench -work work_${1}_${2} -G TEST=$2 -o testbenchopt
+vsim -lib work_${1}_${2} testbenchopt
+# Adding coverage increases runtime from 2:00 to 4:29. Can't run it all the time
+#vopt work_$2.testbench -work work_$2 -o workopt_$2 +cover=sbectf
+#vsim -coverage -lib work_$2 workopt_$2
+
+run -all
+#coverage report -file wally-pipelined-coverage.txt
+# These aren't doing anything helpful
+#coverage report -memory
+#profile report -calltree -file wally-pipelined-calltree.rpt -cutoff 2
+quit
diff --git a/wally-pipelined/regression/wally-fp64.do b/wally-pipelined/regression/wally-fp64.do
new file mode 100644
index 000000000..c131ff16d
--- /dev/null
+++ b/wally-pipelined/regression/wally-fp64.do
@@ -0,0 +1,54 @@
+# wally-pipelined.do
+#
+# Modification by Oklahoma State University & Harvey Mudd College
+# Use with Testbench
+# James Stine, 2008; David Harris 2021
+# Go Cowboys!!!!!!
+#
+# Takes 1:10 to run RV64IC tests using gui
+
+# run with vsim -do "do wally-pipelined.do rv64ic riscvarchtest-64m"
+
+# Use this wally-pipelined.do file to run this example.
+# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
+# do wally-pipelined.do
+# or, to run from a shell, type the following at the shell prompt:
+# vsim -do wally-pipelined.do -c
+# (omit the "-c" to see the GUI while running from the shell)
+
+onbreak {resume}
+
+# create library
+if [file exists work] {
+ vdel -all
+}
+vlib work
+
+# compile source files
+# suppress spurious warnngs about
+# "Extra checking for conflicts with always_comb done at vopt time"
+# because vsim will run vopt
+
+# default to config/rv64ic, but allow this to be overridden at the command line. For example:
+# do wally-pipelined.do ../config/rv32ic
+#switch $argc {
+# 0 {vlog +incdir+../config/rv64ic +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
+# 1 {vlog +incdir+$1 +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
+#}
+# start and run simulation
+# remove +acc flag for faster sim during regressions if there is no need to access internal signals
+vlog +incdir+../config/rv64g +incdir+../config/shared ../testbench/testbench-f64.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583
+vopt +acc work.testbench -G TEST=imperas64d -o workopt
+vsim workopt
+
+view wave
+-- display input and output signals as hexidecimal values
+do ./wave-dos/generic.do
+
+-- Run the Simulation
+#run 3600
+run -all
+#quit
+#noview ../testbench/testbench-imperas.sv
+noview ../testbench/testbench.sv
+view wave
diff --git a/wally-pipelined/regression/wally-pipelined-batch.do b/wally-pipelined/regression/wally-pipelined-batch.do
index 28b866973..30abbd7b4 100644
--- a/wally-pipelined/regression/wally-pipelined-batch.do
+++ b/wally-pipelined/regression/wally-pipelined-batch.do
@@ -7,6 +7,9 @@
#
# Takes 1:10 to run RV64IC tests using gui
+# Usage: do wally-pipelined-batch.do
+# Example: do wally-pipelined-batch.do rv32ic imperas-32i
+
# Use this wally-pipelined-batch.do file to run this example.
# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
# do wally-pipelined-batch.do
@@ -17,10 +20,10 @@
onbreak {resume}
# create library
-if [file exists work_$2] {
- vdel -lib work_$2 -all
+if [file exists work_${1}_${2}] {
+ vdel -lib work_${1}_${2} -all
}
-vlib work_$2
+vlib work_${1}_${2}
# compile source files
# suppress spurious warnngs about
@@ -29,15 +32,12 @@ vlib work_$2
# default to config/rv64ic, but allow this to be overridden at the command line. For example:
# do wally-pipelined-batch.do ../config/rv32ic rv32ic
-switch $argc {
- 0 {vlog +incdir+../config/rv64ic +incdir+../config/shared ../testbench/testbench-imperas.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
- 1 {vlog +incdir+$1 +incdir+../config/shared ../testbench/testbench-imperas.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
- 2 {vlog -work work_$2 +incdir+$1 +incdir+../config/shared ../testbench/testbench-imperas.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
-}
+vlog -lint -work work_${1}_${2} +incdir+../config/$1 +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv ../src/*/*/*.sv -suppress 2583
+
# start and run simulation
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
-vopt work_$2.testbench -work work_$2 -o workopt_$2
-vsim -lib work_$2 workopt_$2
+vopt work_${1}_${2}.testbench -work work_${1}_${2} -G TEST=$2 -o testbenchopt
+vsim -lib work_${1}_${2} testbenchopt
# Adding coverage increases runtime from 2:00 to 4:29. Can't run it all the time
#vopt work_$2.testbench -work work_$2 -o workopt_$2 +cover=sbectf
#vsim -coverage -lib work_$2 workopt_$2
diff --git a/wally-pipelined/regression/wally-pipelined.do b/wally-pipelined/regression/wally-pipelined.do
index 76e3d8668..50177ae2f 100644
--- a/wally-pipelined/regression/wally-pipelined.do
+++ b/wally-pipelined/regression/wally-pipelined.do
@@ -7,6 +7,8 @@
#
# Takes 1:10 to run RV64IC tests using gui
+# run with vsim -do "do wally-pipelined.do rv64ic riscvarchtest-64m"
+
# Use this wally-pipelined.do file to run this example.
# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
# do wally-pipelined.do
@@ -29,13 +31,14 @@ vlib work
# default to config/rv64ic, but allow this to be overridden at the command line. For example:
# do wally-pipelined.do ../config/rv32ic
-switch $argc {
- 0 {vlog +incdir+../config/rv64ic +incdir+../config/shared ../testbench/testbench-imperas.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
- 1 {vlog +incdir+$1 +incdir+../config/shared ../testbench/testbench-imperas.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
-}
+#switch $argc {
+# 0 {vlog +incdir+../config/rv64ic +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
+# 1 {vlog +incdir+$1 +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv -suppress 2583}
+#}
# start and run simulation
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
-vopt +acc work.testbench -o workopt
+vlog -lint +incdir+../config/$1 +incdir+../config/shared ../testbench/testbench.sv ../testbench/common/*.sv ../src/*/*.sv ../src/*/*/*.sv -suppress 2583
+vopt +acc work.testbench -G TEST=$2 -o workopt
vsim workopt
view wave
@@ -46,5 +49,6 @@ do ./wave-dos/peripheral-waves.do
#run 3600
run -all
#quit
-noview ../testbench/testbench-imperas.sv
+#noview ../testbench/testbench-imperas.sv
+noview ../testbench/testbench.sv
view wave
diff --git a/wally-pipelined/regression/wave-dos/generic.do b/wally-pipelined/regression/wave-dos/generic.do
new file mode 100644
index 000000000..1d59f3fbe
--- /dev/null
+++ b/wally-pipelined/regression/wave-dos/generic.do
@@ -0,0 +1,23 @@
+# default-waves.do
+restart -f
+delete wave /*
+view wave
+
+# Diplays All Signals recursively
+add wave /testbench/clk
+add wave /testbench/reset
+add wave -divider
+add wave -hex -r /testbench/*
+
+# appearance
+TreeUpdate [SetDefaultTree]
+WaveRestoreZoom {0 ps} {300 ps}
+configure wave -namecolwidth 350
+configure wave -valuecolwidth 150
+configure wave -justifyvalue left
+configure wave -signalnamewidth 0
+configure wave -snapdistance 10
+configure wave -datasetprefix 0
+configure wave -rowmargin 4
+configure wave -childrowmargin 2
+set DefaultRadix hexadecimal
diff --git a/wally-pipelined/regression/wave-dos/peripheral-waves.do b/wally-pipelined/regression/wave-dos/peripheral-waves.do
index 0203836e3..594d572ad 100644
--- a/wally-pipelined/regression/wave-dos/peripheral-waves.do
+++ b/wally-pipelined/regression/wave-dos/peripheral-waves.do
@@ -35,7 +35,7 @@ add wave -hex /testbench/dut/hart/ieu/dp/SrcAE
add wave -hex /testbench/dut/hart/ieu/dp/SrcBE
add wave -hex /testbench/dut/hart/ieu/dp/ALUResultE
#add wave /testbench/dut/hart/ieu/dp/PCSrcE
-add wave /testbench/dut/hart/mdu/genblk1/div/StartDivideE
+add wave /testbench/dut/hart/mdu/genblk1/div/DivStartE
add wave /testbench/dut/hart/mdu/DivBusyE
add wave -hex /testbench/dut/hart/mdu/genblk1/div/RemM
add wave -hex /testbench/dut/hart/mdu/genblk1/div/QuotM
diff --git a/wally-pipelined/src/cache/cachereplacementpolicy.sv b/wally-pipelined/src/cache/cachereplacementpolicy.sv
index 0e508ca11..8ba0c185a 100644
--- a/wally-pipelined/src/cache/cachereplacementpolicy.sv
+++ b/wally-pipelined/src/cache/cachereplacementpolicy.sv
@@ -25,7 +25,7 @@
`include "wally-config.vh"
module cachereplacementpolicy
- #(NUMWAYS, INDEXLEN, OFFSETLEN, NUMLINES)
+ #(parameter NUMWAYS = 4, INDEXLEN = 9, OFFSETLEN = 5, NUMLINES = 128)
(input logic clk, reset,
input logic [NUMWAYS-1:0] WayHit,
output logic [NUMWAYS-1:0] VictimWay,
@@ -43,17 +43,19 @@ module cachereplacementpolicy
logic [NUMWAYS-2:0] BlockReplacementBits;
logic [NUMWAYS-2:0] NewReplacement;
+ /* verilator lint_off BLKLOOPINIT */
always_ff @(posedge clk, posedge reset) begin
if (reset) begin
for(int index = 0; index < NUMLINES; index++)
- ReplacementBits[index] = '0;
+ ReplacementBits[index] <= '0;
end else begin
- BlockReplacementBits = ReplacementBits[RAdr];
+ BlockReplacementBits <= ReplacementBits[RAdr];
if (LRUWriteEn) begin
- ReplacementBits[MemPAdrM[INDEXLEN+OFFSETLEN-1:OFFSETLEN]] = NewReplacement;
+ ReplacementBits[MemPAdrM[INDEXLEN+OFFSETLEN-1:OFFSETLEN]] <= NewReplacement;
end
end
end
+ /* verilator lint_on BLKLOOPINIT */
genvar index;
diff --git a/wally-pipelined/src/cache/cacheway.sv b/wally-pipelined/src/cache/cacheway.sv
index 5a7c3d9e7..242d596f8 100644
--- a/wally-pipelined/src/cache/cacheway.sv
+++ b/wally-pipelined/src/cache/cacheway.sv
@@ -26,7 +26,7 @@
`include "wally-config.vh"
module cacheway #(parameter NUMLINES=512, parameter BLOCKLEN = 256, TAGLEN = 26,
- parameter OFFSETLEN, parameter INDEXLEN, parameter DIRTY_BITS = 1)
+ parameter OFFSETLEN = 5, parameter INDEXLEN = 9, parameter DIRTY_BITS = 1)
(input logic clk,
input logic reset,
@@ -34,7 +34,7 @@ module cacheway #(parameter NUMLINES=512, parameter BLOCKLEN = 256, TAGLEN = 26,
input logic [$clog2(NUMLINES)-1:0] WAdr,
input logic [`PA_BITS-1:0] PAdr,
input logic WriteEnable,
- input logic VDWriteEnable,
+ input logic VDWriteEnable,
input logic [BLOCKLEN/`XLEN-1:0] WriteWordEnable,
input logic TagWriteEnable,
input logic [BLOCKLEN-1:0] WriteData,
@@ -54,7 +54,8 @@ module cacheway #(parameter NUMLINES=512, parameter BLOCKLEN = 256, TAGLEN = 26,
output logic [TAGLEN-1:0] VictimTagWay
);
- logic [NUMLINES-1:0] ValidBits, DirtyBits;
+ logic [NUMLINES-1:0] ValidBits;
+ logic [NUMLINES-1:0] DirtyBits;
logic [BLOCKLEN-1:0] ReadDataBlockWay;
logic [TAGLEN-1:0] ReadTag;
logic Valid;
@@ -109,18 +110,26 @@ module cacheway #(parameter NUMLINES=512, parameter BLOCKLEN = 256, TAGLEN = 26,
ValidBits <= {NUMLINES{1'b0}};
else if (SetValid & (WriteEnable | VDWriteEnable)) ValidBits[WAdr] <= 1'b1;
else if (ClearValid & (WriteEnable | VDWriteEnable)) ValidBits[WAdr] <= 1'b0;
+ end
+
+ always_ff @(posedge clk) begin
Valid <= ValidBits[RAdr];
end
generate
if(DIRTY_BITS) begin
+
always_ff @(posedge clk, posedge reset) begin
if (reset)
DirtyBits <= {NUMLINES{1'b0}};
else if (SetDirty & (WriteEnable | VDWriteEnable)) DirtyBits[WAdr] <= 1'b1;
else if (ClearDirty & (WriteEnable | VDWriteEnable)) DirtyBits[WAdr] <= 1'b0;
+ end
+
+ always_ff @(posedge clk) begin
Dirty <= DirtyBits[RAdr];
end
+
end else begin
assign Dirty = 1'b0;
end
diff --git a/wally-pipelined/src/cache/dcache.sv b/wally-pipelined/src/cache/dcache.sv
index 733f469f3..bf943169c 100644
--- a/wally-pipelined/src/cache/dcache.sv
+++ b/wally-pipelined/src/cache/dcache.sv
@@ -28,10 +28,7 @@
module dcache
(input logic clk,
input logic reset,
- input logic StallM,
input logic StallWtoDCache,
- input logic FlushM,
- input logic FlushW,
// cpu side
input logic [1:0] MemRWM,
@@ -73,14 +70,9 @@ module dcache
output logic [2:0] DCtoAHBSizeM
);
-/* localparam integer BLOCKLEN = 256;
- localparam integer NUMLINES = 64;
- localparam integer NUMWAYS = 4;
- localparam integer NUMREPL_BITS = 3;*/
localparam integer BLOCKLEN = `DCACHE_BLOCKLENINBITS;
localparam integer NUMLINES = `DCACHE_WAYSIZEINBYTES*8/BLOCKLEN;
localparam integer NUMWAYS = `DCACHE_NUMWAYS;
- localparam integer NUMREPL_BITS = `DCACHE_REPLBITS; // *** not used
localparam integer BLOCKBYTELEN = BLOCKLEN/8;
localparam integer OFFSETLEN = $clog2(BLOCKBYTELEN);
@@ -113,13 +105,12 @@ module dcache
logic SRAMWordWriteEnableM;
logic SRAMBlockWriteEnableM;
logic [NUMWAYS-1:0] SRAMBlockWayWriteEnableM;
- logic SRAMWriteEnable;
+ //logic SRAMWriteEnable;
logic [NUMWAYS-1:0] SRAMWayWriteEnable;
logic [NUMWAYS-1:0] VictimWay;
logic [NUMWAYS-1:0] VictimDirtyWay;
- logic [BLOCKLEN-1:0] VictimReadDataBlockM;
logic VictimDirty;
logic SelUncached;
logic [2**LOGWPL-1:0] MemPAdrDecodedW;
@@ -144,9 +135,7 @@ module dcache
logic SelFlush;
logic VDWriteEnable;
- logic AnyCPUReqM;
logic FetchCountFlag;
- logic PreCntEn;
logic CntEn;
logic CntReset;
logic SelEvict;
@@ -176,7 +165,7 @@ module dcache
.reset,
.RAdr,
.WAdr,
- .PAdr(MemPAdrM[`PA_BITS-1:0]),
+ .PAdr(MemPAdrM),
.WriteEnable(SRAMWayWriteEnable),
.VDWriteEnable,
.WriteWordEnable(SRAMWordEnable),
@@ -349,7 +338,7 @@ module dcache
else assign DCtoAHBSizeM = CacheableM | SelFlush ? 3'b011 : Funct3M;
endgenerate;
- assign SRAMWriteEnable = SRAMBlockWriteEnableM | SRAMWordWriteEnableM;
+ //assign SRAMWriteEnable = SRAMBlockWriteEnableM | SRAMWordWriteEnableM;
// controller
diff --git a/wally-pipelined/src/cache/dcachefsm.sv b/wally-pipelined/src/cache/dcachefsm.sv
index 12e1c9ac3..4fba55bd6 100644
--- a/wally-pipelined/src/cache/dcachefsm.sv
+++ b/wally-pipelined/src/cache/dcachefsm.sv
@@ -146,18 +146,7 @@ module dcachefsm
always_ff @(posedge clk, posedge reset)
if (reset) CurrState <= #1 STATE_READY;
- else CurrState <= #1 NextState;
-
-/* -----\/----- EXCLUDED -----\/-----
- flopenl #(.TYPE(statetype))
- StateReg(.clk,
- .load(reset),
- .en(1'b1),
- .d(NextState),
- .q(CurrState),
- .val(STATE_READY));
- -----/\----- EXCLUDED -----/\----- */
-
+ else CurrState <= #1 NextState;
// next state logic and some state ouputs.
always_comb begin
diff --git a/wally-pipelined/src/cache/icache.sv b/wally-pipelined/src/cache/icache.sv
index 1e55e0daf..d433f6ed3 100644
--- a/wally-pipelined/src/cache/icache.sv
+++ b/wally-pipelined/src/cache/icache.sv
@@ -29,8 +29,7 @@ module icache
(
// Basic pipeline stuff
input logic clk, reset,
- input logic StallF, StallD,
- input logic FlushD,
+ input logic StallF,
input logic [`PA_BITS-1:0] PCNextF,
input logic [`PA_BITS-1:0] PCPF,
// Data read in from the ebu unit
@@ -66,22 +65,17 @@ module icache
localparam LOGWPL = $clog2(WORDSPERLINE);
localparam FetchCountThreshold = WORDSPERLINE - 1;
- localparam BlockByteLength = BLOCKLEN / 8;
-
- localparam OFFSETWIDTH = $clog2(BlockByteLength);
localparam integer PA_WIDTH = `PA_BITS - 2;
localparam integer NUMWAYS = `ICACHE_NUMWAYS;
// Input signals to cache memory
- logic FlushMem;
logic ICacheMemWriteEnable;
logic [BLOCKLEN-1:0] ICacheMemWriteData;
- logic [`PA_BITS-1:0] PCTagF, PCNextIndexF;
+ logic [`PA_BITS-1:0] PCTagF;
// Output signals from cache memory
logic [31:0] ICacheMemReadData;
- logic ICacheMemReadValid;
logic ICacheReadEn;
logic [BLOCKLEN-1:0] ReadLineF;
@@ -93,7 +87,7 @@ module icache
logic FetchCountFlag;
logic CntEn;
- logic [1:0] SelAdr_q;
+ logic [1:1] SelAdr_q;
logic [LOGWPL-1:0] FetchCount, NextFetchCount;
@@ -102,7 +96,6 @@ module icache
logic CntReset;
logic [1:0] SelAdr;
- logic SavePC;
logic [INDEXLEN-1:0] RAdr;
logic [NUMWAYS-1:0] VictimWay;
logic LRUWriteEn;
@@ -255,11 +248,11 @@ module icache
// this mux needs to be delayed 1 cycle as it occurs 1 pipeline stage later.
// *** read enable may not be necessary.
- flopenr #(2) SelAdrReg(.clk(clk),
+ flopenr #(1) SelAdrReg(.clk(clk),
.reset(reset),
.en(ICacheReadEn),
- .d(SelAdr),
- .q(SelAdr_q));
+ .d(SelAdr[1]),
+ .q(SelAdr_q[1]));
assign PCTagF = SelAdr_q[1] ? PCPSpillF : PCPF;
@@ -284,30 +277,25 @@ module icache
assign SRAMWayWriteEnable = ICacheMemWriteEnable ? VictimWay : '0;
- icachefsm #(.BLOCKLEN(BLOCKLEN))
- controller(.clk,
- .reset,
- .StallF,
- .ICacheReadEn,
- .ICacheMemWriteEnable,
- .ICacheStallF,
- .ITLBMissF,
- .ITLBWriteF,
- .WalkerInstrPageFaultF,
- .InstrAckF,
- .InstrReadF,
- .hit,
- .FetchCountFlag,
- .spill,
- .spillSave,
- .CntEn,
- .CntReset,
- .SelAdr,
- .SavePC,
- .LRUWriteEn
- );
+ icachefsm controller(.clk,
+ .reset,
+ .StallF,
+ .ICacheReadEn,
+ .ICacheMemWriteEnable,
+ .ICacheStallF,
+ .ITLBMissF,
+ .ITLBWriteF,
+ .WalkerInstrPageFaultF,
+ .InstrAckF,
+ .InstrReadF,
+ .hit,
+ .FetchCountFlag,
+ .spill,
+ .spillSave,
+ .CntEn,
+ .CntReset,
+ .SelAdr,
+ .LRUWriteEn);
- // For now, assume no writes to executable memory
- assign FlushMem = 1'b0;
endmodule
diff --git a/wally-pipelined/src/cache/icachefsm.sv b/wally-pipelined/src/cache/icachefsm.sv
index 49cbcb434..82590747d 100644
--- a/wally-pipelined/src/cache/icachefsm.sv
+++ b/wally-pipelined/src/cache/icachefsm.sv
@@ -25,9 +25,8 @@
`include "wally-config.vh"
-module icachefsm #(parameter BLOCKLEN = 256)
- (
- // Inputs from pipeline
+module icachefsm
+ (// Inputs from pipeline
input logic clk, reset,
input logic StallF,
@@ -61,7 +60,6 @@ module icachefsm #(parameter BLOCKLEN = 256)
output logic CntEn,
output logic CntReset,
output logic [1:0] SelAdr,
- output logic SavePC,
output logic LRUWriteEn
);
@@ -116,7 +114,6 @@ module icachefsm #(parameter BLOCKLEN = 256)
statetype CurrState, NextState;
logic PreCntEn;
- logic UnalignedSelect;
// the FSM is always runing, do not stall.
always_ff @(posedge clk, posedge reset)
@@ -125,7 +122,6 @@ module icachefsm #(parameter BLOCKLEN = 256)
// Next state logic
always_comb begin
- UnalignedSelect = 1'b0;
CntReset = 1'b0;
PreCntEn = 1'b0;
//InstrReadF = 1'b0;
@@ -133,7 +129,6 @@ module icachefsm #(parameter BLOCKLEN = 256)
spillSave = 1'b0;
SelAdr = 2'b00;
ICacheReadEn = 1'b0;
- SavePC = 1'b0;
ICacheStallF = 1'b1;
LRUWriteEn = 1'b0;
case (CurrState)
@@ -143,7 +138,6 @@ module icachefsm #(parameter BLOCKLEN = 256)
if (ITLBMissF) begin
NextState = STATE_TLB_MISS;
end else if (hit & ~spill) begin
- SavePC = 1'b1;
ICacheStallF = 1'b0;
LRUWriteEn = 1'b1;
if(StallF) begin
@@ -176,7 +170,6 @@ module icachefsm #(parameter BLOCKLEN = 256)
// branch 1, hit spill and 2, miss spill hit
STATE_HIT_SPILL: begin
SelAdr = 2'b10;
- UnalignedSelect = 1'b1;
ICacheReadEn = 1'b1;
if (hit) begin
NextState = STATE_HIT_SPILL_FINAL;
@@ -202,15 +195,12 @@ module icachefsm #(parameter BLOCKLEN = 256)
end
STATE_HIT_SPILL_MERGE: begin
SelAdr = 2'b10;
- UnalignedSelect = 1'b1;
ICacheReadEn = 1'b1;
NextState = STATE_HIT_SPILL_FINAL;
end
STATE_HIT_SPILL_FINAL: begin
ICacheReadEn = 1'b1;
SelAdr = 2'b00;
- UnalignedSelect = 1'b1;
- SavePC = 1'b1;
ICacheStallF = 1'b0;
LRUWriteEn = 1'b1;
@@ -280,7 +270,6 @@ module icachefsm #(parameter BLOCKLEN = 256)
end
STATE_MISS_SPILL_2: begin
SelAdr = 2'b10;
- UnalignedSelect = 1'b1;
spillSave = 1'b1; /// *** Could pipeline these to make it clearer in the fsm.
ICacheReadEn = 1'b1;
NextState = STATE_MISS_SPILL_2_START;
@@ -292,8 +281,6 @@ module icachefsm #(parameter BLOCKLEN = 256)
end else begin
ICacheReadEn = 1'b1;
SelAdr = 2'b00;
- UnalignedSelect = 1'b1;
- SavePC = 1'b1;
ICacheStallF = 1'b0;
LRUWriteEn = 1'b1;
if(StallF) begin
@@ -321,15 +308,12 @@ module icachefsm #(parameter BLOCKLEN = 256)
end
STATE_MISS_SPILL_MERGE: begin
SelAdr = 2'b10;
- UnalignedSelect = 1'b1;
ICacheReadEn = 1'b1;
NextState = STATE_MISS_SPILL_FINAL;
end
STATE_MISS_SPILL_FINAL: begin
ICacheReadEn = 1'b1;
SelAdr = 2'b00;
- UnalignedSelect = 1'b1;
- SavePC = 1'b1;
ICacheStallF = 1'b0;
LRUWriteEn = 1'b1;
if(StallF) begin
diff --git a/wally-pipelined/src/cache/sram1rw.sv b/wally-pipelined/src/cache/sram1rw.sv
index 2b2c2d60b..d2b4b8470 100644
--- a/wally-pipelined/src/cache/sram1rw.sv
+++ b/wally-pipelined/src/cache/sram1rw.sv
@@ -1,4 +1,7 @@
// Depth is number of bits in one "word" of the memory, width is number of such words
+
+/* verilator lint_off ASSIGNDLY */
+
module sram1rw #(parameter DEPTH=128, WIDTH=256) (
input logic clk,
// port 1 is read only
@@ -19,3 +22,6 @@ module sram1rw #(parameter DEPTH=128, WIDTH=256) (
end
end
endmodule
+
+/* verilator lint_on ASSIGNDLY */
+
diff --git a/wally-pipelined/src/ebu/ahblite.sv b/wally-pipelined/src/ebu/ahblite.sv
index 5bad2e7b2..13a095c4d 100644
--- a/wally-pipelined/src/ebu/ahblite.sv
+++ b/wally-pipelined/src/ebu/ahblite.sv
@@ -36,11 +36,9 @@ endpackage
module ahblite (
input logic clk, reset,
- input logic StallW,
// Load control
input logic UnsignedLoadM,
input logic [1:0] AtomicMaskedM,
- input logic [6:0] Funct7M,
// Signals from Instruction Cache
input logic [`PA_BITS-1:0] InstrPAdrF, // *** rename these to match block diagram
input logic InstrReadF,
@@ -75,14 +73,11 @@ module ahblite (
logic GrantData;
logic [31:0] AccessAddress;
logic [2:0] ISize;
- logic [`AHBW-1:0] HRDATAMasked, ReadDataM, HRDATANext, CapturedHRDATAMasked, WriteData;
- logic IReady, DReady;
- logic CaptureDataM,CapturedDataAvailable;
assign HCLK = clk;
assign HRESETn = ~reset;
- // *** initially support AHBW = XLEN
+ // initially support AHBW = XLEN
// track bus state
// Data accesses have priority over instructions. However, if a data access comes
diff --git a/wally-pipelined/src/fpu/adder.sv b/wally-pipelined/src/fpu/adderparts.sv
similarity index 100%
rename from wally-pipelined/src/fpu/adder.sv
rename to wally-pipelined/src/fpu/adderparts.sv
diff --git a/wally-pipelined/src/fpu/cla52.sv b/wally-pipelined/src/fpu/cla52.sv
index 0d8967db0..5f818fbd8 100644
--- a/wally-pipelined/src/fpu/cla52.sv
+++ b/wally-pipelined/src/fpu/cla52.sv
@@ -215,6 +215,7 @@ module cla_sub52 (S, X, Y);
wire LOGIC0;
wire CIN;
wire CO_52;
+ wire CO_64;
assign Bbar = ~B;
assign LOGIC0 = 0;
diff --git a/wally-pipelined/src/fpu/convert_inputs.sv b/wally-pipelined/src/fpu/convert_inputs.sv
index bf56cb006..9a0584baa 100755
--- a/wally-pipelined/src/fpu/convert_inputs.sv
+++ b/wally-pipelined/src/fpu/convert_inputs.sv
@@ -1,9 +1,26 @@
-// This module takes as inputs two operands (op1 and op2)
-// the operation type (op_type) and the result precision (P).
-// Based on the operation and precision , it conditionally
-// converts single precision values to double precision values
-// and modifies the sign of op1. The converted operands are Float1
-// and Float2.
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Floating point divider/square root top unit (Goldschmidt)
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
module convert_inputs(
input [63:0] op1, // 1st input operand (A)
diff --git a/wally-pipelined/src/fpu/cvtfp.sv b/wally-pipelined/src/fpu/cvtfp.sv
index a8fd2bc4c..fb9f5cf1f 100644
--- a/wally-pipelined/src/fpu/cvtfp.sv
+++ b/wally-pipelined/src/fpu/cvtfp.sv
@@ -1,24 +1,42 @@
// `include "wally-config.vh"
module cvtfp (
- input logic [10:0] XExpE,
- input logic [52:0] XManE,
- input logic XSgnE,
- input logic XZeroE,
- input logic XDenormE,
- input logic XInfE,
- input logic XNaNE,
- input logic XSNaNE,
- input logic [2:0] FrmE,
- input logic FmtE,
- output logic [63:0] CvtFpResE,
- output logic [4:0] CvtFpFlgE);
+ input logic [10:0] XExpE, // input's exponent
+ input logic [52:0] XManE, // input's mantissa
+ input logic XSgnE, // input's sign
+ input logic XZeroE, // is the input zero
+ input logic XDenormE, // is the input denormalized
+ input logic XInfE, // is the input infinity
+ input logic XNaNE, // is the input a NaN
+ input logic XSNaNE, // is the input a signaling NaN
+ input logic [2:0] FrmE, // rounding mode 000 = rount to nearest, ties to even 001 = round twords zero 010 = round down 011 = round up 100 = round to nearest, ties to max magnitude
+ input logic FmtE, // the input's precision (1 = double 0 = single)
+ output logic [63:0] CvtFpResE, // the fp to fp conversion's result
+ output logic [4:0] CvtFpFlgE); // the fp to fp conversion's flags
- logic [7:0] DExp;
- logic [51:0] Frac;
- logic Denorm;
+ logic [12:0] DSExp; // double to single precision exponent
+ logic Denorm; // is the double to single precision result denormalized
+ logic Shift; // do you shift the double precision exponent (if single precision result is denormalized)
+ logic [51:0] SDFrac; // single to double precision fraction
+ logic [25:0] DSFrac; // double to single precision fraction
+ logic [77:0] DSFracShifted; // single precision fraction shifted for double precision
+ logic Sticky, UfSticky, Guard, Round, LSBFrac, UfGuard, UfRound, UfLSBFrac; // rounding bits
+ logic CalcPlus1, UfCalcPlus1, Plus1, UfPlus1; // do you add one to the result
+ logic [12:0] DSExpFull; // full double to single exponent
+ logic [22:0] DSResFrac; // final double to single fraction
+ logic [7:0] DSResExp; // final double to single exponent
+ logic [10:0] SDExp; // final single to double precision exponent
+ logic Overflow, Underflow, Inexact; // flags
+ logic [31:0] DSRes; // double to single precision result
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // LZC
+ ///////////////////////////////////////////////////////////////////////////////
+
+
+ // LZC - find the first 1 in the input's mantissa
logic [8:0] i,NormCnt;
always_comb begin
i = 0;
@@ -27,42 +45,62 @@ module cvtfp (
end
+ ///////////////////////////////////////////////////////////////////////////////
+ // Expoents
+ ///////////////////////////////////////////////////////////////////////////////
+
+ // convert the single precion exponent to single precision.
+ // - subtract the double precision exponent (1023) and add the
+ // single precsision exponent (127)
+ // - if the input is zero then kill the exponent
+
+ assign DSExp = ({2'b0,XExpE}-13'd1023+13'd127)&{13{~XZeroE}};
+
+ // is the converted double to single precision exponent in the denormalized range
+ assign Denorm = $signed(DSExp) <= 0 & $signed(DSExp) > $signed(-(13'd23));
+
+
+ // caluculate the final single to double precsion exponent
+ // - subtract the single precision bias (127) and add the double
+ // precision bias (127)
+ // - if the result is zero or denormalized, kill the exponent
+ assign SDExp = XExpE-({2'b0,NormCnt&{9{~XZeroE}}})+({11{XDenormE}}&1024-127); //*** seems ineffecient
+ ///////////////////////////////////////////////////////////////////////////////
+ // Fraction
+ ///////////////////////////////////////////////////////////////////////////////
+
+
+ // normalize the single precision fraction for double precsion
+ // - needed for denormal single precsion values
+ assign SDFrac = XManE[51:0] << NormCnt;
+
+ // check if the double precision mantissa needs to be shifted
+ // - the mantissa needs to be shifted if the single precision result is denormal
+ assign Shift = Denorm | (($signed(DSExp) > $signed(-(13'd25))) & DSExp[12]);
+ // shift the mantissa
+ assign DSFracShifted = {XManE, 25'b0} >> ((-DSExp+1)&{13{Shift}}); //***might be some optimization here
+ assign DSFrac = DSFracShifted[76:51];
- logic [12:0] DExpCalc;
- // logic Overflow, Underflow;
- assign DExpCalc = (XExpE-1023+127)&{13{~XZeroE}};
- assign Denorm = $signed(DExpCalc) <= 0 & $signed(DExpCalc) > $signed(-23);
+ ///////////////////////////////////////////////////////////////////////////////
+ // Rounder
+ ///////////////////////////////////////////////////////////////////////////////
- logic [12:0] ShiftCnt;
- logic [51:0] SFrac;
- logic [25:0] DFrac;
- logic [77:0] DFracTmp;
- //assign ShiftCnt = FmtE ? -DExpCalc&{13{Denorm}} : NormCnt;
- assign SFrac = XManE[51:0] << NormCnt;
-logic Shift;
-assign Shift = {13{Denorm|(($signed(DExpCalc) > $signed(-25)) & DExpCalc[12])}};
- assign DFracTmp = {XManE, 25'b0} >> ((-DExpCalc+1)&{13{Shift}});
-assign DFrac = DFracTmp[76:51];
-
- logic Sticky, UfSticky, Guard, Round, LSBFrac, UfGuard, UfRound, UfLSBFrac;
- logic CalcPlus1, UfCalcPlus1;
- logic Plus1, UfPlus1;
// used to determine underflow flag
- assign UfSticky = |DFracTmp[50:0];
- assign UfGuard = DFrac[1];
- assign UfRound = DFrac[0];
- assign UfLSBFrac = DFrac[2];
+ assign UfSticky = |DSFracShifted[50:0];
+ assign UfGuard = DSFrac[1];
+ assign UfRound = DSFrac[0];
+ assign UfLSBFrac = DSFrac[2];
assign Sticky = UfSticky | UfRound;
- assign Guard = DFrac[2];
- assign Round = DFrac[1];
- assign LSBFrac = DFrac[3];
+ assign Guard = DSFrac[2];
+ assign Round = DSFrac[1];
+ assign LSBFrac = DSFrac[3];
always_comb begin
@@ -87,32 +125,48 @@ assign DFrac = DFracTmp[76:51];
end
- // If an answer is exact don't round
+ // if an answer is exact don't round
assign Plus1 = CalcPlus1 & (Sticky | UfGuard | Guard | Round);
assign UfPlus1 = UfCalcPlus1 & (Sticky | UfGuard);
- logic [12:0] DExpFull;
-logic [22:0] DResFrac;
-logic [7:0] DResExp;
- assign {DExpFull, DResFrac} = {DExpCalc&{13{~Denorm}}, DFrac[25:3]} + Plus1;
- assign DResExp = DExpFull[7:0];
- logic [10:0] SExp;
- assign SExp = XExpE-(NormCnt&{8{~XZeroE}})+({11{XDenormE}}&1024-127);
- logic Overflow, Underflow, Inexact;
- assign Overflow = $signed(DExpFull) >= $signed({1'b0, {8{1'b1}}}) & ~(XNaNE|XInfE);
- assign Underflow = (($signed(DExpFull) <= 0) & ((Sticky|Guard|Round) | (XManE[52]&~|DFrac) | (|DFrac&~Denorm)) | ((DExpFull == 1) & Denorm & ~(UfPlus1&UfLSBFrac))) & ~(XNaNE|XInfE);
+
+ // round the double to single precision result
+ assign {DSExpFull, DSResFrac} = {DSExp&{13{~Denorm}}, DSFrac[25:3]} + {35'b0,Plus1};
+ assign DSResExp = DSExpFull[7:0];
+
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Flags
+ ///////////////////////////////////////////////////////////////////////////////
+
+ // calculate the flags
+ // - overflow, underflow and inexact can only be set by the double to single precision opperation
+ // - don't set underflow or overflow if the input is NaN or Infinity
+ // - don't set the inexact flag if the input is NaN
+ assign Overflow = $signed(DSExpFull) >= $signed({5'b0, {8{1'b1}}}) & ~(XNaNE|XInfE);
+ assign Underflow = (($signed(DSExpFull) <= 0) & ((Sticky|Guard|Round) | (XManE[52]&~|DSFrac) | (|DSFrac&~Denorm)) | ((DSExpFull == 1) & Denorm & ~(UfPlus1&UfLSBFrac))) & ~(XNaNE|XInfE);
assign Inexact = (Sticky|Guard|Round|Underflow|Overflow) &~(XNaNE);
-
-logic [31:0] DRes;
- assign DRes = XNaNE ? {XSgnE, XExpE, 1'b1, XManE[50:29]} :
- Underflow & ~Denorm ? {XSgnE, 30'b0, CalcPlus1&(|FrmE[1:0]|Shift)} :
- Overflow | XInfE ? ((FrmE[1:0]==2'b01) | (FrmE[1:0]==2'b10&~XSgnE) | (FrmE[1:0]==2'b11&XSgnE)) & ~XInfE ? {XSgnE, 8'hfe, {23{1'b1}}} :
- {XSgnE, 8'hff, 23'b0} :
- {XSgnE, DResExp, DResFrac};
- assign CvtFpResE = FmtE ? {{32{1'b1}},DRes} : {XSgnE, SExp, SFrac[51]|XNaNE, SFrac[50:0]};
+
+ // pack the flags together and choose the result based on the opperation
assign CvtFpFlgE = FmtE ? {XSNaNE, 1'b0, Overflow, Underflow, Inexact} : {XSNaNE, 4'b0};
+
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Result Selection
+ ///////////////////////////////////////////////////////////////////////////////
+
+ // select the double to single precision result
+ assign DSRes = XNaNE ? {XSgnE, {8{1'b1}}, 1'b1, XManE[50:29]} :
+ Underflow & ~Denorm ? {XSgnE, 30'b0, CalcPlus1&(|FrmE[1:0]|Shift)} :
+ Overflow | XInfE ? ((FrmE[1:0]==2'b01) | (FrmE[1:0]==2'b10&~XSgnE) | (FrmE[1:0]==2'b11&XSgnE)) & ~XInfE ? {XSgnE, 8'hfe, {23{1'b1}}} :
+ {XSgnE, 8'hff, 23'b0} :
+ {XSgnE, DSResExp, DSResFrac};
+
+ // select the final result based on the opperation
+ assign CvtFpResE = FmtE ? {{32{1'b1}},DSRes} : {XSgnE, SDExp, SDFrac[51]|XNaNE, SDFrac[50:0]};
+
endmodule // fpadd
diff --git a/wally-pipelined/src/fpu/divconv.sv b/wally-pipelined/src/fpu/divconv.sv
index 271cd69a1..2e4f542c2 100755
--- a/wally-pipelined/src/fpu/divconv.sv
+++ b/wally-pipelined/src/fpu/divconv.sv
@@ -1,102 +1,121 @@
-module divconv (
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 9/28/2021
+//
+// Purpose: Main convergence routine for floating point divider/square root unit (Goldschmidt)
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
- input logic [52:0] d, n,
+module divconv (
+ input logic [52:0] d, n,
input logic [2:0] sel_muxa, sel_muxb,
- input logic sel_muxr,
- input logic load_rega, load_regb, load_regc, load_regd,
- input logic load_regr, load_regs,
- input logic P,
- input logic op_type,
- input logic exp_odd,
- input logic reset,
- input logic clk,
-
- output logic [63:0] q1, qp1, qm1,
- output logic [63:0] q0, qp0, qm0,
- output logic [63:0] rega_out, regb_out, regc_out, regd_out,
- output logic [127:0] regr_out
+ input logic sel_muxr,
+ input logic load_rega, load_regb, load_regc, load_regd,
+ input logic load_regr, load_regs,
+ input logic P,
+ input logic op_type,
+ input logic exp_odd,
+ input logic reset,
+ input logic clk,
+
+ output logic [59:0] q1, qp1, qm1,
+ output logic [59:0] q0, qp0, qm0,
+ output logic [59:0] rega_out, regb_out, regc_out, regd_out,
+ output logic [119:0] regr_out
);
- logic [63:0] muxa_out, muxb_out;
+ logic [59:0] muxa_out, muxb_out;
logic [10:0] ia_div, ia_sqrt;
- logic [63:0] ia_out;
- logic [127:0] mul_out;
- logic [63:0] q_out1, qm_out1, qp_out1;
- logic [63:0] q_out0, qm_out0, qp_out0;
- logic [63:0] mcand, mplier, mcand_q;
- logic [63:0] twocmp_out;
- logic [64:0] three;
- logic [127:0] Carry, Carry2;
- logic [127:0] Sum, Sum2;
- logic [127:0] constant, constant2;
- logic [63:0] q_const, qp_const, qm_const;
- logic [63:0] d2, n2;
- logic [11:0] d3;
- logic muxr_out;
- logic cout1, cout2, cout3, cout4, cout5, cout6, cout7;
+ logic [59:0] ia_out;
+ logic [119:0] mul_out;
+ logic [59:0] q_out1, qm_out1, qp_out1;
+ logic [59:0] q_out0, qm_out0, qp_out0;
+ logic [59:0] mcand, mplier, mcand_q;
+ logic [59:0] twocmp_out;
+ logic [60:0] three;
+ logic [119:0] constant, constant2;
+ logic [59:0] q_const, qp_const, qm_const;
+ logic [59:0] d2, n2;
+ logic muxr_out;
+ logic cout1, cout2, cout3, cout4, cout5, cout6, cout7;
// Check if exponent is odd for sqrt
// If exp_odd=1 and sqrt, then M/2 and use ia_addr=0 as IA
- assign d2 = (exp_odd&op_type) ? {1'b0,d,10'h0} : {d,11'h0};
- assign n2 = op_type ? d2 : {n,11'h0};
+ assign d2 = (exp_odd&op_type) ? {1'b0, d, 6'h0} : {d, 7'h0};
+ assign n2 = op_type ? d2 : {n, 7'h0};
// IA div/sqrt
sbtm_div ia1 (d[52:41], ia_div);
- sbtm_sqrt ia2 (d2[63:52], ia_sqrt);
- assign ia_out = op_type ? {ia_sqrt, {53{1'b0}}} : {ia_div, {53{1'b0}}};
+ sbtm_sqrt ia2 (d2[59:48], ia_sqrt);
+ assign ia_out = op_type ? {ia_sqrt, {49{1'b0}}} : {ia_div, {49{1'b0}}};
// Choose IA or iteration
- mux6 #(64) mx1 (d2, ia_out, rega_out, regc_out, regd_out, regb_out, sel_muxb, muxb_out);
- mux5 #(64) mx2 (regc_out, n2, ia_out, regb_out, regd_out, sel_muxa, muxa_out);
+ mux6 #(60) mx1 (d2, ia_out, rega_out, regc_out, regd_out, regb_out, sel_muxb, muxb_out);
+ mux5 #(60) mx2 (regc_out, n2, ia_out, regb_out, regd_out, sel_muxa, muxa_out);
// Deal with remainder if [0.5, 1) instead of [1, 2)
- mux2 #(128) mx3a ({~n, {75{1'b1}}}, {{1'b1}, ~n, {74{1'b1}}}, q1[63], constant2);
+ mux2 #(120) mx3a ({~n, {67{1'b1}}}, {{1'b1}, ~n, {66{1'b1}}}, q1[59], constant2);
// Select Mcand, Remainder/Q''
- mux2 #(128) mx3 (128'h0, constant2, sel_muxr, constant);
+ mux2 #(120) mx3 (120'h0, constant2, sel_muxr, constant);
// Select mcand - remainder should always choose q1 [1,2) because
// adjustment of N in the from XX.FFFFFFF
- mux2 #(64) mx4 (q0, q1, q1[63], mcand_q);
- mux2 #(64) mx5 (muxb_out, mcand_q, sel_muxr&op_type, mplier);
- mux2 #(64) mx6 (muxa_out, mcand_q, sel_muxr, mcand);
+ mux2 #(60) mx4 (q0, q1, q1[59], mcand_q);
+ mux2 #(60) mx5 (muxb_out, mcand_q, sel_muxr&op_type, mplier);
+ mux2 #(60) mx6 (muxa_out, mcand_q, sel_muxr, mcand);
// Q*D - N (reversed but changed in rounder.v to account for sign reversal)
// Add ulp for subtraction in remainder
mux2 #(1) mx7 (1'b0, 1'b1, sel_muxr, muxr_out);
// Constant for Q''
- mux2 #(64) mx8 ({64'h0000_0000_0000_0200}, {64'h0000_0040_0000_0000}, P, q_const);
- mux2 #(64) mx9 ({64'h0000_0000_0000_0A00}, {64'h0000_0140_0000_0000}, P, qp_const);
- mux2 #(64) mxA ({64'hFFFF_FFFF_FFFF_F9FF}, {64'hFFFF_FF3F_FFFF_FFFF}, P, qm_const);
+ mux2 #(60) mx8 ({60'h0000_0000_0000_020}, {60'h0000_0040_0000_000}, P, q_const);
+ mux2 #(60) mx9 ({60'h0000_0000_0000_0A0}, {60'h0000_0140_0000_000}, P, qp_const);
+ mux2 #(60) mxA ({60'hFFFF_FFFF_FFFF_F9F}, {60'hFFFF_FF3F_FFFF_FFF}, P, qm_const);
// CPA (from CSA)/Remainder addition/subtraction
- assign {cout1, mul_out} = (mcand*mplier) + constant + muxr_out;
+ assign {cout1, mul_out} = (mcand*mplier) + constant + {119'b0, muxr_out};
// Assuming [1,2) - q1
assign {cout2, q_out1} = regb_out + q_const;
assign {cout3, qp_out1} = regb_out + qp_const;
assign {cout4, qm_out1} = regb_out + qm_const + 1'b1;
// Assuming [0.5,1) - q0
- assign {cout5, q_out0} = {regb_out[62:0], 1'b0} + q_const;
- assign {cout6, qp_out0} = {regb_out[62:0], 1'b0} + qp_const;
- assign {cout7, qm_out0} = {regb_out[62:0], 1'b0} + qm_const + 1'b1;
+ assign {cout5, q_out0} = {regb_out[58:0], 1'b0} + q_const;
+ assign {cout6, qp_out0} = {regb_out[58:0], 1'b0} + qp_const;
+ assign {cout7, qm_out0} = {regb_out[58:0], 1'b0} + qm_const + 1'b1;
// One's complement instead of two's complement (for hw efficiency)
- assign three = {~mul_out[126], mul_out[126], ~mul_out[125:63]};
- mux2 #(64) mxTC (~mul_out[126:63], three[64:1], op_type, twocmp_out);
+ assign three = {~mul_out[118], mul_out[118], ~mul_out[117:59]};
+ mux2 #(60) mxTC (~mul_out[118:59], three[60:1], op_type, twocmp_out);
// regs
- flopenr #(64) regc (clk, reset, load_regc, twocmp_out, regc_out);
- flopenr #(64) regb (clk, reset, load_regb, mul_out[126:63], regb_out);
- flopenr #(64) rega (clk, reset, load_rega, mul_out[126:63], rega_out);
- flopenr #(64) regd (clk, reset, load_regd, mul_out[126:63], regd_out);
- flopenr #(128) regr (clk, reset, load_regr, mul_out, regr_out);
+ flopenr #(60) regc (clk, reset, load_regc, twocmp_out, regc_out);
+ flopenr #(60) regb (clk, reset, load_regb, mul_out[118:59], regb_out);
+ flopenr #(60) rega (clk, reset, load_rega, mul_out[118:59], rega_out);
+ flopenr #(60) regd (clk, reset, load_regd, mul_out[118:59], regd_out);
+ flopenr #(120) regr (clk, reset, load_regr, mul_out, regr_out);
// Assuming [1,2)
- flopenr #(64) rege (clk, reset, load_regs, {q_out1[63:39], (q_out1[38:10] & {29{~P}}), 10'h0}, q1);
- flopenr #(64) regf (clk, reset, load_regs, {qm_out1[63:39], (qm_out1[38:10] & {29{~P}}), 10'h0}, qm1);
- flopenr #(64) regg (clk, reset, load_regs, {qp_out1[63:39], (qp_out1[38:10] & {29{~P}}), 10'h0}, qp1);
+ flopenr #(60) rege (clk, reset, load_regs, {q_out1[59:35], (q_out1[34:6] & {29{~P}}), 6'h0}, q1);
+ flopenr #(60) regf (clk, reset, load_regs, {qm_out1[59:35], (qm_out1[34:6] & {29{~P}}), 6'h0}, qm1);
+ flopenr #(60) regg (clk, reset, load_regs, {qp_out1[59:35], (qp_out1[34:6] & {29{~P}}), 6'h0}, qp1);
// Assuming [0,1)
- flopenr #(64) regh (clk, reset, load_regs, {q_out0[63:39], (q_out0[38:10] & {29{~P}}), 10'h0}, q0);
- flopenr #(64) regj (clk, reset, load_regs, {qm_out0[63:39], (qm_out0[38:10] & {29{~P}}), 10'h0}, qm0);
- flopenr #(64) regk (clk, reset, load_regs, {qp_out0[63:39], (qp_out0[38:10] & {29{~P}}), 10'h0}, qp0);
+ flopenr #(60) regh (clk, reset, load_regs, {q_out0[59:35], (q_out0[34:6] & {29{~P}}), 6'h0}, q0);
+ flopenr #(60) regj (clk, reset, load_regs, {qm_out0[59:35], (qm_out0[34:6] & {29{~P}}), 6'h0}, qm0);
+ flopenr #(60) regk (clk, reset, load_regs, {qp_out0[59:35], (qp_out0[34:6] & {29{~P}}), 6'h0}, qp0);
endmodule // divconv
-
diff --git a/wally-pipelined/src/fpu/divconv_pipe.sv b/wally-pipelined/src/fpu/divconv_pipe.sv
new file mode 100755
index 000000000..240000c28
--- /dev/null
+++ b/wally-pipelined/src/fpu/divconv_pipe.sv
@@ -0,0 +1,176 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Convergence unit for pipelined floating point divider/square root top unit (Goldschmidt)
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+module divconv_pipe (q1, qm1, qp1, q0, qm0, qp0, rega_out, regb_out, regc_out, regd_out,
+ regr_out, d, n, sel_muxa, sel_muxb, sel_muxr, reset, clk,
+ load_rega, load_regb, load_regc, load_regd, load_regr, load_regs, load_regp,
+ P, op_type, exp_odd);
+
+ input logic [52:0] d, n;
+ input logic [2:0] sel_muxa, sel_muxb;
+ input logic sel_muxr;
+ input logic load_rega, load_regb, load_regc, load_regd;
+ input logic load_regr, load_regs;
+ input logic load_regp;
+ input logic P;
+ input logic op_type;
+ input logic exp_odd;
+ input logic reset;
+ input logic clk;
+
+ output logic [59:0] q1, qp1, qm1;
+ output logic [59:0] q0, qp0, qm0;
+ output logic [59:0] rega_out, regb_out, regc_out, regd_out;
+ output logic [119:0] regr_out;
+
+ supply1 vdd;
+ supply0 vss;
+
+ logic [59:0] muxa_out, muxb_out;
+ logic muxr_out;
+ logic [10:0] ia_div, ia_sqrt;
+ logic [59:0] ia_out;
+ logic [119:0] mul_out;
+ logic [59:0] q_out1, qm_out1, qp_out1;
+ logic [59:0] q_out0, qm_out0, qp_out0;
+ logic [59:0] mcand, mplier, mcand_q;
+ logic [59:0] twocmp_out;
+ logic [60:0] three;
+ logic [119:0] Carry, Carry2;
+ logic [119:0] Sum, Sum2;
+ logic [119:0] constant, constant2;
+ logic [59:0] q_const, qp_const, qm_const;
+ logic [59:0] d2, n2;
+ logic [11:0] d3;
+
+ // Check if exponent is odd for sqrt
+ // If exp_odd=1 and sqrt, then M/2 and use ia_addr=0 as IA
+ assign d2 = (exp_odd&op_type) ? {vss, d, 6'h0} : {d, 7'h0};
+ assign n2 = op_type ? d2 : {n, 7'h0};
+
+ // IA div/sqrt
+ sbtm_div ia1 (d[52:41], ia_div);
+ sbtm_sqrt ia2 (d2[59:48], ia_sqrt);
+ assign ia_out = op_type ? {ia_sqrt, {49{1'b0}}} : {ia_div, {49{1'b0}}};
+
+ // Choose IA or iteration
+ mux6 #(60) mx1 (d2, ia_out, rega_out, regc_out, regd_out, regb_out, sel_muxb, muxb_out);
+ mux5 #(60) mx2 (regc_out, n2, ia_out, regb_out, regd_out, sel_muxa, muxa_out);
+
+ // Deal with remainder if [0.5, 1) instead of [1, 2)
+ mux2 #(120) mx3a ({~n, {67{1'b1}}}, {{1'b1}, ~n, {66{1'b1}}}, q1[59], constant2);
+ // Select Mcand, Remainder/Q''
+ mux2 #(120) mx3 (120'h0, constant2, sel_muxr, constant);
+ // Select mcand - remainder should always choose q1 [1,2) because
+ // adjustment of N in the from XX.FFFFFFF
+ mux2 #(60) mx4 (q0, q1, q1[59], mcand_q);
+ mux2 #(60) mx5 (muxb_out, mcand_q, sel_muxr&op_type, mplier);
+ mux2 #(60) mx6 (muxa_out, mcand_q, sel_muxr, mcand);
+ // R4 Booth TDM multiplier (carry/save)
+ redundantmul #(60) bigmul(.a(mcand), .b(mplier), .out0(Sum), .out1(Carry));
+ // Q*D - N (reversed but changed in rounder.v to account for sign reversal)
+ csa #(120) csa1 (Sum, Carry, constant, Sum2, Carry2);
+ // Add ulp for subtraction in remainder
+ mux2 #(1) mx7 (1'b0, 1'b1, sel_muxr, muxr_out);
+
+ // Constant for Q''
+ mux2 #(60) mx8 ({60'h0000_0000_0000_020}, {60'h0000_0040_0000_000}, P, q_const);
+ mux2 #(60) mx9 ({60'h0000_0000_0000_0A0}, {60'h0000_0140_0000_000}, P, qp_const);
+ mux2 #(60) mxA ({60'hFFFF_FFFF_FFFF_F9F}, {60'hFFFF_FF3F_FFFF_FFF}, P, qm_const);
+
+ logic [119:0] Sum_pipe;
+ logic [119:0] Carry_pipe;
+ logic muxr_pipe;
+ logic rega_pipe;
+ logic regb_pipe;
+ logic regc_pipe;
+ logic regd_pipe;
+ logic regs_pipe;
+ logic regs_pipe2;
+ logic regr_pipe;
+ logic P_pipe;
+ logic op_type_pipe;
+ logic [59:0] q_const_pipe;
+ logic [59:0] qm_const_pipe;
+ logic [59:0] qp_const_pipe;
+ logic [59:0] q_const_pipe2;
+ logic [59:0] qm_const_pipe2;
+ logic [59:0] qp_const_pipe2;
+
+ // Stage 1
+ flopenr #(120) regp1 (clk, reset, load_regp, Sum2, Sum_pipe);
+ flopenr #(120) regp2 (clk, reset, load_regp, Carry2, Carry_pipe);
+ flopenr #(1) regp3 (clk, reset, load_regp, muxr_out, muxr_pipe);
+
+ flopenr #(1) regp4 (clk, reset, load_regp, load_rega, rega_pipe);
+ flopenr #(1) regp5 (clk, reset, load_regp, load_regb, regb_pipe);
+ flopenr #(1) regp6 (clk, reset, load_regp, load_regc, regc_pipe);
+ flopenr #(1) regp7 (clk, reset, load_regp, load_regd, regd_pipe);
+ flopenr #(1) regp8 (clk, reset, load_regp, load_regs, regs_pipe);
+ flopenr #(1) regp9 (clk, reset, load_regp, load_regr, regr_pipe);
+ flopenr #(1) regpA (clk, reset, load_regp, P, P_pipe);
+ flopenr #(1) regpB (clk, reset, load_regp, op_type, op_type_pipe);
+ flopenr #(60) regpC (clk, reset, load_regp, q_const, q_const_pipe);
+ flopenr #(60) regpD (clk, reset, load_regp, qp_const, qp_const_pipe);
+ flopenr #(60) regpE (clk, reset, load_regp, qm_const, qm_const_pipe);
+
+ // CPA (from CSA)/Remainder addition/subtraction
+ assign mul_out = Sum_pipe + Carry_pipe + {119'h0, muxr_pipe};
+ // One's complement instead of two's complement (for hw efficiency)
+ assign three = {~mul_out[118] , mul_out[118], ~mul_out[117:59]};
+ mux2 #(60) mxTC (~mul_out[118:59], three[60:1], op_type_pipe, twocmp_out);
+
+ // Stage 2
+ flopenr #(60) regc (clk, reset, regc_pipe, twocmp_out, regc_out);
+ flopenr #(60) regb (clk, reset, regb_pipe, mul_out[118:59], regb_out);
+ flopenr #(60) rega (clk, reset, rega_pipe, mul_out[118:59], rega_out);
+ flopenr #(60) regd (clk, reset, regd_pipe, mul_out[118:59], regd_out);
+ flopenr #(120) regr (clk, reset, regr_pipe, mul_out, regr_out);
+ flopenr #(1) regl (clk, reset, regs_pipe, regs_pipe, regs_pipe2);
+ flopenr #(60) regm (clk, reset, regs_pipe, q_const_pipe, q_const_pipe2);
+ flopenr #(60) regn (clk, reset, regs_pipe, qp_const_pipe, qp_const_pipe2);
+ flopenr #(60) rego (clk, reset, regs_pipe, qm_const_pipe, qm_const_pipe2);
+
+ // Assuming [1,2) - q1
+ assign q_out1 = regb_out + q_const;
+ assign qp_out1 = regb_out + qp_const;
+ assign qm_out1 = regb_out + qm_const + 1'b1;
+ // Assuming [0.5,1) - q0
+ assign q_out0 = {regb_out[58:0], 1'b0} + q_const;
+ assign qp_out0 = {regb_out[58:0], 1'b0} + qp_const;
+ assign qm_out0 = {regb_out[58:0], 1'b0} + qm_const + 1'b1;
+
+ // Stage 3
+ // Assuming [1,2)
+ flopenr #(60) rege (clk, reset, regs_pipe2, {q_out1[59:35], (q_out1[34:6] & {29{~P_pipe}}), 6'h0}, q1);
+ flopenr #(60) regf (clk, reset, regs_pipe2, {qm_out1[59:35], (qm_out1[34:6] & {29{~P_pipe}}), 6'h0}, qm1);
+ flopenr #(60) regg (clk, reset, regs_pipe2, {qp_out1[59:35], (qp_out1[34:6] & {29{~P_pipe}}), 6'h0}, qp1);
+ // Assuming [0,1)
+ flopenr #(60) regh (clk, reset, regs_pipe2, {q_out0[59:35], (q_out0[34:6] & {29{~P_pipe}}), 6'h0}, q0);
+ flopenr #(60) regj (clk, reset, regs_pipe2, {qm_out0[59:35], (qm_out0[34:6] & {29{~P_pipe}}), 6'h0}, qm0);
+ flopenr #(60) regk (clk, reset, regs_pipe2, {qp_out0[59:35], (qp_out0[34:6] & {29{~P_pipe}}), 6'h0}, qp0);
+
+endmodule // divconv
diff --git a/wally-pipelined/src/fpu/exception_div.sv b/wally-pipelined/src/fpu/exception_div.sv
index 374320683..3e701d2fb 100755
--- a/wally-pipelined/src/fpu/exception_div.sv
+++ b/wally-pipelined/src/fpu/exception_div.sv
@@ -23,9 +23,10 @@ module exception_div (
logic BNaN; // '1' if B is a not-a-number
logic ASNaN; // '1' if A is a signalling not-a-number
logic BSNaN; // '1' if B is a signalling not-a-number
- logic ZQNaN; // '1' if result Z is a quiet NaN
+ logic ZSNaN; // '1' if result Z is a quiet NaN
logic ZInf; // '1' if result Z is an infnity
- logic Zero; // '1' if result is zero
+ logic Zero; // '1' if result is zero
+ logic NegSqrt; // '1' if sqrt and operand is negative
//***take this module out and add more registers or just recalculate it all
// Determine if mantissas are all zeros
@@ -48,32 +49,34 @@ module exception_div (
assign AZero = AzeroE & AzeroM;
assign BZero = BzeroE & BzeroE;
+ // Is NaN if operand is negative and its a sqrt
+ assign NegSqrt = (A[63] & op_type & ~AZero);
+
// An "Invalid Operation" exception occurs if (A or B is a signalling NaN)
// or (A and B are both Infinite)
assign Invalid = ASNaN | BSNaN | (((AInf & BInf) | (AZero & BZero))&~op_type) |
- (A[63] & op_type);
-
+ NegSqrt;
// The result is a quiet NaN if (an "Invalid Operation" exception occurs)
// or (A is a NaN) or (B is a NaN).
- assign ZQNaN = Invalid | ANaN | BNaN;
+ assign ZSNaN = Invalid | ANaN | BNaN;
// The result is zero
assign Zero = (AZero | BInf)&~op_type | AZero&op_type;
// The result is +Inf if ((A is Inf) or (B is 0)) and (the
// result is not a quiet NaN).
- assign ZInf = (AInf | BZero)&~ZQNaN&~op_type | AInf&op_type&~ZQNaN;
+ assign ZInf = (AInf | BZero)&~ZSNaN&~op_type | AInf&op_type&~ZSNaN;
// Set the type of the result as follows:
// Ztype Result
// 000 Normal
- // 001 Quiet NaN
// 010 Infinity
// 011 Zero
- // 110 DivZero
- assign Ztype[0] = ZQNaN | Zero;
- assign Ztype[1] = ZInf | Zero;
- assign Ztype[2] = BZero&~op_type;
-
+ // 110 Div by 0
+ // 111 SNaN
+ assign Ztype[2] = (ZSNaN);
+ assign Ztype[1] = (ZSNaN) | (Zero) | (ZInf);
+ assign Ztype[0] = (ZSNaN) | (Zero);
+
endmodule // exception
diff --git a/wally-pipelined/src/fpu/fcmp.sv b/wally-pipelined/src/fpu/fcmp.sv
index 93c6b97a5..b47e6eab9 100755
--- a/wally-pipelined/src/fpu/fcmp.sv
+++ b/wally-pipelined/src/fpu/fcmp.sv
@@ -271,7 +271,6 @@ module exception_cmp_2 (
logic GT;
logic LT;
logic EQ;
- logic [62:0] sixtythreezeros = 63'h0;
assign dp = !FOpCtrlE[1]&!FOpCtrlE[0];
assign sp = !FOpCtrlE[1]&FOpCtrlE[0];
diff --git a/wally-pipelined/src/fpu/fctrl.sv b/wally-pipelined/src/fpu/fctrl.sv
index a109ed67c..6fd29a2b8 100755
--- a/wally-pipelined/src/fpu/fctrl.sv
+++ b/wally-pipelined/src/fpu/fctrl.sv
@@ -17,7 +17,7 @@ module fctrl (
output logic FWriteIntD // is the result written to the integer register
);
- `define FCTRLW 15
+ `define FCTRLW 14
logic [`FCTRLW-1:0] ControlsD;
// FPU Instruction Decoder
always_comb
@@ -69,7 +69,7 @@ module fctrl (
2'b01: ControlsD = `FCTRLW'b1_0_11_010_011_00_0_0; // fcvt.s.wu
2'b10: ControlsD = `FCTRLW'b1_0_11_100_011_00_0_0; // fcvt.s.l
2'b11: ControlsD = `FCTRLW'b1_0_11_110_011_00_0_0; // fcvt.s.lu
- default: ControlsD = `FCTRLW'b0_0_00_0000_000_00_0_1; // non-implemented instruction
+ default: ControlsD = `FCTRLW'b0_0_00_000_000_00_0_1; // non-implemented instruction
endcase
7'b1100000: case(Rs2D[1:0])
2'b00: ControlsD = `FCTRLW'b0_1_11_001_011_11_0_0; // fcvt.w.s
@@ -98,7 +98,7 @@ module fctrl (
//7'b0100001: ControlsD = `FCTRLW'b1_0_11_000_100_00_0_0; // fcvt.d.s
default: ControlsD = `FCTRLW'b0_0_00_000_100_00_0_1; // non-implemented instruction
endcase
- default: ControlsD = `FCTRLW'b0_0_000_000_000_00_0_1; // non-implemented instruction
+ default: ControlsD = `FCTRLW'b0_0_00_000_000_00_0_1; // non-implemented instruction
endcase
// unswizzle control bits
diff --git a/wally-pipelined/src/fpu/fcvt.sv b/wally-pipelined/src/fpu/fcvt.sv
index 17da80306..479da90c4 100644
--- a/wally-pipelined/src/fpu/fcvt.sv
+++ b/wally-pipelined/src/fpu/fcvt.sv
@@ -68,7 +68,7 @@ module fcvt (
assign Bits = Res64 ? 8'd64 : 8'd32;
// calulate the unbiased exponent
- assign ExpVal = XExpE - BiasE + XDenormE;
+ assign ExpVal = {1'b0,XExpE} - {1'b0,BiasE} + {12'b0, XDenormE};
////////////////////////////////////////////////////////
@@ -84,11 +84,11 @@ module fcvt (
always_comb begin
i = 0;
while (~PosInt[64-1-i] && i < `XLEN) i = i+1; // search for leading one
- LZResP = i+1; // compute shift count
+ LZResP = i[5:0]+1; // compute shift count
end
// if no one was found set to zero otherwise calculate the exponent
- assign TmpExp = i==`XLEN ? 0 : FmtE ? 1023 + SubBits - LZResP : 127 + SubBits - LZResP;
+ assign TmpExp = i==`XLEN ? 0 : FmtE ? 11'd1023 + {3'b0, SubBits} - {5'b0, LZResP} : 11'd127 + {3'b0, SubBits} - {5'b0, LZResP};
@@ -97,13 +97,13 @@ module fcvt (
// select the shift value and amount based on operation (to fp or int)
- assign ShiftCnt = FOpCtrlE[0] ? ExpVal : LZResP;
- assign ShiftVal = FOpCtrlE[0] ? {{64-2{1'b0}}, XManE} : {PosInt, 52'b0};
+ assign ShiftCnt = FOpCtrlE[0] ? ExpVal : {7'b0, LZResP};
+ assign ShiftVal = FOpCtrlE[0] ? {{64-1{1'b0}}, XManE} : {PosInt, 52'b0};
// if shift = -1 then shift one bit right for gaurd bit (right shifting twice never rounds)
// if the shift is negitive add a bit for sticky bit calculation
// otherwise shift left
- assign ShiftedManTmp = &ShiftCnt ? {{64-1{1'b0}}, XManE[52:1]} : ShiftCnt[12] ? {{64+51{1'b0}}, ~XZeroE} : ShiftVal << ShiftCnt;
+ assign ShiftedManTmp = &ShiftCnt ? {{64{1'b0}}, XManE[52:1]} : ShiftCnt[12] ? {{64+51{1'b0}}, ~XZeroE} : ShiftVal << ShiftCnt;
// truncate the shifted mantissa
assign ShiftedMan = ShiftedManTmp[64+51:50];
@@ -135,8 +135,8 @@ module fcvt (
assign Plus1 = CalcPlus1 & (Guard|Round|Sticky)&~(XZeroE&FOpCtrlE[0]);
// round the shifted mantissa
- assign RoundedTmp = ShiftedMan[64+1:2] + Plus1;
- assign {ResExp, ResFrac} = FmtE ? {TmpExp, ShiftedMan[64+1:14]} + Plus1 : {{TmpExp, ShiftedMan[64+1:43]} + Plus1, 29'b0} ;
+ assign RoundedTmp = ShiftedMan[64+1:2] + {64'b0, Plus1};
+ assign {ResExp, ResFrac} = FmtE ? {TmpExp, ShiftedMan[64+1:14]} + {62'b0, Plus1} : {{TmpExp, ShiftedMan[64+1:43]} + {33'b0,Plus1}, 29'b0} ;
// fit the rounded result into the appropriate size and take the 2's complement if needed
assign Rounded = Res64 ? XSgnE&FOpCtrlE[0] ? -RoundedTmp[63:0] : RoundedTmp[63:0] :
@@ -148,10 +148,10 @@ module fcvt (
// check if the result overflows
- assign Of = (~XSgnE&($signed(ShiftCnt) >= $signed(Bits))) | (~XSgnE&RoundSgn&~FOpCtrlE[1]) | (RoundMSB&(ShiftCnt==(Bits-1))) | (~XSgnE&XInfE) | XNaNE;
+ assign Of = (~XSgnE&($signed(ShiftCnt) >= $signed({{5{Bits[7]}}, Bits}))) | (~XSgnE&RoundSgn&~FOpCtrlE[1]) | (RoundMSB&(ShiftCnt==({{5{Bits[7]}}, Bits}-1))) | (~XSgnE&XInfE) | XNaNE;
// check if the result underflows (this calculation changes if the result is signed or unsigned)
- assign Uf = FOpCtrlE[1] ? XSgnE&~XZeroE | (XSgnE&XInfE) | (XSgnE&~XZeroE&(~ShiftCnt[12]|CalcPlus1)) | (ShiftCnt[12]&Plus1) : (XSgnE&XInfE) | (XSgnE&($signed(ShiftCnt) >= $signed(Bits))) | (XSgnE&~RoundSgn&~ShiftCnt[12]); // assign CvtIntRes = (XSgnE | ShiftCnt[12]) ? {64{1'b0}} : (ShiftCnt >= 64) ? {64{1'b1}} : Rounded;
+ assign Uf = FOpCtrlE[1] ? XSgnE&~XZeroE | (XSgnE&XInfE) | (XSgnE&~XZeroE&(~ShiftCnt[12]|CalcPlus1)) | (ShiftCnt[12]&Plus1) : (XSgnE&XInfE) | (XSgnE&($signed(ShiftCnt) >= $signed({{5{Bits[7]}}, Bits}))) | (XSgnE&~RoundSgn&~ShiftCnt[12]); // assign CvtIntRes = (XSgnE | ShiftCnt[12]) ? {64{1'b0}} : (ShiftCnt >= 64) ? {64{1'b1}} : Rounded;
// calculate the result's sign
assign SgnRes = ~FOpCtrlE[2] & FOpCtrlE[0];
diff --git a/wally-pipelined/src/fpu/fhazard.sv b/wally-pipelined/src/fpu/fhazard.sv
index e53317376..d515b24d8 100644
--- a/wally-pipelined/src/fpu/fhazard.sv
+++ b/wally-pipelined/src/fpu/fhazard.sv
@@ -45,7 +45,7 @@ module fhazard(
// if the needed value is in the memory stage - input 1
if ((Adr1E == RdM) & FRegWriteM)
// if the result will be FResM (can be taken from the memory stage)
- if(FResultSelM == 3'b11) FForwardXE = 2'b10; // choose FResM
+ if(FResultSelM == 2'b11) FForwardXE = 2'b10; // choose FResM
else FStallD = 1; // otherwise stall
// if the needed value is in the writeback stage
else if ((Adr1E == RdW) & FRegWriteW) FForwardXE = 2'b01; // choose FPUResult64W
@@ -54,7 +54,7 @@ module fhazard(
// if the needed value is in the memory stage - input 2
if ((Adr2E == RdM) & FRegWriteM)
// if the result will be FResM (can be taken from the memory stage)
- if(FResultSelM == 3'b11) FForwardYE = 2'b10; // choose FResM
+ if(FResultSelM == 2'b11) FForwardYE = 2'b10; // choose FResM
else FStallD = 1; // otherwise stall
// if the needed value is in the writeback stage
else if ((Adr2E == RdW) & FRegWriteW) FForwardYE = 2'b01; // choose FPUResult64W
@@ -63,7 +63,7 @@ module fhazard(
// if the needed value is in the memory stage - input 3
if ((Adr3E == RdM) & FRegWriteM)
// if the result will be FResM (can be taken from the memory stage)
- if(FResultSelM == 3'b11) FForwardZE = 2'b10; // choose FResM
+ if(FResultSelM == 2'b11) FForwardZE = 2'b10; // choose FResM
else FStallD = 1; // otherwise stall
// if the needed value is in the writeback stage
else if ((Adr3E == RdW) & FRegWriteW) FForwardZE = 2'b01; // choose FPUResult64W
diff --git a/wally-pipelined/src/fpu/fma.sv b/wally-pipelined/src/fpu/fma.sv
index 7bd150308..db55ee5ca 100644
--- a/wally-pipelined/src/fpu/fma.sv
+++ b/wally-pipelined/src/fpu/fma.sv
@@ -23,7 +23,7 @@
///////////////////////////////////////////
`include "wally-config.vh"
-// `include "../../../config/rv64icfd/wally-config.vh"
+// `include "../../../config/rv64icfd/wally-config.vh"
module fma(
input logic clk,
@@ -45,7 +45,6 @@ module fma(
input logic XSNaNM, YSNaNM, ZSNaNM, // is signaling NaN
input logic XZeroM, YZeroM, ZZeroM, // is zero - memory stage
input logic XInfM, YInfM, ZInfM, // is infinity
- input logic [10:0] BiasE, // bias (max exponent/2) ***parameterize in unpacking unit
output logic [`FLEN-1:0] FMAResM, // FMA result
output logic [4:0] FMAFlgM); // FMA flags
@@ -70,7 +69,7 @@ module fma(
logic [8:0] NormCntE, NormCntM;
fma1 fma1 (.XSgnE, .YSgnE, .ZSgnE, .XExpE, .YExpE, .ZExpE, .XManE, .YManE, .ZManE,
- .BiasE, .XDenormE, .YDenormE, .ZDenormE, .XZeroE, .YZeroE, .ZZeroE,
+ .XDenormE, .YDenormE, .ZDenormE, .XZeroE, .YZeroE, .ZZeroE,
.FOpCtrlE, .FmtE, .SumE, .NegSumE, .InvZE, .NormCntE, .ZSgnEffE, .PSgnE,
.ProdExpE, .AddendStickyE, .KillProdE);
@@ -96,7 +95,6 @@ module fma1(
input logic [`NF:0] XManE, YManE, ZManE, // fractions in U(0.NF) format
input logic XDenormE, YDenormE, ZDenormE, // is the input denormal
input logic XZeroE, YZeroE, ZZeroE, // is the input zero
- input logic [`NE-1:0] BiasE, // bias (max exponent/2)
input logic [2:0] FOpCtrlE, // 000 = fmadd (X*Y)+Z, 001 = fmsub (X*Y)-Z, 010 = fnmsub -(X*Y)+Z, 011 = fnmadd -(X*Y)-Z, 100 = fmul (X*Y)
input logic FmtE, // precision 1 = double 0 = single
output logic [`NE+1:0] ProdExpE, // X exponent + Y exponent - bias in B(NE+2.0) format; adds 2 bits to allow for size of number and negative sign
@@ -111,25 +109,26 @@ module fma1(
);
logic [`NE-1:0] Denorm; // value of a denormaized number based on precision
- logic [`NE-1:0] XExpVal, YExpVal; // Exponent value after taking into account denormals
logic [2*`NF+1:0] ProdManE; // 1.X frac * 1.Y frac in U(2.2Nf) format
logic [3*`NF+5:0] AlignedAddendE; // Z aligned for addition in U(NF+5.2NF+1)
+ logic [3*`NF+6:0] AlignedAddendInv; // aligned addend possibly inverted
+ logic [2*`NF+1:0] ProdManKilled; // the product's mantissa possibly killed
+ logic [3*`NF+6:0] NegProdManKilled; // a negated ProdManKilled
+ logic [8:0] PNormCnt, NNormCnt; // the positive and nagitive LOA results
+ logic [3*`NF+6:0] PreSum, NegPreSum; // positive and negitve versions of the sum
///////////////////////////////////////////////////////////////////////////////
// Calculate the product
// - When multipliying two fp numbers, add the exponents
// - Subtract the bias (XExp + YExp has two biases, one from each exponent)
- // - If the product is zero then kill the exponent - this is a problem
+ // - If the product is zero then kill the exponent
+ // - Multiply the mantissas
///////////////////////////////////////////////////////////////////////////////
- // denormalized numbers have diffrent values depending on which precison it is.
- // double - 1
- // single - 1024-128+1 = 897
- assign Denorm = FmtE ? 1 : 897;
- assign XExpVal = XDenormE ? Denorm : XExpE;
- assign YExpVal = YDenormE ? Denorm : YExpE;
- // take into account if the product is zero, the product's exponent does not compute properly if X or Y is zero
- assign ProdExpE = (XExpVal + YExpVal - BiasE)&{`NE+2{~(XZeroE|YZeroE)}};
+
+ // calculate the product's exponent
+ expadd expadd(.FmtE, .XExpE, .YExpE, .XZeroE, .YZeroE, .XDenormE, .YDenormE,
+ .Denorm, .ProdExpE);
// multiplication of the mantissa's
mult mult(.XManE, .YManE, .ProdManE);
@@ -138,23 +137,61 @@ module fma1(
// Alignment shifter
///////////////////////////////////////////////////////////////////////////////
- alignshift alignshift(.ZExpE, .ZManE, .ZDenormE, .XZeroE, .YZeroE, .ZZeroE, .ProdExpE, .Denorm,
+ align align(.ZExpE, .ZManE, .ZDenormE, .XZeroE, .YZeroE, .ZZeroE, .ProdExpE, .Denorm,
.AlignedAddendE, .AddendStickyE, .KillProdE);
-
- // Calculate the product's sign
- // Negate product's sign if FNMADD or FNMSUB
-
- assign PSgnE = XSgnE ^ YSgnE ^ (FOpCtrlE[1]&~FOpCtrlE[2]);
- assign ZSgnEffE = ZSgnE^FOpCtrlE[0]; // Swap sign of Z for subtract
-
+ // calculate the signs and take the opperation into account
+ sign sign(.FOpCtrlE, .XSgnE, .YSgnE, .ZSgnE, .PSgnE, .ZSgnEffE);
// ///////////////////////////////////////////////////////////////////////////////
// // Addition/LZA
// ///////////////////////////////////////////////////////////////////////////////
- fmaadd fmaadd(.AlignedAddendE, .ProdManE, .PSgnE, .ZSgnEffE, .KillProdE, .SumE, .NegSumE, .InvZE, .NormCntE, .XZeroE, .YZeroE);
+ add add(.AlignedAddendE, .ProdManE, .PSgnE, .ZSgnEffE, .KillProdE, .AlignedAddendInv, .ProdManKilled, .NegProdManKilled, .NegSumE, .PreSum, .NegPreSum, .InvZE, .XZeroE, .YZeroE);
+ loa loa(.AlignedAddendE, .AlignedAddendInv, .ProdManKilled, .NegProdManKilled, .PNormCnt, .NNormCnt);
+
+ // Choose the positive sum and accompanying LZA result.
+ assign SumE = NegSumE ? NegPreSum[3*`NF+5:0] : PreSum[3*`NF+5:0];
+ assign NormCntE = NegSumE ? NNormCnt : PNormCnt;
+
+
+endmodule
+
+
+module expadd(
+ input logic FmtE, // precision
+ input logic [`NE-1:0] XExpE, YExpE, // input exponents
+ input logic XDenormE, YDenormE, // are the inputs denormalized
+ input logic XZeroE, YZeroE, // are the inputs zero
+ output logic [`NE-1:0] Denorm, // value of denormalized exponent
+ output logic [`NE+1:0] ProdExpE // product's exponent B^(1023)NE+2
+);
+
+ logic [`NE-1:0] XExpVal, YExpVal; // Exponent value after taking into account denormals
+
+ // denormalized numbers have diffrent values depending on which precison it is.
+ // double - 1
+ // single - 1023-127+1 = 897
+ assign Denorm = FmtE ? 1 : 897;
+
+ // pick denormalized value or exponent
+ assign XExpVal = XDenormE ? Denorm : XExpE;
+ assign YExpVal = YDenormE ? Denorm : YExpE;
+ // kill the exponent if the product is zero - either X or Y is 0
+ assign ProdExpE = ({2'b0, XExpVal} + {2'b0, YExpVal} - {2'b0, `NE'h3ff})&{`NE+2{~(XZeroE|YZeroE)}};
+
+endmodule
+
+
+
+
+
+module mult(
+ input logic [`NF:0] XManE, YManE,
+ output logic [2*`NF+1:0] ProdManE
+);
+ assign ProdManE = XManE * YManE;
endmodule
@@ -164,7 +201,227 @@ endmodule
+module sign(
+ input logic [2:0] FOpCtrlE, // precision
+ input logic XSgnE, YSgnE, ZSgnE, // are the inputs denormalized
+ output logic PSgnE, // the product's sign - takes opperation into account
+ output logic ZSgnEffE // Z sign used in fma - takes opperation into account
+);
+ // Calculate the product's sign
+ // Negate product's sign if FNMADD or FNMSUB
+
+ // flip is negation opperation
+ assign PSgnE = XSgnE ^ YSgnE ^ (FOpCtrlE[1]&~FOpCtrlE[2]);
+ // flip if subtraction
+ assign ZSgnEffE = ZSgnE^FOpCtrlE[0];
+
+endmodule
+
+
+
+
+
+
+
+
+module align(
+ input logic [`NE-1:0] ZExpE, // biased exponents in B(NE.0) format
+ input logic [`NF:0] ZManE, // fractions in U(0.NF) format]
+ input logic ZDenormE, // is the input denormal
+ input logic XZeroE, YZeroE, ZZeroE, // is the input zero
+ input logic [`NE+1:0] ProdExpE, // the product's exponent
+ input logic [`NE-1:0] Denorm, // the biased value of a denormalized number
+ output logic [3*`NF+5:0] AlignedAddendE, // Z aligned for addition in U(NF+5.2NF+1)
+ output logic AddendStickyE, // Sticky bit calculated from the aliged addend
+ output logic KillProdE // should the product be set to zero
+);
+
+ logic [`NE+1:0] AlignCnt; // how far to shift the addend to align with the product in Q(NE+2.0) format
+ logic [4*`NF+5:0] ZManShifted; // output of the alignment shifter including sticky bits U(NF+5.3NF+1)
+ logic [4*`NF+5:0] ZManPreShifted; // input to the alignment shifter U(NF+5.3NF+1)
+ logic [`NE-1:0] ZExpVal; // Exponent value after taking into account denormals
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Alignment shifter
+ ///////////////////////////////////////////////////////////////////////////////
+
+ // determine the shift count for alignment
+ // - negitive means Z is larger, so shift Z left
+ // - positive means the product is larger, so shift Z right
+ // - Denormal numbers have a diffrent exponent value depending on the precision
+ assign ZExpVal = ZDenormE ? Denorm : ZExpE;
+ assign AlignCnt = ProdExpE - {2'b0, ZExpVal} + (`NF+3);
+
+ // Defualt Addition without shifting
+ // | 54'b0 | 106'b(product) | 2'b0 |
+ // | addnend |
+
+ // the 1'b0 before the added is because the product's mantissa has two bits before the binary point (xx.xxxxxxxxxx...)
+ assign ZManPreShifted = {ZManE,(3*`NF+5)'(0)};
+ always_comb
+ begin
+
+ // If the product is too small to effect the sum, kill the product
+
+ // | 54'b0 | 106'b(product) | 2'b0 |
+ // | addnend |
+ if ($signed(AlignCnt) < $signed(13'b0)) begin
+ KillProdE = 1;
+ ZManShifted = ZManPreShifted;
+ AddendStickyE = ~(XZeroE|YZeroE);
+
+ // If the Addend is shifted right
+ // | 54'b0 | 106'b(product) | 2'b0 |
+ // | addnend |
+ end else if ($signed(AlignCnt)<=$signed(13'd3*13'd`NF+13'd4)) begin
+ KillProdE = 0;
+ ZManShifted = ZManPreShifted >> AlignCnt;
+ AddendStickyE = |(ZManShifted[`NF-1:0]);
+
+ // If the addend is too small to effect the addition
+ // - The addend has to shift two past the end of the addend to be considered too small
+ // - The 2 extra bits are needed for rounding
+
+ // | 54'b0 | 106'b(product) | 2'b0 |
+ // | addnend |
+ end else begin
+ KillProdE = 0;
+ ZManShifted = 0;
+ AddendStickyE = ~ZZeroE;
+
+ end
+ end
+
+ assign AlignedAddendE = ZManShifted[4*`NF+5:`NF];
+
+endmodule
+
+
+
+
+
+
+
+module add(
+ input logic [3*`NF+5:0] AlignedAddendE, // Z aligned for addition in U(NF+5.2NF+1)
+ input logic [2*`NF+1:0] ProdManE, // the product's mantissa
+ input logic PSgnE, ZSgnEffE,// the product and modified Z signs
+ input logic KillProdE, // should the product be set to 0
+ input logic XZeroE, YZeroE, // is the input zero
+ output logic [3*`NF+6:0] AlignedAddendInv, // aligned addend possibly inverted
+ output logic [2*`NF+1:0] ProdManKilled, // the product's mantissa possibly killed
+ output logic [3*`NF+6:0] NegProdManKilled, // a negated ProdManKilled
+ output logic NegSumE, // was the sum negitive
+ output logic InvZE, // do you invert Z
+ output logic [3*`NF+6:0] PreSum, NegPreSum// possibly negitive sum
+);
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Addition
+ ///////////////////////////////////////////////////////////////////////////////
+
+ // Negate Z when doing one of the following opperations:
+ // -prod + Z
+ // prod - Z
+ assign InvZE = ZSgnEffE ^ PSgnE;
+
+ // Choose an inverted or non-inverted addend - the one has to be added now for the LZA
+ assign AlignedAddendInv = InvZE ? -{1'b0, AlignedAddendE} : {1'b0, AlignedAddendE};
+ // Kill the product if the product is too small to effect the addition (determined in fma1.sv)
+ assign ProdManKilled = ProdManE&{2*`NF+2{~KillProdE}};
+ // Negate ProdMan for LZA and the negitive sum calculation
+ assign NegProdManKilled = {{`NF+3{~(XZeroE|YZeroE|KillProdE)}}, -ProdManKilled, 2'b0};
+
+
+
+ // Do the addition
+ // - calculate a positive and negitive sum in parallel
+ assign PreSum = AlignedAddendInv + {55'b0, ProdManKilled, 2'b0};
+ assign NegPreSum = AlignedAddendE + NegProdManKilled;
+
+ // Is the sum negitive
+ assign NegSumE = PreSum[3*`NF+6];
+
+endmodule
+
+
+module loa(
+ input logic [3*`NF+5:0] AlignedAddendE, // Z aligned for addition in U(NF+5.2NF+1)
+ input logic [3*`NF+6:0] AlignedAddendInv, // aligned addend possibly inverted
+ input logic [2*`NF+1:0] ProdManKilled, // the product's mantissa possibly killed
+ input logic [3*`NF+6:0] NegProdManKilled, // a negated ProdManKilled
+ output logic [8:0] PNormCnt, NNormCnt // positive and negitive LOA result
+);
+
+ // LZAs one for the positive result and one for the negitive
+ // - the +1 from inverting causes problems for normalization
+ posloa posloa(AlignedAddendInv, ProdManKilled, PNormCnt);
+ negloa negloa({1'b0,AlignedAddendE}, NegProdManKilled, NNormCnt);
+
+endmodule
+
+
+module posloa(
+ input logic [3*`NF+6:0] A, // addend
+ input logic [2*`NF+1:0] P, // product
+ output logic [8:0] PCnt // normalization shift count for the positive result
+ );
+
+
+ // calculate the propagate (T) and kill (Z) bits
+ logic [3*`NF+6:0] T;
+ logic [3*`NF+5:0] Z;
+ assign T[3*`NF+6:2*`NF+4] = A[3*`NF+6:2*`NF+4];
+ assign Z[3*`NF+5:2*`NF+4] = A[3*`NF+5:2*`NF+4];
+ assign T[2*`NF+3:2] = A[2*`NF+3:2]^P;
+ assign Z[2*`NF+3:2] = A[2*`NF+3:2]|P;
+ assign T[1:0] = A[1:0];
+ assign Z[1:0] = A[1:0];
+
+
+ // Apply function to determine Leading pattern
+ logic [3*`NF+6:0] f;
+ assign f = T^{Z[3*`NF+5:0], 1'b0};
+
+ lzc lzc(.f, .Cnt(PCnt));
+
+endmodule
+
+module negloa(
+ input logic [3*`NF+6:0] A, // addend
+ input logic [3*`NF+6:0] P, // product
+ output logic [8:0] NCnt // normalization shift count for the negitive result
+ );
+
+ // calculate the propagate (T) and kill (Z) bits
+ logic [3*`NF+6:0] T;
+ logic [3*`NF+5:0] Z;
+ assign T = A^P;
+ assign Z = ~(A[3*`NF+5:0]|P[3*`NF+5:0]);
+
+
+ // Apply function to determine Leading pattern
+ logic [3*`NF+6:0] f;
+ assign f = T^{~Z, 1'b0};
+
+ lzc lzc(.f, .Cnt(NCnt));
+
+endmodule
+
+
+module lzc(
+ input logic [3*`NF+6:0] f,
+ output logic [8:0] Cnt // normalization shift count for the negitive result
+);
+
+ logic [8:0] i;
+ always_comb begin
+ i = 0;
+ while (~f[3*`NF+6-i] && $unsigned(i) <= $unsigned(9'd3*9'd`NF+9'd6)) i = i+1; // search for leading one
+ Cnt = i;
+ end
+endmodule
@@ -211,11 +468,8 @@ module fma2(
logic Plus1, Minus1, CalcPlus1; // do you add or subtract one for rounding
logic UfPlus1; // do you add one (for determining underflow flag)
logic Invalid,Underflow,Overflow; // flags
- logic ZeroSgn; // the result's sign if the sum is zero
- logic ResultSgnTmp; // the result's sign assuming the result is not zero
logic Guard, Round; // bits needed to determine rounding
- logic UfRound, UfLSBNormSum; // bits needed to determine rounding for underflow flag
- logic [`FLEN-1:0] XNaNResult, YNaNResult, ZNaNResult, InvalidResult, OverflowResult, KillProdResult, UnderflowResult; // possible results
+ logic UfLSBNormSum; // bits needed to determine rounding for underflow flag
@@ -242,7 +496,7 @@ module fma2(
// round to nearest max magnitude
fmaround fmaround(.FmtM, .FrmM, .Sticky, .UfSticky, .NormSum, .AddendStickyM, .NormSumSticky, .ZZeroM, .InvZM, .ResultSgn, .SumExp,
- .CalcPlus1, .Plus1, .UfPlus1, .Minus1, .FullResultExp, .ResultFrac, .ResultExp, .Round, .Guard, .UfRound, .UfLSBNormSum);
+ .CalcPlus1, .Plus1, .UfPlus1, .Minus1, .FullResultExp, .ResultFrac, .ResultExp, .Round, .Guard, .UfLSBNormSum);
@@ -252,6 +506,49 @@ module fma2(
// Sign calculation
///////////////////////////////////////////////////////////////////////////////
+
+ resultsign resultsign(.FrmM, .PSgnM, .ZSgnEffM, .Underflow, .InvZM, .NegSumM, .SumZero, .ResultSgn);
+
+
+
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Flags
+ ///////////////////////////////////////////////////////////////////////////////
+
+ fmaflags fmaflags(.XSNaNM, .YSNaNM, .ZSNaNM, .XInfM, .YInfM, .ZInfM, .XZeroM, .YZeroM,
+ .XNaNM, .YNaNM, .ZNaNM, .FullResultExp, .SumExp, .ZSgnEffM, .PSgnM, .Round, .Guard, .UfLSBNormSum, .Sticky, .UfPlus1,
+ .FmtM, .Invalid, .Overflow, .Underflow, .FMAFlgM);
+
+
+
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Select the result
+ ///////////////////////////////////////////////////////////////////////////////
+
+ resultselect resultselect(.XSgnM, .YSgnM, .XExpM, .YExpM, .ZExpM, .XManM, .YManM, .ZManM,
+ .FrmM, .FmtM, .AddendStickyM, .KillProdM, .XInfM, .YInfM, .ZInfM, .XNaNM, .YNaNM, .ZNaNM,
+ .ZSgnEffM, .PSgnM, .ResultSgn, .Minus1, .Plus1, .CalcPlus1, .Invalid, .Overflow, .Underflow,
+ .ResultDenorm, .ResultExp, .ResultFrac, .FMAResM);
+
+// *** use NF where needed
+
+endmodule
+
+module resultsign(
+ input logic [2:0] FrmM,
+ input logic PSgnM, ZSgnEffM,
+ input logic Underflow,
+ input logic InvZM,
+ input logic NegSumM,
+ input logic SumZero,
+ output logic ResultSgn
+);
+
+ logic ZeroSgn;
+ logic ResultSgnTmp;
+
// Determine the sign if the sum is zero
// if cancelation then 0 unless round to -infinity
// otherwise psign
@@ -263,25 +560,31 @@ module fma2(
// if -p - z then the Sum is negitive
assign ResultSgnTmp = InvZM&(ZSgnEffM)&NegSumM | InvZM&PSgnM&~NegSumM | ((ZSgnEffM)&PSgnM);
assign ResultSgn = SumZero ? ZeroSgn : ResultSgnTmp;
-
+endmodule
+module resultselect(
+ input logic XSgnM, YSgnM, // input signs
+ input logic [`NE-1:0] XExpM, YExpM, ZExpM, // input exponents
+ input logic [`NF:0] XManM, YManM, ZManM, // input mantissas
+ input logic [2:0] FrmM, // rounding mode 000 = rount to nearest, ties to even 001 = round twords zero 010 = round down 011 = round up 100 = round to nearest, ties to max magnitude
+ input logic FmtM, // precision 1 = double 0 = single
+ input logic AddendStickyM, // sticky bit that is calculated during alignment
+ input logic KillProdM, // set the product to zero before addition if the product is too small to matter
+ input logic XInfM, YInfM, ZInfM, // inputs are infinity
+ input logic XNaNM, YNaNM, ZNaNM, // inputs are NaN
+ input logic ZSgnEffM, // the modified Z sign - depends on instruction
+ input logic PSgnM, // the product's sign
+ input logic ResultSgn, // the result's sign
+ input logic Minus1, Plus1, CalcPlus1, // rounding bits
+ input logic Invalid, Overflow, Underflow, // flags
+ input logic ResultDenorm, // is the result denormalized
+ input logic [`NE-1:0] ResultExp, // Result exponent
+ input logic [`NF-1:0] ResultFrac, // Result fraction
+ output logic [`FLEN-1:0] FMAResM // FMA final result
+);
+ logic [`FLEN-1:0] XNaNResult, YNaNResult, ZNaNResult, InvalidResult, OverflowResult, KillProdResult, UnderflowResult; // possible results
-
- ///////////////////////////////////////////////////////////////////////////////
- // Flags
- ///////////////////////////////////////////////////////////////////////////////
-
- fmaflags fmaflags(.XSNaNM, .YSNaNM, .ZSNaNM, .XInfM, .YInfM, .ZInfM, .XZeroM, .YZeroM,
- .XNaNM, .YNaNM, .ZNaNM, .FullResultExp, .SumExp, .ZSgnEffM, .PSgnM, .Round, .Guard, .UfRound, .UfLSBNormSum, .Sticky, .UfPlus1,
- .FmtM, .Invalid, .Overflow, .Underflow, .FMAFlgM);
-
-
-
-
- ///////////////////////////////////////////////////////////////////////////////
- // Select the result
- ///////////////////////////////////////////////////////////////////////////////
assign XNaNResult = FmtM ? {XSgnM, XExpM, 1'b1, XManM[`NF-2:0]} : {{32{1'b1}}, XSgnM, XExpM[7:0], 1'b1, XManM[50:29]};
assign YNaNResult = FmtM ? {YSgnM, YExpM, 1'b1, YManM[`NF-2:0]} : {{32{1'b1}}, YSgnM, YExpM[7:0], 1'b1, YManM[50:29]};
assign ZNaNResult = FmtM ? {ZSgnEffM, ZExpM, 1'b1, ZManM[`NF-2:0]} : {{32{1'b1}}, ZSgnEffM, ZExpM[7:0], 1'b1, ZManM[50:29]};
@@ -290,8 +593,8 @@ module fma2(
((FrmM[1:0]==2'b01) | (FrmM[1:0]==2'b10&~ResultSgn) | (FrmM[1:0]==2'b11&ResultSgn)) ? {{32{1'b1}}, ResultSgn, 8'hfe, {23{1'b1}}} :
{{32{1'b1}}, ResultSgn, 8'hff, 23'b0};
assign InvalidResult = FmtM ? {ResultSgn, {`NE{1'b1}}, 1'b1, {`NF-1{1'b0}}} : {{32{1'b1}}, ResultSgn, 8'hff, 1'b1, 22'b0};
- assign KillProdResult = FmtM ? {ResultSgn, {ZExpM, ZManM[`NF-1:0]} - (Minus1&AddendStickyM) + (Plus1&AddendStickyM)} : {{32{1'b1}}, ResultSgn, {ZExpM[`NE-1],ZExpM[6:0], ZManM[51:29]} - {30'b0, (Minus1&AddendStickyM)} + {30'b0, (Plus1&AddendStickyM)}};
- assign UnderflowResult = FmtM ? {ResultSgn, {`FLEN-1{1'b0}}} + (CalcPlus1&(AddendStickyM|FrmM[1])) : {{32{1'b1}}, {ResultSgn, 31'b0} + {31'b0, (CalcPlus1&(AddendStickyM|FrmM[1]))}};
+ assign KillProdResult = FmtM ? {ResultSgn, {ZExpM, ZManM[`NF-1:0]} - {62'b0, (Minus1&AddendStickyM) + (Plus1&AddendStickyM)}} : {{32{1'b1}}, ResultSgn, {ZExpM[`NE-1],ZExpM[6:0], ZManM[51:29]} - {30'b0, (Minus1&AddendStickyM)} + {30'b0, (Plus1&AddendStickyM)}};
+ assign UnderflowResult = FmtM ? {ResultSgn, {`FLEN-1{1'b0}}} + {63'b0,(CalcPlus1&(AddendStickyM|FrmM[1]))} : {{32{1'b1}}, {ResultSgn, 31'b0} + {31'b0, (CalcPlus1&(AddendStickyM|FrmM[1]))}};
assign FMAResM = XNaNM ? XNaNResult :
YNaNM ? YNaNResult :
ZNaNM ? ZNaNResult :
@@ -305,213 +608,9 @@ module fma2(
FmtM ? {ResultSgn, ResultExp, ResultFrac} :
{{32{1'b1}}, ResultSgn, ResultExp[7:0], ResultFrac[51:29]};
-// *** use NF where needed
-
endmodule
-
-
-
-
-module mult(
- input logic [`NF:0] XManE, YManE,
- output logic [2*`NF+1:0] ProdManE
-);
- assign ProdManE = XManE * YManE;
-endmodule
-
-
-
-
-
-module alignshift(
- input logic [`NE-1:0] ZExpE, // biased exponents in B(NE.0) format
- input logic [`NF:0] ZManE, // fractions in U(0.NF) format]
- input logic ZDenormE, // is the input denormal
- input logic XZeroE, YZeroE, ZZeroE, // is the input zero
- input logic [`NE+1:0] ProdExpE, // the product's exponent
- input logic [`NE-1:0] Denorm, // the biased value of a denormalized number
- output logic [3*`NF+5:0] AlignedAddendE, // Z aligned for addition in U(NF+5.2NF+1)
- output logic AddendStickyE, // Sticky bit calculated from the aliged addend
- output logic KillProdE // should the product be set to zero
-);
-
- logic [`NE+1:0] AlignCnt; // how far to shift the addend to align with the product in Q(NE+2.0) format
- logic [4*`NF+5:0] ZManShifted; // output of the alignment shifter including sticky bits U(NF+5.3NF+1)
- logic [4*`NF+5:0] ZManPreShifted; // input to the alignment shifter U(NF+5.3NF+1)
- logic [`NE-1:0] ZExpVal; // Exponent value after taking into account denormals
-
- ///////////////////////////////////////////////////////////////////////////////
- // Alignment shifter
- ///////////////////////////////////////////////////////////////////////////////
-
- // determine the shift count for alignment
- // - negitive means Z is larger, so shift Z left
- // - positive means the product is larger, so shift Z right
- // - Denormal numbers have a diffrent exponent value depending on the precision
- assign ZExpVal = ZDenormE ? Denorm : ZExpE;
- assign AlignCnt = ProdExpE - ZExpVal + (`NF+3);
-
- // Defualt Addition without shifting
- // | 54'b0 | 106'b(product) | 2'b0 |
- // | addnend |
-
- // the 1'b0 before the added is because the product's mantissa has two bits before the binary point (xx.xxxxxxxxxx...)
- assign ZManPreShifted = {ZManE,(3*`NF+5)'(0)};
- always_comb
- begin
-
- // If the product is too small to effect the sum, kill the product
-
- // | 54'b0 | 106'b(product) | 2'b0 |
- // | addnend |
- if ($signed(AlignCnt) < $signed(0)) begin
- KillProdE = 1;
- ZManShifted = ZManPreShifted;
- AddendStickyE = ~(XZeroE|YZeroE);
-
- // If the Addend is shifted right
- // | 54'b0 | 106'b(product) | 2'b0 |
- // | addnend |
- end else if ($signed(AlignCnt)<=$signed(3*`NF+4)) begin
- KillProdE = 0;
- ZManShifted = ZManPreShifted >> AlignCnt;
- AddendStickyE = |(ZManShifted[`NF-1:0]);
-
- // If the addend is too small to effect the addition
- // - The addend has to shift two past the end of the addend to be considered too small
- // - The 2 extra bits are needed for rounding
-
- // | 54'b0 | 106'b(product) | 2'b0 |
- // | addnend |
- end else begin
- KillProdE = 0;
- ZManShifted = 0;
- AddendStickyE = ~ZZeroE;
-
- end
- end
-
- assign AlignedAddendE = ZManShifted[4*`NF+5:`NF];
-
-endmodule
-
-module fmaadd(
- input logic [3*`NF+5:0] AlignedAddendE, // Z aligned for addition in U(NF+5.2NF+1)
- input logic [2*`NF+1:0] ProdManE, // the product's mantissa
- input logic PSgnE, ZSgnEffE,// the product and modified Z signs
- input logic KillProdE, // should the product be set to 0
- input logic XZeroE, YZeroE, // is the input zero
- output logic [3*`NF+5:0] SumE, // the positive sum
- output logic NegSumE, // was the sum negitive
- output logic InvZE, // do you invert Z
- output logic [8:0] NormCntE // normalization shift count
-);
- logic [3*`NF+6:0] PreSum, NegPreSum; // possibly negitive sum
- logic [2*`NF+1:0] ProdMan2; // product being added
- logic [3*`NF+6:0] AlignedAddend2; // possibly inverted aligned Z
- logic [3*`NF+6:0] NegProdMan2; // a negated ProdMan2
- logic [8:0] PNormCnt, NNormCnt; // results from the LZA
-
- ///////////////////////////////////////////////////////////////////////////////
- // Addition
- ///////////////////////////////////////////////////////////////////////////////
-
- // Negate Z when doing one of the following opperations:
- // -prod + Z
- // prod - Z
- assign InvZE = ZSgnEffE ^ PSgnE;
-
- // Choose an inverted or non-inverted addend - the one has to be added now for the LZA
- assign AlignedAddend2 = InvZE ? -{1'b0, AlignedAddendE} : {1'b0, AlignedAddendE};
- // Kill the product if the product is too small to effect the addition (determined in fma1.sv)
- assign ProdMan2 = ProdManE&{2*`NF+2{~KillProdE}};
- // Negate ProdMan for LZA and the negitive sum calculation
- assign NegProdMan2 = {{`NF+3{~(XZeroE|YZeroE|KillProdE)}}, -ProdMan2, 2'b0};
-
- // LZAs one for the positive result and one for the negitive
- // - the +1 from inverting causes problems for normalization
- poslza poslza(AlignedAddend2, ProdMan2, PNormCnt);
- neglza neglza({1'b0,AlignedAddendE}, NegProdMan2, NNormCnt);
-
-
- // Do the addition
- // - calculate a positive and negitive sum in parallel
- assign PreSum = AlignedAddend2 + {ProdMan2, 2'b0};
- assign NegPreSum = AlignedAddendE + NegProdMan2;
-
- // Is the sum negitive
- assign NegSumE = PreSum[3*`NF+6];
- // Choose the positive sum and accompanying LZA result.
- assign SumE = NegSumE ? NegPreSum[3*`NF+5:0] : PreSum[3*`NF+5:0];
- assign NormCntE = NegSumE ? NNormCnt : PNormCnt;
-
-endmodule
-
-
-
-
-
-module poslza(
- input logic [3*`NF+6:0] A, // addend
- input logic [2*`NF+1:0] P, // product
- output logic [8:0] PCnt // normalization shift count for the positive result
- );
-
-
- // calculate the propagate (T) and kill (Z) bits
- logic [3*`NF+6:0] T;
- logic [3*`NF+5:0] Z;
- assign T[3*`NF+6:2*`NF+4] = A[3*`NF+6:2*`NF+4];
- assign Z[3*`NF+5:2*`NF+4] = A[3*`NF+5:2*`NF+4];
- assign T[2*`NF+3:2] = A[2*`NF+3:2]^P;
- assign Z[2*`NF+3:2] = A[2*`NF+3:2]|P;
- assign T[1:0] = A[1:0];
- assign Z[1:0] = A[1:0];
-
-
- // Apply function to determine Leading pattern
- logic [3*`NF+6:0] pf;
- assign pf = T^{Z[3*`NF+5:0], 1'b0};
-
- logic [8:0] i;
- always_comb begin
- i = 0;
- while (~pf[3*`NF+6-i] && $unsigned(i) <= $unsigned(3*`NF+6)) i = i+1; // search for leading one
- PCnt = i;
- end
-
-endmodule
-
-module neglza(
- input logic [3*`NF+6:0] A, // addend
- input logic [3*`NF+6:0] P, // product
- output logic [8:0] NCnt // normalization shift count for the negitive result
- );
-
- // calculate the propagate (T) and kill (Z) bits
- logic [3*`NF+6:0] T;
- logic [3*`NF+5:0] Z;
- assign T = A^P;
- assign Z = ~(A[3*`NF+5:0]|P[3*`NF+5:0]);
-
-
- // Apply function to determine Leading pattern
- logic [3*`NF+6:0] f;
- assign f = T^{~Z, 1'b0};
-
- logic [8:0] i;
- always_comb begin
- i = 0;
- while (~f[3*`NF+6-i] && $unsigned(i) <= $unsigned(3*`NF+6)) i = i+1; // search for leading one
- NCnt = i;
- end
-
-endmodule
-
-
-
module normalize(
input logic [3*`NF+5:0] SumM, // the positive sum
input logic [`NE-1:0] ZExpM, // exponent of Z
@@ -566,7 +665,7 @@ module normalize(
assign UfSticky = AddendStickyM | NormSumSticky;
// Determine sum's exponent
- assign SumExp = (SumExpTmp+LZAPlus1+(~|SumExpTmp&SumShifted[3*`NF+6])) & {`NE+2{~(SumZero|ResultDenorm)}};
+ assign SumExp = (SumExpTmp+{12'b0, LZAPlus1}+{12'b0, ~|SumExpTmp&SumShifted[3*`NF+6]}) & {`NE+2{~(SumZero|ResultDenorm)}};
// recalculate if the result is denormalized
assign ResultDenorm = PreResultDenorm&~SumShifted[3*`NF+6]&~SumShifted[3*`NF+7];
@@ -588,7 +687,7 @@ module fmaround(
output logic [`NF-1:0] ResultFrac, // Result fraction
output logic [`NE-1:0] ResultExp, // Result exponent
output logic Sticky, // sticky bit
- output logic Round, Guard, UfRound, UfLSBNormSum // bits needed to calculate rounding
+ output logic Round, Guard, UfLSBNormSum // bits needed to calculate rounding
);
logic LSBNormSum; // bit used for rounding - least significant bit of the normalized sum
logic SubBySmallNum, UfSubBySmallNum; // was there supposed to be a subtraction by a small number
@@ -596,6 +695,7 @@ module fmaround(
logic UfCalcPlus1, CalcMinus1; // do you add or subtract on from the result
logic [`FLEN:0] RoundAdd; // how much to add to the result
logic [`NF-1:0] NormSumTruncated; // the normalized sum trimed to fit the mantissa
+ logic UfRound;
///////////////////////////////////////////////////////////////////////////////
// Rounding
@@ -698,12 +798,11 @@ module fmaflags(
input logic [`NE+1:0] FullResultExp, // ResultExp with bits to determine sign and overflow
input logic [`NE+1:0] SumExp, // exponent of the normalized sum
input logic ZSgnEffM, PSgnM, // the product and modified Z signs
- input logic Round, Guard, UfRound, UfLSBNormSum, Sticky, UfPlus1, // bits used to determine rounding
+ input logic Round, Guard, UfLSBNormSum, Sticky, UfPlus1, // bits used to determine rounding
input logic FmtM, // precision 1 = double 0 = single
output logic Invalid, Overflow, Underflow, // flags used to select the result
output logic [4:0] FMAFlgM // FMA flags
);
- logic [`NE+1:0] MaxExp; // maximum value of the exponent
logic SigNaN; // is an input a signaling NaN
logic UnderflowFlag, Inexact; // flags
@@ -718,7 +817,6 @@ module fmaflags(
// 2) Inf - Inf (unless x or y is NaN)
// 3) 0 * Inf
- // assign MaxExp = FmtM ? {`NE{1'b1}} : {8{1'b1}};
assign SigNaN = XSNaNM | YSNaNM | ZSNaNM;
assign Invalid = SigNaN | ((XInfM || YInfM) & ZInfM & (PSgnM ^ ZSgnEffM) & ~XNaNM & ~YNaNM) | (XZeroM & YInfM) | (YZeroM & XInfM);
diff --git a/wally-pipelined/src/fpu/fpdiv.sv b/wally-pipelined/src/fpu/fpdiv.sv
index a2534149f..571d79c47 100755
--- a/wally-pipelined/src/fpu/fpdiv.sv
+++ b/wally-pipelined/src/fpu/fpdiv.sv
@@ -1,92 +1,84 @@
+///////////////////////////////////////////
//
-// File name : fpdiv
-// Title : Floating-Point Divider/Square-Root
-// project : FPU
-// Library : fpdiv
-// Author(s) : James E. Stine, Jr.
-// Purpose : definition of main unit to floating-point div/sqrt
-// notes :
+// Written: James Stine
+// Modified: 8/1/2018
//
-// Copyright Oklahoma State University
+// Purpose: Floating point divider/square root top unit (Goldschmidt)
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
//
-// Basic Operations
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
//
-// Step 1: Load operands, set flags, and convert SP to DP
-// Step 2: Check for special inputs ( +/- Infinity, NaN)
-// Step 3: Exponent Logic
-// Step 4: Divide/Sqrt using Goldschmidt
-// Step 5: Normalize the result.//
-// Shift left until normalized. Normalized when the value to the
-// left of the binrary point is 1.
-// Step 6: Round the result.//
-// Step 7: Put quotient/remainder onto output.
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
// `timescale 1ps/1ps
module fpdiv (
- input logic clk,
- input logic reset,
- input logic start,
- input logic [63:0] op1, // 1st input operand (A)
- input logic [63:0] op2, // 2nd input operand (B)
- input logic [1:0] rm, // Rounding mode - specify values
- input logic op_type, // Function opcode
- input logic P, // Result Precision (0 for double, 1 for single)
- input logic OvEn, // Overflow trap enabled
- input logic UnEn, // Underflow trap enabled
- output logic done,
- output logic FDivBusyE,
- output logic [63:0] AS_Result, // Result of operation
- output logic [4:0] Flags); // IEEE exception flags
+ input logic clk,
+ input logic reset,
+ input logic start,
+ input logic [63:0] op1,
+ input logic [63:0] op2,
+ input logic [1:0] rm,
+ input logic op_type,
+ input logic P,
+ input logic OvEn,
+ input logic UnEn,
+ input logic XNaNQ,
+ input logic YNaNQ,
+ input logic XZeroQ,
+ input logic YZeroQ,
+ input logic XInfQ,
+ input logic YInfQ,
-
- logic [63:0] Float1;
- logic [63:0] Float2;
+ output logic done,
+ output logic FDivBusyE,
+ output logic [63:0] AS_Result,
+ output logic [4:0] Flags);
- logic [12:0] exp1, exp2, expF;
- logic [12:0] exp_diff, bias;
- logic [13:0] exp_sqrt;
- logic [12:0] exp_s;
- logic [12:0] exp_c;
+ logic [63:0] Float1;
+ logic [63:0] Float2;
- logic [10:0] exponent;
- logic [63:0] Result;
- logic [52:0] mantissaA;
- logic [52:0] mantissaB;
+ logic [12:0] exp1, exp2, expF;
+ logic [12:0] exp_diff, bias;
+ logic [13:0] exp_sqrt;
+ logic [63:0] Result;
+ logic [52:0] mantissaA;
+ logic [52:0] mantissaB;
- logic [2:0] sel_inv;
- logic Invalid;
- logic [4:0] FlagsIn;
+ logic [2:0] sel_inv;
+ logic Invalid;
+ logic [4:0] FlagsIn;
logic signResult;
- logic convert;
- logic sub;
- logic [63:0] q1, qm1, qp1, q0, qm0, qp0;
- logic [63:0] rega_out, regb_out, regc_out, regd_out;
- logic [127:0] regr_out;
- logic [2:0] sel_muxa, sel_muxb;
+ logic [59:0] q1, qm1, qp1, q0, qm0, qp0;
+ logic [59:0] rega_out, regb_out, regc_out, regd_out;
+ logic [119:0] regr_out;
+ logic [2:0] sel_muxa, sel_muxb;
logic sel_muxr;
logic load_rega, load_regb, load_regc, load_regd, load_regr;
-
- logic load_regs;
- logic exp_cout1, exp_cout2;
- logic exp_odd, open;
- // div/sqrt
- // fdiv = 0
- // fsqrt = 1
+ logic load_regs;
+ logic exp_cout1, exp_cout2;
+ logic exp_odd, open;
+
+ // op_type : fdiv=0, fsqrt=1
assign Float1 = op1;
assign Float2 = op_type ? op1 : op2;
-
- // Test for exceptions and return the "Invalid Operation" and
- // "Denormalized" Input Flags. The "sel_inv" is used in
- // the third pipeline stage to select the result. Also, op1_Norm
- // and op2_Norm are one if op1 and op2 are not zero or denormalized.
- // sub is one if the effective operation is subtaction.
- exception_div exc1 (.A(Float1), .B(Float2), .op_type,
- // output:
- .Ztype(sel_inv), .Invalid);
-
+
+ // Exception detection
+ exception_div exc1 (.A(Float1), .B(Float2), .op_type, .Ztype(sel_inv), .Invalid);
+
// Determine Sign/Mantissa
assign signResult = (Float1[63]^Float2[63]);
assign mantissaA = {1'b1, Float1[51:0]};
@@ -96,36 +88,37 @@ module fpdiv (
assign exp2 = {2'b0, Float2[62:52]};
assign bias = {3'h0, 10'h3FF};
// Divide exponent
- assign {exp_cout1, open, exp_diff} = exp1 - exp2 + bias;
+ assign {exp_cout1, open, exp_diff} = {2'b0, exp1} - {2'b0, exp2} + {2'b0, bias};
// Sqrt exponent (check if exponent is odd)
assign exp_odd = Float1[52] ? 1'b0 : 1'b1;
- assign {exp_cout2, exp_sqrt} = {1'b0, exp1} + {4'h0, 10'h3ff} + exp_odd;
+ assign {exp_cout2, exp_sqrt} = {1'b0, exp1} + {4'h0, 10'h3ff} + {13'b0, exp_odd};
// Choose correct exponent
assign expF = op_type ? exp_sqrt[13:1] : exp_diff;
-
+
// Main Goldschmidt/Division Routine
divconv goldy (.q1, .qm1, .qp1, .q0, .qm0, .qp0, .rega_out, .regb_out, .regc_out, .regd_out,
.regr_out, .d(mantissaB), .n(mantissaA), .sel_muxa, .sel_muxb, .sel_muxr,
.reset, .clk, .load_rega, .load_regb, .load_regc, .load_regd,
.load_regr, .load_regs, .P, .op_type, .exp_odd);
-
+
// FSM : control divider
- fsm control (.clk, .reset, .start, .op_type,
- // outputs:
- .done, .load_rega, .load_regb, .load_regc, .load_regd,
- .load_regr, .load_regs, .sel_muxa, .sel_muxb, .sel_muxr,
- .divBusy(FDivBusyE));
+ fsm_fpdiv control (.clk, .reset, .start, .op_type,
+ .done, .load_rega, .load_regb, .load_regc, .load_regd,
+ .load_regr, .load_regs, .sel_muxa, .sel_muxb, .sel_muxr,
+ .divBusy(FDivBusyE));
// Round the mantissa to a 52-bit value, with the leading one
// removed. The rounding units also handles special cases and
// set the exception flags.
rounder_div round1 (.rm, .P, .OvEn, .UnEn, .exp_diff(expF),
- .sel_inv, .Invalid, .SignR(signResult),
- .q1, .qm1, .qp1, .q0, .qm0, .qp0, .regr_out,
- // outputs:
- .Result, .Flags(FlagsIn));
-
+ .sel_inv, .Invalid, .SignR(signResult),
+ .Float1(op1), .Float2(op2),
+ .XNaNQ, .YNaNQ, .XZeroQ, .YZeroQ,
+ .XInfQ, .YInfQ, .op_type,
+ .q1, .qm1, .qp1, .q0, .qm0, .qp0, .regr_out,
+ .Result, .Flags(FlagsIn));
+
// Store the final result and the exception flags in registers.
flopenr #(64) rega (clk, reset, done, Result, AS_Result);
flopenr #(5) regc (clk, reset, done, FlagsIn, Flags);
diff --git a/wally-pipelined/src/fpu/fpdiv_pipe.sv b/wally-pipelined/src/fpu/fpdiv_pipe.sv
new file mode 100755
index 000000000..8a7bc685f
--- /dev/null
+++ b/wally-pipelined/src/fpu/fpdiv_pipe.sv
@@ -0,0 +1,165 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Floating point divider/square root top unit pipelined version (Goldschmidt)
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+module fpdiv_pipe (
+ input logic clk,
+ input logic reset,
+ input logic start,
+ input logic [63:0] op1,
+ input logic [63:0] op2,
+ input logic [1:0] rm,
+ input logic op_type,
+ input logic P,
+ input logic OvEn,
+ input logic UnEn,
+ input logic XNaNQ,
+ input logic YNaNQ,
+ input logic XZeroQ,
+ input logic YZeroQ,
+ input logic XInfQ,
+ input logic YInfQ,
+
+ output logic done,
+ output logic FDivBusyE,
+ output logic load_preload,
+ output logic [63:0] AS_Result,
+ output logic [4:0] Flags);
+
+ supply1 vdd;
+ supply0 vss;
+
+ logic [63:0] Float1;
+ logic [63:0] Float2;
+ logic [63:0] IntValue;
+
+ logic [12:0] exp1, exp2, expF;
+ logic [14:0] exp_pre_diff;
+ logic [12:0] exp_diff, bias;
+ logic [13:0] exp_sqrt;
+
+ logic [63:0] Result;
+ logic [52:0] mantissaA;
+ logic [52:0] mantissaB;
+
+ logic [2:0] sel_inv;
+ logic Invalid;
+ logic [4:0] FlagsIn;
+ logic exp_gt63;
+ logic Sticky_out;
+ logic signResult, sign_corr;
+ logic corr_sign;
+ logic zeroB;
+ logic convert;
+ logic swap;
+ logic sub;
+
+ logic [59:0] q1, qm1, qp1, q0, qm0, qp0;
+ logic [59:0] rega_out, regb_out, regc_out, regd_out;
+ logic [119:0] regr_out;
+ logic [2:0] sel_muxa, sel_muxb;
+ logic sel_muxr;
+ logic load_rega, load_regb, load_regc, load_regd, load_regr;
+ logic load_regp, load_regs;
+
+ logic exp_odd, exp_odd1;
+ logic start1;
+ logic P1;
+ logic op_type1;
+ logic [12:0] expF1;
+ logic [52:0] mantissaA1;
+ logic [52:0] mantissaB1;
+ logic [2:0] sel_inv1;
+ logic signResult1;
+ logic Invalid1;
+
+ // op_type : fdiv=0, fsqrt=1
+ assign Float1 = op1;
+ assign Float2 = op_type ? op1 : op2;
+
+ // Exception detection
+ exception_div exc1 (.A(Float1), .B(Float2), .op_type, .Ztype(sel_inv), .Invalid);
+
+ // Determine Sign/Mantissa
+ assign signResult = ((Float1[63]^Float2[63])&~op_type);
+ assign mantissaA = {vdd, Float1[51:0]};
+ assign mantissaB = {vdd, Float2[51:0]};
+
+ // Perform Exponent Subtraction - expA - expB + Bias
+ assign exp1 = {2'b0, Float1[62:52]};
+ assign exp2 = {2'b0, Float2[62:52]};
+ // bias : DP = 2^{11-1}-1 = 1023
+ assign bias = {3'h0, 10'h3FF};
+ // Divide exponent
+ assign exp_pre_diff = {2'b0, exp1} - {2'b0, exp2} + {2'b0, bias};
+ assign exp_diff = exp_pre_diff[12:0];
+
+ // Sqrt exponent (check if exponent is odd)
+ assign exp_odd = Float1[52] ? 1'b0 : 1'b1;
+ assign exp_sqrt = {1'b0, exp1} + {4'h0, 10'h3ff} + {13'b0, exp_odd};
+ // Choose correct exponent
+ assign expF = op_type ? exp_sqrt[13:1] : exp_diff;
+
+ flopenr #(1) rega (clk, reset, 1'b1, exp_odd, exp_odd1);
+ flopenr #(1) regb (clk, reset, 1'b1, P, P1);
+ flopenr #(1) regc (clk, reset, 1'b1, op_type, op_type1);
+ flopenr #(13) regd (clk, reset, 1'b1, expF, expF1);
+ flopenr #(53) rege (clk, reset, 1'b1, mantissaA, mantissaA1);
+ flopenr #(53) regf (clk, reset, 1'b1, mantissaB, mantissaB1);
+ flopenr #(1) regg (clk, reset, 1'b1, start, start1);
+ flopenr #(3) regh (clk, reset, 1'b1, sel_inv, sel_inv1);
+ flopenr #(1) regj (clk, reset, 1'b1, signResult, signResult1);
+ flopenr #(1) regk (clk, reset, 1'b1, Invalid, Invalid1);
+
+ // Main Goldschmidt/Division Routine
+ divconv_pipe goldy (.q1, .qm1, .qp1, .q0, .qm0, .qp0,
+ .rega_out, .regb_out, .regc_out, .regd_out,
+ .regr_out, .d(mantissaB1), .n(mantissaA1),
+ .sel_muxa, .sel_muxb, .sel_muxr, .reset, .clk,
+ .load_rega, .load_regb, .load_regc, .load_regd,
+ .load_regr, .load_regs, .load_regp,
+ .P(P), .op_type(op_type1), .exp_odd(exp_odd1));
+
+ // FSM : control divider
+ fsm_fpdiv_pipe control (.clk, .reset, .start(start), .op_type(op_type1), .P(P),
+ .done, .load_rega, .load_regb, .load_regc, .load_regd,
+ .load_regr, .load_regs, .load_regp, .load_preload,
+ .sel_muxa, .sel_muxb, .sel_muxr, .divBusy(FDivBusyE));
+
+ // Round the mantissa to a 52-bit value, with the leading one
+ // removed. The rounding units also handles special cases and
+ // set the exception flags.
+ rounder_div round1 (.rm, .P(P), .OvEn(1'b0), .UnEn(1'b0), .exp_diff(expF1),
+ .sel_inv(sel_inv1), .Invalid(Invalid1), .SignR(signResult1),
+ .Float1(op1), .Float2(op2),
+ .XNaNQ, .YNaNQ, .XZeroQ, .YZeroQ,
+ .XInfQ, .YInfQ, .op_type(op_type1),
+ .q1, .qm1, .qp1, .q0, .qm0, .qp0, .regr_out,
+ .Result, .Flags(FlagsIn));
+
+ // Store the final result and the exception flags in registers.
+ flopenr #(64) regl (clk, reset, done, Result, AS_Result);
+ flopenr #(5) regn (clk, reset, done, FlagsIn, Flags);
+
+endmodule // fpdiv_pipe
+
diff --git a/wally-pipelined/src/fpu/fpu.sv b/wally-pipelined/src/fpu/fpu.sv
index cadfafae0..6ce894be4 100755
--- a/wally-pipelined/src/fpu/fpu.sv
+++ b/wally-pipelined/src/fpu/fpu.sv
@@ -1,6 +1,6 @@
///////////////////////////////////////////
//
-// Written: Katherine Parry, Bret Mathis
+// Written: Katherine Parry, James Stine, Brett Mathis
// Modified: 6/23/2021
//
// Purpose: FPU
@@ -25,24 +25,23 @@
`include "wally-config.vh"
module fpu (
- input logic clk,
- input logic reset,
- input logic [2:0] FRM_REGW, // Rounding mode from CSR
- input logic [31:0] InstrD, // instruction from IFU
- input logic [`XLEN-1:0] ReadDataW,// Read data from memory
- input logic [`XLEN-1:0] SrcAE, // Integer input being processed (from IEU)
- input logic [`XLEN-1:0] SrcAM, // Integer input being written into fpreg (from IEU)
- input logic StallE, StallM, StallW, // stall signals from HZU
- input logic FlushE, FlushM, FlushW, // flush signals from HZU
- input logic [4:0] RdE, RdM, RdW, // which FP register to write to (from IEU)
- output logic FRegWriteM, // FP register write enable
- output logic FStallD, // Stall the decode stage
- output logic FWriteIntE, FWriteIntM, FWriteIntW, // integer register write enable
- output logic [`XLEN-1:0] FWriteDataE, // Data to be written to memory
- output logic [`XLEN-1:0] FIntResM, // data to be written to integer register
- output logic FDivBusyE, // Is the divide/sqrt unit busy (stall execute stage)
- output logic IllegalFPUInstrD, // Is the instruction an illegal fpu instruction
- output logic [4:0] SetFflagsM // FMA flags (to privileged unit)
+ input logic clk,
+ input logic reset,
+ input logic [2:0] FRM_REGW, // Rounding mode from CSR
+ input logic [31:0] InstrD, // instruction from IFU
+ input logic [`XLEN-1:0] ReadDataW,// Read data from memory
+ input logic [`XLEN-1:0] SrcAE, // Integer input being processed (from IEU)
+ input logic StallE, StallM, StallW, // stall signals from HZU
+ input logic FlushE, FlushM, FlushW, // flush signals from HZU
+ input logic [4:0] RdM, RdW, // which FP register to write to (from IEU)
+ output logic FRegWriteM, // FP register write enable
+ output logic FStallD, // Stall the decode stage
+ output logic FWriteIntE, FWriteIntM, FWriteIntW, // integer register write enable
+ output logic [`XLEN-1:0] FWriteDataE, // Data to be written to memory
+ output logic [`XLEN-1:0] FIntResM, // data to be written to integer register
+ output logic FDivBusyE, // Is the divide/sqrt unit busy (stall execute stage)
+ output logic IllegalFPUInstrD, // Is the instruction an illegal fpu instruction
+ output logic [4:0] SetFflagsM // FMA flags (to privileged unit)
);
//*** make everything FLEN at some point
@@ -59,338 +58,245 @@ module fpu (
generate if (`F_SUPPORTED | `D_SUPPORTED) begin : fpu
- // control signals
- logic FRegWriteD, FRegWriteE, FRegWriteW; // FP register write enable
- logic [2:0] FrmD, FrmE, FrmM; // FP rounding mode
- logic FmtD, FmtE, FmtM, FmtW; // FP precision 0-single 1-double
- logic FDivStartD, FDivStartE; // Start division or squareroot
- logic FWriteIntD; // Write to integer register
- logic [1:0] FForwardXE, FForwardYE, FForwardZE; // forwarding mux control signals
- logic [1:0] FResultSelD, FResultSelE, FResultSelM, FResultSelW; // Select the result written to FP register
- logic [2:0] FOpCtrlD, FOpCtrlE, FOpCtrlM; // Select which opperation to do in each component
- logic [2:0] FResSelD, FResSelE, FResSelM; // Select one of the results that finish in the memory stage
- logic [1:0] FIntResSelD, FIntResSelE, FIntResSelM; // Select the result written to the integer resister
- logic [4:0] Adr1E, Adr2E, Adr3E; // adresses of each input
+ // control signals
+ logic FRegWriteD, FRegWriteE, FRegWriteW; // FP register write enable
+ logic [2:0] FrmD, FrmE, FrmM; // FP rounding mode
+ logic FmtD, FmtE, FmtM, FmtW; // FP precision 0-single 1-double
+ logic FDivStartD, FDivStartE; // Start division or squareroot
+ logic FWriteIntD; // Write to integer register
+ logic [1:0] FForwardXE, FForwardYE, FForwardZE; // forwarding mux control signals
+ logic [1:0] FResultSelD, FResultSelE; // Select the result written to FP register
+ logic [1:0] FResultSelM, FResultSelW; // Select the result written to FP register
+ logic [2:0] FOpCtrlD, FOpCtrlE; // Select which opperation to do in each component
+ logic [2:0] FResSelD, FResSelE; // Select one of the results that finish in the memory stage
+ logic [1:0] FIntResSelD, FIntResSelE; // Select the result written to the integer resister
+ logic [4:0] Adr1E, Adr2E, Adr3E; // adresses of each input
+
+ // regfile signals
+ logic [63:0] FRD1D, FRD2D, FRD3D; // Read Data from FP register - decode stage
+ logic [63:0] FRD1E, FRD2E, FRD3E; // Read Data from FP register - execute stage
+ logic [63:0] FSrcXE; // Input 1 to the various units (after forwarding)
+ logic [63:0] FPreSrcYE, FSrcYE; // Input 2 to the various units (after forwarding)
+ logic [63:0] FPreSrcZE, FSrcZE; // Input 3 to the various units (after forwarding)
+
+ // unpacking signals
+ logic XSgnE, YSgnE, ZSgnE; // input's sign - execute stage
+ logic XSgnM, YSgnM; // input's sign - memory stage
+ logic [10:0] XExpE, YExpE, ZExpE; // input's exponent - execute stage
+ logic [10:0] XExpM, YExpM, ZExpM; // input's exponent - memory stage
+ logic [52:0] XManE, YManE, ZManE; // input's fraction - execute stage
+ logic [52:0] XManM, YManM, ZManM; // input's fraction - memory stage
+ logic [10:0] BiasE; // bias based on precision (single=7f double=3ff)
+ logic XNaNE, YNaNE, ZNaNE; // is the input a NaN - execute stage
+ logic XNaNM, YNaNM, ZNaNM; // is the input a NaN - memory stage
+ logic XNaNQ, YNaNQ; // is the input a NaN - divide
+ logic XSNaNE, YSNaNE, ZSNaNE; // is the input a signaling NaN - execute stage
+ logic XSNaNM, YSNaNM, ZSNaNM; // is the input a signaling NaN - memory stage
+ logic XDenormE, YDenormE, ZDenormE; // is the input denormalized
+ logic XZeroE, YZeroE, ZZeroE; // is the input zero - execute stage
+ logic XZeroM, YZeroM, ZZeroM; // is the input zero - memory stage
+ logic XZeroQ, YZeroQ; // is the input zero - divide
+ logic XInfE, YInfE, ZInfE; // is the input infinity - execute stage
+ logic XInfM, YInfM, ZInfM; // is the input infinity - memory stage
+ logic XInfQ, YInfQ; // is the input infinity - divide
+ logic XExpMaxE; // is the exponent all ones (max value)
+ logic XNormE; // is normal
+ logic FmtQ;
+ logic FOpCtrlQ;
+
+ // result and flag signals
+ logic [63:0] FDivResM, FDivResW; // divide/squareroot result
+ logic [4:0] FDivFlgM; // divide/squareroot flags
+ logic [63:0] FMAResM, FMAResW; // FMA/multiply result
+ logic [4:0] FMAFlgM; // FMA/multiply result
+ logic [63:0] ReadResW; // read result (load instruction)
+ logic [63:0] CvtFpResE; // add/FP -> FP convert result
+ logic [4:0] CvtFpFlgE; // add/FP -> FP convert flags
+ logic [63:0] CvtResE; // FP <-> int convert result
+ logic [4:0] CvtFlgE; // FP <-> int convert flags //*** trim this
+ logic [63:0] ClassResE; // classify result
+ logic [63:0] CmpResE; // compare result
+ logic CmpNVE; // compare invalid flag (Not Valid)
+ logic [63:0] SgnResE; // sign injection result
+ logic SgnNVE; // sign injection invalid flag (Not Valid)
+ logic [63:0] FResE, FResM, FResW; // selected result that is ready in the memory stage
+ logic [4:0] FFlgE, FFlgM; // selected flag that is ready in the memory stage
+ logic [`XLEN-1:0] FIntResE;
+ logic [63:0] FPUResultW; // final FP result being written to the FP register
+ // other signals
+ logic FDivSqrtDoneE; // is divide done
+ logic [63:0] DivInput1E, DivInput2E; // inputs to divide/squareroot unit
+ logic load_preload; // enable for FF on fpdivsqrt
+ logic [63:0] AlignedSrcAE; // align SrcA to the floating point format
+
+ // DECODE STAGE
+
+ // calculate FP control signals
+ fctrl fctrl (.Funct7D(InstrD[31:25]), .OpD(InstrD[6:0]), .Rs2D(InstrD[24:20]), .Funct3D(InstrD[14:12]), .FRM_REGW,
+ .IllegalFPUInstrD, .FRegWriteD, .FDivStartD, .FResultSelD, .FOpCtrlD, .FResSelD,
+ .FIntResSelD, .FmtD, .FrmD, .FWriteIntD);
- // regfile signals
- logic [63:0] FRD1D, FRD2D, FRD3D; // Read Data from FP register - decode stage
- logic [63:0] FRD1E, FRD2E, FRD3E; // Read Data from FP register - execute stage
- logic [63:0] FSrcXE, FSrcXM; // Input 1 to the various units (after forwarding)
- logic [63:0] FPreSrcYE, FSrcYE; // Input 2 to the various units (after forwarding)
- logic [63:0] FPreSrcZE, FSrcZE; // Input 3 to the various units (after forwarding)
-
- // unpacking signals
- logic XSgnE, YSgnE, ZSgnE; // input's sign - execute stage
- logic XSgnM, YSgnM; // input's sign - memory stage
- logic [10:0] XExpE, YExpE, ZExpE; // input's exponent - execute stage
- logic [10:0] XExpM, YExpM, ZExpM; // input's exponent - memory stage
- logic [52:0] XManE, YManE, ZManE; // input's fraction - execute stage
- logic [52:0] XManM, YManM, ZManM; // input's fraction - memory stage
- logic [10:0] BiasE; // bias based on precision (single=7f double=3ff - max expoent/2)
- logic XNaNE, YNaNE, ZNaNE; // is the input a NaN - execute stage
- logic XNaNM, YNaNM, ZNaNM; // is the input a NaN - memory stage
- logic XSNaNE, YSNaNE, ZSNaNE; // is the input a signaling NaN - execute stage
- logic XSNaNM, YSNaNM, ZSNaNM; // is the input a signaling NaN - memory stage
- logic XDenormE, YDenormE, ZDenormE; // is the input denormalized
- logic XZeroE, YZeroE, ZZeroE; // is the input zero - execute stage
- logic XZeroM, YZeroM, ZZeroM; // is the input zero - memory stage
- logic XInfE, YInfE, ZInfE; // is the input infinity - execute stage
- logic XInfM, YInfM, ZInfM; // is the input infinity - memory stage
- logic XExpMaxE; // is the exponent all ones (max value)
- logic XNormE; // is normal
-
-
- // result and flag signals
- logic [63:0] FDivResM, FDivResW; // divide/squareroot result
- logic [4:0] FDivFlgM, FDivFlgW; // divide/squareroot flags
+ // FP register file
+ fregfile fregfile (.clk, .reset, .we4(FRegWriteW),
+ .a1(InstrD[19:15]), .a2(InstrD[24:20]), .a3(InstrD[31:27]),
+ .a4(RdW), .wd4(FPUResultW),
+ .rd1(FRD1D), .rd2(FRD2D), .rd3(FRD3D));
+
+ // D/E pipeline registers
+ flopenrc #(64) DEReg1(clk, reset, FlushE, ~StallE, FRD1D, FRD1E);
+ flopenrc #(64) DEReg2(clk, reset, FlushE, ~StallE, FRD2D, FRD2E);
+ flopenrc #(64) DEReg3(clk, reset, FlushE, ~StallE, FRD3D, FRD3E);
+ flopenrc #(15) DEAdrReg(clk, reset, FlushE, ~StallE, {InstrD[19:15], InstrD[24:20], InstrD[31:27]},
+ {Adr1E, Adr2E, Adr3E});
+ flopenrc #(17) DECtrlReg3(clk, reset, FlushE, ~StallE,
+ {FRegWriteD, FResultSelD, FResSelD, FIntResSelD, FrmD, FmtD, FOpCtrlD, FWriteIntD, FDivStartD},
+ {FRegWriteE, FResultSelE, FResSelE, FIntResSelE, FrmE, FmtE, FOpCtrlE, FWriteIntE, FDivStartE});
+
+ // EXECUTION STAGE
+ // Hazard unit for FPU
+ // - determines if any forwarding or stalls are needed
+ fhazard fhazard(.Adr1E, .Adr2E, .Adr3E, .FRegWriteM, .FRegWriteW, .RdM, .RdW, .FResultSelM,
+ .FStallD, .FForwardXE, .FForwardYE, .FForwardZE);
+
+ // forwarding muxs
+ mux3 #(64) fxemux (FRD1E, FPUResultW, FResM, FForwardXE, FSrcXE);
+ mux3 #(64) fyemux (FRD2E, FPUResultW, FResM, FForwardYE, FPreSrcYE);
+ mux3 #(64) fzemux (FRD3E, FPUResultW, FResM, FForwardZE, FPreSrcZE);
+ mux3 #(64) fyaddmux (FPreSrcYE, {{32{1'b1}}, 2'b0, {7{1'b1}}, 23'b0},
+ {2'b0, {10{1'b1}}, 52'b0},
+ {FmtE&FOpCtrlE[2]&FOpCtrlE[1]&(FResultSelE==2'b01), ~FmtE&FOpCtrlE[2]&FOpCtrlE[1]&(FResultSelE==2'b01)},
+ FSrcYE); // Force Z to be 0 for multiply instructions
+ // Force Z to be 0 for multiply instructions
+ mux3 #(64) fzmulmux (FPreSrcZE, 64'b0, FPreSrcYE, {FOpCtrlE[2]&FOpCtrlE[1], FOpCtrlE[2]&~FOpCtrlE[1]}, FSrcZE);
+
+ // unpacking unit
+ // - splits FP inputs into their various parts
+ // - does some classifications (SNaN, NaN, Denorm, Norm, Zero, Infifnity)
+ unpacking unpacking (.X(FSrcXE), .Y(FSrcYE), .Z(FSrcZE), .FOpCtrlE, .FmtE,
+ .XSgnE, .YSgnE, .ZSgnE, .XExpE, .YExpE, .ZExpE, .XManE, .YManE, .ZManE,
+ .XNaNE, .YNaNE, .ZNaNE, .XSNaNE, .YSNaNE, .ZSNaNE, .XDenormE, .YDenormE, .ZDenormE,
+ .XZeroE, .YZeroE, .ZZeroE, .BiasE, .XInfE, .YInfE, .ZInfE, .XExpMaxE, .XNormE);
+
+ // FMA
+ // - two stage FMA
+ // - execute stage - multiplication and addend shifting
+ // - memory stage - addition and rounding
+ // - handles FMA and multiply instructions
+ fma fma (.clk, .reset, .FlushM, .StallM,
+ .XSgnE, .YSgnE, .ZSgnE, .XExpE, .YExpE, .ZExpE, .XManE, .YManE, .ZManE,
+ .XDenormE, .YDenormE, .ZDenormE, .XZeroE, .YZeroE, .ZZeroE,
+ .XSgnM, .YSgnM, .XExpM, .YExpM, .ZExpM, .XManM, .YManM, .ZManM,
+ .XNaNM, .YNaNM, .ZNaNM, .XZeroM, .YZeroM, .ZZeroM,
+ .XInfM, .YInfM, .ZInfM, .XSNaNM, .YSNaNM, .ZSNaNM,
+ .FOpCtrlE,
+ .FmtE, .FmtM, .FrmM,
+ .FMAFlgM, .FMAResM);
+
+ // fpdivsqrt using Goldschmidt's iteration
+ flopenrc #(64) reg_input1 (.d({XSgnE, XExpE, XManE[51:0]}), .q(DivInput1E),
+ .clear(FDivSqrtDoneE), .en(load_preload),
+ .reset(reset), .clk(clk));
+ flopenrc #(64) reg_input2 (.d({YSgnE, YExpE, YManE[51:0]}), .q(DivInput2E),
+ .clear(FDivSqrtDoneE), .en(load_preload),
+ .reset(reset), .clk(clk));
+ flopenrc #(8) reg_input3 (.d({XNaNE, YNaNE, XInfE, YInfE, XZeroE, YZeroE, FmtE, FOpCtrlE[0]}),
+ .q({XNaNQ, YNaNQ, XInfQ, YInfQ, XZeroQ, YZeroQ, FmtQ, FOpCtrlQ}),
+ .clear(FDivSqrtDoneE), .en(load_preload),
+ .reset(reset), .clk(clk));
+ fpdiv_pipe fdivsqrt (.op1(DivInput1E), .op2(DivInput2E), .rm(FrmE[1:0]), .op_type(FOpCtrlQ),
+ .reset, .clk(clk), .start(FDivStartE), .P(~FmtQ), .OvEn(1'b1), .UnEn(1'b1),
+ .XNaNQ, .YNaNQ, .XInfQ, .YInfQ, .XZeroQ, .YZeroQ, .load_preload,
+ .FDivBusyE, .done(FDivSqrtDoneE), .AS_Result(FDivResM), .Flags(FDivFlgM));
+
+ // convert from signle to double and vice versa
+ cvtfp cvtfp (.XExpE, .XManE, .XSgnE, .XZeroE, .XDenormE, .XInfE, .XNaNE, .XSNaNE, .FrmE, .FmtE, .CvtFpResE, .CvtFpFlgE);
+
+ // compare unit
+ // - computation is done in one stage
+ // - writes to FP file durring min/max instructions
+ // - other comparisons write a 1 or 0 to the integer register
+ fcmp fcmp (.op1({XSgnE,XExpE,XManE[`NF-1:0]}), .op2({YSgnE,YExpE,YManE[`NF-1:0]}),
+ .FSrcXE, .FSrcYE, .FOpCtrlE,
+ .FmtE, .XNaNE, .YNaNE, .XZeroE, .YZeroE,
+ .Invalid(CmpNVE), .CmpResE);
+
+ // sign injection unit
+ fsgn fsgn (.SgnOpCodeE(FOpCtrlE[1:0]), .XSgnE, .YSgnE, .FSrcXE, .FmtE, .XExpMaxE,
+ .SgnNVE, .SgnResE);
+
+ // classify
+ fclassify fclassify (.XSgnE, .XDenormE, .XZeroE, .XNaNE, .XInfE, .XNormE,
+ .XSNaNE, .ClassResE);
+
+ // Convert
+ fcvt fcvt (.XSgnE, .XExpE, .XManE, .XZeroE, .XNaNE, .XInfE, .XDenormE, .BiasE, .SrcAE, .FOpCtrlE, .FmtE, .FrmE,
+ .CvtResE, .CvtFlgE);
+
+ // data to be stored in memory - to IEU
+ // - FP uses NaN-blocking format
+ // - if there are any unsused bits the most significant bits are filled with 1s
+ assign FWriteDataE = FSrcYE[`XLEN-1:0];
+
+ // Align SrcA to MSB when single precicion
+ mux2 #(64) SrcAMux({{32{1'b1}}, SrcAE[31:0]}, {{64-`XLEN{1'b1}}, SrcAE}, FmtE, AlignedSrcAE);
+
+ // select a result that may be written to the FP register
+ mux5 #(64) FResMux(AlignedSrcAE, SgnResE, CmpResE, CvtResE, CvtFpResE, FResSelE, FResE);
+ mux5 #(5) FFlgMux(5'b0, {4'b0, SgnNVE}, {4'b0, CmpNVE}, CvtFlgE, CvtFpFlgE, FResSelE, FFlgE);
+
+ // select the result that may be written to the integer register - to IEU
+ mux4 #(`XLEN) IntResMux(CmpResE[`XLEN-1:0], FSrcXE[`XLEN-1:0], ClassResE[`XLEN-1:0],
+ CvtResE[`XLEN-1:0], FIntResSelE, FIntResE);
+
+ // E/M pipe registers
+
+ // flopenrc #(64) EMFpReg1(clk, reset, FlushM, ~StallM, FSrcXE, FSrcXM);
+ flopenrc #(65) EMFpReg2 (clk, reset, FlushM, ~StallM, {XSgnE,XExpE,XManE}, {XSgnM,XExpM,XManM});
+ flopenrc #(65) EMFpReg3 (clk, reset, FlushM, ~StallM, {YSgnE,YExpE,YManE}, {YSgnM,YExpM,YManM});
+ flopenrc #(64) EMFpReg4 (clk, reset, FlushM, ~StallM, {ZExpE,ZManE}, {ZExpM,ZManM});
+ flopenrc #(12) EMFpReg5 (clk, reset, FlushM, ~StallM,
+ {XZeroE, YZeroE, ZZeroE, XInfE, YInfE, ZInfE, XNaNE, YNaNE, ZNaNE, XSNaNE, YSNaNE, ZSNaNE},
+ {XZeroM, YZeroM, ZZeroM, XInfM, YInfM, ZInfM, XNaNM, YNaNM, ZNaNM, XSNaNM, YSNaNM, ZSNaNM});
+ flopenrc #(64) EMRegCmpRes (clk, reset, FlushM, ~StallM, FResE, FResM);
+ flopenrc #(5) EMRegCmpFlg (clk, reset, FlushM, ~StallM, FFlgE, FFlgM);
+ flopenrc #(`XLEN) EMRegSgnRes (clk, reset, FlushM, ~StallM, FIntResE, FIntResM);
+ flopenrc #(8) EMCtrlReg (clk, reset, FlushM, ~StallM,
+ {FRegWriteE, FResultSelE, FrmE, FmtE, FWriteIntE},
+ {FRegWriteM, FResultSelM, FrmM, FmtM, FWriteIntM});
+
+ // BEGIN MEMORY STAGE
+
+ // FPU flag selection - to privileged
+ mux4 #(5) FPUFlgMux (5'b0, FMAFlgM, FDivFlgM, FFlgM, FResultSelW, SetFflagsM);
- logic [63:0] FMAResM, FMAResW; // FMA/multiply result
- logic [4:0] FMAFlgM, FMAFlgW; // FMA/multiply result
-
- logic [63:0] ReadResW; // read result (load instruction)
+ // M/W pipe registers
+ flopenrc #(64) MWRegFma(clk, reset, FlushW, ~StallW, FMAResM, FMAResW);
+ flopenrc #(64) MWRegDiv(clk, reset, FlushW, ~StallW, FDivResM, FDivResW);
+ flopenrc #(64) MWRegClass(clk, reset, FlushW, ~StallW, FResM, FResW);
+ flopenrc #(5) MWCtrlReg(clk, reset, FlushW, ~StallW,
+ {FRegWriteM, FResultSelM, FmtM, FWriteIntM},
+ {FRegWriteW, FResultSelW, FmtW, FWriteIntW});
+
+ // BEGIN WRITEBACK STAGE
+
+ // put ReadData into NaN-blocking format
+ // - if there are any unsused bits the most significant bits are filled with 1s
+ // - for load instruction
+ mux2 #(64) ReadResMux ({{32{1'b1}}, ReadDataW[31:0]}, {{64-`XLEN{1'b1}}, ReadDataW}, FmtW, ReadResW);
+
+ // select the result to be written to the FP register
+ mux4 #(64) FPUResultMux (ReadResW, FMAResW, FDivResW, FResW, FResultSelW, FPUResultW);
- logic [63:0] CvtFpResE, CvtFpResM, CvtFpResW; // add/FP -> FP convert result
- logic [4:0] CvtFpFlgE, CvtFpFlgM, CvtFpFlgW; // add/FP -> FP convert flags
-
- logic [63:0] CvtResE, CvtResM; // FP <-> int convert result
- logic [4:0] CvtFlgE, CvtFlgM; // FP <-> int convert flags //*** trim this
-
- logic [63:0] ClassResE, ClassResM; // classify result
-
- logic [63:0] CmpResE, CmpResM; // compare result
- logic CmpNVE, CmpNVM; // compare invalid flag (Not Valid)
-
- logic [63:0] SgnResE, SgnResM; // sign injection result
- logic SgnNVE, SgnNVM; // sign injection invalid flag (Not Valid)
-
- logic [63:0] FResE, FResM, FResW; // selected result that is ready in the memory stage
- logic [4:0] FFlgE, FFlgM; // selected flag that is ready in the memory stage
-
- logic [`XLEN-1:0] FIntResE;
-
- logic [63:0] FPUResultW; // final FP result being written to the FP register
-
- // other signals
- logic FDivSqrtDoneE; // is divide done
- logic [63:0] DivInput1E, DivInput2E; // inputs to divide/squareroot unit
- logic FDivClk; // clock for divide/squareroot unit
- logic [63:0] AlignedSrcAE; // align SrcA to the floating point format
-
-
-
-
-
- ////////////////////////////////////////////////////////////////////////////////////////
- //DECODE STAGE
- ////////////////////////////////////////////////////////////////////////////////////////
-
-
-
- // calculate FP control signals
- fctrl fctrl (.Funct7D(InstrD[31:25]), .OpD(InstrD[6:0]), .Rs2D(InstrD[24:20]), .Funct3D(InstrD[14:12]), .FRM_REGW,
- // outputs:
- .IllegalFPUInstrD, .FRegWriteD, .FDivStartD, .FResultSelD, .FOpCtrlD, .FResSelD,
- .FIntResSelD, .FmtD, .FrmD, .FWriteIntD);
-
- // FP register file
- // - can read 3 registers and write 1 register every cycle
- fregfile fregfile (.clk, .reset, .we4(FRegWriteW),
- .a1(InstrD[19:15]), .a2(InstrD[24:20]), .a3(InstrD[31:27]), .a4(RdW),
- .wd4(FPUResultW),
- // outputs:
- .rd1(FRD1D), .rd2(FRD2D), .rd3(FRD3D));
-
-
-
-
-
- ////////////////////////////////////////////////////////////////////////////////////////
- // D/E pipeline registers
- ////////////////////////////////////////////////////////////////////////////////////////
-
- flopenrc #(64) DEReg1(clk, reset, FlushE, ~StallE, FRD1D, FRD1E);
- flopenrc #(64) DEReg2(clk, reset, FlushE, ~StallE, FRD2D, FRD2E);
- flopenrc #(64) DEReg3(clk, reset, FlushE, ~StallE, FRD3D, FRD3E);
- flopenrc #(15) DEAdrReg(clk, reset, FlushE, ~StallE, {InstrD[19:15], InstrD[24:20], InstrD[31:27]},
- {Adr1E, Adr2E, Adr3E});
- flopenrc #(17) DECtrlReg3(clk, reset, FlushE, ~StallE,
- {FRegWriteD, FResultSelD, FResSelD, FIntResSelD, FrmD, FmtD, FOpCtrlD, FWriteIntD, FDivStartD},
- {FRegWriteE, FResultSelE, FResSelE, FIntResSelE, FrmE, FmtE, FOpCtrlE, FWriteIntE, FDivStartE});
-
-
-
-
-
-
-
- ////////////////////////////////////////////////////////////////////////////////////////
- //EXECUTION STAGE
- ////////////////////////////////////////////////////////////////////////////////////////
-
-
- // Hazard unit for FPU
- // - determines if any forwarding or stalls are needed
- fhazard fhazard(.Adr1E, .Adr2E, .Adr3E, .FRegWriteM, .FRegWriteW, .RdM, .RdW, .FResultSelM,
- // outputs:
- .FStallD, .FForwardXE, .FForwardYE, .FForwardZE);
-
-
- // forwarding muxs
- mux3 #(64) fxemux(FRD1E, FPUResultW, FResM, FForwardXE, FSrcXE);
- mux3 #(64) fyemux(FRD2E, FPUResultW, FResM, FForwardYE, FPreSrcYE);
- mux3 #(64) fzemux(FRD3E, FPUResultW, FResM, FForwardZE, FPreSrcZE);
- mux3 #(64) fyaddmux(FPreSrcYE, {{32{1'b1}}, 2'b0, {7{1'b1}}, 23'b0}, {2'b0, {10{1'b1}}, 52'b0}, {FmtE&FOpCtrlE[2]&FOpCtrlE[1]&(FResultSelE==3'b01), ~FmtE&FOpCtrlE[2]&FOpCtrlE[1]&(FResultSelE==3'b01)}, FSrcYE); // Force Z to be 0 for multiply instructions
- mux3 #(64) fzmulmux(FPreSrcZE, 64'b0, FPreSrcYE, {FOpCtrlE[2]&FOpCtrlE[1], FOpCtrlE[2]&~FOpCtrlE[1]}, FSrcZE); // Force Z to be 0 for multiply instructions
-
-
- // unpacking unit
- // - splits FP inputs into their various parts
- // - does some classifications (SNaN, NaN, Denorm, Norm, Zero, Infifnity)
- unpacking unpacking(.X(FSrcXE), .Y(FSrcYE), .Z(FSrcZE), .FOpCtrlE, .FmtE,
- // outputs:
- .XSgnE, .YSgnE, .ZSgnE, .XExpE, .YExpE, .ZExpE, .XManE, .YManE, .ZManE,
- .XNaNE, .YNaNE, .ZNaNE, .XSNaNE, .YSNaNE, .ZSNaNE, .XDenormE, .YDenormE, .ZDenormE,
- .XZeroE, .YZeroE, .ZZeroE, .BiasE, .XInfE, .YInfE, .ZInfE, .XExpMaxE, .XNormE);
-
- // FMA
- // - two stage FMA
- // - execute stage - multiplication and addend shifting
- // - memory stage - addition and rounding
- // - handles FMA and multiply instructions
- // - contains some E/M pipleine registers
- // *** currently handles FLEN and 32 bits(dont know if 32 works with 128 - easy to fix) - change to handle only the supported formats
- fma fma (.clk, .reset, .FlushM, .StallM,
- .XSgnE, .YSgnE, .ZSgnE, .XExpE, .YExpE, .ZExpE, .XManE, .YManE, .ZManE,
- .XDenormE, .YDenormE, .ZDenormE, .XZeroE, .YZeroE, .ZZeroE, .BiasE,
- .XSgnM, .YSgnM, .XExpM, .YExpM, .ZExpM, .XManM, .YManM, .ZManM,
- .XNaNM, .YNaNM, .ZNaNM, .XZeroM, .YZeroM, .ZZeroM,
- .XInfM, .YInfM, .ZInfM, .XSNaNM, .YSNaNM, .ZSNaNM,
- .FOpCtrlE,
- .FmtE, .FmtM, .FrmM,
- // outputs:
- .FMAFlgM, .FMAResM);
-
- // clock gater
- // - creates a clock that only runs durring divide/sqrt instructions
- // - using the seperate clock gives the divide/sqrt unit some to get set up
- // *** the module says not to use in synthisis
- clockgater fpdivclkg(.E(FDivStartE),
- .SE(1'b0),
- .CLK(clk),
- .ECLK(FDivClk));
-
- // capture the inputs for divide/sqrt
- // - if not captured any forwarded inputs will change durring computation
- // - this problem is caused by stalling the execute stage
- // - the other units don't have this problem, only div/sqrt stalls the execute stage
- flopenrc #(64) reg_input1 (.d({XSgnE, XExpE, XManE[51:0]}), .q(DivInput1E),
- .en(1'b1), .clear(FDivSqrtDoneE),
- .reset(reset), .clk(FDivBusyE));
- flopenrc #(64) reg_input2 (.d({YSgnE, YExpE, YManE[51:0]}), .q(DivInput2E),
- .en(1'b1), .clear(FDivSqrtDoneE),
- .reset(reset), .clk(FDivBusyE));
-
- // output for store instructions
- //*** change to use the unpacking unit if possible
- fpdiv fdivsqrt (.op1(DivInput1E), .op2(DivInput2E), .rm(FrmE[1:0]), .op_type(FOpCtrlE[0]),
- .reset, .clk(FDivClk), .start(FDivStartE), .P(~FmtE), .OvEn(1'b1), .UnEn(1'b1),
- // outputs:
- .FDivBusyE, .done(FDivSqrtDoneE), .AS_Result(FDivResM), .Flags(FDivFlgM));
-
- // convert from signle to double and vice versa
- cvtfp cvtfp (.XExpE, .XManE, .XSgnE, .XZeroE, .XDenormE, .XInfE, .XNaNE, .XSNaNE, .FrmE, .FmtE, .CvtFpResE, .CvtFpFlgE);
-
- // compare unit
- // - computation is done in one stage
- // - writes to FP file durring min/max instructions
- // - other comparisons write a 1 or 0 to the integer register
- fcmp fcmp (.op1({XSgnE,XExpE,XManE[`NF-1:0]}), .op2({YSgnE,YExpE,YManE[`NF-1:0]}),
- .FSrcXE, .FSrcYE, .FOpCtrlE,
- .FmtE, .XNaNE, .YNaNE, .XZeroE, .YZeroE,
- // outputs:
- .Invalid(CmpNVE), .CmpResE);
-
- // sign injection unit
- // - computation is done in one stage
- fsgn fsgn (.SgnOpCodeE(FOpCtrlE[1:0]), .XSgnE, .YSgnE, .FSrcXE, .FmtE, .XExpMaxE,
- // outputs:
- .SgnNVE, .SgnResE);
-
- // classify
- // - computation is done in one stage
- // - most of the work is done in the unpacking unit
- // - result is written to the integer register
- fclassify fclassify (.XSgnE, .XDenormE, .XZeroE, .XNaNE, .XInfE, .XNormE,
- // outputs:
- .XSNaNE, .ClassResE);
-
- fcvt fcvt (.XSgnE, .XExpE, .XManE, .XZeroE, .XNaNE, .XInfE, .XDenormE, .BiasE, .SrcAE, .FOpCtrlE, .FmtE, .FrmE,
- // outputs:
- .CvtResE, .CvtFlgE);
-
- // data to be stored in memory - to IEU
- // - FP uses NaN-blocking format
- // - if there are any unsused bits the most significant bits are filled with 1s
- assign FWriteDataE = FSrcYE[`XLEN-1:0];
-
-
- // Align SrcA to MSB when single precicion
- mux2 #(64) SrcAMux({{32{1'b1}}, SrcAE[31:0]}, {{64-`XLEN{1'b1}}, SrcAE}, FmtE, AlignedSrcAE);
-
- // select a result that may be written to the FP register
- mux5 #(64) FResMux(AlignedSrcAE, SgnResE, CmpResE, CvtResE, CvtFpResE, FResSelE, FResE);
- mux5 #(5) FFlgMux(5'b0, {4'b0, SgnNVE}, {4'b0, CmpNVE}, CvtFlgE, CvtFpFlgE, FResSelE, FFlgE);
-
- // select the result that may be written to the integer register - to IEU
- mux4 #(`XLEN) IntResMux(CmpResE[`XLEN-1:0], FSrcXE[`XLEN-1:0], ClassResE[`XLEN-1:0], CvtResE[`XLEN-1:0], FIntResSelE, FIntResE);
-
-
-
- //***will synth remove registers of values that are always zero?
- ////////////////////////////////////////////////////////////////////////////////////////
- // E/M pipe registers
- ////////////////////////////////////////////////////////////////////////////////////////
-
- // flopenrc #(64) EMFpReg1(clk, reset, FlushM, ~StallM, FSrcXE, FSrcXM);
- flopenrc #(65) EMFpReg2(clk, reset, FlushM, ~StallM, {XSgnE,XExpE,XManE}, {XSgnM,XExpM,XManM});
- flopenrc #(65) EMFpReg3(clk, reset, FlushM, ~StallM, {YSgnE,YExpE,YManE}, {YSgnM,YExpM,YManM});
- flopenrc #(64) EMFpReg4(clk, reset, FlushM, ~StallM, {ZExpE,ZManE}, {ZExpM,ZManM});
- flopenrc #(12) EMFpReg5(clk, reset, FlushM, ~StallM,
- {XZeroE, YZeroE, ZZeroE, XInfE, YInfE, ZInfE, XNaNE, YNaNE, ZNaNE, XSNaNE, YSNaNE, ZSNaNE},
- {XZeroM, YZeroM, ZZeroM, XInfM, YInfM, ZInfM, XNaNM, YNaNM, ZNaNM, XSNaNM, YSNaNM, ZSNaNM});
-
- flopenrc #(64) EMRegCmpRes(clk, reset, FlushM, ~StallM, FResE, FResM);
- flopenrc #(5) EMRegCmpFlg(clk, reset, FlushM, ~StallM, FFlgE, FFlgM);
-
- flopenrc #(`XLEN) EMRegSgnRes(clk, reset, FlushM, ~StallM, FIntResE, FIntResM);
- // flopenrc #(1) EMRegSgnFlg(clk, reset, FlushM, ~StallM, SgnNVE, SgnNVM);
-
- //flopenrc #(64) EMRegCvtFpRes(clk, reset, FlushM, ~StallM, CvtFpResE, CvtFpResM);
- //flopenrc #(5) EMRegCvtFpFlg(clk, reset, FlushM, ~StallM, CvtFpFlgE, CvtFpFlgM);
-
- // flopenrc #(64) EMRegCvtRes(clk, reset, FlushM, ~StallM, CvtResE, CvtResM);
- // flopenrc #(5) EMRegCvtFlg(clk, reset, FlushM, ~StallM, CvtFlgE, CvtFlgM);
-
- // flopenrc #(64) EMRegClass(clk, reset, FlushM, ~StallM, ClassResE, ClassResM);
-
- flopenrc #(11) EMCtrlReg(clk, reset, FlushM, ~StallM,
- {FRegWriteE, FResultSelE, FrmE, FmtE, FOpCtrlE, FWriteIntE},
- {FRegWriteM, FResultSelM, FrmM, FmtM, FOpCtrlM, FWriteIntM});
-
-
-
-
-
-
- ////////////////////////////////////////////////////////////////////////////////////////
- //BEGIN MEMORY STAGE
- ////////////////////////////////////////////////////////////////////////////////////////
-
-
- // FPU flag selection - to privileged
- mux4 #(5) FPUFlgMux(5'b0, FMAFlgM, FDivFlgM, FFlgM, FResultSelW, SetFflagsM);
-
-
-
-
-
- ////////////////////////////////////////////////////////////////////////////////////////
- // M/W pipe registers
- ////////////////////////////////////////////////////////////////////////////////////////
- flopenrc #(64) MWRegFma(clk, reset, FlushW, ~StallW, FMAResM, FMAResW);
- flopenrc #(64) MWRegDiv(clk, reset, FlushW, ~StallW, FDivResM, FDivResW);
- flopenrc #(64) MWRegAdd(clk, reset, FlushW, ~StallW, CvtFpResM, CvtFpResW);
- flopenrc #(64) MWRegClass(clk, reset, FlushW, ~StallW, FResM, FResW);
- flopenrc #(5) MWCtrlReg(clk, reset, FlushW, ~StallW,
- {FRegWriteM, FResultSelM, FmtM, FWriteIntM},
- {FRegWriteW, FResultSelW, FmtW, FWriteIntW});
-
-
-
-
- ////////////////////////////////////////////////////////////////////////////////////////
- // BEGIN WRITEBACK STAGE
- ////////////////////////////////////////////////////////////////////////////////////////
-
- // put ReadData into NaN-blocking format
- // - if there are any unsused bits the most significant bits are filled with 1s
- // - for load instruction
- mux2 #(64) ReadResMux({{32{1'b1}}, ReadDataW[31:0]}, {{64-`XLEN{1'b1}}, ReadDataW}, FmtW, ReadResW);
-
- // select the result to be written to the FP register
- mux4 #(64) FPUResultMux(ReadResW, FMAResW, FDivResW, FResW, FResultSelW, FPUResultW);
-
-
end else begin // no F_SUPPORTED or D_SUPPORTED; tie outputs low
- assign FStallD = 0;
- assign FWriteIntE = 0;
- assign FWriteIntM = 0;
- assign FWriteIntW = 0;
- assign FWriteDataE = 0;
- assign FIntResM = 0;
- assign FDivBusyE = 0;
- assign IllegalFPUInstrD = 1;
- assign SetFflagsM = 0;
+ assign FStallD = 0;
+ assign FWriteIntE = 0;
+ assign FWriteIntM = 0;
+ assign FWriteIntW = 0;
+ assign FWriteDataE = 0;
+ assign FIntResM = 0;
+ assign FDivBusyE = 0;
+ assign IllegalFPUInstrD = 1;
+ assign SetFflagsM = 0;
end
endgenerate
diff --git a/wally-pipelined/src/fpu/fregfile.sv b/wally-pipelined/src/fpu/fregfile.sv
index 4b001bc93..fd8e0f608 100644
--- a/wally-pipelined/src/fpu/fregfile.sv
+++ b/wally-pipelined/src/fpu/fregfile.sv
@@ -1,10 +1,9 @@
///////////////////////////////////////////
-// regfile.sv
//
// Written: David_Harris@hmc.edu 9 January 2021
-// Modified:
+// Modified: James Stine
//
-// Purpose: 4-port register file
+// Purpose: 3-port output register file
//
// A component of the Wally configurable RISC-V project.
//
@@ -26,22 +25,20 @@
`include "wally-config.vh"
module fregfile (
- input logic clk, reset,
- input logic we4,
- input logic [ 4:0] a1, a2, a3, a4,
- input logic [63:0] wd4,
+ input logic clk, reset,
+ input logic we4,
+ input logic [4:0] a1, a2, a3, a4,
+ input logic [63:0] wd4,
output logic [63:0] rd1, rd2, rd3);
-
- logic [63:0] rf[31:0];
- integer i;
-
- // three ported register file
- // read three ports combinationally (A1/RD1, A2/RD2, A3/RD3)
- // write fourth port on rising edge of clock (A4/WD4/WE4)
- // write occurs on falling edge of clock
-
- // reset is intended for simulation only, not synthesis
-
+
+ logic [63:0] rf[31:0];
+ integer i;
+
+ // three ported register file
+ // read three ports combinationally (A1/RD1, A2/RD2, A3/RD3)
+ // write fourth port on rising edge of clock (A4/WD4/WE4)
+ // write occurs on falling edge of clock
+
always_ff @(negedge clk or posedge reset)
if (reset) for(i=0; i<32; i++) rf[i] <= 0;
else if (we4) rf[a4] <= wd4;
diff --git a/wally-pipelined/src/fpu/fsm.sv b/wally-pipelined/src/fpu/fsm.sv
deleted file mode 100755
index 00f959930..000000000
--- a/wally-pipelined/src/fpu/fsm.sv
+++ /dev/null
@@ -1,488 +0,0 @@
-module fsm (
-
- input logic clk,
- input logic reset,
- input logic start,
- input logic op_type,
- output logic done, // End of cycles
- output logic load_rega, // enable for regA
- output logic load_regb, // enable for regB
- output logic load_regc, // enable for regC
- output logic load_regd, // enable for regD
- output logic load_regr, // enable for rem
- output logic load_regs, // enable for q,qm,qp
- output logic [2:0] sel_muxa, // Select muxA
- output logic [2:0] sel_muxb, // Select muxB
- output logic sel_muxr, // Select rem mux
- output logic divBusy // calculation is happening
- );
-
-
- reg [4:0] CURRENT_STATE;
- reg [4:0] NEXT_STATE;
-
- parameter [4:0]
- S0=5'd0, S1=5'd1, S2=5'd2,
- S3=5'd3, S4=5'd4, S5=5'd5,
- S6=5'd6, S7=5'd7, S8=5'd8,
- S9=5'd9, S10=5'd10,
- S13=5'd13, S14=5'd14, S15=5'd15,
- S16=5'd16, S17=5'd17, S18=5'd18,
- S19=5'd19, S20=5'd20, S21=5'd21,
- S22=5'd22, S23=5'd23, S24=5'd24,
- S25=5'd25, S26=5'd26, S27=5'd27,
- S28=5'd28, S29=5'd29, S30=5'd30;
-
- always @(negedge clk)
- begin
- if(reset==1'b1)
- CURRENT_STATE=S0;
- else
- CURRENT_STATE=NEXT_STATE;
- end
-
- always @(*)
- begin
- case(CURRENT_STATE)
- S0: // iteration 0
- begin
- if (start==1'b0)
- begin
- done = 1'b0;
- divBusy = 1'b0;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S0;
- end
- else if (start==1'b1 && op_type==1'b0)
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b1;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b001;
- sel_muxb = 3'b001;
- sel_muxr = 1'b0;
- NEXT_STATE = S1;
- end // if (start==1'b1 && op_type==1'b0)
- else if (start==1'b1 && op_type==1'b1)
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b1;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b010;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S13;
- end
- else
- begin
- done = 1'b0;
- divBusy = 1'b0;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S0;
- end
- end // case: S0
- S1:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b1;
- load_regb = 1'b0;
- load_regc = 1'b1;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b010;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S2;
- end
- S2: // iteration 1
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b1;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b011;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S3;
- end
- S3:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b1;
- load_regb = 1'b0;
- load_regc = 1'b1;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b010;
- sel_muxr = 1'b0;
- NEXT_STATE = S4;
- end
- S4: // iteration 2
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b1;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b011;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S5;
- end
- S5:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b1;
- load_regb = 1'b0;
- load_regc = 1'b1;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b010;
- sel_muxr = 1'b0; // add
- NEXT_STATE = S6;
- end
- S6: // iteration 3
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b1;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b011;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S8;
- end
- S7:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b1;
- load_regb = 1'b0;
- load_regc = 1'b1;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b010;
- sel_muxr = 1'b0;
- NEXT_STATE = S8;
- end // case: S7
- S8: // q,qm,qp
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b1;
- sel_muxa = 3'b000;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S9;
- end
- S9: // rem
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b1;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b000;
- sel_muxr = 1'b1;
- NEXT_STATE = S10;
- end
- S10: // done
- begin
- done = 1'b1;
- divBusy = 1'b0;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S0;
- end
- S13: // start of sqrt path
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b1;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b010;
- sel_muxb = 3'b001;
- sel_muxr = 1'b0;
- NEXT_STATE = S14;
- end
- S14:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b1;
- load_regb = 1'b0;
- load_regc = 1'b1;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b001;
- sel_muxb = 3'b100;
- sel_muxr = 1'b0;
- NEXT_STATE = S15;
- end
- S15: // iteration 1
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b1;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b011;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S16;
- end
- S16:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b1;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S17;
- end
- S17:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b1;
- load_regb = 1'b0;
- load_regc = 1'b1;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b100;
- sel_muxb = 3'b010;
- sel_muxr = 1'b0;
- NEXT_STATE = S18;
- end
- S18: // iteration 2
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b1;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b011;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S19;
- end
- S19:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b1;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S20;
- end
- S20:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b1;
- load_regb = 1'b0;
- load_regc = 1'b1;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b100;
- sel_muxb = 3'b010;
- sel_muxr = 1'b0;
- NEXT_STATE = S21;
- end
- S21: // iteration 3
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b1;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b011;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S22;
- end
- S22:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b1;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b011;
- sel_muxr = 1'b0;
- NEXT_STATE = S23;
- end
- S23:
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b1;
- load_regb = 1'b0;
- load_regc = 1'b1;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b100;
- sel_muxb = 3'b010;
- sel_muxr = 1'b0;
- NEXT_STATE = S24;
- end
- S24: // q,qm,qp
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b1;
- sel_muxa = 3'b000;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S25;
- end
- S25: // rem
- begin
- done = 1'b0;
- divBusy = 1'b1;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b1;
- load_regs = 1'b0;
- sel_muxa = 3'b011;
- sel_muxb = 3'b110;
- sel_muxr = 1'b1;
- NEXT_STATE = S26;
- end
- S26: // done
- begin
- done = 1'b1;
- divBusy = 1'b0;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S0;
- end
- default:
- begin
- done = 1'b0;
- divBusy = 1'b0;
- load_rega = 1'b0;
- load_regb = 1'b0;
- load_regc = 1'b0;
- load_regd = 1'b0;
- load_regr = 1'b0;
- load_regs = 1'b0;
- sel_muxa = 3'b000;
- sel_muxb = 3'b000;
- sel_muxr = 1'b0;
- NEXT_STATE = S0;
- end
- endcase // case(CURRENT_STATE)
- end // always @ (CURRENT_STATE or X)
-
-endmodule // fsm
diff --git a/wally-pipelined/src/fpu/fsm_fpdiv.sv b/wally-pipelined/src/fpu/fsm_fpdiv.sv
new file mode 100755
index 000000000..14358758a
--- /dev/null
+++ b/wally-pipelined/src/fpu/fsm_fpdiv.sv
@@ -0,0 +1,532 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 9/28/2021
+//
+// Purpose: FSM for floating point divider/square root unit (Goldschmidt)
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+module fsm_fpdiv (
+ input logic clk,
+ input logic reset,
+ input logic start,
+ input logic op_type,
+ output logic done,
+ output logic load_rega,
+ output logic load_regb,
+ output logic load_regc,
+ output logic load_regd,
+ output logic load_regr,
+ output logic load_regs,
+ output logic [2:0] sel_muxa,
+ output logic [2:0] sel_muxb,
+ output logic sel_muxr,
+ output logic divBusy
+ );
+
+ typedef enum logic [4:0] {S0, S1, S2, S3, S4, S5, S6, S7, S8, S9,
+ S10, S11, S12, S13, S14, S15, S16, S17, S18, S19,
+ S20, S21, S22, S23, S24, S25, S26, S27, S28, S29,
+ S30} statetype;
+
+ statetype current_state, next_state;
+
+ always @(posedge clk)
+ begin
+ if (reset == 1'b1)
+ current_state = S0;
+ else
+ current_state = next_state;
+ end
+
+ always @(*)
+ begin
+ case(current_state)
+ S0: // iteration 0
+ begin
+ if (start==1'b0)
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ else if (start==1'b1 && op_type==1'b0)
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b001;
+ sel_muxb = 3'b001;
+ sel_muxr = 1'b0;
+ next_state = S1;
+ end // if (start==1'b1 && op_type==1'b0)
+ else if (start==1'b1 && op_type==1'b1)
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S13;
+ end
+ else
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ end // case: S0
+ S1:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S2;
+ end
+ S2: // iteration 1
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S3;
+ end
+ S3:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S4;
+ end
+ S4: // iteration 2
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S5;
+ end
+ S5:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0; // add
+ next_state = S6;
+ end
+ S6: // iteration 3
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S8;
+ end
+ S7:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S8;
+ end // case: S7
+ S8: // q,qm,qp
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S9;
+ end
+ S9: // rem
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b1;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b1;
+ next_state = S10;
+ end
+ S10: // done
+ begin
+ done = 1'b1;
+ divBusy = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S11;
+ end // case: S10
+ S11: // done
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ S13: // start of sqrt path
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b001;
+ sel_muxr = 1'b0;
+ next_state = S14;
+ end
+ S14:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b001;
+ sel_muxb = 3'b100;
+ sel_muxr = 1'b0;
+ next_state = S15;
+ end
+ S15: // iteration 1
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S16;
+ end
+ S16:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S17;
+ end
+ S17:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b100;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S18;
+ end
+ S18: // iteration 2
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S19;
+ end
+ S19:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S20;
+ end
+ S20:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b100;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S21;
+ end
+ S21: // iteration 3
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S22;
+ end
+ S22:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S23;
+ end
+ S23:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b100;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S24;
+ end
+ S24: // q,qm,qp
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S25;
+ end
+ S25: // rem
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b1;
+ load_regs = 1'b0;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b110;
+ sel_muxr = 1'b1;
+ next_state = S26;
+ end
+ S26: // done
+ begin
+ done = 1'b1;
+ divBusy = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S27;
+ end // case: S26
+ S27: // done
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ default:
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ endcase // case(current_state)
+ end // always @ (current_state or X)
+
+endmodule // fsm
diff --git a/wally-pipelined/src/fpu/fsm_fpdiv_pipe.sv b/wally-pipelined/src/fpu/fsm_fpdiv_pipe.sv
new file mode 100755
index 000000000..c1ab43c19
--- /dev/null
+++ b/wally-pipelined/src/fpu/fsm_fpdiv_pipe.sv
@@ -0,0 +1,1325 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 9/28/2021
+//
+// Purpose: FSM for floating point divider/square root unit (Goldschmidt)
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+module fsm_fpdiv_pipe (
+ input logic clk,
+ input logic reset,
+ input logic start,
+ input logic op_type,
+ input logic P,
+ output logic done,
+ output logic load_preload,
+ output logic load_rega,
+ output logic load_regb,
+ output logic load_regc,
+ output logic load_regd,
+ output logic load_regr,
+ output logic load_regs,
+ output logic load_regp,
+ output logic [2:0] sel_muxa,
+ output logic [2:0] sel_muxb,
+ output logic sel_muxr,
+ output logic divBusy
+ );
+
+ // div64 : S1-S14 (14 cycles)
+ // sqrt64 : S15-S35 (21 cycles)
+ // div32: S36-S47 (12 cycles)
+ // sqrt32 : S48-S64 (17 cycles)
+ typedef enum logic [6:0] {S0, S1, S2, S3, S4, S5, S6, S7, S8, S9,
+ S10, S11, S12, S13, S14, S15, S16, S17, S18, S19,
+ S20, S21, S22, S23, S24, S25, S26, S27, S28, S29,
+ S30, S31, S32, S33, S34, S35, S36, S37, S38, S39,
+ S40, S41, S42, S43, S44, S45, S46, S47, S48, S49,
+ S50, S51, S52, S53, S54, S55, S56, S57, S58, S59,
+ S60, S61, S62, S63, S64, S65, S66} statetype;
+
+ statetype current_state, next_state;
+
+ always @(posedge clk)
+ begin
+ if (reset == 1'b1)
+ current_state <= S0;
+ else
+ current_state <= next_state;
+ end
+
+ always @(*)
+ begin
+ case(current_state)
+ S0: // iteration 0
+ begin
+ if (start==1'b0)
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end // if (start==1'b0)
+ else
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b1;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S66;
+ end
+ end // case: S0
+ S66:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S65;
+ end // if (start==1'b0)
+ S65:
+ begin
+ if (op_type==1'b0 && P==1'b0)
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S1;
+ end
+ else if (op_type==1'b0 && P==1'b1)
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S36;
+ end
+ else if (op_type==1'b1 && P==1'b0)
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b001;
+ sel_muxr = 1'b0;
+ next_state = S15;
+ end
+ else if (op_type==1'b1 && P==1'b1)
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b001;
+ sel_muxr = 1'b0;
+ next_state = S48;
+ end
+ else
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ end // case: S0
+ // div64
+ S1:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b001;
+ sel_muxb = 3'b001;
+ sel_muxr = 1'b0;
+ next_state = S2;
+ end // case: S1
+ S2: // iteration 1
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S3;
+ end
+ S3:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S4;
+ end
+ S4: // iteration 2
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S5;
+ end
+ S5:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0; // add
+ next_state = S6;
+ end
+ S6: // iteration 3
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S7;
+ end
+ S7:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S8;
+ end // case: S7
+ S8:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S9;
+ end // case: S7
+ S9: // q,qm,qp
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b1;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S10;
+ end // case: S9
+ S10: // rem
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b1;
+ next_state = S11;
+ end
+ S11:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b1;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b1;
+ next_state = S12;
+ end // case: S11
+ S12:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S13;
+ end
+ S13:
+ begin
+ done = 1'b1;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S14;
+ end
+ S14:
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ // sqrt64
+ S15:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S16;
+ end
+ S16:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b001;
+ sel_muxb = 3'b100;
+ sel_muxr = 1'b0;
+ next_state = S17;
+ end
+ S17:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S18;
+ end
+ S18: // iteration 1
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S19;
+ end
+ S19: // iteration 1
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S20;
+ end
+ S20:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b100;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S21;
+ end
+ S21:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S22;
+ end
+ S22: // iteration 2
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S23;
+ end // case: S18
+ S23:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S24;
+ end
+ S24:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b100;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S25;
+ end
+ S25:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S26;
+ end
+ S26: // iteration 3
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S27;
+ end // case: S21
+ S27:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S28;
+ end
+ S28:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b100;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S29;
+ end
+ S29:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S30;
+ end // case: S23
+ S30: // q,qm,qp
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b1;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S31;
+ end
+ S31: // rem
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b110;
+ sel_muxr = 1'b1;
+ next_state = S32;
+ end // case: S25
+ S32:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b1;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b110;
+ sel_muxr = 1'b1;
+ next_state = S33;
+ end
+ S33:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S34;
+ end
+ S34: // done
+ begin
+ done = 1'b1;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S35;
+ end
+ S35:
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ // div32
+ S36:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b001;
+ sel_muxb = 3'b001;
+ sel_muxr = 1'b0;
+ next_state = S37;
+ end // case: S1
+ S37: // iteration 1
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S38;
+ end
+ S38:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S39;
+ end
+ S39: // iteration 2
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S40;
+ end
+ S40:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S41;
+ end
+ S41:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S42;
+ end
+ S42: // q,qm,qp
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b1;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S43;
+ end // case: S9
+ S43: // rem
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b1;
+ next_state = S44;
+ end
+ S44:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b1;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b1;
+ next_state = S45;
+ end // case: S11
+ S45:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S46;
+ end
+ S46: // done
+ begin
+ done = 1'b1;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S47;
+ end
+ S47:
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ // sqrt32
+ S48:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S49;
+ end
+ S49:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b001;
+ sel_muxb = 3'b100;
+ sel_muxr = 1'b0;
+ next_state = S50;
+ end
+ S50:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b010;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S51;
+ end
+ S51: // iteration 1
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S52;
+ end
+ S52: // iteration 1
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S53;
+ end
+ S53:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b100;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S54;
+ end
+ S54:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S55;
+ end
+ S55: // iteration 2
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b1;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S56;
+ end // case: S18
+ S56:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S57;
+ end
+ S57:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b1;
+ load_regb = 1'b0;
+ load_regc = 1'b1;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b100;
+ sel_muxb = 3'b010;
+ sel_muxr = 1'b0;
+ next_state = S58;
+ end
+ S58:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b1;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b011;
+ sel_muxr = 1'b0;
+ next_state = S59;
+ end
+ S59: // q,qm,qp
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b1;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S60;
+ end
+ S60: // rem
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b110;
+ sel_muxr = 1'b1;
+ next_state = S61;
+ end // case: S25
+ S61:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b1;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b011;
+ sel_muxb = 3'b110;
+ sel_muxr = 1'b1;
+ next_state = S62;
+ end // case: S34
+ S62:
+ begin
+ done = 1'b0;
+ divBusy = 1'b1;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S63;
+ end
+ S63: // done
+ begin
+ done = 1'b1;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b1;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S64;
+ end // case: S34
+ S64:
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ default:
+ begin
+ done = 1'b0;
+ divBusy = 1'b0;
+ load_preload = 1'b0;
+ load_rega = 1'b0;
+ load_regb = 1'b0;
+ load_regc = 1'b0;
+ load_regd = 1'b0;
+ load_regr = 1'b0;
+ load_regs = 1'b0;
+ load_regp = 1'b0;
+ sel_muxa = 3'b000;
+ sel_muxb = 3'b000;
+ sel_muxr = 1'b0;
+ next_state = S0;
+ end
+ endcase // case(current_state)
+ end // always @ (current_state or X)
+
+endmodule // fsm
diff --git a/wally-pipelined/src/fpu/rounder_div.sv b/wally-pipelined/src/fpu/rounder_div.sv
index ff7c4830f..66bfe1d30 100755
--- a/wally-pipelined/src/fpu/rounder_div.sv
+++ b/wally-pipelined/src/fpu/rounder_div.sv
@@ -1,46 +1,64 @@
+///////////////////////////////////////////
//
-// The rounder takes as inputs a 64-bit value to be rounded, A, the
-// exponent of the value to be rounded, the sign of the final result, Sign,
-// the precision of the results, P, and the two-bit rounding mode, rm.
-// It produces a rounded 52-bit result, Z, the exponent of the rounded
-// result, Z_exp, and a flag that indicates if the result was rounded,
-// Inexact. The rounding mode has the following values.
-// rm Mode
-// 00 round-to-nearest-even
-// 01 round-toward-zero
-// 10 round-toward-plus infinity
-// 11 round-toward-minus infinity
+// Written: James Stine
+// Modified: 8/1/2018
//
+// Purpose: Floating point divider/square root rounder unit (Goldschmidt)
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
module rounder_div (
- input logic [1:0] rm,
- input logic P,
- input logic OvEn,
- input logic UnEn,
- input logic [12:0] exp_diff,
- input logic [2:0] sel_inv,
- input logic Invalid,
- input logic SignR,
-
- input logic [63:0] q1,
- input logic [63:0] qm1,
- input logic [63:0] qp1,
- input logic [63:0] q0,
- input logic [63:0] qm0,
- input logic [63:0] qp0,
- input logic [127:0] regr_out,
+ input logic [1:0] rm,
+ input logic P,
+ input logic OvEn,
+ input logic UnEn,
+ input logic [12:0] exp_diff,
+ input logic [2:0] sel_inv,
+ input logic Invalid,
+ input logic SignR,
+ input logic [63:0] Float1,
+ input logic [63:0] Float2,
+ input logic XNaNQ,
+ input logic YNaNQ,
+ input logic XZeroQ,
+ input logic YZeroQ,
+ input logic XInfQ,
+ input logic YInfQ,
+ input logic op_type,
+ input logic [59:0] q1,
+ input logic [59:0] qm1,
+ input logic [59:0] qp1,
+ input logic [59:0] q0,
+ input logic [59:0] qm0,
+ input logic [59:0] qp0,
+ input logic [119:0] regr_out,
output logic [63:0] Result,
- output logic [4:0] Flags
+ output logic [4:0] Flags
);
- logic Rsign;
- logic [10:0] Rexp;
- logic [12:0] Texp;
- logic [51:0] Rmant;
- logic [63:0] Tmant;
- logic [51:0] Smant;
- logic Rzero;
+ logic Rsign;
+ logic [10:0] Rexp;
+ logic [12:0] Texp;
+ logic [51:0] Rmant;
+ logic [59:0] Tmant;
+ logic [51:0] Smant;
+ logic Rzero;
logic Gdp, Gsp, G;
logic UnFlow_SP, UnFlow_DP, UnderFlow;
logic OvFlow_SP, OvFlow_DP, OverFlow;
@@ -56,19 +74,23 @@ module rounder_div (
logic Texp_l7z;
logic Texp_l7o;
logic OvCon;
- logic zero_rem;
- logic [1:0] mux_mant;
+ logic zero_rem;
+ logic [1:0] mux_mant;
logic sign_rem;
- logic [63:0] q, qm, qp;
- logic exp_ovf;
+ logic [59:0] q, qm, qp;
+ logic exp_ovf;
+
+ logic [50:0] NaN_out;
+ logic NaN_Sign_out;
+ logic Sign_out;
// Remainder = 0?
assign zero_rem = ~(|regr_out);
// Remainder Sign
- assign sign_rem = ~regr_out[127];
+ assign sign_rem = ~regr_out[119];
// choose correct Guard bit [1,2) or [0,1)
- assign Gdp = q1[63] ? q1[10] : q0[10];
- assign Gsp = q1[63] ? q1[39] : q0[39];
+ assign Gdp = q1[59] ? q1[6] : q0[6];
+ assign Gsp = q1[59] ? q1[35] : q0[35];
assign G = P ? Gsp : Gdp;
// Selection of Rounding (from logic/switching)
assign mux_mant[1] = (SignR&rm[1]&rm[0]&G) | (!SignR&rm[1]&!rm[0]&G) |
@@ -80,18 +102,18 @@ module rounder_div (
(SignR&rm[1]&!rm[0]&!G&!zero_rem&sign_rem);
// Which Q?
- mux2 #(64) mx1 (q0, q1, q1[63], q);
- mux2 #(64) mx2 (qm0, qm1, q1[63], qm);
- mux2 #(64) mx3 (qp0, qp1, q1[63], qp);
+ mux2 #(60) mx1 (q0, q1, q1[59], q);
+ mux2 #(60) mx2 (qm0, qm1, q1[59], qm);
+ mux2 #(60) mx3 (qp0, qp1, q1[59], qp);
// Choose Q, Q+1, Q-1
- mux3 #(64) mx4 (q, qm, qp, mux_mant, Tmant);
- assign Smant = Tmant[62:11];
+ mux3 #(60) mx4 (q, qm, qp, mux_mant, Tmant);
+ assign Smant = Tmant[58:7];
// Compute the value of the exponent
// exponent is modified if we choose:
// 1.) we choose any qm0, qp0, q0 (since we shift mant)
// 2.) we choose qp and we overflow (for RU)
- assign exp_ovf = |{qp[62:40], (qp[39:11] & {29{~P}})};
- assign Texp = exp_diff - {{13{1'b0}}, ~q1[63]} + {{13{1'b0}}, mux_mant[1]&qp1[63]&~exp_ovf};
+ assign exp_ovf = |{qp[58:36], (qp[35:7] & {29{~P}})};
+ assign Texp = exp_diff - {{12{1'b0}}, ~q1[59]} + {{12{1'b0}}, mux_mant[1]&qp1[59]&~exp_ovf};
// Overflow only occurs for double precision, if Texp[10] to Texp[0] are
// all ones. To encourage sharing with single precision overflow detection,
@@ -117,12 +139,11 @@ module rounder_div (
// the input was infinite or NaN or the output of the adder is zero.
// 00 = Valid
// 10 = NaN
- assign Valid = (~sel_inv[2]&~sel_inv[1]&~sel_inv[0]);
- assign NaN = ~sel_inv[1]& sel_inv[0];
+ assign Valid = ~sel_inv[2]&~sel_inv[1]&~sel_inv[0];
+ assign NaN = sel_inv[2]&sel_inv[1]&sel_inv[0];
assign UnderFlow = (P & UnFlow_SP | UnFlow_DP) & Valid;
assign OverFlow = (P & OvFlow_SP | OvFlow_DP) & Valid;
- assign Div0 = sel_inv[2]&sel_inv[1]&~sel_inv[0];
-
+ assign Div0 = YZeroQ&~XZeroQ&~op_type&~NaN;
// The final result is Inexact if any rounding occurred ((i.e., R or S
// is one), or (if the result overflows ) or (if the result underflows and the
@@ -161,18 +182,26 @@ module rounder_div (
// If the result is zero or infinity, the mantissa is all zeros.
// If the result is NaN, the mantissa is 10...0
// If the result the largest floating point number, the mantissa
- // is all ones. Otherwise, the mantissa is not changed.
+ // is all ones. Otherwise, the mantissa is not changed.
+ assign NaN_out = ~XNaNQ&YNaNQ ? Float2[50:0] : Float1[50:0];
+ assign NaN_Sign_out = ~XNaNQ&YNaNQ ? Float2[63] : Float1[63];
+ assign Sign_out = (XZeroQ&YZeroQ | XInfQ&YInfQ)&~op_type | Rsign&~XNaNQ&~YNaNQ |
+ NaN_Sign_out&(XNaNQ|YNaNQ);
+ // FIXME (jes) - Imperas gives sNaN a Sign=0 where x86 gives Sign=1
+ // | Float1[63]&op_type; (logic to fix this but removed for now)
+
assign Rmant[51] = Largest | NaN | (Smant[51]&~Infinite&~Rzero);
- assign Rmant[50:0] = {51{Largest}} | (Smant[50:0]&{51{~Infinite&Valid&~Rzero}});
-
+ assign Rmant[50:0] = ({51{Largest}} | (Smant[50:0]&{51{~Infinite&Valid&~Rzero}}) |
+ (NaN_out&{51{NaN}}))&({51{~(op_type&Float1[63]&~XZeroQ)}});
+
// For single precision, the 8 least significant bits of the exponent
// and 23 most significant bits of the mantissa contain bits used
// for the final result. A double precision result is returned if
// overflow has occurred, the overflow trap is enabled, and a conversion
// is being performed.
assign OvCon = OverFlow & OvEn;
- assign Result = (P&~OvCon) ? { {32{1'b1}}, Rsign, Rexp[7:0], Rmant[51:29]}
- : {Rsign, Rexp, Rmant};
+ assign Result = (P&~OvCon) ? { {32{1'b1}}, Sign_out, Rexp[7:0], Rmant[51:29]}
+ : {Sign_out, Rexp, Rmant};
endmodule // rounder
diff --git a/wally-pipelined/src/fpu/sbtm_a0.sv b/wally-pipelined/src/fpu/sbtm_a0.sv
index 83953787b..61dd183bb 100644
--- a/wally-pipelined/src/fpu/sbtm_a0.sv
+++ b/wally-pipelined/src/fpu/sbtm_a0.sv
@@ -1,5 +1,30 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Bipartite Lookup
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
module sbtm_a0 (input logic [6:0] a,
- output logic [12:0] y);
+ output logic [12:0] y);
+
always_comb
case(a)
7'b0000000: y = 13'b1111111100010;
@@ -137,4 +162,4 @@ endmodule // sbtm_a0
-
\ No newline at end of file
+
diff --git a/wally-pipelined/src/fpu/sbtm_a1.sv b/wally-pipelined/src/fpu/sbtm_a1.sv
index 76e4bdec9..88845283c 100644
--- a/wally-pipelined/src/fpu/sbtm_a1.sv
+++ b/wally-pipelined/src/fpu/sbtm_a1.sv
@@ -1,5 +1,30 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Bipartite Lookup
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
module sbtm_a1 (input logic [6:0] a,
- output logic [4:0] y);
+ output logic [4:0] y);
+
always_comb
case(a)
7'b0000000: y = 5'b11100;
@@ -137,4 +162,4 @@ endmodule // sbtm_a0
-
\ No newline at end of file
+
diff --git a/wally-pipelined/src/fpu/sbtm_a2.sv b/wally-pipelined/src/fpu/sbtm_a2.sv
index ae407ec81..8d32ad157 100755
--- a/wally-pipelined/src/fpu/sbtm_a2.sv
+++ b/wally-pipelined/src/fpu/sbtm_a2.sv
@@ -1,5 +1,30 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Bipartite Lookup
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
module sbtm_a2 (input logic [7:0] a,
- output logic [13:0] y);
+ output logic [13:0] y);
+
always_comb
case(a)
8'b01000000: y = 14'b10110100010111;
@@ -201,4 +226,4 @@ endmodule // sbtm_a0
-
\ No newline at end of file
+
diff --git a/wally-pipelined/src/fpu/sbtm_a3.sv b/wally-pipelined/src/fpu/sbtm_a3.sv
index c6b367933..5958c3bf6 100755
--- a/wally-pipelined/src/fpu/sbtm_a3.sv
+++ b/wally-pipelined/src/fpu/sbtm_a3.sv
@@ -1,5 +1,30 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Bipartite Lookup
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
module sbtm_a3 (input logic [7:0] a,
- output logic [5:0] y);
+ output logic [5:0] y);
+
always_comb
case(a)
8'b01000000: y = 6'b100110;
diff --git a/wally-pipelined/src/fpu/sbtm_div.sv b/wally-pipelined/src/fpu/sbtm_div.sv
index 53b56dbd7..999106d86 100644
--- a/wally-pipelined/src/fpu/sbtm_div.sv
+++ b/wally-pipelined/src/fpu/sbtm_div.sv
@@ -1,3 +1,27 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Bipartite Lookup for divide portion of fpdivsqrt
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
module sbtm_div (input logic [11:0] a, output logic [10:0] ia_out);
// bit partitions
diff --git a/wally-pipelined/src/fpu/sbtm_sqrt.sv b/wally-pipelined/src/fpu/sbtm_sqrt.sv
index 27ffbeccf..fdf0bb6df 100644
--- a/wally-pipelined/src/fpu/sbtm_sqrt.sv
+++ b/wally-pipelined/src/fpu/sbtm_sqrt.sv
@@ -1,3 +1,27 @@
+///////////////////////////////////////////
+//
+// Written: James Stine
+// Modified: 8/1/2018
+//
+// Purpose: Bipartite Lookup for sqrt part of fpdivsqrt
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
module sbtm_sqrt (input logic [11:0] a, output logic [10:0] y);
// bit partitions
diff --git a/wally-pipelined/src/fpu/unpacking.sv b/wally-pipelined/src/fpu/unpacking.sv
index 3f80ee031..bc9030444 100644
--- a/wally-pipelined/src/fpu/unpacking.sv
+++ b/wally-pipelined/src/fpu/unpacking.sv
@@ -75,6 +75,6 @@ module unpacking (
assign YZeroE = YExpZero & YFracZero;
assign ZZeroE = ZExpZero & ZFracZero;
- assign BiasE = 13'h3ff; // always use 1023 because exponents are unpacked to double precision
+ assign BiasE = 11'h3ff; // always use 1023 because exponents are unpacked to double precision
endmodule
\ No newline at end of file
diff --git a/wally-pipelined/src/generic/counter.sv b/wally-pipelined/src/generic/counter.sv
new file mode 100644
index 000000000..6b6fa24c9
--- /dev/null
+++ b/wally-pipelined/src/generic/counter.sv
@@ -0,0 +1,38 @@
+///////////////////////////////////////////
+// counter.sv
+//
+// Written: David_Harris@hmc.edu 10 October 2021
+// Modified:
+//
+// Purpose: Counter with reset and enable
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+module counter #(parameter WIDTH=8) (
+ input logic clk, reset, en,
+ output logic [WIDTH-1:0] q);
+
+ logic [WIDTH-1:0] qnext;
+
+ assign qnext = q + 1;
+ flopenr #(WIDTH) cntrflop(clk, reset, en, qnext, q);
+endmodule
+
+
diff --git a/wally-pipelined/src/generic/flop.sv b/wally-pipelined/src/generic/flop.sv
deleted file mode 100644
index cb583de2e..000000000
--- a/wally-pipelined/src/generic/flop.sv
+++ /dev/null
@@ -1,111 +0,0 @@
-///////////////////////////////////////////
-// flop.sv
-//
-// Written: David_Harris@hmc.edu 9 January 2021
-// Modified:
-//
-// Purpose: arious flavors of flip-flops
-//
-// A component of the Wally configurable RISC-V project.
-//
-// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
-// is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-///////////////////////////////////////////
-
-`include "wally-config.vh"
-/* verilator lint_off DECLFILENAME */
-
-// ordinary flip-flop
-module flop #(parameter WIDTH = 8) (
- input logic clk,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk)
- q <= #1 d;
-endmodule
-
-// flop with asynchronous reset
-module flopr #(parameter WIDTH = 8) (
- input logic clk, reset,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk, posedge reset)
- if (reset) q <= #1 0;
- else q <= #1 d;
-endmodule
-
-// flop with enable
-module flopen #(parameter WIDTH = 8) (
- input logic clk, en,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk)
- if (en) q <= #1 d;
-endmodule
-
-// flop with enable, asynchronous reset, synchronous clear
-module flopenrc #(parameter WIDTH = 8) (
- input logic clk, reset, clear, en,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk, posedge reset)
- if (reset) q <= #1 0;
- else if (en)
- if (clear) q <= #1 0;
- else q <= #1 d;
-endmodule
-
-// flop with enable, asynchronous reset
-module flopenr #(parameter WIDTH = 8) (
- input logic clk, reset, en,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk, posedge reset)
- if (reset) q <= #1 0;
- else if (en) q <= #1 d;
-endmodule
-
-// flop with enable, asynchronous load
-module flopenl #(parameter WIDTH = 8, parameter type TYPE=logic [WIDTH-1:0]) (
- input logic clk, load, en,
- input TYPE d,
- input TYPE val,
- output TYPE q);
-
- always_ff @(posedge clk, posedge load)
- if (load) q <= #1 val;
- else if (en) q <= #1 d;
-endmodule
-
-// flop with asynchronous reset, synchronous clear
-module floprc #(parameter WIDTH = 8) (
- input logic clk,
- input logic reset,
- input logic clear,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk, posedge reset)
- if (reset) q <= #1 0;
- else
- if (clear) q <= #1 0;
- else q <= #1 d;
-endmodule
-
-/* verilator lint_on DECLFILENAME */
diff --git a/wally-pipelined/src/generic/flop/flop.sv b/wally-pipelined/src/generic/flop/flop.sv
new file mode 100644
index 000000000..2558c10df
--- /dev/null
+++ b/wally-pipelined/src/generic/flop/flop.sv
@@ -0,0 +1,37 @@
+///////////////////////////////////////////
+// flop.sv
+//
+// Written: David_Harris@hmc.edu 9 January 2021
+// Modified:
+//
+// Purpose: various flavors of flip-flops
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+// ordinary flip-flop
+module flop #(parameter WIDTH = 8) (
+ input logic clk,
+ input logic [WIDTH-1:0] d,
+ output logic [WIDTH-1:0] q);
+
+ always_ff @(posedge clk)
+ q <= #1 d;
+endmodule
+
diff --git a/wally-pipelined/src/generic/flop/flopen.sv b/wally-pipelined/src/generic/flop/flopen.sv
new file mode 100644
index 000000000..618b02e7f
--- /dev/null
+++ b/wally-pipelined/src/generic/flop/flopen.sv
@@ -0,0 +1,37 @@
+///////////////////////////////////////////
+// flopen.sv
+//
+// Written: David_Harris@hmc.edu 9 January 2021
+// Modified:
+//
+// Purpose: various flavors of flip-flops
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+// flop with enable
+module flopen #(parameter WIDTH = 8) (
+ input logic clk, en,
+ input logic [WIDTH-1:0] d,
+ output logic [WIDTH-1:0] q);
+
+ always_ff @(posedge clk)
+ if (en) q <= #1 d;
+endmodule
+
diff --git a/wally-pipelined/src/generic/flop/flopenl.sv b/wally-pipelined/src/generic/flop/flopenl.sv
new file mode 100644
index 000000000..acf3f2a0d
--- /dev/null
+++ b/wally-pipelined/src/generic/flop/flopenl.sv
@@ -0,0 +1,39 @@
+///////////////////////////////////////////
+// flopenl.sv
+//
+// Written: David_Harris@hmc.edu 9 January 2021
+// Modified:
+//
+// Purpose: various flavors of flip-flops
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+// flop with enable, asynchronous load
+module flopenl #(parameter WIDTH = 8, parameter type TYPE=logic [WIDTH-1:0]) (
+ input logic clk, load, en,
+ input TYPE d,
+ input TYPE val,
+ output TYPE q);
+
+ always_ff @(posedge clk, posedge load)
+ if (load) q <= #1 val;
+ else if (en) q <= #1 d;
+endmodule
+
diff --git a/wally-pipelined/src/generic/flop/flopenr.sv b/wally-pipelined/src/generic/flop/flopenr.sv
new file mode 100644
index 000000000..9db912eae
--- /dev/null
+++ b/wally-pipelined/src/generic/flop/flopenr.sv
@@ -0,0 +1,38 @@
+///////////////////////////////////////////
+// flopenr.sv
+//
+// Written: David_Harris@hmc.edu 9 January 2021
+// Modified:
+//
+// Purpose: various flavors of flip-flops
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+// flop with enable, asynchronous reset
+module flopenr #(parameter WIDTH = 8) (
+ input logic clk, reset, en,
+ input logic [WIDTH-1:0] d,
+ output logic [WIDTH-1:0] q);
+
+ always_ff @(posedge clk, posedge reset)
+ if (reset) q <= #1 0;
+ else if (en) q <= #1 d;
+endmodule
+
diff --git a/wally-pipelined/src/generic/flop/flopenrc.sv b/wally-pipelined/src/generic/flop/flopenrc.sv
new file mode 100644
index 000000000..d8806196c
--- /dev/null
+++ b/wally-pipelined/src/generic/flop/flopenrc.sv
@@ -0,0 +1,40 @@
+///////////////////////////////////////////
+// flopenrc.sv
+//
+// Written: David_Harris@hmc.edu 9 January 2021
+// Modified:
+//
+// Purpose: various flavors of flip-flops
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+// flop with enable, asynchronous reset, synchronous clear
+module flopenrc #(parameter WIDTH = 8) (
+ input logic clk, reset, clear, en,
+ input logic [WIDTH-1:0] d,
+ output logic [WIDTH-1:0] q);
+
+ always_ff @(posedge clk, posedge reset)
+ if (reset) q <= #1 0;
+ else if (en)
+ if (clear) q <= #1 0;
+ else q <= #1 d;
+endmodule
+
diff --git a/wally-pipelined/src/generic/flop/flopens.sv b/wally-pipelined/src/generic/flop/flopens.sv
new file mode 100644
index 000000000..d51659b8b
--- /dev/null
+++ b/wally-pipelined/src/generic/flop/flopens.sv
@@ -0,0 +1,39 @@
+///////////////////////////////////////////
+// flopens.sv
+//
+// Written: David_Harris@hmc.edu 9 January 2021
+// Modified:
+//
+// Purpose: various flavors of flip-flops
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+// flop with enable, asynchronous set
+module flopens #(parameter WIDTH = 8) (
+ input logic clk, set, en,
+ input logic [WIDTH-1:0] d,
+ output logic [WIDTH-1:0] q);
+
+ always_ff @(posedge clk, posedge set)
+ if (set) q <= #1 1;
+ else if (en) q <= #1 d;
+endmodule
+
+
diff --git a/wally-pipelined/src/generic/flop/flopr.sv b/wally-pipelined/src/generic/flop/flopr.sv
new file mode 100644
index 000000000..5ff6a5a91
--- /dev/null
+++ b/wally-pipelined/src/generic/flop/flopr.sv
@@ -0,0 +1,38 @@
+///////////////////////////////////////////
+// flopr.sv
+//
+// Written: David_Harris@hmc.edu 9 January 2021
+// Modified:
+//
+// Purpose: various flavors of flip-flops
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+// flop with asynchronous reset
+module flopr #(parameter WIDTH = 8) (
+ input logic clk, reset,
+ input logic [WIDTH-1:0] d,
+ output logic [WIDTH-1:0] q);
+
+ always_ff @(posedge clk, posedge reset)
+ if (reset) q <= #1 0;
+ else q <= #1 d;
+endmodule
+
diff --git a/wally-pipelined/src/generic/flop/floprc.sv b/wally-pipelined/src/generic/flop/floprc.sv
new file mode 100644
index 000000000..9d5f17c7a
--- /dev/null
+++ b/wally-pipelined/src/generic/flop/floprc.sv
@@ -0,0 +1,41 @@
+///////////////////////////////////////////
+// floprc.sv
+//
+// Written: David_Harris@hmc.edu 9 January 2021
+// Modified:
+//
+// Purpose: various flavors of flip-flops
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+// flop with asynchronous reset, synchronous clear
+module floprc #(parameter WIDTH = 8) (
+ input logic clk,
+ input logic reset,
+ input logic clear,
+ input logic [WIDTH-1:0] d,
+ output logic [WIDTH-1:0] q);
+
+ always_ff @(posedge clk, posedge reset)
+ if (reset) q <= #1 0;
+ else
+ if (clear) q <= #1 0;
+ else q <= #1 d;
+endmodule
diff --git a/wally-pipelined/src/hazard/hazard.sv b/wally-pipelined/src/hazard/hazard.sv
index 0a16a8fd9..72deeac00 100644
--- a/wally-pipelined/src/hazard/hazard.sv
+++ b/wally-pipelined/src/hazard/hazard.sv
@@ -26,8 +26,6 @@
`include "wally-config.vh"
module hazard(
- input logic clk,
- input logic reset,
// Detect hazards
input logic BPPredWrongE, CSRWritePendingDEM, RetM, TrapM,
input logic LoadStallD, StoreStallD, MulDivStallD, CSRRdStallD,
diff --git a/wally-pipelined/src/ieu/controller.sv b/wally-pipelined/src/ieu/controller.sv
index ed5f02404..449066bf1 100644
--- a/wally-pipelined/src/ieu/controller.sv
+++ b/wally-pipelined/src/ieu/controller.sv
@@ -34,9 +34,8 @@ module controller(
output logic [2:0] ImmSrcD,
input logic IllegalIEUInstrFaultD,
output logic IllegalBaseInstrFaultD,
- output logic RegWriteD,
// Execute stage control signals
- input logic StallE, FlushE,
+ input logic StallE, FlushE,
input logic [2:0] FlagsE,
output logic PCSrcE, // for datapath and Hazard Unit
output logic [4:0] ALUControlE,
@@ -46,7 +45,6 @@ module controller(
output logic [2:0] Funct3E,
output logic MulDivE, W64E,
output logic JumpE,
- output logic [1:0] MemRWE,
// Memory stage control signals
input logic StallM, FlushM,
output logic [1:0] MemRWM,
@@ -57,7 +55,7 @@ module controller(
output logic [2:0] Funct3M,
output logic RegWriteM, // for Hazard Unit
output logic InvalidateICacheM, FlushDCacheM,
- output logic InstrValidM, InstrValidW,
+ output logic InstrValidM,
// Writeback stage control signals
input logic StallW, FlushW,
output logic RegWriteW, // for datapath and Hazard Unit
@@ -75,9 +73,9 @@ module controller(
`define CTRLW 24
// pipelined control signals
- logic RegWriteE;
+ logic RegWriteD, RegWriteE;
logic [2:0] ResultSrcD, ResultSrcE, ResultSrcM;
- logic [1:0] MemRWD;
+ logic [1:0] MemRWD, MemRWE;
logic JumpD;
logic BranchD, BranchE;
logic [1:0] ALUOpD;
@@ -232,9 +230,9 @@ module controller(
{RegWriteM, ResultSrcM, MemRWM, CSRReadM, CSRWriteM, PrivilegedM, Funct3M, AtomicM, InvalidateICacheM, FlushDCacheM, InstrValidM});
// Writeback stage pipeline control register
- flopenrc #(5) controlregW(clk, reset, FlushW, ~StallW,
- {RegWriteM, ResultSrcM, InstrValidM},
- {RegWriteW, ResultSrcW, InstrValidW});
+ flopenrc #(4) controlregW(clk, reset, FlushW, ~StallW,
+ {RegWriteM, ResultSrcM},
+ {RegWriteW, ResultSrcW});
assign CSRWritePendingDEM = CSRWriteD | CSRWriteE | CSRWriteM;
diff --git a/wally-pipelined/src/ieu/datapath.sv b/wally-pipelined/src/ieu/datapath.sv
index 1e8c7cbf1..2ebd65d82 100644
--- a/wally-pipelined/src/ieu/datapath.sv
+++ b/wally-pipelined/src/ieu/datapath.sv
@@ -38,7 +38,6 @@ module datapath (
input logic TargetSrcE,
input logic JumpE,
input logic IllegalFPUInstrE,
- input logic [1:0] MemRWE,
input logic [`XLEN-1:0] FWriteDataE,
input logic [`XLEN-1:0] PCE,
input logic [`XLEN-1:0] PCLinkE,
@@ -84,7 +83,6 @@ module datapath (
logic [`XLEN-1:0] ResultM;
// Writeback stage signals
logic [`XLEN-1:0] SCResultW;
- logic [`XLEN-1:0] ALUResultW;
logic [`XLEN-1:0] WriteDataW;
logic [`XLEN-1:0] ResultW;
@@ -143,12 +141,5 @@ module datapath (
.d(ReadDataM),
.q(ReadDataW));
- mux5 #(`XLEN) resultmuxW(ResultW, ReadDataW, CSRReadValW, MulDivResultW, SCResultW, ResultSrcW, WriteDataW);
-/* -----\/----- EXCLUDED -----\/-----
- // This mux4:1 no longer needs to include PCLinkW. This is set correctly in the execution stage.
- // *** need to look at how the decoder is coded to fix.
- mux4 #(`XLEN) resultmux(ALUResultW, ReadDataW, PCLinkW, CSRReadValW, ResultSrcW, WriteDataW);
->>>>>>> bp
- -----/\----- EXCLUDED -----/\----- */
-
+ mux5 #(`XLEN) resultmuxW(ResultW, ReadDataW, CSRReadValW, MulDivResultW, SCResultW, ResultSrcW, WriteDataW);
endmodule
diff --git a/wally-pipelined/src/ieu/forward.sv b/wally-pipelined/src/ieu/forward.sv
index 3e25ca7cc..cab6c3ed2 100644
--- a/wally-pipelined/src/ieu/forward.sv
+++ b/wally-pipelined/src/ieu/forward.sv
@@ -30,10 +30,8 @@ module forward(
input logic [4:0] Rs1D, Rs2D, Rs1E, Rs2E, RdE, RdM, RdW,
input logic MemReadE, MulDivE, CSRReadE,
input logic RegWriteM, RegWriteW,
- input logic DivBusyE,
input logic FWriteIntE, FWriteIntM, FWriteIntW,
input logic SCE,
- input logic StallD,
// Forwarding controls
output logic [1:0] ForwardAE, ForwardBE,
output logic FPUStallD, LoadStallD, MulDivStallD, CSRRdStallD
diff --git a/wally-pipelined/src/ieu/ieu.sv b/wally-pipelined/src/ieu/ieu.sv
index 234f767a3..d3babff3c 100644
--- a/wally-pipelined/src/ieu/ieu.sv
+++ b/wally-pipelined/src/ieu/ieu.sv
@@ -31,7 +31,6 @@ module ieu (
input logic [31:0] InstrD,
input logic IllegalIEUInstrFaultD,
output logic IllegalBaseInstrFaultD,
- output logic RegWriteD,
// Execute Stage interface
input logic [`XLEN-1:0] PCE,
input logic [`XLEN-1:0] PCLinkE,
@@ -42,13 +41,10 @@ module ieu (
output logic MulDivE, W64E,
output logic [2:0] Funct3E,
output logic [`XLEN-1:0] SrcAE, SrcBE,
- output logic [4:0] RdE,
input logic FWriteIntM,
// Memory stage interface
- input logic DataMisalignedM, // from LSU
input logic SquashSCW, // from LSU
- output logic [1:0] MemRWE, // read/write control goes to LSU
output logic [1:0] MemRWM, // read/write control goes to LSU
output logic [1:0] AtomicE, // atomic control goes to LSU
output logic [1:0] AtomicM, // atomic control goes to LSU
@@ -57,7 +53,6 @@ module ieu (
output logic [2:0] Funct3M, // size and signedness to LSU
output logic [`XLEN-1:0] SrcAM, // to privilege and fpu
output logic [4:0] RdM,
- input logic DataAccessFaultM,
input logic [`XLEN-1:0] FIntResM,
output logic InvalidateICacheM, FlushDCacheM,
@@ -73,7 +68,6 @@ module ieu (
input logic FlushD, FlushE, FlushM, FlushW,
output logic FPUStallD, LoadStallD, MulDivStallD, CSRRdStallD,
output logic PCSrcE,
- input logic DivBusyE,
output logic CSRReadM, CSRWriteM, PrivilegedM,
output logic CSRWritePendingDEM,
output logic StoreStallD
@@ -86,7 +80,7 @@ module ieu (
logic [2:0] ResultSrcW;
logic TargetSrcE;
logic SCE;
- logic InstrValidW;
+ logic [4:0] RdE;
// forwarding signals
logic [4:0] Rs1D, Rs2D, Rs1E, Rs2E;
diff --git a/wally-pipelined/src/ifu/BTBPredictor.sv b/wally-pipelined/src/ifu/BTBPredictor.sv
index 4b54c0bb7..07a39c162 100644
--- a/wally-pipelined/src/ifu/BTBPredictor.sv
+++ b/wally-pipelined/src/ifu/BTBPredictor.sv
@@ -33,7 +33,7 @@ module BTBPredictor
)
(input logic clk,
input logic reset,
- input logic StallF, StallD, StallE, FlushF, FlushD, FlushE,
+ input logic StallF, StallE,
input logic [`XLEN-1:0] LookUpPC,
output logic [`XLEN-1:0] TargetPC,
output logic [4:0] InstrClass,
@@ -77,18 +77,7 @@ module BTBPredictor
end
assign Valid = ValidBits[LookUpPCIndexQ];
-/* -----\/----- EXCLUDED -----\/-----
- regfile2p1r1w #(10, 1) validMem(.clk(clk),
- .reset(reset),
- .RA1(LookUpPCIndexQ),
- .RD1(Valid),
- .REN1(1'b1),
- .WA1(UpdatePCIndexQ),
- .WD1(1'b1),
- .WEN1(UpdateEN));
- -----/\----- EXCLUDED -----/\----- */
-
flopenr #(1) UpdateENReg(.clk(clk),
.reset(reset),
.en(~StallF),
diff --git a/wally-pipelined/src/ifu/SRAM2P1R1W.sv b/wally-pipelined/src/ifu/SRAM2P1R1W.sv
index 046aacc63..8426ef43b 100644
--- a/wally-pipelined/src/ifu/SRAM2P1R1W.sv
+++ b/wally-pipelined/src/ifu/SRAM2P1R1W.sv
@@ -36,8 +36,8 @@
`include "wally-config.vh"
module SRAM2P1R1W
- #(parameter int Depth = 10,
- parameter int Width = 2
+ #(parameter int DEPTH = 10,
+ parameter int WIDTH = 2
)
(input logic clk,
@@ -45,35 +45,35 @@ module SRAM2P1R1W
input logic reset,
// port 1 is read only
- input logic [Depth-1:0] RA1,
- output logic [Width-1:0] RD1,
+ input logic [DEPTH-1:0] RA1,
+ output logic [WIDTH-1:0] RD1,
input logic REN1,
// port 2 is write only
- input logic [Depth-1:0] WA1,
- input logic [Width-1:0] WD1,
+ input logic [DEPTH-1:0] WA1,
+ input logic [WIDTH-1:0] WD1,
input logic WEN1,
- input logic [Width-1:0] BitWEN1
+ input logic [WIDTH-1:0] BitWEN1
);
- logic [Depth-1:0] RA1Q, WA1Q;
+ logic [DEPTH-1:0] RA1Q, WA1Q;
logic WEN1Q;
- logic [Width-1:0] WD1Q;
+ logic [WIDTH-1:0] WD1Q;
- logic [Width-1:0] memory [2**Depth-1:0];
+ logic [WIDTH-1:0] mem[2**DEPTH-1:0];
// SRAMs address busses are always registered first.
- flopenr #(Depth) RA1Reg(.clk(clk),
+ flopenr #(DEPTH) RA1Reg(.clk(clk),
.reset(reset),
.en(REN1),
.d(RA1),
.q(RA1Q));
- flopenr #(Depth) WA1Reg(.clk(clk),
+ flopenr #(DEPTH) WA1Reg(.clk(clk),
.reset(reset),
.en(REN1),
.d(WA1),
@@ -85,22 +85,22 @@ module SRAM2P1R1W
.d(WEN1),
.q(WEN1Q));
- flopenr #(Width) WD1Reg(.clk(clk),
+ flopenr #(WIDTH) WD1Reg(.clk(clk),
.reset(reset),
.en(REN1),
.d(WD1),
.q(WD1Q));
// read port
- assign RD1 = memory[RA1Q];
+ assign RD1 = mem[RA1Q];
genvar index;
// write port
generate
- for (index = 0; index < Width; index = index + 1) begin:mem
+ for (index = 0; index < WIDTH; index = index + 1) begin:bitwrite
always_ff @ (posedge clk) begin
if (WEN1Q & BitWEN1[index]) begin
- memory[WA1Q][index] <= WD1Q[index];
+ mem[WA1Q][index] <= WD1Q[index];
end
end
end
diff --git a/wally-pipelined/src/ifu/bpred.sv b/wally-pipelined/src/ifu/bpred.sv
index 22c9ec336..c0fd17fc8 100644
--- a/wally-pipelined/src/ifu/bpred.sv
+++ b/wally-pipelined/src/ifu/bpred.sv
@@ -30,8 +30,8 @@
module bpred
(input logic clk, reset,
- input logic StallF, StallD, StallE, StallM, StallW,
- input logic FlushF, FlushD, FlushE, FlushM, FlushW,
+ input logic StallF, StallD, StallE,
+ input logic FlushF, FlushD, FlushE,
// Fetch stage
// the prediction
input logic [`XLEN-1:0] PCNextF, // *** forgot to include this one on the I/O list
@@ -67,8 +67,6 @@ module bpred
logic PredictionPCWrongE;
logic PredictionInstrClassWrongE;
- logic [`XLEN-1:0] CorrectPCE;
-
// Part 1 branch direction prediction
@@ -171,10 +169,6 @@ module bpred
.UpdateInvalid(PredictionInstrClassWrongE),
.UpdateInstrClass(InstrClassE));
- // need to forward when updating to the same address as reading.
- //assign CorrectPCE = PCSrcE ? PCTargetE : PCLinkE;
- //assign TargetPC = (PCE == PCNextF) ? CorrectPCE : BTBPredPCF;
-
// Part 3 RAS
// *** need to add the logic to restore RAS on flushes. We will use incr for this.
RASPredictor RASPredictor(.clk(clk),
@@ -192,17 +186,15 @@ module bpred
// The prediction and its results need to be passed through the pipeline
// *** for other predictors will will be different.
- flopenrc #(2) BPPredRegD(.clk(clk),
+ flopenr #(2) BPPredRegD(.clk(clk),
.reset(reset),
.en(~StallD),
- .clear(1'b0),
.d(BPPredF),
.q(BPPredD));
- flopenrc #(2) BPPredRegE(.clk(clk),
+ flopenr #(2) BPPredRegE(.clk(clk),
.reset(reset),
.en(~StallE),
- .clear(1'b0),
.d(BPPredD),
.q(BPPredE));
diff --git a/wally-pipelined/src/ifu/globalHistoryPredictor.sv b/wally-pipelined/src/ifu/globalHistoryPredictor.sv
index 16964bd87..9f0680ad0 100644
--- a/wally-pipelined/src/ifu/globalHistoryPredictor.sv
+++ b/wally-pipelined/src/ifu/globalHistoryPredictor.sv
@@ -32,7 +32,7 @@ module globalHistoryPredictor
)
(input logic clk,
input logic reset,
- input logic StallF, StallD, StallE, FlushF, FlushD, FlushE,
+ input logic StallF, StallE,
input logic [`XLEN-1:0] PCNextF,
output logic [1:0] BPPredF,
// update
diff --git a/wally-pipelined/src/ifu/gsharePredictor.sv b/wally-pipelined/src/ifu/gsharePredictor.sv
index 36e54d4bb..6da754176 100644
--- a/wally-pipelined/src/ifu/gsharePredictor.sv
+++ b/wally-pipelined/src/ifu/gsharePredictor.sv
@@ -32,7 +32,7 @@ module gsharePredictor
)
(input logic clk,
input logic reset,
- input logic StallF, StallD, StallE, FlushF, FlushD, FlushE,
+ input logic StallF, StallE,
input logic [`XLEN-1:0] PCNextF,
output logic [1:0] BPPredF,
// update
diff --git a/wally-pipelined/src/ifu/ifu.sv b/wally-pipelined/src/ifu/ifu.sv
index 69f61d8e3..0582395b3 100644
--- a/wally-pipelined/src/ifu/ifu.sv
+++ b/wally-pipelined/src/ifu/ifu.sv
@@ -37,8 +37,6 @@ module ifu (
output logic [`PA_BITS-1:0] InstrPAdrF,
output logic InstrReadF,
output logic ICacheStallF,
- // Decode
- output logic [`XLEN-1:0] PCD,
// Execute
output logic [`XLEN-1:0] PCLinkE,
input logic PCSrcE,
@@ -49,7 +47,7 @@ module ifu (
input logic RetM, TrapM,
input logic [`XLEN-1:0] PrivilegedNextPCM,
input logic InvalidateICacheM,
- output logic [31:0] InstrD, InstrE, InstrM, InstrW,
+ output logic [31:0] InstrD, InstrM,
output logic [`XLEN-1:0] PCM,
output logic [4:0] InstrClassM,
output logic BPPredDirWrongM,
@@ -76,25 +74,26 @@ module ifu (
input logic ITLBWriteF, ITLBFlushF,
input logic WalkerInstrPageFaultF,
- output logic ITLBMissF, ITLBHitF,
+ output logic ITLBMissF,
// pmp/pma (inside mmu) signals. *** temporarily from AHB bus but eventually replace with internal versions pre H
input var logic [7:0] PMPCFG_ARRAY_REGW[`PMP_ENTRIES-1:0],
input var logic [`XLEN-1:0] PMPADDR_ARRAY_REGW[`PMP_ENTRIES-1:0],
- output logic InstrAccessFaultF,
-
- output logic ISquashBusAccessF
+ output logic InstrAccessFaultF
);
logic [`XLEN-1:0] PCCorrectE, UnalignedPCNextF, PCNextF;
logic misaligned, BranchMisalignedFaultE, BranchMisalignedFaultM, TrapMisalignedFaultM;
logic PrivilegedChangePCM;
logic IllegalCompInstrD;
- logic [`XLEN-1:0] PCPlus2or4F, PCW, PCLinkD, PCLinkM, PCPF;
+ logic [`XLEN-1:0] PCPlus2or4F, PCLinkD;
logic [`XLEN-3:0] PCPlusUpperF;
logic CompressedF;
logic [31:0] InstrRawD, FinalInstrRawF;
+ logic [31:0] InstrE;
+ logic [`XLEN-1:0] PCD;
+
localparam [31:0] nop = 32'h00000013; // instruction for NOP
logic reset_q; // *** look at this later.
@@ -105,10 +104,10 @@ module ifu (
generate
if (`XLEN==32) begin
- assign PCPF = PCPFmmu[31:0];
+ //assign PCPF = PCPFmmu[31:0];
assign PCNextFPhys = {{(`PA_BITS-`XLEN){1'b0}}, PCNextF};
end else begin
- assign PCPF = {8'b0, PCPFmmu};
+ //assign PCPF = {8'b0, PCPFmmu};
assign PCNextFPhys = PCNextF[`PA_BITS-1:0];
end
endgenerate
@@ -124,13 +123,11 @@ module ifu (
.TLBFlush(ITLBFlushF),
.PhysicalAddress(PCPFmmu),
.TLBMiss(ITLBMissF),
- .TLBHit(ITLBHitF),
.TLBPageFault(ITLBInstrPageFaultF),
.ExecuteAccessF(1'b1), // ***dh -- this should eventually change to only true if an instruction fetch is occurring
.AtomicAccessM(1'b0),
.ReadAccessM(1'b0),
.WriteAccessM(1'b0),
- .SquashBusAccess(ISquashBusAccessF),
.LoadAccessFaultM(),
.StoreAccessFaultM(),
.DisableTranslation(1'b0),
@@ -273,10 +270,8 @@ module ifu (
flopenr #(32) InstrEReg(clk, reset, ~StallE, FlushE ? nop : InstrD, InstrE);
flopenr #(32) InstrMReg(clk, reset, ~StallM, FlushM ? nop : InstrE, InstrM);
- // flopenr #(32) InstrWReg(clk, reset, ~StallW, FlushW ? nop : InstrM, InstrW); // just for testbench, delete later
flopenr #(`XLEN) PCEReg(clk, reset, ~StallE, PCD, PCE);
flopenr #(`XLEN) PCMReg(clk, reset, ~StallM, PCE, PCM);
- // flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, PCM, PCW); // *** probably not needed; delete later
flopenrc #(5) InstrClassRegE(.clk(clk),
.reset(reset),
@@ -305,8 +300,5 @@ module ifu (
// *** redo this
flopenr #(`XLEN) PCPDReg(clk, reset, ~StallD, PCPlus2or4F, PCLinkD);
flopenr #(`XLEN) PCPEReg(clk, reset, ~StallE, PCLinkD, PCLinkE);
- // flopenr #(`XLEN) PCPMReg(clk, reset, ~StallM, PCLinkE, PCLinkM);
- // /flopenr #(`XLEN) PCPWReg(clk, reset, ~StallW, PCLinkM, PCLinkW);
-
endmodule
diff --git a/wally-pipelined/src/ifu/localHistoryPredictor.sv b/wally-pipelined/src/ifu/localHistoryPredictor.sv
index 6c5c94783..b951704a0 100644
--- a/wally-pipelined/src/ifu/localHistoryPredictor.sv
+++ b/wally-pipelined/src/ifu/localHistoryPredictor.sv
@@ -33,7 +33,7 @@ module localHistoryPredictor
)
(input logic clk,
input logic reset,
- input logic StallF, StallD, StallE, FlushF, FlushD, FlushE,
+ input logic StallF, StallE, FlushF,
input logic [`XLEN-1:0] LookUpPC,
output logic [1:0] Prediction,
// update
diff --git a/wally-pipelined/src/lsu/lrsc.sv b/wally-pipelined/src/lsu/lrsc.sv
index cadf58bbc..64bdbdd4d 100644
--- a/wally-pipelined/src/lsu/lrsc.sv
+++ b/wally-pipelined/src/lsu/lrsc.sv
@@ -35,7 +35,6 @@ module lrsc
output logic [1:0] MemRWMtoDCache,
input logic [1:0] AtomicMtoDCache,
input logic [`PA_BITS-1:0] MemPAdrM, // from mmu to dcache
- output logic SquashSCM,
output logic SquashSCW
);
// Handle atomic load reserved / store conditional
@@ -44,6 +43,7 @@ module lrsc
logic [`PA_BITS-1:2] ReservationPAdrW;
logic ReservationValidM, ReservationValidW;
logic lrM, scM, WriteAdrMatchM;
+ logic SquashSCM;
assign lrM = MemReadM && AtomicMtoDCache[0];
assign scM = MemRWMtoLRSC[0] && AtomicMtoDCache[0];
@@ -59,7 +59,6 @@ module lrsc
flopenrc #(1) resvldreg(clk, reset, FlushW, lrM, ReservationValidM, ReservationValidW);
flopenrc #(1) squashreg(clk, reset, FlushW, ~StallWtoDCache, SquashSCM, SquashSCW);
end else begin // Atomic operations not supported
- assign SquashSCM = 0;
assign SquashSCW = 0;
assign MemRWMtoDCache = MemRWMtoLRSC;
end
diff --git a/wally-pipelined/src/lsu/lsu.sv b/wally-pipelined/src/lsu/lsu.sv
index feb212e8a..1a97d6b33 100644
--- a/wally-pipelined/src/lsu/lsu.sv
+++ b/wally-pipelined/src/lsu/lsu.sv
@@ -45,7 +45,6 @@ module lsu
input logic FlushDCacheM,
output logic CommittedM,
output logic SquashSCW,
- output logic DataMisalignedM,
output logic DCacheMiss,
output logic DCacheAccess,
@@ -89,14 +88,12 @@ module lsu
output logic WalkerLoadPageFaultM,
output logic WalkerStorePageFaultM,
- output logic DTLBHitM, // not connected
-
input var logic [7:0] PMPCFG_ARRAY_REGW[`PMP_ENTRIES-1:0],
input var logic [`XLEN-1:0] PMPADDR_ARRAY_REGW[`PMP_ENTRIES-1:0] // *** this one especially has a large note attached to it in pmpchecker.
);
- logic SquashSCM;
logic DTLBPageFaultM;
+ logic DataMisalignedM;
logic [`PA_BITS-1:0] MemPAdrM; // from mmu to dcache
@@ -124,7 +121,7 @@ module lsu
logic CommittedMfromDCache;
logic PendingInterruptMtoDCache;
- logic FlushWtoDCache;
+// logic FlushWtoDCache;
logic WalkerPageFaultM;
logic AnyCPUReqM;
@@ -160,7 +157,6 @@ module lsu
// arbiter between IEU and hptw
lsuArb arbiter(.clk(clk),
- .reset(reset),
// HPTW connection
.SelPTW(SelPTW),
.HPTWRead(HPTWRead),
@@ -171,7 +167,7 @@ module lsu
.Funct3M(Funct3M),
.AtomicM(AtomicM),
.MemAdrM(MemAdrM),
- .MemAdrE(MemAdrE),
+ .MemAdrE(MemAdrE[11:0]),
.CommittedM(CommittedM),
.PendingInterruptM(PendingInterruptM),
.StallW(StallW),
@@ -200,25 +196,23 @@ module lsu
.TLBFlush(DTLBFlushM),
.PhysicalAddress(MemPAdrM),
.TLBMiss(DTLBMissM),
- .TLBHit(DTLBHitM),
.TLBPageFault(DTLBPageFaultM),
.ExecuteAccessF(1'b0),
//.AtomicAccessM(AtomicMaskedM[1]),
.AtomicAccessM(1'b0),
.WriteAccessM(MemRWMtoLRSC[0]),
.ReadAccessM(MemRWMtoLRSC[1]),
- .SquashBusAccess(),
.DisableTranslation(DisableTranslation),
.InstrAccessFaultF(),
.Cacheable(CacheableM),
.Idempotent(),
.AtomicAllowed(),
- .*); // *** the pma/pmp instruction acess faults don't really matter here. is it possible to parameterize which outputs exist?
+ .*); // *** the pma/pmp instruction access faults don't really matter here. is it possible to parameterize which outputs exist?
assign MemReadM = MemRWMtoLRSC[1] & ~(ExceptionM | PendingInterruptMtoDCache) & ~DTLBMissM; // & ~NonBusTrapM & ~DTLBMissM & CurrState != STATE_STALLED;
lrsc lrsc(.clk, .reset, .FlushW, .StallWtoDCache, .MemReadM, .MemRWMtoLRSC, .AtomicMtoDCache, .MemPAdrM,
- .SquashSCM, .SquashSCW, .MemRWMtoDCache);
+ .SquashSCW, .MemRWMtoDCache);
// *** BUG, this is most likely wrong
assign CacheableMtoDCache = SelPTW ? 1'b1 : CacheableM;
@@ -243,10 +237,7 @@ module lsu
dcache dcache(.clk(clk),
.reset(reset),
- .StallM(StallM),
.StallWtoDCache(StallWtoDCache),
- .FlushM(FlushM),
- .FlushW(FlushWtoDCache),
.MemRWM(MemRWMtoDCache),
.Funct3M(Funct3MtoDCache),
.Funct7M(Funct7M),
diff --git a/wally-pipelined/src/lsu/lsuArb.sv b/wally-pipelined/src/lsu/lsuArb.sv
index 0ed4cc304..c0647c2b6 100644
--- a/wally-pipelined/src/lsu/lsuArb.sv
+++ b/wally-pipelined/src/lsu/lsuArb.sv
@@ -27,7 +27,7 @@
`include "wally-config.vh"
module lsuArb
- (input logic clk, reset,
+ (input logic clk,
// from page table walker
input logic SelPTW,
@@ -40,7 +40,7 @@ module lsuArb
input logic [2:0] Funct3M,
input logic [1:0] AtomicM,
input logic [`XLEN-1:0] MemAdrM,
- input logic [`XLEN-1:0] MemAdrE,
+ input logic [11:0] MemAdrE,
input logic StallW,
input logic PendingInterruptM,
// to CPU
diff --git a/wally-pipelined/src/lsu/subwordread.sv b/wally-pipelined/src/lsu/subwordread.sv
index 50a205bfb..1e9757259 100644
--- a/wally-pipelined/src/lsu/subwordread.sv
+++ b/wally-pipelined/src/lsu/subwordread.sv
@@ -32,9 +32,6 @@ module subwordread (
output logic [`XLEN-1:0] ReadDataM
);
- logic [7:0] ByteM;
- logic [15:0] HalfwordM;
-
logic [`XLEN-1:0] offset0, offset1, offset2, offset3;
// Funct3M[2] is the unsigned bit. mask upper bits.
@@ -42,8 +39,6 @@ module subwordread (
generate
if (`XLEN == 64) begin
- // more complex solution, but faster
- // 5 mux + 1 AND gate in series.
logic [`XLEN-1:0] offset4, offset5, offset6, offset7;
always_comb
@@ -95,56 +90,8 @@ module subwordread (
7: ReadDataM = offset7;
endcase
- // easier to understand but slower
- // 8 muxes in series
-/* -----\/----- EXCLUDED -----\/-----
- // ByteMe mux
- always_comb
- case(MemPAdrM[2:0])
- 3'b000: ByteM = ReadDataWordMuxM[7:0];
- 3'b001: ByteM = ReadDataWordMuxM[15:8];
- 3'b010: ByteM = ReadDataWordMuxM[23:16];
- 3'b011: ByteM = ReadDataWordMuxM[31:24];
- 3'b100: ByteM = ReadDataWordMuxM[39:32];
- 3'b101: ByteM = ReadDataWordMuxM[47:40];
- 3'b110: ByteM = ReadDataWordMuxM[55:48];
- 3'b111: ByteM = ReadDataWordMuxM[63:56];
- endcase
-
- // halfword mux
- always_comb
- case(MemPAdrM[2:1])
- 2'b00: HalfwordM = ReadDataWordMuxM[15:0];
- 2'b01: HalfwordM = ReadDataWordMuxM[31:16];
- 2'b10: HalfwordM = ReadDataWordMuxM[47:32];
- 2'b11: HalfwordM = ReadDataWordMuxM[63:48];
- endcase
-
- logic [31:0] WordM;
-
- always_comb
- case(MemPAdrM[2])
- 1'b0: WordM = ReadDataWordMuxM[31:0];
- 1'b1: WordM = ReadDataWordMuxM[63:32];
- endcase
-
- // sign extension
- always_comb
- case({Funct3M[2], Funct3M[1:0]}) // Funct3M[2] indicates unsigned load
- 3'b000: ReadDataM = {{56{ByteM[7]}}, ByteM}; // lb
- 3'b001: ReadDataM = {{48{HalfwordM[15]}}, HalfwordM[15:0]}; // lh
- 3'b010: ReadDataM = {{32{WordM[31]}}, WordM[31:0]}; // lw
- 3'b011: ReadDataM = ReadDataWordMuxM; // ld
- 3'b100: ReadDataM = {56'b0, ByteM[7:0]}; // lbu
- 3'b101: ReadDataM = {48'b0, HalfwordM[15:0]}; // lhu
- 3'b110: ReadDataM = {32'b0, WordM[31:0]}; // lwu
- default: ReadDataM = ReadDataWordMuxM; // Shouldn't happen
- endcase
- -----/\----- EXCLUDED -----/\----- */
end else begin // 32-bit
- // byte mux
-
- // fast but more complex
+ // byte mux
always_comb
case(Funct3M[1:0])
3: offset0 = ReadDataWordMuxM; //ld illegal
@@ -171,35 +118,6 @@ module subwordread (
2: ReadDataM = offset2;
3: ReadDataM = offset3;
endcase
-
- // slow but easier to understand
-/* -----\/----- EXCLUDED -----\/-----
- always_comb
- case(MemPAdrM[1:0])
- 2'b00: ByteM = ReadDataWordMuxM[7:0];
- 2'b01: ByteM = ReadDataWordMuxM[15:8];
- 2'b10: ByteM = ReadDataWordMuxM[23:16];
- 2'b11: ByteM = ReadDataWordMuxM[31:24];
- endcase
-
- // halfword mux
- always_comb
- case(MemPAdrM[1])
- 1'b0: HalfwordM = ReadDataWordMuxM[15:0];
- 1'b1: HalfwordM = ReadDataWordMuxM[31:16];
- endcase
-
- // sign extension
- always_comb
- case({Funct3M[2], Funct3M[1:0]})
- 3'b000: ReadDataM = {{24{ByteM[7]}}, ByteM}; // lb
- 3'b001: ReadDataM = {{16{HalfwordM[15]}}, HalfwordM[15:0]}; // lh
- 3'b010: ReadDataM = ReadDataWordMuxM; // lw
- 3'b100: ReadDataM = {24'b0, ByteM[7:0]}; // lbu
- 3'b101: ReadDataM = {16'b0, HalfwordM[15:0]}; // lhu
- default: ReadDataM = ReadDataWordMuxM;
- endcase
- -----/\----- EXCLUDED -----/\----- */
end
endgenerate
endmodule
diff --git a/wally-pipelined/src/mmu/mmu.sv b/wally-pipelined/src/mmu/mmu.sv
index 1995f09a0..8c6614a16 100644
--- a/wally-pipelined/src/mmu/mmu.sv
+++ b/wally-pipelined/src/mmu/mmu.sv
@@ -67,7 +67,6 @@ module mmu #(parameter TLB_ENTRIES = 8, // number of TLB Entries
// Physical address outputs
output logic [`PA_BITS-1:0] PhysicalAddress,
output logic TLBMiss,
- output logic TLBHit,
output logic Cacheable, Idempotent, AtomicAllowed,
// Faults
@@ -77,21 +76,17 @@ module mmu #(parameter TLB_ENTRIES = 8, // number of TLB Entries
// PMA checker signals
input logic AtomicAccessM, ExecuteAccessF, WriteAccessM, ReadAccessM,
input var logic [7:0] PMPCFG_ARRAY_REGW[`PMP_ENTRIES-1:0],
- input var logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [`PMP_ENTRIES-1:0],
-
- output logic SquashBusAccess // *** send to privileged unit
-// output logic [5:0] SelRegions
-
+ input var logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [`PMP_ENTRIES-1:0]
);
logic [`PA_BITS-1:0] TLBPAdr;
- logic PMPSquashBusAccess, PMASquashBusAccess;
// Translation lookaside buffer
logic PMAInstrAccessFaultF, PMPInstrAccessFaultF;
logic PMALoadAccessFaultM, PMPLoadAccessFaultM;
logic PMAStoreAccessFaultM, PMPStoreAccessFaultM;
logic Translate;
+ logic TLBHit;
// only instantiate TLB if Virtual Memory is supported
@@ -126,7 +121,7 @@ module mmu #(parameter TLB_ENTRIES = 8, // number of TLB Entries
// If TLB miss and translating we want to not have faults from the PMA and PMP checkers.
- assign SquashBusAccess = PMASquashBusAccess | PMPSquashBusAccess;
+// assign SquashBusAccess = PMASquashBusAccess | PMPSquashBusAccess;
assign InstrAccessFaultF = (PMAInstrAccessFaultF | PMPInstrAccessFaultF) & ~(Translate & ~TLBHit);
assign LoadAccessFaultM = (PMALoadAccessFaultM | PMPLoadAccessFaultM) & ~(Translate & ~TLBHit);
assign StoreAccessFaultM = (PMAStoreAccessFaultM | PMPStoreAccessFaultM) & ~(Translate & ~TLBHit);
diff --git a/wally-pipelined/src/mmu/pmachecker.sv b/wally-pipelined/src/mmu/pmachecker.sv
index a95252f3b..904dd0ee8 100644
--- a/wally-pipelined/src/mmu/pmachecker.sv
+++ b/wally-pipelined/src/mmu/pmachecker.sv
@@ -32,12 +32,8 @@ module pmachecker (
input logic [`PA_BITS-1:0] PhysicalAddress,
input logic [1:0] Size,
-
input logic AtomicAccessM, ExecuteAccessF, WriteAccessM, ReadAccessM, // *** atomicaccessM is unused but might want to stay in for future use.
-
output logic Cacheable, Idempotent, AtomicAllowed,
- output logic PMASquashBusAccess,
-
output logic PMAInstrAccessFaultF,
output logic PMALoadAccessFaultM,
output logic PMAStoreAccessFaultM
@@ -65,6 +61,5 @@ module pmachecker (
assign PMAInstrAccessFaultF = ExecuteAccessF && PMAAccessFault;
assign PMALoadAccessFaultM = ReadAccessM && PMAAccessFault;
assign PMAStoreAccessFaultM = WriteAccessM && PMAAccessFault;
- assign PMASquashBusAccess = PMAAccessFault;
endmodule
diff --git a/wally-pipelined/src/mmu/pmpadrdec.sv b/wally-pipelined/src/mmu/pmpadrdec.sv
index 618167827..4f747ffb2 100644
--- a/wally-pipelined/src/mmu/pmpadrdec.sv
+++ b/wally-pipelined/src/mmu/pmpadrdec.sv
@@ -34,10 +34,8 @@ module pmpadrdec (
input logic [7:0] PMPCfg,
input logic [`XLEN-1:0] PMPAdr,
input logic PAgePMPAdrIn,
-// input logic NoLowerMatchIn,
input logic FirstMatch,
output logic PAgePMPAdrOut,
-// output logic NoLowerMatchOut,
output logic Match, Active,
output logic L, X, W, R
);
@@ -48,7 +46,6 @@ module pmpadrdec (
logic TORMatch, NAMatch;
logic PAltPMPAdr;
-// logic FirstMatch;
logic [`PA_BITS-1:0] CurrentAdrFull;
logic [1:0] AdrMode;
@@ -67,25 +64,15 @@ module pmpadrdec (
assign TORMatch = PAgePMPAdrIn && PAltPMPAdr;
// Naturally aligned regions
- logic [`PA_BITS-1:0] NAMask;
- //genvar i;
-
- // create a mask of which bits to ignore
- // generate
- // assign Mask[1:0] = 2'b11;
- // assign Mask[2] = (AdrMode == NAPOT); // mask has 0s in upper bis for NA4 region
- // for (i=3; i < `PA_BITS; i=i+1) begin:mask
- // assign Mask[i] = Mask[i-1] & PMPAdr[i-3]; // NAPOT mask: 1's indicate bits to ignore
- // end
- // endgenerate
+ logic [`PA_BITS-1:0] NAMask, NABase;
assign NAMask[1:0] = {2'b11};
-
- prioritythemometer #(`PA_BITS-2) namaskgen(
- .a({PMPAdr[`PA_BITS-4:0], (AdrMode == NAPOT)}),
- .y(NAMask[`PA_BITS-1:2]));
-
- assign NAMatch = &((PhysicalAddress ~^ CurrentAdrFull) | NAMask);
+ assign NAMask[`PA_BITS-1:2] = (PMPAdr[`PA_BITS-3:0] + {{(`PA_BITS-3){1'b0}}, (AdrMode == NAPOT)}) ^ PMPAdr[`PA_BITS-3:0];
+ // generates a mask where the bottom k bits are 1, corresponding to a size of 2^k bytes for this memory region.
+ // This assumes we're using at least an NA4 region, but works for any size NAPOT region.
+ assign NABase = {(PMPAdr[`PA_BITS-3:0] & ~NAMask[`PA_BITS-1:2]), 2'b00}; // base physical address of the pmp.
+
+ assign NAMatch = &((NABase ~^ PhysicalAddress) | NAMask); // check if upper bits of base address match, ignore lower bits correspoonding to inside the memory range
assign Match = (AdrMode == TOR) ? TORMatch :
(AdrMode == NA4 || AdrMode == NAPOT) ? NAMatch :
diff --git a/wally-pipelined/src/mmu/pmpchecker.sv b/wally-pipelined/src/mmu/pmpchecker.sv
index 7dc37163c..06cc9ea8b 100644
--- a/wally-pipelined/src/mmu/pmpchecker.sv
+++ b/wally-pipelined/src/mmu/pmpchecker.sv
@@ -41,11 +41,7 @@ module pmpchecker (
// which we might not intend.
input var logic [7:0] PMPCFG_ARRAY_REGW[`PMP_ENTRIES-1:0],
input var logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [`PMP_ENTRIES-1:0],
-
input logic ExecuteAccessF, WriteAccessM, ReadAccessM,
-
- output logic PMPSquashBusAccess,
-
output logic PMPInstrAccessFaultF,
output logic PMPLoadAccessFaultM,
output logic PMPStoreAccessFaultM
@@ -54,8 +50,9 @@ module pmpchecker (
// Bit i is high when the address falls in PMP region i
logic EnforcePMP;
- logic [7:0] PMPCfg[`PMP_ENTRIES-1:0];
- logic [`PMP_ENTRIES-1:0] Match, FirstMatch; // PMP Entry matches
+// logic [7:0] PMPCfg[`PMP_ENTRIES-1:0];
+ logic [`PMP_ENTRIES-1:0] Match; // physical address matches one of the pmp ranges
+ logic [`PMP_ENTRIES-1:0] FirstMatch; // onehot encoding for the first pmpaddr to match the current address.
logic [`PMP_ENTRIES-1:0] Active; // PMP register i is non-null
logic [`PMP_ENTRIES-1:0] L, X, W, R; // PMP matches and has flag set
logic [`PMP_ENTRIES-1:0] PAgePMPAdr; // for TOR PMP matching, PhysicalAddress > PMPAdr[i]
@@ -69,7 +66,7 @@ module pmpchecker (
.PAgePMPAdrOut(PAgePMPAdr),
.FirstMatch, .Match, .Active, .L, .X, .W, .R);
- priorityonehot #(`PMP_ENTRIES) pmppriority(.a(Match), .y(FirstMatch)); // Take the ripple gates/signals out of the pmpadrdec and into another unit.
+ priorityonehot #(`PMP_ENTRIES) pmppriority(.a(Match), .y(FirstMatch)); // combine the match signal from all the adress decoders to find the first one that matches.
// Only enforce PMP checking for S and U modes when at least one PMP is active or in Machine mode when L bit is set in selected region
assign EnforcePMP = (PrivilegeModeW == `M_MODE) ? |L : |Active;
@@ -78,6 +75,6 @@ module pmpchecker (
assign PMPStoreAccessFaultM = EnforcePMP && WriteAccessM && ~|W;
assign PMPLoadAccessFaultM = EnforcePMP && ReadAccessM && ~|R;
- assign PMPSquashBusAccess = PMPInstrAccessFaultF | PMPLoadAccessFaultM | PMPStoreAccessFaultM;
+ //assign PMPSquashBusAccess = PMPInstrAccessFaultF | PMPLoadAccessFaultM | PMPStoreAccessFaultM;
endmodule
diff --git a/wally-pipelined/src/mmu/priorityonehot.sv b/wally-pipelined/src/mmu/priorityonehot.sv
index 7a17f8d28..849f178ee 100644
--- a/wally-pipelined/src/mmu/priorityonehot.sv
+++ b/wally-pipelined/src/mmu/priorityonehot.sv
@@ -40,13 +40,16 @@ module priorityonehot #(parameter ENTRIES = 8) (
logic [ENTRIES-1:0] nolower;
// generate thermometer code mask
- genvar i;
- generate
- assign nolower[0] = 1'b1;
- for (i=1; i
-#include
-#include
-
-int main() {
-
- uint64_t N;
- uint64_t D;
- uint64_t Q;
- double val;
- uint64_t val2;
-
- int exponent;
- int base;
-
- base = 2;
- exponent = 32;
- val2 = 1;
- while (exponent != 0) {
- val2 *= base;
- exponent --;
- }
-
- val = pow(2.0, 64) - 1;
- N = 0xdf7f3844121bcc23;
- D = 0x10fd3dedadea5195;
-
- printf("N = %" PRIx64 "\n", N);
- printf("D = %" PRIx64 "\n", D);
- printf("Q = %" PRIx64 "\n", Q);
- printf("R = %" PRIx64 "\n", N%D);
-
- printf("val = %" PRIx64 "\n", val2-1);
-
-
-
-}
diff --git a/wally-pipelined/src/muldiv/div/div64.out b/wally-pipelined/src/muldiv/div/div64.out
deleted file mode 100644
index 6bfa9dd9d..000000000
--- a/wally-pipelined/src/muldiv/div/div64.out
+++ /dev/null
@@ -1,107 +0,0 @@
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-0000000000000000 0000000000000000 | ffffffffffffffff 0000000000000000 | 0000000000000000 0000000000000000 0 1
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
-ffffffffffffffff 0000000000000000 | ffffffffffffffff ffffffffffffffff | 0000000000000000 0000000000000000 0 0
diff --git a/wally-pipelined/src/muldiv/div/div64_sim/div.sv b/wally-pipelined/src/muldiv/div/div64_sim/div.sv
deleted file mode 100755
index 568971e2d..000000000
--- a/wally-pipelined/src/muldiv/div/div64_sim/div.sv
+++ /dev/null
@@ -1,1535 +0,0 @@
-///////////////////////////////////////////
-// mul.sv
-//
-// Written: James.Stine@okstate.edu 1 February 2021
-// Modified:
-//
-// Purpose: Integer Divide instructions
-//
-// A component of the Wally configurable RISC-V project.
-//
-// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
-// is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-///////////////////////////////////////////
-
-module div (Q, done, divdone, rem0, div0, N, D, clk, reset, start);
-
- input logic [63:0] N, D;
- input logic clk;
- input logic reset;
- input logic start;
-
- output logic [63:0] Q;
- output logic [63:0] rem0;
- output logic div0;
- output logic divdone;
-
- output logic done;
- logic enable;
- logic state0;
- logic V;
- logic [7:0] Num;
- logic [5:0] P, NumIter, RemShift;
- logic [63:0] op1, op2, op1shift, Rem5;
- logic [64:0] Qd, Rd, Qd2, Rd2;
- logic [3:0] quotient;
- logic otfzero;
- logic shiftResult;
-
- // Divider goes the distance to 37 cycles
- // (thanks the evil divisor for D = 0x1)
- // but could theoretically be stopped when
- // divdone is asserted. The enable signal
- // turns off register storage thus invalidating
- // any future cycles.
-
- // Shift D, if needed (for integer)
- // needed to allow qst to be in range for integer
- // division [1,2) and allow integer divide to work.
- //
- // The V or valid bit can be used to determine if D
- // is 0 and thus a divide by 0 exception. This div0
- // exception is given to FSM to tell the operation to
- // quit gracefully.
-
- // div0 produced output errors have untested results
- // (it is assumed the OS would handle some output)
-
- lz64 p1 (P, V, D);
- shifter_l64 p2 (op2, D, P);
- assign op1 = N;
- assign div0 = ~V;
-
- // #iter: N = m+v+s = m+(s+2) = m+2+s (mod k = 0)
- // v = 2 since \rho < 1 (add 4 to make sure its a ceil)
- adder #(8) cpa1 ({2'b0, P},
- {5'h0, shiftResult, ~shiftResult, 1'b0},
- Num);
-
- // Determine whether need to add just Q/Rem
- assign shiftResult = P[0];
- // div by 2 (ceil)
- assign NumIter = Num[6:1];
- assign RemShift = P;
-
- // FSM to control integer divider
- // assume inputs are postive edge and
- // datapath (divider) is negative edge
- fsm64 fsm1 (enablev, state0v, donev, divdonev, otfzerov,
- start, div0, NumIter, ~clk, reset);
-
- flopr #(1) rega (~clk, reset, donev, done);
- flopr #(1) regb (~clk, reset, divdonev, divdone);
- flopr #(1) regc (~clk, reset, otfzerov, otfzero);
- flopr #(1) regd (~clk, reset, enablev, enable);
- flopr #(1) rege (~clk, reset, state0v, state0);
-
- // To obtain a correct remainder the last bit of the
- // quotient has to be aligned with a radix-r boundary.
- // Since the quotient is in the range 1/2 < q < 2 (one
- // integer bit and m fractional bits), this is achieved by
- // shifting N right by v+s so that (m+v+s) mod k = 0. And,
- // the quotient has to be aligned to the integer position.
-
- // Used a Brent-Kung for no reason (just wanted prefix -- might
- // have gotten away with a RCA)
-
- // Actual divider unit FIXME: r16 (jes)
- divide4x64 p3 (Qd, Rd, quotient, op1, op2, clk, reset, state0,
- enable, otfzero, shiftResult);
-
- // Storage registers to hold contents stable
- flopenr #(65) reg3 (clk, reset, enable, Rd, Rd2);
- flopenr #(65) reg4 (clk, reset, enable, Qd, Qd2);
-
- // Probably not needed - just assigns results
- assign Q = Qd2[63:0];
- assign Rem5 = Rd2[64:1];
-
- // Adjust remainder by m (no need to adjust by
- // n ln(r)
- shifter_r64 p4 (rem0, Rem5, RemShift);
-
-endmodule // int32div
-
-module divide4x64 (Q, rem0, quotient, op1, op2, clk, reset, state0,
- enable, otfzero, shiftResult);
-
- input logic [63:0] op1, op2;
- input logic clk, state0;
- input logic reset;
- input logic enable;
- input logic otfzero;
- input logic shiftResult;
-
- output logic [64:0] rem0;
- output logic [64:0] Q;
- output logic [3:0] quotient;
-
- logic [67:0] Sum, Carry;
- logic [64:0] Qstar;
- logic [64:0] QMstar;
- logic [7:0] qtotal;
- logic [67:0] SumN, CarryN, SumN2, CarryN2;
- logic [67:0] divi1, divi2, divi1c, divi2c, dive1;
- logic [67:0] mdivi_temp, mdivi;
- logic zero;
- logic [1:0] qsel;
- logic [1:0] Qin, QMin;
- logic CshiftQ, CshiftQM;
- logic [67:0] rem1, rem2, rem3;
- logic [67:0] SumR, CarryR;
- logic [64:0] Qt;
-
- // Create one's complement values of Divisor (for q*D)
- assign divi1 = {3'h0, op2, 1'b0};
- assign divi2 = {2'h0, op2, 2'b0};
- assign divi1c = ~divi1;
- assign divi2c = ~divi2;
- // Shift x1 if not mod k
- mux2 #(68) mx1 ({3'b000, op1, 1'b0}, {4'h0, op1}, shiftResult, dive1);
-
- // I I I . F F F F F ... (Robertson Criteria - \rho * qmax * D)
- mux2 #(68) mx2 ({CarryN2[65:0], 2'h0}, 68'h0, state0, CarryN);
- mux2 #(68) mx3 ({SumN2[65:0], 2'h0}, dive1, state0, SumN);
- // Simplify QST
- adder #(8) cpa1 (SumN[67:60], CarryN[67:60], qtotal);
- // q = {+2, +1, -1, -2} else q = 0
- qst4 pd1 (qtotal[7:1], divi1[63:61], quotient);
- assign ulp = quotient[2]|quotient[3];
- assign zero = ~(quotient[3]|quotient[2]|quotient[1]|quotient[0]);
- // Map to binary encoding
- assign qsel[1] = quotient[3]|quotient[2];
- assign qsel[0] = quotient[3]|quotient[1];
- mux4 #(68) mx4 (divi2, divi1, divi1c, divi2c, qsel, mdivi_temp);
- mux2 #(68) mx5 (mdivi_temp, 68'h0, zero, mdivi);
- csa #(68) csa1 (mdivi, SumN, {CarryN[67:1], ulp}, Sum, Carry);
- // regs : save CSA
- flopenr #(68) reg1 (clk, reset, enable, Sum, SumN2);
- flopenr #(68) reg2 (clk, reset, enable, Carry, CarryN2);
- // OTF
- ls_control otf1 (quotient, Qin, QMin, CshiftQ, CshiftQM);
- otf #(65) otf2 (Qin, QMin, CshiftQ, CshiftQM, clk,
- otfzero, enable, Qstar, QMstar);
-
- // Correction and generation of Remainder
- adder #(68) cpa2 (SumN2[67:0], CarryN2[67:0], rem1);
- // Add back +D as correction
- csa #(68) csa2 (CarryN2[67:0], SumN2[67:0], divi1, SumR, CarryR);
- adder #(68) cpa3 (SumR, CarryR, rem2);
- // Choose remainder (Rem or Rem+D)
- mux2 #(68) mx6 (rem1, rem2, rem1[67], rem3);
- // Choose correct Q or QM
- mux2 #(65) mx7 (Qstar, QMstar, rem1[67], Qt);
- // Final results
- assign rem0 = rem3[64:0];
- assign Q = Qt;
-
-endmodule // divide4x64
-
-module ls_control (quot, Qin, QMin, CshiftQ, CshiftQM);
-
- input logic [3:0] quot;
-
- output logic [1:0] Qin;
- output logic [1:0] QMin;
- output logic CshiftQ;
- output logic CshiftQM;
-
- // Load/Store Control for OTF
- assign Qin[1] = (quot[1]) | (quot[3]) | (quot[0]);
- assign Qin[0] = (quot[1]) | (quot[2]);
- assign QMin[1] = (quot[1]) | (!quot[3]&!quot[2]&!quot[1]&!quot[0]);
- assign QMin[0] = (quot[3]) | (quot[0]) |
- (!quot[3]&!quot[2]&!quot[1]&!quot[0]);
- assign CshiftQ = (quot[1]) | (quot[0]);
- assign CshiftQM = (quot[3]) | (quot[2]);
-
-endmodule
-
-// On-the-fly Conversion per Ercegovac/Lang
-
-module otf #(parameter WIDTH=8)
- (Qin, QMin, CshiftQ, CshiftQM, clk, reset, enable, R2Q, R1Q);
-
- input logic [1:0] Qin, QMin;
- input logic CshiftQ, CshiftQM;
- input logic clk;
- input logic reset;
- input logic enable;
-
- output logic [WIDTH-1:0] R2Q;
- output logic [WIDTH-1:0] R1Q;
-
- logic [WIDTH-1:0] Qstar, QMstar;
- logic [WIDTH-1:0] M1Q, M2Q;
-
- // QM
- mux2 #(WIDTH) m1 (QMstar, Qstar, CshiftQM, M1Q);
- flopenr #(WIDTH) r1 (clk, reset, enable, {M1Q[WIDTH-3:0], QMin}, R1Q);
- // Q
- mux2 #(WIDTH) m2 (Qstar, QMstar, CshiftQ, M2Q);
- flopenr #(WIDTH) r2 (clk, reset, enable, {M2Q[WIDTH-3:0], Qin}, R2Q);
-
- assign Qstar = R2Q;
- assign QMstar = R1Q;
-
-endmodule // otf8
-
-module adder #(parameter WIDTH=8) (input logic [WIDTH-1:0] a, b,
- output logic [WIDTH-1:0] y);
-
- assign y = a + b;
-
-endmodule // adder
-
-module fa (input logic a, b, c, output logic sum, carry);
-
- assign sum = a^b^c;
- assign carry = a&b|a&c|b&c;
-
-endmodule // fa
-
-module csa #(parameter WIDTH=8) (input logic [WIDTH-1:0] a, b, c,
- output logic [WIDTH-1:0] sum, carry);
-
- logic [WIDTH:0] carry_temp;
- genvar i;
- generate
- for (i=0;i B. LT and GT are both '0' if A = B.
-
-module magcompare2b (LT, GT, A, B);
-
- input logic [1:0] A;
- input logic [1:0] B;
-
- output logic LT;
- output logic GT;
-
- // Determine if A < B using a minimized sum-of-products expression
- assign LT = ~A[1]&B[1] | ~A[1]&~A[0]&B[0] | ~A[0]&B[1]&B[0];
- // Determine if A > B using a minimized sum-of-products expression
- assign GT = A[1]&~B[1] | A[1]&A[0]&~B[0] | A[0]&~B[1]&~B[0];
-
-endmodule // magcompare2b
-
-// J. E. Stine and M. J. Schulte, "A combined two's complement and
-// floating-point comparator," 2005 IEEE International Symposium on
-// Circuits and Systems, Kobe, 2005, pp. 89-92 Vol. 1.
-// doi: 10.1109/ISCAS.2005.1464531
-
-module magcompare8 (LT, EQ, A, B);
-
- input logic [7:0] A;
- input logic [7:0] B;
-
- logic [3:0] s;
- logic [3:0] t;
- logic [1:0] u;
- logic [1:0] v;
- logic GT;
- //wire LT;
-
- output logic EQ;
- output logic LT;
-
- magcompare2b mag1 (s[0], t[0], A[1:0], B[1:0]);
- magcompare2b mag2 (s[1], t[1], A[3:2], B[3:2]);
- magcompare2b mag3 (s[2], t[2], A[5:4], B[5:4]);
- magcompare2b mag4 (s[3], t[3], A[7:6], B[7:6]);
-
- magcompare2b mag5 (u[0], v[0], t[1:0], s[1:0]);
- magcompare2b mag6 (u[1], v[1], t[3:2], s[3:2]);
-
- magcompare2b mag7 (LT, GT, v[1:0], u[1:0]);
-
- assign EQ = ~(GT | LT);
-
-endmodule // magcompare8
-
-module shifter_l64 (Z, A, Shift);
-
- input logic [63:0] A;
- input logic [5:0] Shift;
-
- logic [63:0] stage1;
- logic [63:0] stage2;
- logic [63:0] stage3;
- logic [63:0] stage4;
- logic [63:0] stage5;
- logic [31:0] thirtytwozeros = 32'h0;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [63:0] Z;
-
- mux2 #(64) mx01(A, {A[31:0], thirtytwozeros}, Shift[5], stage1);
- mux2 #(64) mx02(stage1, {stage1[47:0], sixteenzeros}, Shift[4], stage2);
- mux2 #(64) mx03(stage2, {stage2[55:0], eightzeros}, Shift[3], stage3);
- mux2 #(64) mx04(stage3, {stage3[59:0], fourzeros}, Shift[2], stage4);
- mux2 #(64) mx05(stage4, {stage4[61:0], twozeros}, Shift[1], stage5);
- mux2 #(64) mx06(stage5, {stage5[62:0], onezero}, Shift[0], Z);
-
-endmodule // shifter_l64
-
-module shifter_r64 (Z, A, Shift);
-
- input logic [63:0] A;
- input logic [5:0] Shift;
-
- logic [63:0] stage1;
- logic [63:0] stage2;
- logic [63:0] stage3;
- logic [63:0] stage4;
- logic [63:0] stage5;
- logic [31:0] thirtytwozeros = 32'h0;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [63:0] Z;
-
- mux2 #(64) mx01(A, {thirtytwozeros, A[63:32]}, Shift[5], stage1);
- mux2 #(64) mx02(stage1, {sixteenzeros, stage1[63:16]}, Shift[4], stage2);
- mux2 #(64) mx03(stage2, {eightzeros, stage2[63:8]}, Shift[3], stage3);
- mux2 #(64) mx04(stage3, {fourzeros, stage3[63:4]}, Shift[2], stage4);
- mux2 #(64) mx05(stage4, {twozeros, stage4[63:2]}, Shift[1], stage5);
- mux2 #(64) mx06(stage5, {onezero, stage5[63:1]}, Shift[0], Z);
-
-endmodule // shifter_r64
-
-module shifter_l32 (Z, A, Shift);
-
- input logic [31:0] A;
- input logic [4:0] Shift;
-
- logic [31:0] stage1;
- logic [31:0] stage2;
- logic [31:0] stage3;
- logic [31:0] stage4;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [31:0] Z;
-
- mux2 #(32) mx01(A, {A[15:0], sixteenzeros}, Shift[4], stage1);
- mux2 #(32) mx02(stage1, {stage1[23:0], eightzeros}, Shift[3], stage2);
- mux2 #(32) mx03(stage2, {stage2[27:0], fourzeros}, Shift[2], stage3);
- mux2 #(32) mx04(stage3, {stage3[29:0], twozeros}, Shift[1], stage4);
- mux2 #(32) mx05(stage4, {stage4[30:0], onezero}, Shift[0], Z);
-
-endmodule // shifter_l32
-
-module shifter_r32 (Z, A, Shift);
-
- input logic [31:0] A;
- input logic [4:0] Shift;
-
- logic [31:0] stage1;
- logic [31:0] stage2;
- logic [31:0] stage3;
- logic [31:0] stage4;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [31:0] Z;
-
- mux2 #(32) mx01(A, {sixteenzeros, A[31:16]}, Shift[4], stage1);
- mux2 #(32) mx02(stage1, {eightzeros, stage1[31:8]}, Shift[3], stage2);
- mux2 #(32) mx03(stage2, {fourzeros, stage2[31:4]}, Shift[2], stage3);
- mux2 #(32) mx04(stage3, {twozeros, stage3[31:2]}, Shift[1], stage4);
- mux2 #(32) mx05(stage4, {onezero, stage4[31:1]}, Shift[0], Z);
-
-endmodule // shifter_r32
-
diff --git a/wally-pipelined/src/muldiv/div/div64_sim/flop.sv b/wally-pipelined/src/muldiv/div/div64_sim/flop.sv
deleted file mode 100644
index 8a9992474..000000000
--- a/wally-pipelined/src/muldiv/div/div64_sim/flop.sv
+++ /dev/null
@@ -1,108 +0,0 @@
-///////////////////////////////////////////
-// flop.sv
-//
-// Written: David_Harris@hmc.edu 9 January 2021
-// Modified:
-//
-// Purpose: arious flavors of flip-flops
-//
-// A component of the Wally configurable RISC-V project.
-//
-// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
-// is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-///////////////////////////////////////////
-
-// ordinary flip-flop
-module flop #(parameter WIDTH = 8) (
- input logic clk,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk)
- q <= #1 d;
-endmodule
-
-// flop with asynchronous reset
-module flopr #(parameter WIDTH = 8) (
- input logic clk, reset,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk, posedge reset)
- if (reset) q <= #1 0;
- else q <= #1 d;
-endmodule
-
-// flop with enable
-module flopen #(parameter WIDTH = 8) (
- input logic clk, en,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk)
- if (en) q <= #1 d;
-endmodule
-
-// flop with enable, asynchronous reset, synchronous clear
-module flopenrc #(parameter WIDTH = 8) (
- input logic clk, reset, clear, en,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk, posedge reset)
- if (reset) q <= #1 0;
- else if (en)
- if (clear) q <= #1 0;
- else q <= #1 d;
-endmodule
-
-// flop with enable, asynchronous reset
-module flopenr #(parameter WIDTH = 8) (
- input logic clk, reset, en,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk, posedge reset)
- if (reset) q <= #1 0;
- else if (en) q <= #1 d;
-endmodule
-
-// flop with enable, asynchronous load
-module flopenl #(parameter WIDTH = 8, parameter type TYPE=logic [WIDTH-1:0]) (
- input logic clk, load, en,
- input TYPE d,
- input TYPE val,
- output TYPE q);
-
- always_ff @(posedge clk, posedge load)
- if (load) q <= #1 val;
- else if (en) q <= #1 d;
-endmodule
-
-// flop with asynchronous reset, synchronous clear
-module floprc #(parameter WIDTH = 8) (
- input logic clk,
- input logic reset,
- input logic clear,
- input logic [WIDTH-1:0] d,
- output logic [WIDTH-1:0] q);
-
- always_ff @(posedge clk, posedge reset)
- if (reset) q <= #1 0;
- else
- if (clear) q <= #1 0;
- else q <= #1 d;
-endmodule
-
-
diff --git a/wally-pipelined/src/muldiv/div/div64_sim/iter32.do b/wally-pipelined/src/muldiv/div/div64_sim/iter32.do
deleted file mode 100755
index d6ae858ae..000000000
--- a/wally-pipelined/src/muldiv/div/div64_sim/iter32.do
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1991-2007 Mentor Graphics Corporation
-#
-# Modification by Oklahoma State University
-# Use with Testbench
-# James Stine, 2008
-# Go Cowboys!!!!!!
-#
-# All Rights Reserved.
-#
-# THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
-# WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
-# OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
-
-# Use this run.do file to run this example.
-# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
-# do run.do
-# or, to run from a shell, type the following at the shell prompt:
-# vsim -do run.do -c
-# (omit the "-c" to see the GUI while running from the shell)
-
-onbreak {resume}
-
-# create library
-if [file exists work] {
- vdel -all
-}
-vlib work
-
-# compile source files
-vlog div.sv test_iter32.sv
-
-# start and run simulation
-vsim -voptargs=+acc work.tb
-
-
--- Set Wave Output Items
-TreeUpdate [SetDefaultTree]
-WaveRestoreZoom {0 ps} {75 ns}
-configure wave -namecolwidth 150
-configure wave -valuecolwidth 100
-configure wave -justifyvalue left
-configure wave -signalnamewidth 0
-configure wave -snapdistance 10
-configure wave -datasetprefix 0
-configure wave -rowmargin 4
-configure wave -childrowmargin 2
-
--- Run the Simulation
-run 9586700ns
-quit
diff --git a/wally-pipelined/src/muldiv/div/div64_sim/iter64.do b/wally-pipelined/src/muldiv/div/div64_sim/iter64.do
deleted file mode 100755
index 435b80199..000000000
--- a/wally-pipelined/src/muldiv/div/div64_sim/iter64.do
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1991-2007 Mentor Graphics Corporation
-#
-# Modification by Oklahoma State University
-# Use with Testbench
-# James Stine, 2008
-# Go Cowboys!!!!!!
-#
-# All Rights Reserved.
-#
-# THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
-# WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
-# OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
-
-# Use this run.do file to run this example.
-# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
-# do run.do
-# or, to run from a shell, type the following at the shell prompt:
-# vsim -do run.do -c
-# (omit the "-c" to see the GUI while running from the shell)
-
-onbreak {resume}
-
-# create library
-if [file exists work] {
- vdel -all
-}
-vlib work
-
-# compile source files
-vlog mux.sv flop.sv div.sv test_iter64.sv
-
-# start and run simulation
-vsim -voptargs=+acc work.tb
-
-
--- Set Wave Output Items
-TreeUpdate [SetDefaultTree]
-WaveRestoreZoom {0 ps} {75 ns}
-configure wave -namecolwidth 150
-configure wave -valuecolwidth 100
-configure wave -justifyvalue left
-configure wave -signalnamewidth 0
-configure wave -snapdistance 10
-configure wave -datasetprefix 0
-configure wave -rowmargin 4
-configure wave -childrowmargin 2
-
--- Run the Simulation
-run 9586700ns
-quit
diff --git a/wally-pipelined/src/muldiv/div/div64_sim/mux.sv b/wally-pipelined/src/muldiv/div/div64_sim/mux.sv
deleted file mode 100644
index da2682462..000000000
--- a/wally-pipelined/src/muldiv/div/div64_sim/mux.sv
+++ /dev/null
@@ -1,66 +0,0 @@
-///////////////////////////////////////////
-// mux.sv
-//
-// Written: David_Harris@hmc.edu 9 January 2021
-// Modified:
-//
-// Purpose: Various flavors of multiplexers
-//
-// A component of the Wally configurable RISC-V project.
-//
-// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
-// is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-///////////////////////////////////////////
-
-module mux2 #(parameter WIDTH = 8) (
- input logic [WIDTH-1:0] d0, d1,
- input logic s,
- output logic [WIDTH-1:0] y);
-
- assign y = s ? d1 : d0;
-endmodule
-
-module mux3 #(parameter WIDTH = 8) (
- input logic [WIDTH-1:0] d0, d1, d2,
- input logic [1:0] s,
- output logic [WIDTH-1:0] y);
-
- assign y = s[1] ? d2 : (s[0] ? d1 : d0);
-endmodule
-
-module mux4 #(parameter WIDTH = 8) (
- input logic [WIDTH-1:0] d0, d1, d2, d3,
- input logic [1:0] s,
- output logic [WIDTH-1:0] y);
-
- assign y = s[1] ? (s[0] ? d3 : d2) : (s[0] ? d1 : d0);
-endmodule
-
-module mux5 #(parameter WIDTH = 8) (
- input logic [WIDTH-1:0] d0, d1, d2, d3, d4,
- input logic [2:0] s,
- output logic [WIDTH-1:0] y);
-
- assign y = s[2] ? d4 : (s[1] ? (s[0] ? d3 : d2) : (s[0] ? d1 : d0));
-endmodule
-
-module mux6 #(parameter WIDTH = 8) (
- input logic [WIDTH-1:0] d0, d1, d2, d3, d4, d5,
- input logic [2:0] s,
- output logic [WIDTH-1:0] y);
-
- assign y = s[2] ? (s[0] ? d5 : d4) : (s[1] ? (s[0] ? d3 : d2) : (s[0] ? d1 : d0));
-endmodule
-
-/* verilator lint_on DECLFILENAME */
diff --git a/wally-pipelined/src/muldiv/div/div64_sim/test_iter32.sv b/wally-pipelined/src/muldiv/div/div64_sim/test_iter32.sv
deleted file mode 100755
index 94a42c211..000000000
--- a/wally-pipelined/src/muldiv/div/div64_sim/test_iter32.sv
+++ /dev/null
@@ -1,74 +0,0 @@
-module tb;
-
- logic [31:0] N, D;
- logic clk;
- logic reset;
- logic start;
-
- logic [31:0] Q;
- logic [31:0] rem0;
- logic div0;
- logic done;
- logic divdone;
-
- integer handle3;
- integer desc3;
- integer i;
-
- bit [31:0] Ncomp;
- bit [31:0] Dcomp;
- bit [31:0] Qcomp;
- bit [31:0] Rcomp;
-
- logic [7:0] count [0:15];
-
- int32div dut (Q, done, divdone, rem0, div0, N, D, clk, reset, start);
-
- initial
- begin
- clk = 1'b0;
- forever #5 clk = ~clk;
- end
-
- initial
- begin
- handle3 = $fopen("iter32.out");
- #8000000 $finish;
- end
-
- always @(posedge clk, posedge reset)
- begin
- desc3 = handle3;
- #0 start = 1'b0;
- #0 reset = 1'b1;
- #30 reset = 1'b0;
- for (i=0; i<2; i=i+1)
- begin
- N = $random;
- D = $random;
- start <= 1'b1;
- // Wait 2 cycles (to be sure)
- repeat (2)
- @(posedge clk);
- start <= 1'b0;
- repeat (25)
- @(posedge clk);
- Ncomp = N;
- Dcomp = D;
- Qcomp = Ncomp/Dcomp;
- Rcomp = Ncomp%Dcomp;
- $fdisplay(desc3, "%h %h %h %h || %h %h || %b %b",
- N, D, Q, rem0, Qcomp, Rcomp,
- (Q==Qcomp), (rem0==Rcomp));
- end // for (i=0; i<2, i=i+1)
-
-
- end
-
-endmodule // tb
-
-
-
-
-
-
diff --git a/wally-pipelined/src/muldiv/div/div64_sim/test_iter64.sv b/wally-pipelined/src/muldiv/div/div64_sim/test_iter64.sv
deleted file mode 100755
index a194c1311..000000000
--- a/wally-pipelined/src/muldiv/div/div64_sim/test_iter64.sv
+++ /dev/null
@@ -1,72 +0,0 @@
-module tb;
-
- logic [63:0] N, D;
- logic clk;
- logic reset;
- logic start;
-
- logic [63:0] Q;
- logic [63:0] rem0;
- logic div0;
- logic done;
- logic divdone;
-
- integer handle3;
- integer desc3;
- integer i;
-
- bit [63:0] Ncomp;
- bit [63:0] Dcomp;
- bit [63:0] Qcomp;
- bit [63:0] Rcomp;
-
- logic [7:0] count [0:15];
-
- div dut (Q, done, divdone, rem0, div0, N, D, clk, reset, start);
-
- initial
- begin
- clk = 1'b0;
- forever #5 clk = ~clk;
- end
-
- initial
- begin
- handle3 = $fopen("iter64.out");
- #8000000 $finish;
- end
-
- always @(posedge clk, posedge reset)
- begin
- desc3 = handle3;
- #0 start = 1'b0;
- #0 reset = 1'b1;
- #30 reset = 1'b0;
- for (i=0; i<2; i=i+1)
- begin
- N = $random;
- D = $random;
- start <= 1'b1;
- // Wait 2 cycles (to be sure)
- repeat (2)
- @(posedge clk);
- start <= 1'b0;
- repeat (41)
- @(posedge clk);
- Ncomp = N;
- Dcomp = D;
- Qcomp = Ncomp/Dcomp;
- Rcomp = Ncomp%Dcomp;
- $fdisplay(desc3, "%h %h %h %h || %h %h || %b %b",
- N, D, Q, rem0, Qcomp, Rcomp,
- (Q==Qcomp), (rem0==Rcomp));
- end // for (i=0; i<2, i=i+1)
- end
-
-endmodule // tb
-
-
-
-
-
-
diff --git a/wally-pipelined/src/muldiv/div/divide4x32.sv b/wally-pipelined/src/muldiv/div/divide4x32.sv
deleted file mode 100755
index c5c311701..000000000
--- a/wally-pipelined/src/muldiv/div/divide4x32.sv
+++ /dev/null
@@ -1,1006 +0,0 @@
-module int32div (Q, done, divdone, rem0, div0, N, D, clk, reset, start);
-
- input logic [31:0] N, D;
- input logic clk;
- input logic reset;
- input logic start;
-
- output logic [31:0] Q;
- output logic [31:0] rem0;
- output logic div0;
- output logic done;
- output logic divdone;
-
- logic enable;
- logic state0;
- logic V;
- logic [5:0] Num;
- logic [4:0] P, NumIter, RemShift;
- logic [31:0] op1, op2, op1shift, Rem5;
- logic [32:0] Qd, Rd, Qd2, Rd2;
- logic [3:0] quotient;
- logic otfzero;
-
- // Divider goes the distance to 19 cycles
- // (thanks the evil divisor for D = 0x1)
- // but could theoretically be stopped when
- // divdone is asserted. The enable signal
- // turns off register storage thus invalidating
- // any future cycles.
-
- // Shift D, if needed (for integer)
- // needed to allow qst to be in range for integer
- // division [1,2) and allow integer divide to work.
- //
- // The V or valid bit can be used to determine if D
- // is 0 and thus a divide by 0 exception. This div0
- // exception is given to FSM to tell the operation to
- // quit gracefully.
-
- // div0 produced output errors have untested results
- // (it is assumed the OS would handle some output)
-
- lz32 p1 (P, V, D);
- shifter_l32 p2 (op2, D, P);
- assign op1 = N;
- assign div0 = ~V;
-
- // Brent-Kung adder chosen for the heck of it and
- // since so small (maybe could have used a RCA)
-
- // #iter: N = m+v+s = m+(s+2) = m+2+s (mod k = 0)
- // v = 2 since \rho < 1 (add 4 to make sure its a ceil)
- adder #(6) cpa1 ({1'b0, P},
- {3'h0, shiftResult, ~shiftResult,1'b0},
- Num);
-
- // Determine whether need to add just Q/Rem
- assign shiftResult = P[0];
- // div by 2 (ceil)
- assign NumIter = Num[5:1];
- assign RemShift = P;
-
- // FSM to control integer divider
- // assume inputs are postive edge and
- // datapath (divider) is negative edge
- fsm32 fsm1 (enablev, state0v, donev, divdonev, otfzerov,
- start, div0, NumIter, ~clk, reset);
-
- flopr #(1) rega (~clk, reset, donev, done);
- flopr #(1) regb (~clk, reset, divdonev, divdone);
- flopr #(1) regc (~clk, reset, otfzerov, otfzero);
- flopr #(1) regd (~clk, reset, enablev, enable);
- flopr #(1) rege (~clk, reset, state0v, state0);
-
- // To obtain a correct remainder the last bit of the
- // quotient has to be aligned with a radix-r boundary.
- // Since the quotient is in the range 1/2 < q < 2 (one
- // integer bit and m fractional bits), this is achieved by
- // shifting N right by v+s so that (m+v+s) mod k = 0. And,
- // the quotient has to be aligned to the integer position.
-
- // Used a Brent-Kung for no reason (just wanted prefix -- might
- // have gotten away with a RCA)
-
- // Actual divider unit FIXME: r16 (jes)
- divide4x32 p3 (Qd, Rd, quotient, op1, op2, clk, reset, state0,
- enable, otfzero, shiftResult);
-
- // Storage registers to hold contents stable
- flopenr #(33) reg3 (clk, reset, enable, Rd, Rd2);
- flopenr #(33) reg4 (clk, reset, enable, Qd, Qd2);
-
- // Probably not needed - just assigns results
- assign Q = Qd2[31:0];
- assign Rem5 = Rd2[32:1];
-
- // Adjust remainder by m (no need to adjust by
- // n ln(r)
- shifter_r32 p4 (rem0, Rem5, RemShift);
-
-endmodule // int32div
-
-module divide4x32 (Q, rem0, quotient, op1, op2, clk, reset, state0,
- enable, otfzero, shiftResult);
-
- input logic [31:0] op1, op2;
- input logic clk, state0;
- input logic reset;
- input logic enable;
- input logic otfzero;
- input logic shiftResult;
-
- output logic [32:0] rem0;
- output logic [32:0] Q;
- output logic [3:0] quotient;
-
- logic [35:0] Sum, Carry;
- logic [32:0] Qstar;
- logic [32:0] QMstar;
- logic [7:0] qtotal;
- logic [35:0] SumN, CarryN, SumN2, CarryN2;
- logic [35:0] divi1, divi2, divi1c, divi2c, dive1;
- logic [35:0] mdivi_temp, mdivi;
- logic zero;
- logic [1:0] qsel;
- logic [1:0] Qin, QMin;
- logic CshiftQ, CshiftQM;
- logic [35:0] rem1, rem2, rem3;
- logic [35:0] SumR, CarryR;
- logic [32:0] Qt;
-
- // Create one's complement values of Divisor (for q*D)
- assign divi1 = {3'h0, op2, 1'b0};
- assign divi2 = {2'h0, op2, 2'b0};
- assign divi1c = ~divi1;
- assign divi2c = ~divi2;
- // Shift x1 if not mod k
- mux2 #(36) mx1 ({3'b000, op1, 1'b0}, {4'h0, op1}, shiftResult, dive1);
-
- // I I I . F F F F F ... (Robertson Criteria - \rho * qmax * D)
- mux2 #(36) mx2 ({CarryN2[33:0], 2'h0}, 36'h0, state0, CarryN);
- mux2 #(36) mx3 ({SumN2[33:0], 2'h0}, dive1, state0, SumN);
- // Simplify QST
- adder #(8) cpa1 (SumN[35:28], CarryN[35:28], qtotal);
- // q = {+2, +1, -1, -2} else q = 0
- qst4 pd1 (qtotal[7:1], divi1[31:29], quotient);
- assign ulp = quotient[2]|quotient[3];
- assign zero = ~(quotient[3]|quotient[2]|quotient[1]|quotient[0]);
- // Map to binary encoding
- assign qsel[1] = quotient[3]|quotient[2];
- assign qsel[0] = quotient[3]|quotient[1];
- mux4 #(36) mx4 (divi2, divi1, divi1c, divi2c, qsel, mdivi_temp);
- mux2 #(36) mx5 (mdivi_temp, 36'h0, zero, mdivi);
- csa #(36) csa1 (mdivi, SumN, {CarryN[35:1], ulp}, Sum, Carry);
- // regs : save CSA
- flopenr #(36) reg1 (clk, reset, enable, Sum, SumN2);
- flopenr #(36) reg2 (clk, reset, enable, Carry, CarryN2);
- // OTF
- ls_control otf1 (quotient, Qin, QMin, CshiftQ, CshiftQM);
- otf #(33) otf2 (Qin, QMin, CshiftQ, CshiftQM, clk,
- otfzero, enable, Qstar, QMstar);
-
- // Correction and generation of Remainder
- adder #(36) cpa2 (SumN2[35:0], CarryN2[35:0], rem1);
- // Add back +D as correction
- csa #(36) csa2 (CarryN2[35:0], SumN2[35:0], divi1, SumR, CarryR);
- adder #(36) cpa3 (SumR, CarryR, rem2);
- // Choose remainder (Rem or Rem+D)
- mux2 #(36) mx6 (rem1, rem2, rem1[35], rem3);
- // Choose correct Q or QM
- mux2 #(33) mx7 (Qstar, QMstar, rem1[35], Qt);
- // Final results
- assign rem0 = rem3[32:0];
- assign Q = Qt;
-
-endmodule // divide4x32
-
-module ls_control (quot, Qin, QMin, CshiftQ, CshiftQM);
-
- input logic [3:0] quot;
-
- output logic [1:0] Qin;
- output logic [1:0] QMin;
- output logic CshiftQ;
- output logic CshiftQM;
-
- assign Qin[1] = (quot[1]) | (quot[3]) | (quot[0]);
- assign Qin[0] = (quot[1]) | (quot[2]);
- assign QMin[1] = (quot[1]) | (!quot[3]&!quot[2]&!quot[1]&!quot[0]);
- assign QMin[0] = (quot[3]) | (quot[0]) |
- (!quot[3]&!quot[2]&!quot[1]&!quot[0]);
- assign CshiftQ = (quot[1]) | (quot[0]);
- assign CshiftQM = (quot[3]) | (quot[2]);
-
- endmodule
-
-module otf #(parameter WIDTH=8)
- (Qin, QMin, CshiftQ, CshiftQM, clk, reset, enable, R2Q, R1Q);
-
- input logic [1:0] Qin, QMin;
- input logic CshiftQ, CshiftQM;
- input logic clk;
- input logic reset;
- input logic enable;
-
- output logic [WIDTH-1:0] R2Q;
- output logic [WIDTH-1:0] R1Q;
-
- logic [WIDTH-1:0] Qstar, QMstar;
- logic [WIDTH-1:0] M1Q, M2Q;
-
- // QM
- mux2 #(WIDTH) m1 (QMstar, Qstar, CshiftQM, M1Q);
- flopenr #(WIDTH) r1 (clk, reset, enable, {M1Q[WIDTH-3:0], QMin}, R1Q);
- // Q
- mux2 #(WIDTH) m2 (Qstar, QMstar, CshiftQ, M2Q);
- flopenr #(WIDTH) r2 (clk, reset, enable, {M2Q[WIDTH-3:0], Qin}, R2Q);
-
- assign Qstar = R2Q;
- assign QMstar = R1Q;
-
- endmodule // otf8
-
- module adder #(parameter WIDTH=8) (input logic [WIDTH-1:0] a, b,
- output logic [WIDTH-1:0] y);
- assign y = a + b;
-
- endmodule // adder
-
- module fa (input logic a, b, c, output logic sum, carry);
-
- assign sum = a^b^c;
- assign carry = a&b|a&c|b&c;
-
- endmodule // fa
-
-// Modular Carry-Save Adder
- module csa #(parameter WIDTH=8) (input logic [WIDTH-1:0] a, b, c,
- output logic [WIDTH-1:0] sum, carry);
-
- logic [WIDTH:0] carry_temp;
- genvar i;
- generate
- for (i=0;i B. LT and GT are both '0' if A = B.
-
-module magcompare2b (LT, GT, A, B);
-
- input logic [1:0] A;
- input logic [1:0] B;
-
- output logic LT;
- output logic GT;
-
- // Determine if A < B using a minimized sum-of-products expression
- assign LT = ~A[1]&B[1] | ~A[1]&~A[0]&B[0] | ~A[0]&B[1]&B[0];
- // Determine if A > B using a minimized sum-of-products expression
- assign GT = A[1]&~B[1] | A[1]&A[0]&~B[0] | A[0]&~B[1]&~B[0];
-
-endmodule // magcompare2b
-
-// J. E. Stine and M. J. Schulte, "A combined two's complement and
-// floating-point comparator," 2005 IEEE International Symposium on
-// Circuits and Systems, Kobe, 2005, pp. 89-92 Vol. 1.
-// doi: 10.1109/ISCAS.2005.1464531
-
-module magcompare8 (LT, EQ, A, B);
-
- input logic [7:0] A;
- input logic [7:0] B;
-
- logic [3:0] s;
- logic [3:0] t;
- logic [1:0] u;
- logic [1:0] v;
- logic GT;
- //wire LT;
-
- output logic EQ;
- output logic LT;
-
- magcompare2b mag1 (s[0], t[0], A[1:0], B[1:0]);
- magcompare2b mag2 (s[1], t[1], A[3:2], B[3:2]);
- magcompare2b mag3 (s[2], t[2], A[5:4], B[5:4]);
- magcompare2b mag4 (s[3], t[3], A[7:6], B[7:6]);
-
- magcompare2b mag5 (u[0], v[0], t[1:0], s[1:0]);
- magcompare2b mag6 (u[1], v[1], t[3:2], s[3:2]);
-
- magcompare2b mag7 (LT, GT, v[1:0], u[1:0]);
-
- assign EQ = ~(GT | LT);
-
-endmodule // magcompare8
diff --git a/wally-pipelined/src/muldiv/div/divide4x64.sv b/wally-pipelined/src/muldiv/div/divide4x64.sv
deleted file mode 100755
index 4b474c654..000000000
--- a/wally-pipelined/src/muldiv/div/divide4x64.sv
+++ /dev/null
@@ -1,1453 +0,0 @@
-module int64div (Qf, done, divdone, remf, div0, N, D, clk, reset, start);
-
- input logic [63:0] N, D;
- input logic clk;
- input logic reset;
- input logic start;
-
- output logic [63:0] Qf;
- output logic [63:0] remf;
- output logic div0;
- output logic done;
- output logic divdone;
-
- logic enable;
- logic state0;
- logic V;
- logic [7:0] Num;
- logic [5:0] P, NumIter, RemShift;
- logic [63:0] op1, op2, op1shift, Rem5;
- logic [64:0] Qd, Rd, Qd2, Rd2;
- logic [63:0] Q, rem0;
- logic [3:0] quotient;
- logic otfzero;
- logic shiftResult;
-
- // Divider goes the distance to 37 cycles
- // (thanks the evil divisor for D = 0x1)
- // but could theoretically be stopped when
- // divdone is asserted. The enable signal
- // turns off register storage thus invalidating
- // any future cycles.
-
- // Shift D, if needed (for integer)
- // needed to allow qst to be in range for integer
- // division [1,2) and allow integer divide to work.
- //
- // The V or valid bit can be used to determine if D
- // is 0 and thus a divide by 0 exception. This div0
- // exception is given to FSM to tell the operation to
- // quit gracefully.
-
- // div0 produced output errors have untested results
- // (it is assumed the OS would handle some output)
-
- lz64 p1 (P, V, D);
- shifter_l64 p2 (op2, D, P);
- assign op1 = N;
- assign div0 = ~V;
-
- // Brent-Kung adder chosen for the heck of it and
- // since so small (maybe could have used a RCA)
-
- // #iter: N = m+v+s = m+(s+2) = m+2+s (mod k = 0)
- // v = 2 since \rho < 1 (add 4 to make sure its a ceil)
- adder #(8) cpa1 ({2'b0, P},
- {5'h0, shiftResult, ~shiftResult, 1'b0},
- Num);
-
- // Determine whether need to add just Q/Rem
- assign shiftResult = P[0];
- // div by 2 (ceil)
- assign NumIter = Num[6:1];
- assign RemShift = P;
-
- // FSM to control integer divider
- // assume inputs are postive edge and
- // datapath (divider) is negative edge
- fsm64 fsm1 (enablev, state0v, donev, divdonev, otfzerov,
- start, div0, NumIter, ~clk, reset);
-
- flopr #(1) rega (~clk, reset, donev, done);
- flopr #(1) regb (~clk, reset, divdonev, divdone);
- flopr #(1) regc (~clk, reset, otfzerov, otfzero);
- flopr #(1) regd (~clk, reset, enablev, enable);
- flopr #(1) rege (~clk, reset, state0v, state0);
-
- // To obtain a correct remainder the last bit of the
- // quotient has to be aligned with a radix-r boundary.
- // Since the quotient is in the range 1/2 < q < 2 (one
- // integer bit and m fractional bits), this is achieved by
- // shifting N right by v+s so that (m+v+s) mod k = 0. And,
- // the quotient has to be aligned to the integer position.
-
- // Actual divider unit FIXME: r16 (jes)
- divide4x64 p3 (Qd, Rd, quotient, op1, op2, clk, reset, state0,
- enable, otfzero, shiftResult);
-
- // Storage registers to hold contents stable
- flopenr #(65) reg3 (clk, reset, enable, Rd, Rd2);
- flopenr #(65) reg4 (clk, reset, enable, Qd, Qd2);
-
- // Probably not needed - just assigns results
- assign Q = Qd2[63:0];
- assign Rem5 = Rd2[64:1];
-
- // Adjust remainder by m (no need to adjust by
- // n lg(r)
- shifter_r64 p4 (rem0, Rem5, RemShift);
-
- // RISC-V has exceptions for divide by 0 (see Table 6.1 of spec)
- mux2 #(64) exc1 (Q, {64{1'b1}}, div0, Qf);
- mux2 #(64) exc2 (rem0, op1, div0, remf);
-
-endmodule // int32div
-
-module divide4x64 (Q, rem0, quotient, op1, op2, clk, reset, state0,
- enable, otfzero, shiftResult);
-
- input logic [63:0] op1, op2;
- input logic clk, state0;
- input logic reset;
- input logic enable;
- input logic otfzero;
- input logic shiftResult;
-
- output logic [64:0] rem0;
- output logic [64:0] Q;
- output logic [3:0] quotient;
-
- logic [67:0] Sum, Carry;
- logic [64:0] Qstar;
- logic [64:0] QMstar;
- logic [7:0] qtotal;
- logic [67:0] SumN, CarryN, SumN2, CarryN2;
- logic [67:0] divi1, divi2, divi1c, divi2c, dive1;
- logic [67:0] mdivi_temp, mdivi;
- logic zero;
- logic [1:0] qsel;
- logic [1:0] Qin, QMin;
- logic CshiftQ, CshiftQM;
- logic [67:0] rem1, rem2, rem3;
- logic [67:0] SumR, CarryR;
- logic [64:0] Qt;
-
- // Create one's complement values of Divisor (for q*D)
- assign divi1 = {3'h0, op2, 1'b0};
- assign divi2 = {2'h0, op2, 2'b0};
- assign divi1c = ~divi1;
- assign divi2c = ~divi2;
- // Shift x1 if not mod k
- mux2 #(68) mx1 ({3'b000, op1, 1'b0}, {4'h0, op1}, shiftResult, dive1);
-
- // I I I . F F F F F ... (Robertson Criteria - \rho * qmax * D)
- mux2 #(68) mx2 ({CarryN2[65:0], 2'h0}, 68'h0, state0, CarryN);
- mux2 #(68) mx3 ({SumN2[65:0], 2'h0}, dive1, state0, SumN);
- // Simplify QST
- adder #(8) cpa1 (SumN[67:60], CarryN[67:60], qtotal);
- // q = {+2, +1, -1, -2} else q = 0
- qst4 pd1 (qtotal[7:1], divi1[63:61], quotient);
- assign ulp = quotient[2]|quotient[3];
- assign zero = ~(quotient[3]|quotient[2]|quotient[1]|quotient[0]);
- // Map to binary encoding
- assign qsel[1] = quotient[3]|quotient[2];
- assign qsel[0] = quotient[3]|quotient[1];
- mux4 #(68) mx4 (divi2, divi1, divi1c, divi2c, qsel, mdivi_temp);
- mux2 #(68) mx5 (mdivi_temp, 68'h0, zero, mdivi);
- csa #(68) csa1 (mdivi, SumN, {CarryN[67:1], ulp}, Sum, Carry);
- // regs : save CSA
- flopenr #(68) reg1 (clk, reset, enable, Sum, SumN2);
- flopenr #(68) reg2 (clk, reset, enable, Carry, CarryN2);
- // OTF
- ls_control otf1 (quotient, Qin, QMin, CshiftQ, CshiftQM);
- otf #(65) otf2 (Qin, QMin, CshiftQ, CshiftQM, clk,
- otfzero, enable, Qstar, QMstar);
-
- // Correction and generation of Remainder
- adder #(68) cpa2 (SumN2[67:0], CarryN2[67:0], rem1);
- // Add back +D as correction
- csa #(68) csa2 (CarryN2[67:0], SumN2[67:0], divi1, SumR, CarryR);
- adder #(68) cpa3 (SumR, CarryR, rem2);
- // Choose remainder (Rem or Rem+D)
- mux2 #(68) mx6 (rem1, rem2, rem1[67], rem3);
- // Choose correct Q or QM
- mux2 #(65) mx7 (Qstar, QMstar, rem1[67], Qt);
- // Final results
- assign rem0 = rem3[64:0];
- assign Q = Qt;
-
-endmodule // divide4x64
-
-module ls_control (quot, Qin, QMin, CshiftQ, CshiftQM);
-
- input logic [3:0] quot;
-
- output logic [1:0] Qin;
- output logic [1:0] QMin;
- output logic CshiftQ;
- output logic CshiftQM;
-
- // Load/Store Control for OTF
- assign Qin[1] = (quot[1]) | (quot[3]) | (quot[0]);
- assign Qin[0] = (quot[1]) | (quot[2]);
- assign QMin[1] = (quot[1]) | (!quot[3]&!quot[2]&!quot[1]&!quot[0]);
- assign QMin[0] = (quot[3]) | (quot[0]) |
- (!quot[3]&!quot[2]&!quot[1]&!quot[0]);
- assign CshiftQ = (quot[1]) | (quot[0]);
- assign CshiftQM = (quot[3]) | (quot[2]);
-
-endmodule
-
-// On-the-fly Conversion per Ercegovac/Lang
-
-module otf #(parameter WIDTH=8)
- (Qin, QMin, CshiftQ, CshiftQM, clk, reset, enable, R2Q, R1Q);
-
- input logic [1:0] Qin, QMin;
- input logic CshiftQ, CshiftQM;
- input logic clk;
- input logic reset;
- input logic enable;
-
- output logic [WIDTH-1:0] R2Q;
- output logic [WIDTH-1:0] R1Q;
-
- logic [WIDTH-1:0] Qstar, QMstar;
- logic [WIDTH-1:0] M1Q, M2Q;
-
- // QM
- mux2 #(WIDTH) m1 (QMstar, Qstar, CshiftQM, M1Q);
- flopenr #(WIDTH) r1 (clk, reset, enable, {M1Q[WIDTH-3:0], QMin}, R1Q);
- // Q
- mux2 #(WIDTH) m2 (Qstar, QMstar, CshiftQ, M2Q);
- flopenr #(WIDTH) r2 (clk, reset, enable, {M2Q[WIDTH-3:0], Qin}, R2Q);
-
- assign Qstar = R2Q;
- assign QMstar = R1Q;
-
-endmodule // otf8
-
-module adder #(parameter WIDTH=8) (input logic [WIDTH-1:0] a, b,
- output logic [WIDTH-1:0] y);
-
- assign y = a + b;
-
-endmodule // adder
-
-module fa (input logic a, b, c, output logic sum, carry);
-
- assign sum = a^b^c;
- assign carry = a&b|a&c|b&c;
-
-endmodule // fa
-
-module csa #(parameter WIDTH=8) (input logic [WIDTH-1:0] a, b, c,
- output logic [WIDTH-1:0] sum, carry);
-
- logic [WIDTH:0] carry_temp;
- genvar i;
- generate
- for (i=0;i B. LT and GT are both '0' if A = B.
-
-module magcompare2b (LT, GT, A, B);
-
- input logic [1:0] A;
- input logic [1:0] B;
-
- output logic LT;
- output logic GT;
-
- // Determine if A < B using a minimized sum-of-products expression
- assign LT = ~A[1]&B[1] | ~A[1]&~A[0]&B[0] | ~A[0]&B[1]&B[0];
- // Determine if A > B using a minimized sum-of-products expression
- assign GT = A[1]&~B[1] | A[1]&A[0]&~B[0] | A[0]&~B[1]&~B[0];
-
-endmodule // magcompare2b
-
-// J. E. Stine and M. J. Schulte, "A combined two's complement and
-// floating-point comparator," 2005 IEEE International Symposium on
-// Circuits and Systems, Kobe, 2005, pp. 89-92 Vol. 1.
-// doi: 10.1109/ISCAS.2005.1464531
-
-module magcompare8 (LT, EQ, A, B);
-
- input logic [7:0] A;
- input logic [7:0] B;
-
- logic [3:0] s;
- logic [3:0] t;
- logic [1:0] u;
- logic [1:0] v;
- logic GT;
- //wire LT;
-
- output logic EQ;
- output logic LT;
-
- magcompare2b mag1 (s[0], t[0], A[1:0], B[1:0]);
- magcompare2b mag2 (s[1], t[1], A[3:2], B[3:2]);
- magcompare2b mag3 (s[2], t[2], A[5:4], B[5:4]);
- magcompare2b mag4 (s[3], t[3], A[7:6], B[7:6]);
-
- magcompare2b mag5 (u[0], v[0], t[1:0], s[1:0]);
- magcompare2b mag6 (u[1], v[1], t[3:2], s[3:2]);
-
- magcompare2b mag7 (LT, GT, v[1:0], u[1:0]);
-
- assign EQ = ~(GT | LT);
-
-endmodule // magcompare8
diff --git a/wally-pipelined/src/muldiv/div/imperas-riscv-tests b/wally-pipelined/src/muldiv/div/imperas-riscv-tests
deleted file mode 160000
index c171bf199..000000000
--- a/wally-pipelined/src/muldiv/div/imperas-riscv-tests
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit c171bf1999a3cf7e8cd26511dfcf794d1498e5a1
diff --git a/wally-pipelined/src/muldiv/div/int32div.do b/wally-pipelined/src/muldiv/div/int32div.do
deleted file mode 100755
index e83f307ad..000000000
--- a/wally-pipelined/src/muldiv/div/int32div.do
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright 1991-2007 Mentor Graphics Corporation
-#
-# Modification by Oklahoma State University
-# Use with Testbench
-# James Stine, 2008
-# Go Cowboys!!!!!!
-#
-# All Rights Reserved.
-#
-# THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
-# WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
-# OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
-
-# Use this run.do file to run this example.
-# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
-# do run.do
-# or, to run from a shell, type the following at the shell prompt:
-# vsim -do run.do -c
-# (omit the "-c" to see the GUI while running from the shell)
-
-onbreak {resume}
-
-# create library
-if [file exists work] {
- vdel -all
-}
-vlib work
-
-# compile source files
-vlog mux_div.sv shifters_div.sv divide4x32.sv test_int32div.sv
-
-# start and run simulation
-vsim -voptargs=+acc work.tb
-
-view list
-view wave
-
--- display input and output signals as hexidecimal values
-# Diplays All Signals recursively
-add wave -noupdate -divider -height 32 "Control Signals"
-add wave -hex -color gold /tb/clk
-add wave -hex -color #0080ff /tb/reset
-add wave -hex -color #0080ff /tb/start
-add wave -hex -color #0080ff /tb/done
-add wave -hex -color #0080ff /tb/divdone
-add wave -noupdate -divider -height 32 "Key Parts"
-add wave -unsigned /tb/dut/NumIter
-add wave -unsigned /tb/dut/RemShift
-add wave -unsigned /tb/dut/Qd2
-add wave -unsigned /tb/dut/Rd2
-add wave -unsigned /tb/dut/rem0
-add wave -unsigned /tb/dut/Q
-add wave -unsigned /tb/dut/P
-add wave -unsigned /tb/dut/shiftResult
-add wave -noupdate -divider -height 32 "FSM"
-add wave -hex /tb/dut/fsm1/CURRENT_STATE
-add wave -hex /tb/dut/fsm1/NEXT_STATE
-add wave -hex -color #0080ff /tb/dut/fsm1/start
-add wave -hex -color #0080ff /tb/dut/fsm1/state0
-add wave -hex -color #0080ff /tb/dut/fsm1/done
-add wave -hex -color #0080ff /tb/dut/fsm1/en
-add wave -hex -color #0080ff /tb/dut/fsm1/divdone
-add wave -hex -color #0080ff /tb/dut/fsm1/reset
-add wave -hex -color #0080ff /tb/dut/fsm1/otfzero
-add wave -hex -color #0080ff /tb/dut/fsm1/LT
-add wave -hex -color #0080ff /tb/dut/fsm1/EQ
-add wave -hex -color gold /tb/dut/fsm1/clk
-add wave -noupdate -divider -height 32 "Datapath"
-add wave -hex /tb/dut/N
-add wave -hex /tb/dut/D
-add wave -hex /tb/dut/reset
-add wave -hex /tb/dut/start
-add wave -hex /tb/dut/Q
-add wave -hex /tb/dut/rem0
-add wave -hex /tb/dut/div0
-add wave -hex /tb/dut/done
-add wave -hex /tb/dut/divdone
-add wave -hex /tb/dut/enable
-add wave -hex /tb/dut/state0
-add wave -hex /tb/dut/V
-add wave -hex /tb/dut/Num
-add wave -hex /tb/dut/P
-add wave -hex /tb/dut/NumIter
-add wave -hex /tb/dut/RemShift
-add wave -hex /tb/dut/op1
-add wave -hex /tb/dut/op2
-add wave -hex /tb/dut/op1shift
-add wave -hex /tb/dut/Rem5
-add wave -hex /tb/dut/Qd
-add wave -hex /tb/dut/Rd
-add wave -hex /tb/dut/Qd2
-add wave -hex /tb/dut/Rd2
-add wave -hex /tb/dut/quotient
-add wave -hex /tb/dut/otfzero
-add wave -noupdate -divider -height 32 "Divider"
-add wave -hex -r /tb/dut/p3/*
-
-
--- Set Wave Output Items
-TreeUpdate [SetDefaultTree]
-WaveRestoreZoom {0 ps} {75 ns}
-configure wave -namecolwidth 150
-configure wave -valuecolwidth 100
-configure wave -justifyvalue left
-configure wave -signalnamewidth 0
-configure wave -snapdistance 10
-configure wave -datasetprefix 0
-configure wave -rowmargin 4
-configure wave -childrowmargin 2
-
--- Run the Simulation
-run 338ns
-
-
diff --git a/wally-pipelined/src/muldiv/div/int64div.do b/wally-pipelined/src/muldiv/div/int64div.do
deleted file mode 100755
index dc83d046f..000000000
--- a/wally-pipelined/src/muldiv/div/int64div.do
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright 1991-2007 Mentor Graphics Corporation
-#
-# Modification by Oklahoma State University
-# Use with Testbench
-# James Stine, 2008
-# Go Cowboys!!!!!!
-#
-# All Rights Reserved.
-#
-# THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
-# WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
-# OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
-
-# Use this run.do file to run this example.
-# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
-# do run.do
-# or, to run from a shell, type the following at the shell prompt:
-# vsim -do run.do -c
-# (omit the "-c" to see the GUI while running from the shell)
-
-onbreak {resume}
-
-# create library
-if [file exists work] {
- vdel -all
-}
-vlib work
-
-# compile source files
-vlog mux_div.sv shifters_div.sv divide4x64.sv test_int64div.sv
-
-# start and run simulation
-vsim -voptargs=+acc work.tb
-
-view list
-view wave
-
--- display input and output signals as hexidecimal values
-# Diplays All Signals recursively
-add wave -noupdate -divider -height 32 "Control Signals"
-add wave -hex -color gold /tb/clk
-add wave -hex -color #0080ff /tb/reset
-add wave -hex -color #0080ff /tb/start
-add wave -hex -color #0080ff /tb/done
-add wave -hex -color #0080ff /tb/divdone
-add wave -noupdate -divider -height 32 "Key Parts"
-add wave -unsigned /tb/dut/NumIter
-add wave -unsigned /tb/dut/RemShift
-add wave -unsigned /tb/dut/Qd2
-add wave -unsigned /tb/dut/Rd2
-add wave -unsigned /tb/dut/rem0
-add wave -unsigned /tb/dut/Q
-add wave -unsigned /tb/dut/P
-add wave -unsigned /tb/dut/shiftResult
-add wave -noupdate -divider -height 32 "FSM"
-add wave -hex /tb/dut/fsm1/CURRENT_STATE
-add wave -hex /tb/dut/fsm1/NEXT_STATE
-add wave -hex -color #0080ff /tb/dut/fsm1/start
-add wave -hex -color #0080ff /tb/dut/fsm1/state0
-add wave -hex -color #0080ff /tb/dut/fsm1/done
-add wave -hex -color #0080ff /tb/dut/fsm1/en
-add wave -hex -color #0080ff /tb/dut/fsm1/divdone
-add wave -hex -color #0080ff /tb/dut/fsm1/reset
-add wave -hex -color #0080ff /tb/dut/fsm1/otfzero
-add wave -hex -color #0080ff /tb/dut/fsm1/LT
-add wave -hex -color #0080ff /tb/dut/fsm1/EQ
-add wave -hex -color gold /tb/dut/fsm1/clk
-add wave -noupdate -divider -height 32 "Datapath"
-add wave -hex /tb/dut/N
-add wave -hex /tb/dut/D
-add wave -hex /tb/dut/reset
-add wave -hex /tb/dut/start
-add wave -hex /tb/dut/Qf
-add wave -hex /tb/dut/remf
-add wave -hex /tb/dut/Q
-add wave -hex /tb/dut/rem0
-add wave -hex /tb/dut/div0
-add wave -hex /tb/dut/done
-add wave -hex /tb/dut/divdone
-add wave -hex /tb/dut/enable
-add wave -hex /tb/dut/state0
-add wave -hex /tb/dut/V
-add wave -hex /tb/dut/Num
-add wave -hex /tb/dut/P
-add wave -hex /tb/dut/NumIter
-add wave -hex /tb/dut/RemShift
-add wave -hex /tb/dut/op1
-add wave -hex /tb/dut/op2
-add wave -hex /tb/dut/op1shift
-add wave -hex /tb/dut/Rem5
-add wave -hex /tb/dut/Qd
-add wave -hex /tb/dut/Rd
-add wave -hex /tb/dut/Qd2
-add wave -hex /tb/dut/Rd2
-add wave -hex /tb/dut/quotient
-add wave -hex /tb/dut/otfzero
-add wave -noupdate -divider -height 32 "Divider"
-add wave -hex -r /tb/dut/p3/*
-
-
--- Set Wave Output Items
-TreeUpdate [SetDefaultTree]
-WaveRestoreZoom {0 ps} {75 ns}
-configure wave -namecolwidth 350
-configure wave -valuecolwidth 200
-configure wave -justifyvalue left
-configure wave -signalnamewidth 0
-configure wave -snapdistance 10
-configure wave -datasetprefix 0
-configure wave -rowmargin 4
-configure wave -childrowmargin 2
-
--- Run the Simulation
-run 538ns
-
-
diff --git a/wally-pipelined/src/muldiv/div/iter32.do b/wally-pipelined/src/muldiv/div/iter32.do
deleted file mode 100755
index 7f0f964da..000000000
--- a/wally-pipelined/src/muldiv/div/iter32.do
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1991-2007 Mentor Graphics Corporation
-#
-# Modification by Oklahoma State University
-# Use with Testbench
-# James Stine, 2008
-# Go Cowboys!!!!!!
-#
-# All Rights Reserved.
-#
-# THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
-# WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
-# OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
-
-# Use this run.do file to run this example.
-# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
-# do run.do
-# or, to run from a shell, type the following at the shell prompt:
-# vsim -do run.do -c
-# (omit the "-c" to see the GUI while running from the shell)
-
-onbreak {resume}
-
-# create library
-if [file exists work] {
- vdel -all
-}
-vlib work
-
-# compile source files
-vlog mux_div.sv shifters_div.sv divide4x32.sv test_iter32.sv
-
-# start and run simulation
-vsim -voptargs=+acc work.tb
-
-
--- Set Wave Output Items
-TreeUpdate [SetDefaultTree]
-WaveRestoreZoom {0 ps} {75 ns}
-configure wave -namecolwidth 150
-configure wave -valuecolwidth 100
-configure wave -justifyvalue left
-configure wave -signalnamewidth 0
-configure wave -snapdistance 10
-configure wave -datasetprefix 0
-configure wave -rowmargin 4
-configure wave -childrowmargin 2
-
--- Run the Simulation
-run 9586700ns
-quit
diff --git a/wally-pipelined/src/muldiv/div/iter64.do b/wally-pipelined/src/muldiv/div/iter64.do
deleted file mode 100755
index c538291ea..000000000
--- a/wally-pipelined/src/muldiv/div/iter64.do
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1991-2007 Mentor Graphics Corporation
-#
-# Modification by Oklahoma State University
-# Use with Testbench
-# James Stine, 2008
-# Go Cowboys!!!!!!
-#
-# All Rights Reserved.
-#
-# THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
-# WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
-# OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
-
-# Use this run.do file to run this example.
-# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
-# do run.do
-# or, to run from a shell, type the following at the shell prompt:
-# vsim -do run.do -c
-# (omit the "-c" to see the GUI while running from the shell)
-
-onbreak {resume}
-
-# create library
-if [file exists work] {
- vdel -all
-}
-vlib work
-
-# compile source files
-vlog mux_div.sv shifters_div.sv divide4x64.sv test_iter64.sv
-
-# start and run simulation
-vsim -voptargs=+acc work.tb
-
-
--- Set Wave Output Items
-TreeUpdate [SetDefaultTree]
-WaveRestoreZoom {0 ps} {75 ns}
-configure wave -namecolwidth 150
-configure wave -valuecolwidth 100
-configure wave -justifyvalue left
-configure wave -signalnamewidth 0
-configure wave -snapdistance 10
-configure wave -datasetprefix 0
-configure wave -rowmargin 4
-configure wave -childrowmargin 2
-
--- Run the Simulation
-run 9586700ns
-quit
diff --git a/wally-pipelined/src/muldiv/div/mux_div.sv b/wally-pipelined/src/muldiv/div/mux_div.sv
deleted file mode 100644
index d13045e6d..000000000
--- a/wally-pipelined/src/muldiv/div/mux_div.sv
+++ /dev/null
@@ -1,51 +0,0 @@
-module mux2 #(parameter WIDTH = 8)
- (input logic [WIDTH-1:0] d0, d1,
- input logic s,
- output logic [WIDTH-1:0] y);
-
- assign y = s ? d1 : d0;
-
-endmodule // mux2
-
-module mux3 #(parameter WIDTH = 8)
- (input logic [WIDTH-1:0] d0, d1, d2,
- input logic [1:0] s,
- output logic [WIDTH-1:0] y);
-
- assign y = s[1] ? d2 : (s[0] ? d1 : d0);
-
-endmodule // mux3
-
-module mux4 #(parameter WIDTH = 8)
- (input logic [WIDTH-1:0] d0, d1, d2, d3,
- input logic [1:0] s,
- output logic [WIDTH-1:0] y);
-
- assign y = s[1] ? (s[0] ? d3 : d2) : (s[0] ? d1 : d0);
-
-endmodule // mux4
-
-module mux21x32 (Z, A, B, Sel);
-
- input logic [31:0] A;
- input logic [31:0] B;
- input logic Sel;
-
- output logic [31:0] Z;
-
- assign Z = Sel ? B : A;
-
-endmodule // mux21x32
-
-module mux21x64 (Z, A, B, Sel);
-
- input logic [63:0] A;
- input logic [63:0] B;
- input logic Sel;
-
- output logic [63:0] Z;
-
- assign Z = Sel ? B : A;
-
-endmodule // mux21x64
-
diff --git a/wally-pipelined/src/muldiv/div/shift.sv b/wally-pipelined/src/muldiv/div/shift.sv
deleted file mode 100644
index 412cee32f..000000000
--- a/wally-pipelined/src/muldiv/div/shift.sv
+++ /dev/null
@@ -1,151 +0,0 @@
-module shifter_l64 (Z, A, Shift);
-
- input logic [63:0] A;
- input logic [5:0] Shift;
-
- logic [63:0] stage1;
- logic [63:0] stage2;
- logic [63:0] stage3;
- logic [63:0] stage4;
- logic [63:0] stage5;
- logic [31:0] thirtytwozeros = 32'h0;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [63:0] Z;
-
- mux2 #(64) mx01(A, {A[31:0], thirtytwozeros}, Shift[5], stage1);
- mux2 #(64) mx02(stage1, {stage1[47:0], sixteenzeros}, Shift[4], stage2);
- mux2 #(64) mx03(stage2, {stage2[55:0], eightzeros}, Shift[3], stage3);
- mux2 #(64) mx04(stage3, {stage3[59:0], fourzeros}, Shift[2], stage4);
- mux2 #(64) mx05(stage4, {stage4[61:0], twozeros}, Shift[1], stage5);
- mux2 #(64) mx06(stage5, {stage5[62:0], onezero}, Shift[0], Z);
-
-endmodule // shifter_l64
-
-module shifter_r64 (Z, A, Shift);
-
- input logic [63:0] A;
- input logic [5:0] Shift;
-
- logic [63:0] stage1;
- logic [63:0] stage2;
- logic [63:0] stage3;
- logic [63:0] stage4;
- logic [63:0] stage5;
- logic [31:0] thirtytwozeros = 32'h0;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [63:0] Z;
-
- mux2 #(64) mx01(A, {thirtytwozeros, A[63:32]}, Shift[5], stage1);
- mux2 #(64) mx02(stage1, {sixteenzeros, stage1[63:16]}, Shift[4], stage2);
- mux2 #(64) mx03(stage2, {eightzeros, stage2[63:8]}, Shift[3], stage3);
- mux2 #(64) mx04(stage3, {fourzeros, stage3[63:4]}, Shift[2], stage4);
- mux2 #(64) mx05(stage4, {twozeros, stage4[63:2]}, Shift[1], stage5);
- mux2 #(64) mx06(stage5, {onezero, stage5[63:1]}, Shift[0], Z);
-
-endmodule // shifter_r64
-
-module shifter_l32 (Z, A, Shift);
-
- input logic [31:0] A;
- input logic [4:0] Shift;
-
- logic [31:0] stage1;
- logic [31:0] stage2;
- logic [31:0] stage3;
- logic [31:0] stage4;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [31:0] Z;
-
- mux2 #(32) mx01(A, {A[15:0], sixteenzeros}, Shift[4], stage1);
- mux2 #(32) mx02(stage1, {stage1[23:0], eightzeros}, Shift[3], stage2);
- mux2 #(32) mx03(stage2, {stage2[27:0], fourzeros}, Shift[2], stage3);
- mux2 #(32) mx04(stage3, {stage3[29:0], twozeros}, Shift[1], stage4);
- mux2 #(32) mx05(stage4, {stage4[30:0], onezero}, Shift[0], Z);
-
-endmodule // shifter_l32
-
-module shifter_r32 (Z, A, Shift);
-
- input logic [31:0] A;
- input logic [4:0] Shift;
-
- logic [31:0] stage1;
- logic [31:0] stage2;
- logic [31:0] stage3;
- logic [31:0] stage4;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [31:0] Z;
-
- mux2 #(32) mx01(A, {sixteenzeros, A[31:16]}, Shift[4], stage1);
- mux2 #(32) mx02(stage1, {eightzeros, stage1[31:8]}, Shift[3], stage2);
- mux2 #(32) mx03(stage2, {fourzeros, stage2[31:4]}, Shift[2], stage3);
- mux2 #(32) mx04(stage3, {twozeros, stage3[31:2]}, Shift[1], stage4);
- mux2 #(32) mx05(stage4, {onezero, stage4[31:1]}, Shift[0], Z);
-
-endmodule // shifter_r32
-
-`define XLEN 32
-module shift_right #(parameter WIDTH=8) (input logic [`XLEN-1:0] A,
- input logic [$clog2(`XLEN)-1:0] Shift,
- output logic [`XLEN-1:0] Z);
-
- logic [`XLEN-1:0] stage [$clog2(`XLEN):0];
- genvar i;
-
- assign stage[0] = A;
- generate
- for (i=0;i<$clog2(`XLEN);i=i+1)
- begin : genbit
- mux2 #(`XLEN) mux_inst (stage[i],
- {{(`XLEN/(2**(i+1))){1'b0}}, stage[i][`XLEN-1:`XLEN/(2**(i+1))]},
- Shift[$clog2(`XLEN)-i-1],
- stage[i+1]);
- end
- endgenerate
- assign Z = stage[$clog2(`XLEN)];
-
-endmodule // shift_right
-
-module shift_left #(parameter WIDTH=8) (input logic [`XLEN-1:0] A,
- input logic [$clog2(`XLEN)-1:0] Shift,
- output logic [`XLEN-1:0] Z);
-
- logic [`XLEN-1:0] stage [$clog2(`XLEN):0];
- genvar i;
-
- assign stage[0] = A;
- generate
- for (i=0;i<$clog2(`XLEN);i=i+1)
- begin : genbit
- mux2 #(`XLEN) mux_inst (stage[i],
- {stage[i][`XLEN-1-`XLEN/(2**(i+1)):0], {(`XLEN/(2**(i+1))){1'b0}}},
- Shift[$clog2(`XLEN)-i-1],
- stage[i+1]);
- end
- endgenerate
- assign Z = stage[$clog2(`XLEN)];
-
-endmodule // shift_right
-
-
-
diff --git a/wally-pipelined/src/muldiv/div/shift_left.do b/wally-pipelined/src/muldiv/div/shift_left.do
deleted file mode 100755
index 0b0ce9850..000000000
--- a/wally-pipelined/src/muldiv/div/shift_left.do
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 1991-2016 Mentor Graphics Corporation
-#
-# Modification by Oklahoma State University
-# Use with Testbench
-# James Stine, 2008
-# Go Cowboys!!!!!!
-#
-# All Rights Reserved.
-#
-# THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
-# WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
-# OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
-
-# Use this run.do file to run this example.
-# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
-# do run.do
-# or, to run from a shell, type the following at the shell prompt:
-# vsim -do run.do -c
-# (omit the "-c" to see the GUI while running from the shell)
-
-onbreak {resume}
-
-# create library
-if [file exists work] {
- vdel -all
-}
-vlib work
-
-# compile source files
-vlog mux_div.sv shift.sv shift_left_tb.sv
-
-# start and run simulation
-vsim -voptargs=+acc work.stimulus
-
-view wave
-
--- display input and output signals as hexidecimal values
-# Diplays All Signals recursively
-add wave -hex -r /stimulus/*
-
--- Set Wave Output Items
-TreeUpdate [SetDefaultTree]
-WaveRestoreZoom {0 ps} {75 ns}
-configure wave -namecolwidth 150
-configure wave -valuecolwidth 100
-configure wave -justifyvalue left
-configure wave -signalnamewidth 0
-configure wave -snapdistance 10
-configure wave -datasetprefix 0
-configure wave -rowmargin 4
-configure wave -childrowmargin 2
-
--- Run the Simulation
-run 800ns
-quit
diff --git a/wally-pipelined/src/muldiv/div/shift_left.out b/wally-pipelined/src/muldiv/div/shift_left.out
deleted file mode 100644
index 67fedc18f..000000000
--- a/wally-pipelined/src/muldiv/div/shift_left.out
+++ /dev/null
@@ -1,79 +0,0 @@
-12153524 01 || 242a6a48 242a6a48 | 1
-8484d609 03 || 2426b048 2426b048 | 1
-06b97b0d 0d || 2f61a000 2f61a000 | 1
-b2c28465 12 || 11940000 11940000 | 1
-00f3e301 0d || 7c602000 7c602000 | 1
-3b23f176 1d || c0000000 c0000000 | 1
-76d457ed 0c || 457ed000 457ed000 | 1
-7cfde9f9 06 || 3f7a7e40 3f7a7e40 | 1
-e2f784c5 0a || de131400 de131400 | 1
-72aff7e5 17 || f2800000 f2800000 | 1
-8932d612 0f || 6b090000 6b090000 | 1
-793069f2 0e || 1a7c8000 1a7c8000 | 1
-f4007ae8 05 || 800f5d00 800f5d00 | 1
-2e58495c 1d || 80000000 80000000 | 1
-96ab582d 05 || d56b05a0 d56b05a0 | 1
-b1ef6263 0a || bd898c00 bd898c00 | 1
-c03b2280 00 || c03b2280 c03b2280 | 1
-557845aa 1d || 40000000 40000000 | 1
-cb203e96 13 || f4b00000 f4b00000 | 1
-86bc380d 13 || c0680000 c0680000 | 1
-359fdd6b 15 || ad600000 ad600000 | 1
-81174a02 0e || d2808000 d2808000 | 1
-0effe91d 0f || f48e8000 f48e8000 | 1
-11844923 0a || 11248c00 11248c00 | 1
-e5730aca 1c || a0000000 a0000000 | 1
-7968bdf2 0a || a2f7c800 a2f7c800 | 1
-20c4b341 18 || 41000000 41000000 | 1
-3c20f378 09 || 41e6f000 41e6f000 | 1
-75c50deb 16 || 7ac00000 7ac00000 | 1
-634bf9c6 0e || fe718000 fe718000 | 1
-de7502bc 0a || d40af000 d40af000 | 1
-85d79a0b 11 || 34160000 34160000 | 1
-42f24185 0f || 20c28000 20c28000 | 1
-9dcc603b 1a || ec000000 ec000000 | 1
-bf23327e 15 || 4fc00000 4fc00000 | 1
-78d99bf1 19 || e2000000 e2000000 | 1
-31230762 0c || 30762000 30762000 | 1
-4fa1559f 0f || aacf8000 aacf8000 | 1
-7c6da9f8 17 || fc000000 fc000000 | 1
-cfc4569f 1c || f0000000 f0000000 | 1
-adcbc05b 09 || 9780b600 9780b600 | 1
-a4ae3249 10 || 32490000 32490000 | 1
-ebfec0d7 11 || 81ae0000 81ae0000 | 1
-4b212f96 0c || 12f96000 12f96000 | 1
-e12ccec2 08 || 2ccec200 2ccec200 | 1
-bb825a77 1d || e0000000 e0000000 | 1
-090cdb12 1e || 80000000 80000000 | 1
-36e5816d 19 || da000000 da000000 | 1
-0fd28f1f 13 || 78f80000 78f80000 | 1
-42d92f85 18 || 85000000 85000000 | 1
-2dda595b 09 || b4b2b600 b4b2b600 | 1
-9ff2ae3f 0a || cab8fc00 cab8fc00 | 1
-2c156358 06 || 0558d600 0558d600 | 1
-c71a0c8e 1c || e0000000 e0000000 | 1
-7d3599fa 06 || 4d667e80 4d667e80 | 1
-39961773 03 || ccb0bb98 ccb0bb98 | 1
-9799a82f 13 || 41780000 41780000 | 1
-afd8565f 04 || fd8565f0 fd8565f0 | 1
-7bf8fdf7 0b || c7efb800 c7efb800 | 1
-f3091ae6 1a || 98000000 98000000 | 1
-14cfc129 0d || f8252000 f8252000 | 1
-ed536cda 05 || aa6d9b40 aa6d9b40 | 1
-da8ae2b5 1f || 80000000 80000000 | 1
-3cf11979 04 || cf119790 cf119790 | 1
-e8740cd0 0a || d0334000 d0334000 | 1
-55f6adab 0e || ab6ac000 ab6ac000 | 1
-6e5daddc 1a || 70000000 70000000 | 1
-fedf72fd 03 || f6fb97e8 f6fb97e8 | 1
-2b0eed56 0e || bb558000 bb558000 | 1
-b3d97667 0a || 65d99c00 65d99c00 | 1
-5b6fb9b6 18 || b6000000 b6000000 | 1
-3cd18779 18 || 79000000 79000000 | 1
-4a74bf94 13 || fca00000 fca00000 | 1
-823f2c04 19 || 08000000 08000000 | 1
-6dcb69db 0d || 6d3b6000 6d3b6000 | 1
-6cb0b7d9 0d || 16fb2000 16fb2000 | 1
-bb45e276 0a || 1789d800 1789d800 | 1
-5b172db6 15 || b6c00000 b6c00000 | 1
-a3071a46 04 || 3071a460 3071a460 | 1
diff --git a/wally-pipelined/src/muldiv/div/shift_left_tb.sv b/wally-pipelined/src/muldiv/div/shift_left_tb.sv
deleted file mode 100644
index 2d5d3dad8..000000000
--- a/wally-pipelined/src/muldiv/div/shift_left_tb.sv
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// File name : tb
-// Title : test
-// project : HW3
-// Library : test
-// Purpose : definition of modules for testbench
-// notes :
-//
-// Copyright Oklahoma State University
-//
-
-// Top level stimulus module
-
-`timescale 1ns/1ps
-
-`define XLEN 32
-module stimulus;
-
- logic [`XLEN-1:0] A;
- logic [$clog2(`XLEN)-1:0] Shift;
- logic [`XLEN-1:0] Z;
- logic [`XLEN-1:0] Z_corr;
-
- //logic [63:0] A;
- //logic [5:0] Shift;
- //logic [63:0] Z;
- //logic [63:0] Z_corr;
- //logic [63:0] Z_orig;
-
-
- logic clk;
-
- integer handle3;
- integer desc3;
- integer i;
-
- // instatiate part to test
- shift_left dut1 (A, Shift, Z);
- assign Z_corr = (A << Shift);
-
- initial
- begin
- clk = 1'b1;
- forever #5 clk = ~clk;
- end
-
- initial
- begin
- handle3 = $fopen("shift_left.out");
- desc3 = handle3;
- end
-
- initial
- begin
- for (i=0; i < 256; i=i+1)
- begin
- // Put vectors before beginning of clk
- @(posedge clk)
- begin
- A = $random;
- Shift = $random;
- end
- @(negedge clk)
- begin
- $fdisplay(desc3, "%h %h || %h %h | %b", A, Shift, Z, Z_corr, (Z == Z_corr));
- end
- end // for (i=0; i < 256; i=i+1)
- $finish;//
- end // initial begin
-
-endmodule // stimulus
diff --git a/wally-pipelined/src/muldiv/div/shift_right.do b/wally-pipelined/src/muldiv/div/shift_right.do
deleted file mode 100755
index a41b7bfa7..000000000
--- a/wally-pipelined/src/muldiv/div/shift_right.do
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 1991-2016 Mentor Graphics Corporation
-#
-# Modification by Oklahoma State University
-# Use with Testbench
-# James Stine, 2008
-# Go Cowboys!!!!!!
-#
-# All Rights Reserved.
-#
-# THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION
-# WHICH IS THE PROPERTY OF MENTOR GRAPHICS CORPORATION
-# OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
-
-# Use this run.do file to run this example.
-# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
-# do run.do
-# or, to run from a shell, type the following at the shell prompt:
-# vsim -do run.do -c
-# (omit the "-c" to see the GUI while running from the shell)
-
-onbreak {resume}
-
-# create library
-if [file exists work] {
- vdel -all
-}
-vlib work
-
-# compile source files
-vlog mux_div.sv shift.sv shift_right_tb.sv
-
-# start and run simulation
-vsim -voptargs=+acc work.stimulus
-
-view wave
-
--- display input and output signals as hexidecimal values
-# Diplays All Signals recursively
-add wave -hex -r /stimulus/*
-
--- Set Wave Output Items
-TreeUpdate [SetDefaultTree]
-WaveRestoreZoom {0 ps} {75 ns}
-configure wave -namecolwidth 150
-configure wave -valuecolwidth 100
-configure wave -justifyvalue left
-configure wave -signalnamewidth 0
-configure wave -snapdistance 10
-configure wave -datasetprefix 0
-configure wave -rowmargin 4
-configure wave -childrowmargin 2
-
--- Run the Simulation
-run 800ns
-quit
diff --git a/wally-pipelined/src/muldiv/div/shift_right.out b/wally-pipelined/src/muldiv/div/shift_right.out
deleted file mode 100644
index 42202ab57..000000000
--- a/wally-pipelined/src/muldiv/div/shift_right.out
+++ /dev/null
@@ -1,24 +0,0 @@
-12153524 01 || 090a9a92 090a9a92 | 1
-8484d609 03 || 10909ac1 10909ac1 | 1
-06b97b0d 0d || 000035cb 000035cb | 1
-b2c28465 12 || 00002cb0 00002cb0 | 1
-00f3e301 0d || 0000079f 0000079f | 1
-3b23f176 1d || 00000001 00000001 | 1
-76d457ed 0c || 00076d45 00076d45 | 1
-7cfde9f9 06 || 01f3f7a7 01f3f7a7 | 1
-e2f784c5 0a || 0038bde1 0038bde1 | 1
-72aff7e5 17 || 000000e5 000000e5 | 1
-8932d612 0f || 00011265 00011265 | 1
-793069f2 0e || 0001e4c1 0001e4c1 | 1
-f4007ae8 05 || 07a003d7 07a003d7 | 1
-2e58495c 1d || 00000001 00000001 | 1
-96ab582d 05 || 04b55ac1 04b55ac1 | 1
-b1ef6263 0a || 002c7bd8 002c7bd8 | 1
-c03b2280 00 || c03b2280 c03b2280 | 1
-557845aa 1d || 00000002 00000002 | 1
-cb203e96 13 || 00001964 00001964 | 1
-86bc380d 13 || 000010d7 000010d7 | 1
-359fdd6b 15 || 000001ac 000001ac | 1
-81174a02 0e || 0002045d 0002045d | 1
-0effe91d 0f || 00001dff 00001dff | 1
-11844923 0a || 00046112 00046112 | 1
diff --git a/wally-pipelined/src/muldiv/div/shift_right_tb.sv b/wally-pipelined/src/muldiv/div/shift_right_tb.sv
deleted file mode 100755
index b35277484..000000000
--- a/wally-pipelined/src/muldiv/div/shift_right_tb.sv
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// File name : tb
-// Title : test
-// project : HW3
-// Library : test
-// Purpose : definition of modules for testbench
-// notes :
-//
-// Copyright Oklahoma State University
-//
-
-// Top level stimulus module
-
-`timescale 1ns/1ps
-
-`define XLEN 32
-module stimulus;
-
- logic [`XLEN-1:0] A;
- logic [$clog2(`XLEN)-1:0] Shift;
- logic [`XLEN-1:0] Z;
- logic [`XLEN-1:0] Z_corr;
-
- logic clk;
-
- integer handle3;
- integer desc3;
- integer i;
-
- // instatiate part to test
- shift_right dut1 (A, Shift, Z);
- assign Z_corr = (A >> Shift);
-
- initial
- begin
- clk = 1'b1;
- forever #5 clk = ~clk;
- end
-
- initial
- begin
- handle3 = $fopen("shift_right.out");
- desc3 = handle3;
- #250 $finish;
- end
-
- initial
- begin
- for (i=0; i < 128; i=i+1)
- begin
- // Put vectors before beginning of clk
- @(posedge clk)
- begin
- A = $random;
- Shift = $random;
- end
- @(negedge clk)
- begin
- $fdisplay(desc3, "%h %h || %h %h | %b", A, Shift, Z, Z_corr, (Z == Z_corr));
- end
- end // @(negedge clk)
- end // for (j=0; j < 32; j=j+1)
-
-endmodule // stimulus
diff --git a/wally-pipelined/src/muldiv/div/shifter.sv b/wally-pipelined/src/muldiv/div/shifter.sv
deleted file mode 100644
index acf0b49e9..000000000
--- a/wally-pipelined/src/muldiv/div/shifter.sv
+++ /dev/null
@@ -1,18 +0,0 @@
-module shifter_right(input logic signed [63:0] a,
- input logic [ 5:0] shamt,
- output logic signed [63:0] y);
-
-
- assign y = a >> shamt;
-
-endmodule // shifter_right
-
-module shifter_left(input logic signed [63:0] a,
- input logic [ 5:0] shamt,
- output logic signed [63:0] y);
-
-
- assign y = a << shamt;
-
-endmodule // shifter_right
-
diff --git a/wally-pipelined/src/muldiv/div/shifters_div.sv b/wally-pipelined/src/muldiv/div/shifters_div.sv
deleted file mode 100644
index b69100dc4..000000000
--- a/wally-pipelined/src/muldiv/div/shifters_div.sv
+++ /dev/null
@@ -1,106 +0,0 @@
-module shifter_l64 (Z, A, Shift);
-
- input logic [63:0] A;
- input logic [5:0] Shift;
-
- logic [63:0] stage1;
- logic [63:0] stage2;
- logic [63:0] stage3;
- logic [63:0] stage4;
- logic [63:0] stage5;
- logic [31:0] thirtytwozeros = 32'h0;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [63:0] Z;
-
- mux2 #(64) mx01(A, {A[31:0], thirtytwozeros}, Shift[5], stage1);
- mux2 #(64) mx02(stage1, {stage1[47:0], sixteenzeros}, Shift[4], stage2);
- mux2 #(64) mx03(stage2, {stage2[55:0], eightzeros}, Shift[3], stage3);
- mux2 #(64) mx04(stage3, {stage3[59:0], fourzeros}, Shift[2], stage4);
- mux2 #(64) mx05(stage4, {stage4[61:0], twozeros}, Shift[1], stage5);
- mux2 #(64) mx06(stage5, {stage5[62:0], onezero}, Shift[0], Z);
-
-endmodule // shifter_l64
-
-module shifter_r64 (Z, A, Shift);
-
- input logic [63:0] A;
- input logic [5:0] Shift;
-
- logic [63:0] stage1;
- logic [63:0] stage2;
- logic [63:0] stage3;
- logic [63:0] stage4;
- logic [63:0] stage5;
- logic [31:0] thirtytwozeros = 32'h0;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [63:0] Z;
-
- mux2 #(64) mx01(A, {thirtytwozeros, A[63:32]}, Shift[5], stage1);
- mux2 #(64) mx02(stage1, {sixteenzeros, stage1[63:16]}, Shift[4], stage2);
- mux2 #(64) mx03(stage2, {eightzeros, stage2[63:8]}, Shift[3], stage3);
- mux2 #(64) mx04(stage3, {fourzeros, stage3[63:4]}, Shift[2], stage4);
- mux2 #(64) mx05(stage4, {twozeros, stage4[63:2]}, Shift[1], stage5);
- mux2 #(64) mx06(stage5, {onezero, stage5[63:1]}, Shift[0], Z);
-
-endmodule // shifter_r64
-
-module shifter_l32 (Z, A, Shift);
-
- input logic [31:0] A;
- input logic [4:0] Shift;
-
- logic [31:0] stage1;
- logic [31:0] stage2;
- logic [31:0] stage3;
- logic [31:0] stage4;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [31:0] Z;
-
- mux2 #(32) mx01(A, {A[15:0], sixteenzeros}, Shift[4], stage1);
- mux2 #(32) mx02(stage1, {stage1[23:0], eightzeros}, Shift[3], stage2);
- mux2 #(32) mx03(stage2, {stage2[27:0], fourzeros}, Shift[2], stage3);
- mux2 #(32) mx04(stage3, {stage3[29:0], twozeros}, Shift[1], stage4);
- mux2 #(32) mx05(stage4, {stage4[30:0], onezero}, Shift[0], Z);
-
-endmodule // shifter_l32
-
-module shifter_r32 (Z, A, Shift);
-
- input logic [31:0] A;
- input logic [4:0] Shift;
-
- logic [31:0] stage1;
- logic [31:0] stage2;
- logic [31:0] stage3;
- logic [31:0] stage4;
- logic [15:0] sixteenzeros = 16'h0;
- logic [ 7:0] eightzeros = 8'h0;
- logic [ 3:0] fourzeros = 4'h0;
- logic [ 1:0] twozeros = 2'b00;
- logic onezero = 1'b0;
-
- output logic [31:0] Z;
-
- mux2 #(32) mx01(A, {sixteenzeros, A[31:16]}, Shift[4], stage1);
- mux2 #(32) mx02(stage1, {eightzeros, stage1[31:8]}, Shift[3], stage2);
- mux2 #(32) mx03(stage2, {fourzeros, stage2[31:4]}, Shift[2], stage3);
- mux2 #(32) mx04(stage3, {twozeros, stage3[31:2]}, Shift[1], stage4);
- mux2 #(32) mx05(stage4, {onezero, stage4[31:1]}, Shift[0], Z);
-
-endmodule // shifter_r32
-
diff --git a/wally-pipelined/src/muldiv/div/test_int32div.sv b/wally-pipelined/src/muldiv/div/test_int32div.sv
deleted file mode 100755
index 79940b7fe..000000000
--- a/wally-pipelined/src/muldiv/div/test_int32div.sv
+++ /dev/null
@@ -1,50 +0,0 @@
-module tb;
-
- logic [31:0] N, D;
- logic clk;
- logic reset;
- logic start;
-
- logic [31:0] Q;
- logic [31:0] rem;
- logic div0;
- logic done;
- logic divdone;
-
- integer handle3;
- integer desc3;
- integer i;
-
- logic [7:0] count [0:15];
-
- int32div dut (Q, done, divdone, rem, div0, N, D, clk, reset, start);
-
- initial
- begin
- clk = 1'b0;
- forever #5 clk = ~clk;
- end
-
- initial
- begin
- #800 $finish;
- end
-
-
- initial
- begin
- #0 N = 32'h0;
- #0 D = 32'h0;
- #0 start = 1'b0;
- #0 reset = 1'b1;
- #22 reset = 1'b0;
- #25 N = 32'h9830_07C0;
- #0 D = 32'h0000_000C;
- //#25 N = 32'h06b9_7b0d;
- //#0 D = 32'h46df_998d;
- #0 start = 1'b1;
- #50 start = 1'b0;
-
- end
-
-endmodule // tb
diff --git a/wally-pipelined/src/muldiv/div/test_int64div.sv b/wally-pipelined/src/muldiv/div/test_int64div.sv
deleted file mode 100644
index 8e7f4cc2b..000000000
--- a/wally-pipelined/src/muldiv/div/test_int64div.sv
+++ /dev/null
@@ -1,71 +0,0 @@
-module tb;
-
- logic [63:0] N, D;
- logic clk;
- logic reset;
- logic start;
-
- logic [63:0] Q;
- logic [63:0] rem;
- logic div0;
- logic done;
- logic divdone;
-
- integer handle3;
- integer desc3;
- integer i;
-
- logic [7:0] count [0:15];
-
- bit [63:0] Ncomp;
- bit [63:0] Dcomp;
- bit [63:0] Qcomp;
- bit [63:0] Rcomp;
-
- int64div dut (Q, done, divdone, rem, div0, N, D, clk, reset, start);
- assign Ncomp = N;
- assign Dcomp = D;
- assign Qcomp = Ncomp/Dcomp;
- assign Rcomp = Ncomp%Dcomp;
-
- initial
- begin
- clk = 1'b0;
- forever #5 clk = ~clk;
- end
-
- initial
- begin
- #800 $finish;
- end
-
- initial
- begin
- handle3 = $fopen("div64.out");
- desc3 = handle3;
- end
-
- always
- begin
- desc3 = handle3;
- #5 $fdisplay(desc3, "%h %h | %h %h | %h %h %b %b",
- N, D, Q, rem, Qcomp, Rcomp,
- (Q==Qcomp), (rem==Rcomp));
- end
-
- initial
- begin
- #0 N = 64'h0;
- #0 D = 64'h0;
- #0 start = 1'b0;
- #0 reset = 1'b1;
- #22 reset = 1'b0;
- #25 N = 64'hffff_ffff_ffff_ffff;
- #0 D = 64'h0000_0000_0000_0000;
- #0 start = 1'b1;
- #50 start = 1'b0;
-
-
- end
-
-endmodule // tb
diff --git a/wally-pipelined/src/muldiv/div/test_iter32.sv b/wally-pipelined/src/muldiv/div/test_iter32.sv
deleted file mode 100755
index 94a42c211..000000000
--- a/wally-pipelined/src/muldiv/div/test_iter32.sv
+++ /dev/null
@@ -1,74 +0,0 @@
-module tb;
-
- logic [31:0] N, D;
- logic clk;
- logic reset;
- logic start;
-
- logic [31:0] Q;
- logic [31:0] rem0;
- logic div0;
- logic done;
- logic divdone;
-
- integer handle3;
- integer desc3;
- integer i;
-
- bit [31:0] Ncomp;
- bit [31:0] Dcomp;
- bit [31:0] Qcomp;
- bit [31:0] Rcomp;
-
- logic [7:0] count [0:15];
-
- int32div dut (Q, done, divdone, rem0, div0, N, D, clk, reset, start);
-
- initial
- begin
- clk = 1'b0;
- forever #5 clk = ~clk;
- end
-
- initial
- begin
- handle3 = $fopen("iter32.out");
- #8000000 $finish;
- end
-
- always @(posedge clk, posedge reset)
- begin
- desc3 = handle3;
- #0 start = 1'b0;
- #0 reset = 1'b1;
- #30 reset = 1'b0;
- for (i=0; i<2; i=i+1)
- begin
- N = $random;
- D = $random;
- start <= 1'b1;
- // Wait 2 cycles (to be sure)
- repeat (2)
- @(posedge clk);
- start <= 1'b0;
- repeat (25)
- @(posedge clk);
- Ncomp = N;
- Dcomp = D;
- Qcomp = Ncomp/Dcomp;
- Rcomp = Ncomp%Dcomp;
- $fdisplay(desc3, "%h %h %h %h || %h %h || %b %b",
- N, D, Q, rem0, Qcomp, Rcomp,
- (Q==Qcomp), (rem0==Rcomp));
- end // for (i=0; i<2, i=i+1)
-
-
- end
-
-endmodule // tb
-
-
-
-
-
-
diff --git a/wally-pipelined/src/muldiv/div/test_iter64.sv b/wally-pipelined/src/muldiv/div/test_iter64.sv
deleted file mode 100755
index 0674d8665..000000000
--- a/wally-pipelined/src/muldiv/div/test_iter64.sv
+++ /dev/null
@@ -1,72 +0,0 @@
-module tb;
-
- logic [63:0] N, D;
- logic clk;
- logic reset;
- logic start;
-
- logic [63:0] Q;
- logic [63:0] rem0;
- logic div0;
- logic done;
- logic divdone;
-
- integer handle3;
- integer desc3;
- integer i;
-
- bit [63:0] Ncomp;
- bit [63:0] Dcomp;
- bit [63:0] Qcomp;
- bit [63:0] Rcomp;
-
- logic [7:0] count [0:15];
-
- int64div dut (Q, done, divdone, rem0, div0, N, D, clk, reset, start);
-
- initial
- begin
- clk = 1'b0;
- forever #5 clk = ~clk;
- end
-
- initial
- begin
- handle3 = $fopen("iter64.out");
- #8000000 $finish;
- end
-
- always @(posedge clk, posedge reset)
- begin
- desc3 = handle3;
- #0 start = 1'b0;
- #0 reset = 1'b1;
- #30 reset = 1'b0;
- for (i=0; i<2; i=i+1)
- begin
- N = $random;
- D = $random;
- start <= 1'b1;
- // Wait 2 cycles (to be sure)
- repeat (2)
- @(posedge clk);
- start <= 1'b0;
- repeat (41)
- @(posedge clk);
- Ncomp = N;
- Dcomp = D;
- Qcomp = Ncomp/Dcomp;
- Rcomp = Ncomp%Dcomp;
- $fdisplay(desc3, "%h %h %h %h || %h %h || %b %b",
- N, D, Q, rem0, Qcomp, Rcomp,
- (Q==Qcomp), (rem0==Rcomp));
- end // for (i=0; i<2, i=i+1)
- end
-
-endmodule // tb
-
-
-
-
-
-
diff --git a/wally-pipelined/src/muldiv/div/udiv b/wally-pipelined/src/muldiv/div/udiv
deleted file mode 100755
index 8b1ac689b..000000000
Binary files a/wally-pipelined/src/muldiv/div/udiv and /dev/null differ
diff --git a/wally-pipelined/src/muldiv/div/udiv.c b/wally-pipelined/src/muldiv/div/udiv.c
deleted file mode 100644
index c27565698..000000000
--- a/wally-pipelined/src/muldiv/div/udiv.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include
-#include
-#include
-
-int main() {
-
- uint64_t N;
- uint64_t D;
- uint64_t Q;
-
- D = 0xdf7f3844121bcc23;
- N = 0x10fd3dedadea5195;
- N = 0xffffffffffffffff;
- D = 0x0000000000000000;
- Q = N/D;
-
- printf("N = %" PRIx64 "\n", N);
- printf("D = %" PRIx64 "\n", D);
- printf("Q = %" PRIx64 "\n", Q);
- printf("R = %" PRIx64 "\n", N%D);
-
-
-
-}
diff --git a/wally-pipelined/src/muldiv/intdivrestoring.sv b/wally-pipelined/src/muldiv/intdivrestoring.sv
index 5ab9b2b8c..806015f1f 100644
--- a/wally-pipelined/src/muldiv/intdivrestoring.sv
+++ b/wally-pipelined/src/muldiv/intdivrestoring.sv
@@ -30,105 +30,105 @@
module intdivrestoring (
input logic clk,
input logic reset,
- input logic StallM, FlushM,
- input logic SignedDivideE, W64E,
- input logic StartDivideE,
+ input logic StallM,
+ input logic DivSignedE, W64E,
+ input logic DivE,
input logic [`XLEN-1:0] SrcAE, SrcBE,
- output logic BusyE, DivDoneM,
+ output logic DivBusyE,
output logic [`XLEN-1:0] QuotM, RemM
);
- logic [`XLEN-1:0] WE[`DIV_BITSPERCYCLE:0];
- logic [`XLEN-1:0] XQE[`DIV_BITSPERCYCLE:0];
- logic [`XLEN-1:0] DSavedE, XSavedE, XSavedM, DinE, XinE, DnE, DAbsBE, XnE, XInitE, WM, XQM, WnM, XQnM;
+ typedef enum logic [1:0] {IDLE, BUSY, DONE} statetype;
+ statetype state;
+
+ logic [`XLEN-1:0] WM[`DIV_BITSPERCYCLE:0];
+ logic [`XLEN-1:0] XQM[`DIV_BITSPERCYCLE:0];
+ logic [`XLEN-1:0] DinE, XinE, DnE, DAbsBE, DAbsBM, XnE, XInitE, WnM, XQnM;
localparam STEPBITS = $clog2(`XLEN/`DIV_BITSPERCYCLE);
logic [STEPBITS:0] step;
logic Div0E, Div0M;
- logic DivInitE, SignXE, SignXM, SignDE, SignDM, NegWM, NegQM;
- logic SignedDivideM;
+ logic DivStartE, SignXE, SignDE, NegQE, NegWM, NegQM;
+ logic [`XLEN-1:0] WNextE, XQNextE;
- // save inputs on the negative edge of the execute clock.
- // This is unusual practice, but the inputs are not guaranteed to be stable due to some hazard and forwarding logic.
- // Saving the inputs is the most hardware-efficient way to fix the issue.
- flopen #(`XLEN) xsavereg(~clk, StartDivideE, SrcAE, XSavedE);
- flopen #(`XLEN) dsavereg(~clk, StartDivideE, SrcBE, DSavedE);
+ //////////////////////////////
+ // Execute Stage: prepare for division calculation with control logic, W logic and absolute values, initialize W and XQ
+ //////////////////////////////
+
+ // Divider control signals
+ assign DivStartE = DivE & (state == IDLE) & ~StallM;
+ assign DivBusyE = (state == BUSY) | DivStartE;
// Handle sign extension for W-type instructions
generate
if (`XLEN == 64) begin // RV64 has W-type instructions
- mux2 #(`XLEN) xinmux(XSavedE, {XSavedE[31:0], 32'b0}, W64E, XinE);
- mux2 #(`XLEN) dinmux(DSavedE, {{32{DSavedE[31]&SignedDivideE}}, DSavedE[31:0]}, W64E, DinE);
- end else begin // RV32 has no W-type instructions
- assign XinE = XSavedE;
- assign DinE = DSavedE;
+ mux2 #(`XLEN) xinmux(SrcAE, {SrcAE[31:0], 32'b0}, W64E, XinE);
+ mux2 #(`XLEN) dinmux(SrcBE, {{32{SrcBE[31]&DivSignedE}}, SrcBE[31:0]}, W64E, DinE);
+ end else begin // RV32 has no W-type instructions
+ assign XinE = SrcAE;
+ assign DinE = SrcBE;
end
endgenerate
// Extract sign bits and check fo division by zero
- assign SignDE = DinE[`XLEN-1];
- assign SignXE = XinE[`XLEN-1];
+ assign SignDE = DivSignedE & DinE[`XLEN-1];
+ assign SignXE = DivSignedE & XinE[`XLEN-1];
+ assign NegQE = SignDE ^ SignXE;
assign Div0E = (DinE == 0);
- // pipeline registers
- flopenrc #(1) SignedDivideMReg(clk, reset, FlushM, ~StallM, SignedDivideE, SignedDivideM);
- flopenrc #(1) Div0eMReg(clk, reset, FlushM, ~StallM, Div0E, Div0M);
- flopenrc #(1) SignDMReg(clk, reset, FlushM, ~StallM, SignDE, SignDM);
- flopenrc #(1) SignXMReg(clk, reset, FlushM, ~StallM, SignXE, SignXM);
- flopenrc #(`XLEN) XSavedMReg(clk, reset, FlushM, ~StallM, XSavedE, XSavedM); // is this truly necessary?
-
// Take absolute value for signed operations, and negate D to handle subtraction in divider stages
neg #(`XLEN) negd(DinE, DnE);
- mux2 #(`XLEN) dabsmux(DnE, DinE, SignedDivideE & SignDE, DAbsBE); // take absolute value for signed operations, and negate for subtraction setp
+ mux2 #(`XLEN) dabsmux(DnE, DinE, SignDE, DAbsBE); // take absolute value for signed operations, and negate for subtraction setp
neg #(`XLEN) negx(XinE, XnE);
- mux2 #(`XLEN) xabsmux(XinE, XnE, SignedDivideE & SignXE, XInitE); // need original X as remainder if doing divide by 0
+ mux3 #(`XLEN) xabsmux(XinE, XnE, SrcAE, {Div0E, SignXE}, XInitE); // take absolute value for signed operations, or keep original value for divide by 0
- // initialization multiplexers on first cycle of operation (one cycle after start is asserted)
- mux2 #(`XLEN) wmux(WM, {`XLEN{1'b0}}, DivInitE, WE[0]);
- mux2 #(`XLEN) xmux(XQM, XInitE, DivInitE, XQE[0]);
+ // initialization multiplexers on first cycle of operation
+ mux2 #(`XLEN) wmux(WM[`DIV_BITSPERCYCLE], {`XLEN{1'b0}}, DivStartE, WNextE);
+ mux2 #(`XLEN) xmux(XQM[`DIV_BITSPERCYCLE], XInitE, DivStartE, XQNextE);
+ //////////////////////////////
+ // Memory Stage: division iterations, output sign correction
+ //////////////////////////////
+
+ // registers before division steps
+ flopen #(`XLEN) wreg(clk, DivBusyE, WNextE, WM[0]);
+ flopen #(`XLEN) xreg(clk, DivBusyE, XQNextE, XQM[0]);
+ flopen #(`XLEN) dabsreg(clk, DivStartE, DAbsBE, DAbsBM);
+ flopen #(3) Div0eMReg(clk, DivStartE, {Div0E, NegQE, SignXE}, {Div0M, NegQM, NegWM});
+
// one copy of divstep for each bit produced per cycle
generate
genvar i;
for (i=0; i<`DIV_BITSPERCYCLE; i = i+1)
- intdivrestoringstep divstep(WE[i], XQE[i], DAbsBE, WE[i+1], XQE[i+1]);
+ intdivrestoringstep divstep(WM[i], XQM[i], DAbsBM, WM[i+1], XQM[i+1]);
endgenerate
- // registers after division steps
- flopen #(`XLEN) wreg(clk, BusyE, WE[`DIV_BITSPERCYCLE], WM);
- flopen #(`XLEN) xreg(clk, BusyE, XQE[`DIV_BITSPERCYCLE], XQM);
-
- // Output selection logic in Memory Stage
- // On final setp of signed operations, negate outputs as needed
- assign NegWM = SignedDivideM & SignXM; // Remainder should have same sign as X
- assign NegQM = SignedDivideM & (SignXM ^ SignDM); // Quotient should be negative if one operand is positive and the other is negative
- neg #(`XLEN) wneg(WM, WnM);
- neg #(`XLEN) qneg(XQM, XQnM);
+ // On final setp of signed operations, negate outputs as needed to get correct sign
+ neg #(`XLEN) qneg(XQM[0], XQnM);
+ neg #(`XLEN) wneg(WM[0], WnM);
// Select appropriate output: normal, negated, or for divide by zero
- mux3 #(`XLEN) qmux(XQM, XQnM, {`XLEN{1'b1}}, {Div0M, NegQM}, QuotM); // Q taken from XQ register, negated if necessary, or all 1s when dividing by zero
- mux3 #(`XLEN) remmux(WM, WnM, XSavedM, {Div0M, NegWM}, RemM); // REM taken from W register, negated if necessary, or from X when dividing by zero
+ mux3 #(`XLEN) qmux(XQM[0], XQnM, {`XLEN{1'b1}}, {Div0M, NegQM}, QuotM); // Q taken from XQ register, negated if necessary, or all 1s when dividing by zero
+ mux3 #(`XLEN) remmux(WM[0], WnM, XQM[0], {Div0M, NegWM}, RemM); // REM taken from W register, negated if necessary, or from X when dividing by zero
- // Divider FSM to sequence Init, Busy, and Done
- always_ff @(posedge clk)
+ //////////////////////////////
+ // Divider FSM to sequence Busy and Done
+ //////////////////////////////
+
+ always_ff @(posedge clk)
if (reset) begin
- BusyE = 0; DivDoneM = 0; step = 0; DivInitE = 0;
- end else if (StartDivideE & ~StallM) begin
- if (Div0E) DivDoneM = 1;
- else begin
- BusyE = 1; step = 0; DivInitE = 1;
- end
- end else if (BusyE & ~DivDoneM) begin // pause one cycle at beginning of signed operations for absolute value
- DivInitE = 0;
- step = step + 1;
+ state <= IDLE;
+ end else if (DivStartE) begin
+ step <= 1;
+ if (Div0E) state <= DONE;
+ else state <= BUSY;
+ end else if (state == BUSY) begin // pause one cycle at beginning of signed operations for absolute value
if (step[STEPBITS] | (`XLEN==64) & W64E & step[STEPBITS-1]) begin // complete in half the time for W-type instructions
- step = 0;
- BusyE = 0;
- DivDoneM = 1;
+ state <= DONE;
end
- end else if (DivDoneM) begin
- DivDoneM = 0;
- BusyE = 0;
+ step <= step + 1;
+ end else if (state == DONE) begin
+ if (StallM) state <= DONE;
+ else state <= IDLE;
end
-
endmodule
/* verilator lint_on UNOPTFLAT */
diff --git a/wally-pipelined/src/muldiv/mul.sv b/wally-pipelined/src/muldiv/mul.sv
index 3b29ee3fe..dee645d39 100644
--- a/wally-pipelined/src/muldiv/mul.sv
+++ b/wally-pipelined/src/muldiv/mul.sv
@@ -27,9 +27,11 @@
module mul (
// Execute Stage interface
+ input logic clk, reset,
+ input logic StallM, FlushM,
input logic [`XLEN-1:0] SrcAE, SrcBE,
input logic [2:0] Funct3E,
- output logic [`XLEN*2-1:0] ProdE
+ output logic [`XLEN*2-1:0] ProdM
);
// Number systems
@@ -46,14 +48,20 @@ module mul (
// Signed * Unsigned = P' + ( PA - PB)*2^(XLEN-1) - PP*2^(2XLEN-2)
// Unsigned * Unsigned = P' + ( PA + PB)*2^(XLEN-1) + PP*2^(2XLEN-2)
- logic [`XLEN*2-1:0] PP1, PP2, PP3, PP4;
- logic [`XLEN*2-1:0] Pprime;
+ logic [`XLEN*2-1:0] PP0E, PP1E, PP2E, PP3E, PP4E;
+ logic [`XLEN*2-1:0] PP0M, PP1M, PP2M, PP3M, PP4M;
logic [`XLEN-2:0] PA, PB;
logic PP;
- logic MULH, MULHSU, MULHU;
+ logic MULH, MULHSU;
+ logic [`XLEN-1:0] Aprime, Bprime;
- // portions of product
- assign Pprime = {1'b0, SrcAE[`XLEN-2:0]} * {1'b0, SrcBE[`XLEN-2:0]};
+ //////////////////////////////
+ // Execute Stage: Compute partial products
+ //////////////////////////////
+
+ assign Aprime = {1'b0, SrcAE[`XLEN-2:0]};
+ assign Bprime = {1'b0, SrcBE[`XLEN-2:0]};
+ redundantmul #(`XLEN) bigmul(.a(Aprime), .b(Bprime), .out0(PP0E), .out1(PP1E));
assign PA = {(`XLEN-1){SrcAE[`XLEN-1]}} & SrcBE[`XLEN-2:0];
assign PB = {(`XLEN-1){SrcBE[`XLEN-1]}} & SrcAE[`XLEN-2:0];
assign PP = SrcAE[`XLEN-1] & SrcBE[`XLEN-1];
@@ -61,17 +69,25 @@ module mul (
// flavor of multiplication
assign MULH = (Funct3E == 3'b001);
assign MULHSU = (Funct3E == 3'b010);
- // assign MULHU = (Funct3E == 2'b11); // signal unused
// Handle signs
- assign PP1 = Pprime; // same for all flavors
- assign PP2 = {2'b00, (MULH | MULHSU) ? ~PA : PA, {(`XLEN-1){1'b0}}};
- assign PP3 = {2'b00, (MULH) ? ~PB : PB, {(`XLEN-1){1'b0}}};
+ assign PP2E = {2'b00, (MULH | MULHSU) ? ~PA : PA, {(`XLEN-1){1'b0}}};
+ assign PP3E = {2'b00, (MULH) ? ~PB : PB, {(`XLEN-1){1'b0}}};
always_comb
- if (MULH) PP4 = {1'b1, PP, {(`XLEN-3){1'b0}}, 1'b1, {(`XLEN){1'b0}}};
- else if (MULHSU) PP4 = {1'b1, ~PP, {(`XLEN-2){1'b0}}, 1'b1, {(`XLEN-1){1'b0}}};
- else PP4 = {1'b0, PP, {(`XLEN*2-2){1'b0}}};
+ if (MULH) PP4E = {1'b1, PP, {(`XLEN-3){1'b0}}, 1'b1, {(`XLEN){1'b0}}};
+ else if (MULHSU) PP4E = {1'b1, ~PP, {(`XLEN-2){1'b0}}, 1'b1, {(`XLEN-1){1'b0}}};
+ else PP4E = {1'b0, PP, {(`XLEN*2-2){1'b0}}};
- assign ProdE = PP1 + PP2 + PP3 + PP4; //SrcAE * SrcBE;
+ //////////////////////////////
+ // Memory Stage: Sum partial proudcts
+ //////////////////////////////
+
+ flopenrc #(`XLEN*2) PP0Reg(clk, reset, FlushM, ~StallM, PP0E, PP0M);
+ flopenrc #(`XLEN*2) PP1Reg(clk, reset, FlushM, ~StallM, PP1E, PP1M);
+ flopenrc #(`XLEN*2) PP2Reg(clk, reset, FlushM, ~StallM, PP2E, PP2M);
+ flopenrc #(`XLEN*2) PP3Reg(clk, reset, FlushM, ~StallM, PP3E, PP3M);
+ flopenrc #(`XLEN*2) PP4Reg(clk, reset, FlushM, ~StallM, PP4E, PP4M);
+
+ assign ProdM = PP0M + PP1M + PP2M + PP3M + PP4M; //SrcAE * SrcBE;
endmodule
diff --git a/wally-pipelined/src/muldiv/muldiv.sv b/wally-pipelined/src/muldiv/muldiv.sv
index 8ffe91e9e..a98fb4f02 100644
--- a/wally-pipelined/src/muldiv/muldiv.sv
+++ b/wally-pipelined/src/muldiv/muldiv.sv
@@ -27,8 +27,6 @@
module muldiv (
input logic clk, reset,
- // Decode Stage interface
- input logic [31:0] InstrD,
// Execute Stage interface
input logic [`XLEN-1:0] SrcAE, SrcBE,
input logic [2:0] Funct3E, Funct3M,
@@ -38,31 +36,29 @@ module muldiv (
// Divide Done
output logic DivBusyE,
// hazards
- input logic StallE, StallM, StallW, FlushM, FlushW
+ input logic StallM, StallW, FlushM, FlushW
);
generate
if (`M_SUPPORTED) begin
- logic [`XLEN-1:0] MulDivResultE, MulDivResultM;
+ logic [`XLEN-1:0] MulDivResultM;
logic [`XLEN-1:0] PrelimResultM;
logic [`XLEN-1:0] QuotM, RemM;
- logic [`XLEN*2-1:0] ProdE, ProdM;
+ logic [`XLEN*2-1:0] ProdM;
- logic StartDivideE, BusyE, DivDoneM;
- logic SignedDivideE;
+ logic DivE;
+ logic DivSignedE;
logic W64M;
// Multiplier
mul mul(.*);
- flopenrc #(`XLEN*2) ProdMReg(clk, reset, FlushM, ~StallM, ProdE, ProdM);
// Divide
// Start a divide when a new division instruction is received and the divider isn't already busy or finishing
- assign StartDivideE = MulDivE & Funct3E[2] & ~BusyE & ~DivDoneM;
- assign DivBusyE = StartDivideE | BusyE;
- assign SignedDivideE = ~Funct3E[0];
- intdivrestoring div(.clk, .reset, .StallM, .FlushM,
- .SignedDivideE, .W64E, .StartDivideE, .SrcAE, .SrcBE, .BusyE, .DivDoneM, .QuotM, .RemM);
+ assign DivE = MulDivE & Funct3E[2];
+ assign DivSignedE = ~Funct3E[0];
+ intdivrestoring div(.clk, .reset, .StallM,
+ .DivSignedE, .W64E, .DivE, .SrcAE, .SrcBE, .DivBusyE, .QuotM, .RemM);
// Result multiplexer
always_comb
diff --git a/wally-pipelined/src/muldiv/mult_cs.sv b/wally-pipelined/src/muldiv/mult_cs.sv
new file mode 100644
index 000000000..f297401c3
--- /dev/null
+++ b/wally-pipelined/src/muldiv/mult_cs.sv
@@ -0,0 +1,101 @@
+///////////////////////////////////////////
+// mul_cs.sv
+//
+// Written: james.stine@okstate.edu 17 October 2021
+// Modified:
+//
+// Purpose: Carry/Save Multiplier output with Wallace Reduction
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+module mult_cs #(parameter WIDTH = 8)
+ (a, b, tc, sum, carry);
+
+ input logic [WIDTH-1:0] a;
+ input logic [WIDTH-1:0] b;
+ input logic tc;
+
+ output logic [2*WIDTH-1:0] sum;
+ output logic [2*WIDTH-1:0] carry;
+
+ // PP array
+ logic [2*WIDTH-1:0] pp_array [0:WIDTH-1];
+ logic [2*WIDTH-1:0] next_pp_array [0:WIDTH-1];
+ logic [2*WIDTH-1:0] tmp_sum, tmp_carry;
+ logic [2*WIDTH-1:0] temp_pp;
+ logic [2*WIDTH-1:0] tmp_pp_carry;
+ logic [WIDTH-1:0] temp_b;
+ logic temp_bitgroup;
+ integer bit_pair, height, i;
+
+ always_comb
+ begin
+ // For each multiplicand PP generation
+ for (bit_pair=0; bit_pair < WIDTH; bit_pair=bit_pair+1)
+ begin
+ // Shift to the right via P&H
+ temp_b = (b >> (bit_pair));
+ temp_bitgroup = temp_b[0];
+ // PP generation
+ case (temp_bitgroup)
+ 1'b0 : temp_pp = {2*WIDTH-1{1'b0}};
+ 1'b1 : temp_pp = a;
+ default : temp_pp = {2*WIDTH-1{1'b0}};
+ endcase
+ // Shift to the left via P&H
+ temp_pp = temp_pp << (bit_pair);
+ pp_array[bit_pair] = temp_pp;
+ end
+
+ // Height is multiplier
+ height = WIDTH;
+
+ // Wallace Tree PP reduction
+ while (height > 2)
+ begin
+ for (i=0; i < (height/3); i=i+1)
+ begin
+ next_pp_array[i*2] = pp_array[i*3]^pp_array[i*3+1]^pp_array[i*3+2];
+ tmp_pp_carry = (pp_array[i*3] & pp_array[i*3+1]) |
+ (pp_array[i*3+1] & pp_array[i*3+2]) |
+ (pp_array[i*3] & pp_array[i*3+2]);
+ next_pp_array[i*2+1] = tmp_pp_carry << 1;
+ end
+ // Reasssign not divisible by 3 rows to next_pp_array
+ if ((height % 3) > 0)
+ begin
+ for (i=0; i < (height % 3); i=i+1)
+ next_pp_array[2 * (height/3) + i] = pp_array[3 * (height/3) + i];
+ end
+ // Put back values in pp_array to start again
+ for (i=0; i < WIDTH; i=i+1)
+ pp_array[i] = next_pp_array[i];
+ // Reduce height
+ height = height - (height/3);
+ end
+ // Sum is first row in reduced array
+ tmp_sum = pp_array[0];
+ // Carry is second row in reduced array
+ tmp_carry = pp_array[1];
+ end
+
+ assign sum = tmp_sum;
+ assign carry = tmp_carry;
+
+endmodule // mult_cs
+
diff --git a/wally-pipelined/src/muldiv/redundantmul.sv b/wally-pipelined/src/muldiv/redundantmul.sv
new file mode 100644
index 000000000..70fdc8b57
--- /dev/null
+++ b/wally-pipelined/src/muldiv/redundantmul.sv
@@ -0,0 +1,61 @@
+///////////////////////////////////////////
+// redundantmul.sv
+//
+// Written: David_Harris@hmc.edu and ssanghai@hm.edu 10/11/2021
+// Modified:
+//
+// Purpose: multiplier with output in redundant carry-sum form
+// This can be faster than a mutiplier that requires a final adder to obtain the nonredundant answer.
+// The module has several implementations controlled by the DESIGN_COMPILER flag.
+// When DESIGN_COMPILER = 1, use the Synopsys DesignWare DW02_multp block. This will give highest quality results
+// but doesn't work in simulation or when using different tools
+// When DESIGN_COMPILER = 2, use the Wally mult_cs block with Radix 2 Booth encoding and a Wallace Tree
+// This simulates and synthesizes, but quality of results ae lower than DesignWare
+// Otherwise, just use a nonredundant multiplier and set one word to 0. This is best for FPGAs, which have
+// block multipliers, and also simulates fastest.
+//
+// A component of the Wally configurable RISC-V project.
+//
+// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////
+
+`include "wally-config.vh"
+
+module redundantmul #(parameter WIDTH =8)(
+ input logic [WIDTH-1:0] a,b,
+ output logic [2*WIDTH-1:0] out0, out1);
+
+ //
+
+ generate
+ if (`DESIGN_COMPILER == 1)
+ begin
+ logic [2*WIDTH-1+2:0] tmp_out0; // DW02_
+ logic [2*WIDTH-1+2:0] tmp_out1;
+ DW02_multp #(WIDTH, WIDTH, 2*WIDTH+2) mul(.a, .b, .tc(1'b0), .out0(tmp_out0), .out1(tmp_out1));
+ assign out0 = tmp_out0[2*WIDTH-1:0];
+ assign out1 = tmp_out1[2*WIDTH-1:0];
+ end
+ else if (`DESIGN_COMPILER == 2)
+ mult_cs #(WIDTH) mul(.a, .b, .tc(1'b0), .sum(out0), .carry(out1));
+ else begin // force a nonredunant multipler. This will simulate properly and also is appropriate for FPGAs.
+ assign out0 = a * b;
+ assign out1 = 0;
+ end
+ endgenerate
+
+endmodule
+
+
diff --git a/wally-pipelined/src/privileged/csr.sv b/wally-pipelined/src/privileged/csr.sv
index a14c2c7a6..440045d30 100644
--- a/wally-pipelined/src/privileged/csr.sv
+++ b/wally-pipelined/src/privileged/csr.sv
@@ -33,11 +33,10 @@ module csr #(parameter
UIE_REGW = 12'b0
) (
input logic clk, reset,
- input logic FlushD, FlushE, FlushM, FlushW,
- input logic StallD, StallE, StallM, StallW,
- input logic [31:0] InstrD,InstrE,InstrM,
- input logic [`XLEN-1:0] PCF, PCD, PCE, PCM, SrcAM,
- input logic InterruptM,
+ input logic FlushE, FlushM, FlushW,
+ input logic StallE, StallM, StallW,
+ input logic [31:0] InstrM,
+ input logic [`XLEN-1:0] PCM, SrcAM,
input logic CSRReadM, CSRWriteM, TrapM, MTrapM, STrapM, UTrapM, mretM, sretM, uretM,
input logic TimerIntM, ExtIntM, SwIntM,
input logic [63:0] MTIME_CLINT, MTIMECMP_CLINT,
@@ -51,9 +50,6 @@ module csr #(parameter
input logic DCacheAccess,
input logic [1:0] NextPrivilegeModeM, PrivilegeModeW,
input logic [`XLEN-1:0] CauseM, NextFaultMtvalM,
- input logic BreakpointFaultM, EcallFaultM,
- input logic InstrMisalignedFaultM, InstrAccessFaultM, IllegalInstrFaultM,
- input logic LoadMisalignedFaultM, StoreMisalignedFaultM, LoadAccessFaultM, StoreAccessFaultM,
output logic [1:0] STATUS_MPP,
output logic STATUS_SPP, STATUS_TSR,
output logic [`XLEN-1:0] MEPC_REGW, SEPC_REGW, UEPC_REGW, UTVEC_REGW, STVEC_REGW, MTVEC_REGW,
diff --git a/wally-pipelined/src/privileged/csrc.sv b/wally-pipelined/src/privileged/csrc.sv
index e0148f298..cc7e5b4f6 100644
--- a/wally-pipelined/src/privileged/csrc.sv
+++ b/wally-pipelined/src/privileged/csrc.sv
@@ -71,8 +71,8 @@ module csrc #(parameter
//HPMCOUNTER31H = 12'hC9F
) (
input logic clk, reset,
- input logic StallD, StallE, StallM, StallW,
- input logic FlushD, FlushE, FlushM, FlushW,
+ input logic StallE, StallM, StallW,
+ input logic FlushE, FlushM, FlushW,
input logic InstrValidM, LoadStallD, CSRMWriteM,
input logic BPPredDirWrongM,
input logic BTBPredPCWrongM,
@@ -92,16 +92,10 @@ module csrc #(parameter
generate
if (`ZICOUNTERS_SUPPORTED) begin
- // logic [63:0] TIME_REGW, TIMECMP_REGW;
logic [63:0] CYCLE_REGW, INSTRET_REGW;
- logic [63:0] HPMCOUNTER3_REGW, HPMCOUNTER4_REGW; // add more performance counters here if desired
- logic [63:0] CYCLEPlusM, INSTRETPlusM;
- logic [63:0] HPMCOUNTER3PlusM, HPMCOUNTER4PlusM;
- // logic [`XLEN-1:0] NextTIMEM;
- logic [`XLEN-1:0] NextCYCLEM, NextINSTRETM;
- logic [`XLEN-1:0] NextHPMCOUNTER3M, NextHPMCOUNTER4M;
+ logic [63:0] CYCLEPlusM, INSTRETPlusM;
+ logic [`XLEN-1:0] NextCYCLEM, NextINSTRETM;
logic WriteCYCLEM, WriteINSTRETM;
- logic WriteHPMCOUNTER3M, WriteHPMCOUNTER4M;
logic [4:0] CounterNumM;
logic [`XLEN-1:0] HPMCOUNTER_REGW [`COUNTERS-1:3];
logic [`XLEN-1:0] HPMCOUNTERH_REGW [`COUNTERS-1:3];
@@ -109,27 +103,15 @@ module csrc #(parameter
assign InstrValidNotFlushedM = InstrValidM & ~StallW & ~FlushW;
- //logic [`COUNTERS-1:3][`XLEN-1:0] HPMCOUNTERH_REGW;
-
// Write enables
- // assign WriteTIMEM = CSRMWriteM && (CSRAdrM == MTIME);
- // assign WriteTIMECMPM = CSRMWriteM && (CSRAdrM == MTIMECMP);
assign WriteCYCLEM = CSRMWriteM && (CSRAdrM == MCYCLE);
assign WriteINSTRETM = CSRMWriteM && (CSRAdrM == MINSTRET);
- //assign WriteHPMCOUNTER3M = CSRMWriteM && (CSRAdrM == MHPMCOUNTER3);
- //assign WriteHPMCOUNTER4M = CSRMWriteM && (CSRAdrM == MHPMCOUNTER4);
-
+
// Counter adders with inhibits for power savings
assign CYCLEPlusM = CYCLE_REGW + {63'b0, ~MCOUNTINHIBIT_REGW[0]};
- //assign TIMEPlusM = TIME_REGW + 1; // can't be inhibited
assign INSTRETPlusM = INSTRET_REGW + {63'b0, InstrValidNotFlushedM & ~MCOUNTINHIBIT_REGW[2]};
- //assign HPMCOUNTER3PlusM = HPMCOUNTER3_REGW + {63'b0, LoadStallD & ~MCOUNTINHIBIT_REGW[3]}; // count load stalls
- //assign HPMCOUNTER4PlusM = HPMCOUNTER4_REGW + {63'b0, 1'b0 & ~MCOUNTINHIBIT_REGW[4]}; // change to count signals
assign NextCYCLEM = WriteCYCLEM ? CSRWriteValM : CYCLEPlusM[`XLEN-1:0];
- //assign NextTIMEM = WriteTIMEM ? CSRWriteValM : TIMEPlusM[`XLEN-1:0];
assign NextINSTRETM = WriteINSTRETM ? CSRWriteValM : INSTRETPlusM[`XLEN-1:0];
- //assign NextHPMCOUNTER3M = WriteHPMCOUNTER3M ? CSRWriteValM : HPMCOUNTER3PlusM[`XLEN-1:0];
- //assign NextHPMCOUNTER4M = WriteHPMCOUNTER4M ? CSRWriteValM : HPMCOUNTER4PlusM[`XLEN-1:0];
// parameterized number of additional counters
if (`COUNTERS > 3) begin
@@ -171,7 +153,6 @@ module csrc #(parameter
always @(posedge clk, posedge reset) // ModelSim doesn't like syntax of passing array element to flop
if (reset) HPMCOUNTER_REGW[i][`XLEN-1:0] <= #1 0;
else if (~StallW) HPMCOUNTER_REGW[i][`XLEN-1:0] <= #1 NextHPMCOUNTERM[i];
- //flopr #(`XLEN) HPMCOUNTERreg[i](clk, reset, NextHPMCOUNTERM[i], HPMCOUNTER_REGW[i]);
if (`XLEN==32) begin
logic [`COUNTERS-1:3] WriteHPMCOUNTERHM;
@@ -182,7 +163,6 @@ module csrc #(parameter
always @(posedge clk, posedge reset) // ModelSim doesn't like syntax of passing array element to flop
if (reset) HPMCOUNTERH_REGW[i][`XLEN-1:0] <= #1 0;
else if (~StallW) HPMCOUNTERH_REGW[i][`XLEN-1:0] <= #1 NextHPMCOUNTERHM[i];
- //flopr #(`XLEN) HPMCOUNTERHreg[i](clk, reset, NextHPMCOUNTERHM[i], HPMCOUNTER_REGW[i][63:32]);
end else begin
assign HPMCOUNTERPlusM[i] = HPMCOUNTER_REGW[i] + {63'b0, CounterEvent[i] & ~MCOUNTINHIBIT_REGW[i]};
end
@@ -192,44 +172,23 @@ module csrc #(parameter
// Write / update counters
// Only the Machine mode versions of the counter CSRs are writable
if (`XLEN==64) begin// 64-bit counters
- // flopr #(64) TIMEreg(clk, reset, WriteTIMEM ? CSRWriteValM : TIME_REGW + 1, TIME_REGW); // may count off a different clock***
- // flopenr #(64) TIMECMPreg(clk, reset, WriteTIMECMPM, CSRWriteValM, TIMECMP_REGW);
flopr #(64) CYCLEreg(clk, reset, NextCYCLEM, CYCLE_REGW);
flopr #(64) INSTRETreg(clk, reset, NextINSTRETM, INSTRET_REGW);
- //flopr #(64) HPMCOUNTER3reg(clk, reset, NextHPMCOUNTER3M, HPMCOUNTER3_REGW);
- //flopr #(64) HPMCOUNTER4reg(clk, reset, NextHPMCOUNTER4M, HPMCOUNTER4_REGW);
- end else begin // 32-bit low and high counters
+ end else begin // 32-bit low and high counters
logic WriteTIMEHM, WriteTIMECMPHM, WriteCYCLEHM, WriteINSTRETHM;
- //logic WriteHPMCOUNTER3HM, WriteHPMCOUNTER4HM;
logic [`XLEN-1:0] NextCYCLEHM, NextTIMEHM, NextINSTRETHM;
- //logic [`XLEN-1:0] NextHPMCOUNTER3HM, NextHPMCOUNTER4HM;
// Write Enables
- // assign WriteTIMEHM = CSRMWriteM && (CSRAdrM == MTIMEH);
- // assign WriteTIMECMPHM = CSRMWriteM && (CSRAdrM == MTIMECMPH);
assign WriteCYCLEHM = CSRMWriteM && (CSRAdrM == MCYCLEH);
assign WriteINSTRETHM = CSRMWriteM && (CSRAdrM == MINSTRETH);
- //assign WriteHPMCOUNTER3HM = CSRMWriteM && (CSRAdrM == MHPMCOUNTER3H);
- //assign WriteHPMCOUNTER4HM = CSRMWriteM && (CSRAdrM == MHPMCOUNTER4H);
assign NextCYCLEHM = WriteCYCLEM ? CSRWriteValM : CYCLEPlusM[63:32];
- // assign NextTIMEHM = WriteTIMEHM ? CSRWriteValM : TIMEPlusM[63:32];
assign NextINSTRETHM = WriteINSTRETHM ? CSRWriteValM : INSTRETPlusM[63:32];
- //assign NextHPMCOUNTER3HM = WriteHPMCOUNTER3HM ? CSRWriteValM : HPMCOUNTER3PlusM[63:32];
- //assign NextHPMCOUNTER4HM = WriteHPMCOUNTER4HM ? CSRWriteValM : HPMCOUNTER4PlusM[63:32];
// Counter CSRs
- // flopr #(32) TIMEreg(clk, reset, NextTIMEM, TIME_REGW); // may count off a different clock***
- // flopenr #(32) TIMECMPreg(clk, reset, WriteTIMECMPM, CSRWriteValM, TIMECMP_REGW[31:0]);
flopr #(32) CYCLEreg(clk, reset, NextCYCLEM, CYCLE_REGW[31:0]);
flopr #(32) INSTRETreg(clk, reset, NextINSTRETM, INSTRET_REGW[31:0]);
- //flopr #(32) HPMCOUNTER3reg(clk, reset, NextHPMCOUNTER3M, HPMCOUNTER3_REGW[31:0]);
- //flopr #(32) HPMCOUNTER4reg(clk, reset, NextHPMCOUNTER4M, HPMCOUNTER4_REGW[31:0]);
- // flopr #(32) TIMEHreg(clk, reset, NextTIMEHM, TIME_REGW); // may count off a different clock***
- // flopenr #(32) TIMECMPHreg(clk, reset, WriteTIMECMPHM, CSRWriteValM, TIMECMP_REGW[63:32]);
flopr #(32) CYCLEHreg(clk, reset, NextCYCLEHM, CYCLE_REGW[63:32]);
flopr #(32) INSTRETHreg(clk, reset, NextINSTRETHM, INSTRET_REGW[63:32]);
- //flopr #(32) HPMCOUNTER3Hreg(clk, reset, NextHPMCOUNTER3HM, HPMCOUNTER3_REGW[63:32]);
- //flopr #(32) HPMCOUNTER4Hreg(clk, reset, NextHPMCOUNTER4HM, HPMCOUNTER4_REGW[63:32]);
end
// eventually move TIME and TIMECMP to the CLINT -- Ben 06/17/21: sure let's give that a shot!
@@ -254,13 +213,9 @@ module csrc #(parameter
MTIMECMP: CSRCReadValM = MTIMECMP_CLINT;
MCYCLE: CSRCReadValM = CYCLE_REGW;
MINSTRET: CSRCReadValM = INSTRET_REGW;
- //MHPMCOUNTER3: CSRCReadValM = HPMCOUNTER3_REGW;
- //MHPMCOUNTER4: CSRCReadValM = HPMCOUNTER4_REGW;
TIME: CSRCReadValM = MTIME_CLINT;
CYCLE: CSRCReadValM = CYCLE_REGW;
INSTRET: CSRCReadValM = INSTRET_REGW;
- //HPMCOUNTER3: CSRCReadValM = HPMCOUNTER3_REGW;
- //HPMCOUNTER4: CSRCReadValM = HPMCOUNTER4_REGW;
default: begin
CSRCReadValM = 0;
IllegalCSRCAccessM = 1;
@@ -283,24 +238,16 @@ module csrc #(parameter
MTIMECMP: CSRCReadValM = MTIMECMP_CLINT[31:0];
MCYCLE: CSRCReadValM = CYCLE_REGW[31:0];
MINSTRET: CSRCReadValM = INSTRET_REGW[31:0];
- //MHPMCOUNTER3: CSRCReadValM = HPMCOUNTER3_REGW[31:0];
- //MHPMCOUNTER4: CSRCReadValM = HPMCOUNTER4_REGW[31:0];
TIME: CSRCReadValM = MTIME_CLINT[31:0];
CYCLE: CSRCReadValM = CYCLE_REGW[31:0];
INSTRET: CSRCReadValM = INSTRET_REGW[31:0];
- //HPMCOUNTER3: CSRCReadValM = HPMCOUNTER3_REGW[31:0];
- //HPMCOUNTER4: CSRCReadValM = HPMCOUNTER4_REGW[31:0];
MTIMEH: CSRCReadValM = MTIME_CLINT[63:32];
MTIMECMPH: CSRCReadValM = MTIMECMP_CLINT[63:32];
MCYCLEH: CSRCReadValM = CYCLE_REGW[63:32];
MINSTRETH: CSRCReadValM = INSTRET_REGW[63:32];
- //MHPMCOUNTER3H: CSRCReadValM = HPMCOUNTER3_REGW[63:32];
- //MHPMCOUNTER4H: CSRCReadValM = HPMCOUNTER4_REGW[63:32];
TIMEH: CSRCReadValM = MTIME_CLINT[63:32];
CYCLEH: CSRCReadValM = CYCLE_REGW[63:32];
INSTRETH: CSRCReadValM = INSTRET_REGW[63:32];
- //HPMCOUNTER3H: CSRCReadValM = HPMCOUNTER3_REGW[63:32];
- //HPMCOUNTER4H: CSRCReadValM = HPMCOUNTER4_REGW[63:32];
default: begin
CSRCReadValM = 0;
IllegalCSRCAccessM = 1;
@@ -317,216 +264,3 @@ module csrc #(parameter
endgenerate
endmodule
-/* Bad code from class
-
-///////////////////////////////////////////
-// csrc.sv
-//
-// Written: David_Harris@hmc.edu 9 January 2021
-// Modified:ssanghai@hmc.edu 2nd March
-// Added a configurable number of counters
-// dottolia@hmc.edu 20 April 2021
-// Make counters synthesizable
-//
-// Purpose: Counter CSRs
-// See RISC-V Privileged Mode Specification 20190608 3.1.10-11
-//
-// A component of the Wally configurable RISC-V project.
-//
-// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
-// is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-///////////////////////////////////////////
-
-`include "wally-config.vh"
-
-module csrc #(parameter
- // counters
- MHPMCOUNTERBASE = 12'hB00,
- MHPMCOUNTERHBASE = 12'hB80,
- MPHMEVENTBASE = 12'h320,
- HPMCOUNTERBASE = 12'hC00,
- HPMCOUNTERHBASE = 12'hC80,
- )(input logic clk, reset,
- input logic StallD, StallE, StallM, StallW,
- input logic InstrValidM, LoadStallD, CSRMWriteM,
- input logic BPPredDirWrongM,
- input logic BTBPredPCWrongM,
- input logic RASPredPCWrongM,
- input logic BPPredClassNonCFIWrongM,
- input logic [4:0] InstrClassM,
- input logic [11:0] CSRAdrM,
- input logic [1:0] PrivilegeModeW,
- input logic [`XLEN-1:0] CSRWriteValM,
- input logic [31:0] MCOUNTINHIBIT_REGW, MCOUNTEREN_REGW, SCOUNTEREN_REGW,
- output logic [`XLEN-1:0] CSRCReadValM,
- output logic IllegalCSRCAccessM);
-
- // counters
-
-
- // create Counter arrays to store address of each counter
- integer MHPMCOUNTER [`COUNTERS:0];
- integer MHPMCOUNTERH [`COUNTERS:0];
- integer HPMCOUNTER [`COUNTERS:0];
- integer HPMCOUNTERH [`COUNTERS:0];
- integer MHPEVENT [`COUNTERS:0];
-
- genvar i;
- // *** this is totally incorrect. Fix parameterized counters dh 6/9/21
- generate
- for (i = 0; i <= `COUNTERS; i = i + 1) begin
- if (i != 1) begin
- always @(posedge reset) begin
- MHPMCOUNTER[i] = 12'hB00 + i; // not sure this addition is legit
- MHPMCOUNTERH[i] = 12'hB80 + i;
- HPMCOUNTER[i] = 12'hC00 + i;
- HPMCOUNTERH[i] = 12'hC80 + i;
- MHPEVENT[i] = 12'h320 + i; // MHPEVENT[0] = MCOUNTERINHIBIT
- end
- end
- end //end for loop
- endgenerate
-
- logic [`COUNTERS:0] MCOUNTEN;
- assign MCOUNTEN[0] = 1'b1;
- assign MCOUNTEN[1] = 1'b0;
- assign MCOUNTEN[2] = InstrValidM & ~StallW;
- assign MCOUNTEN[3] = LoadStallD & ~StallD;
- assign MCOUNTEN[4] = BPPredDirWrongM & ~StallM;
- assign MCOUNTEN[5] = InstrClassM[0] & ~StallM;
- assign MCOUNTEN[6] = BTBPredPCWrongM & ~StallM;
- assign MCOUNTEN[7] = (InstrClassM[4] | InstrClassM[2] | InstrClassM[1]) & ~StallM;
- assign MCOUNTEN[8] = RASPredPCWrongM & ~StallM;
- assign MCOUNTEN[9] = InstrClassM[3] & ~StallM;
- assign MCOUNTEN[10] = BPPredClassNonCFIWrongM & ~StallM;
- assign MCOUNTEN[`COUNTERS:11] = 0;
-
- genvar j;
- generate
- if (`ZICOUNTERS_SUPPORTED) begin
- logic [`COUNTERS:0][63:0] HPMCOUNTER_REGW;
- logic [`COUNTERS:0][63:0] HPMCOUNTERPlusM;
- logic [`COUNTERS:0][`XLEN-1:0] NextHPMCOUNTERM;
- logic [`COUNTERS:0] WriteHPMCOUNTERM;
- logic [4:0] CounterNumM;
-
- assign CounterNumM = CSRAdrM[4:0]; // which counter to read? ***
-
- for (j=0; j<= `COUNTERS; j = j+1) begin
- // Write enables
- if (j != 1) begin
- assign WriteHPMCOUNTERM[j] = CSRMWriteM && (CSRAdrM == MHPMCOUNTER[j]);
- // Count Signals
- assign HPMCOUNTERPlusM[j] = HPMCOUNTER_REGW[j] + {63'b0, MCOUNTEN[j] & ~MCOUNTINHIBIT_REGW[j]};
-
- assign NextHPMCOUNTERM[j] = WriteHPMCOUNTERM[j] ? CSRWriteValM : HPMCOUNTERPlusM[j][`XLEN-1:0];
- end
-
- // Write / update counters
- // Only the Machine mode versions of the counter CSRs are writable
- if (`XLEN==64) begin // 64-bit counters
- flopenr #(64) HPMCOUNTERreg_j(clk, reset, ~StallW, NextHPMCOUNTERM[j], HPMCOUNTER_REGW[j]);
- end
- else begin // 32-bit low and high counters
- logic [`COUNTERS:0] WriteHPMCOUNTERHM;
- logic [`COUNTERS:0] [`XLEN-1:0] NextHPMCOUNTERHM;
-
- // Write Enables
- assign WriteHPMCOUNTERHM[j] = CSRMWriteM && (CSRAdrM == MHPMCOUNTERH[j]);
- assign NextHPMCOUNTERHM[j] = WriteHPMCOUNTERHM[j] ? CSRWriteValM : HPMCOUNTERPlusM[j][63:32];
-
- // Counter CSRs
- flopenr #(32) HPMCOUNTERreg_j(clk, reset, ~StallW, NextHPMCOUNTERM[j], HPMCOUNTER_REGW[j][31:0]);
- flopenr #(32) HPMCOUNTERHreg_j(clk, reset, ~StallW, NextHPMCOUNTERHM[j], HPMCOUNTER_REGW[j][63:32]);
- end
- end // end for
-
- // eventually move TIME and TIMECMP to the CLINT
- // run TIME off asynchronous reference clock
- // synchronize write enable to TIME
- // four phase handshake to synchronize reads from TIME
-
- // interrupt on timer compare
- // ability to disable optional CSRs
-
- // Read Counters, or cause excepiton if insufficient privilege in light of COUNTEREN flags
- if (`XLEN==64) begin // 64-bit counter reads
- always_comb
- if (PrivilegeModeW == `M_MODE ||
- MCOUNTEREN_REGW[CounterNumM] && (PrivilegeModeW == `S_MODE || SCOUNTEREN_REGW[CounterNumM])) begin
-
- if (CSRAdrM[11:5] == MHPMCOUNTER[0][11:5] || CSRAdrM[11:5] == HPMCOUNTER[0][11:5]) begin
- CSRCReadValM = HPMCOUNTER_REGW[CSRAdrM[4:0]];
- IllegalCSRCAccessM = 0;
- end
- // //case (CSRAdrM)
- // MHPMCOUNTER[j]: CSRCReadValM = HPMCOUNTER_REGW[j];
- // HPMCOUNTER[j]: CSRCReadValM = HPMCOUNTER_REGW[j];
- // default: begin
- // CSRCReadValM = 0;
- // IllegalCSRCAccessM = 1;
- // end
- // endcase
- // end
- else begin
- IllegalCSRCAccessM = 1; // no privileges for this csr
- CSRCReadValM = 0;
- end
- end
- else begin
- IllegalCSRCAccessM = 1; // no privileges for this csr
- CSRCReadValM = 0;
- end
- end
- else begin // 32-bit counter reads
- always_comb
- if (PrivilegeModeW == `M_MODE ||
- MCOUNTEREN_REGW[CounterNumM] && (PrivilegeModeW == `S_MODE || SCOUNTEREN_REGW[CounterNumM])) begin
-
- if (CSRAdrM[11:5] == MHPMCOUNTER[0][11:5] || CSRAdrM[11:5] == HPMCOUNTER[0][11:5] ||
- CSRAdrM[11:5] == MHPMCOUNTERH[0][11:5] || CSRAdrM[11:5] == HPMCOUNTERH[0][11:5]) begin
- CSRCReadValM = HPMCOUNTER_REGW[CSRAdrM[4:0]];
- IllegalCSRCAccessM = 0;
- end
-
- else begin
- IllegalCSRCAccessM = 1; // no privileges for this csr
- CSRCReadValM = 0;
- end
-
- // IllegalCSRCAccessM = 0;
- // case (CSRAdrM)
- // MHPMCOUNTER[j]: CSRCReadValM = HPMCOUNTER_REGW[j][31:0];
- // HPMCOUNTER[j]: CSRCReadValM = HPMCOUNTER_REGW[j][31:0];
- // MHPMCOUNTERH[j]: CSRCReadValM = HPMCOUNTER_REGW[j][63:32];
- // HPMCOUNTERH[j]: CSRCReadValM = HPMCOUNTER_REGW[j][63:32];
- // default: begin
- // CSRCReadValM = 0;
- // IllegalCSRCAccessM = 1;
- // end
- // endcase
- end
- else begin
- IllegalCSRCAccessM = 1; // no privileges for this csr
- CSRCReadValM = 0;
- end
- end // 32-bit counter end
- end // end for big if
- else begin
- assign CSRCReadValM = 0;
- assign IllegalCSRCAccessM = 1;
- end // end for else
- endgenerate
-endmodule
-*/
diff --git a/wally-pipelined/src/privileged/csrm.sv b/wally-pipelined/src/privileged/csrm.sv
index a3baaaec4..ccfd76345 100644
--- a/wally-pipelined/src/privileged/csrm.sv
+++ b/wally-pipelined/src/privileged/csrm.sv
@@ -115,19 +115,17 @@ module csrm #(parameter
assign IllegalCSRMWriteReadonlyM = CSRMWriteM && (CSRAdrM == MVENDORID || CSRAdrM == MARCHID || CSRAdrM == MIMPID || CSRAdrM == MHARTID);
// CSRs
- flopenl #(`XLEN) MTVECreg(clk, reset, WriteMTVECM, {CSRWriteValM[`XLEN-1:2], 1'b0, CSRWriteValM[0]}, `XLEN'b0, MTVEC_REGW); //busybear: changed reset value to 0
+ flopenr #(`XLEN) MTVECreg(clk, reset, WriteMTVECM, {CSRWriteValM[`XLEN-1:2], 1'b0, CSRWriteValM[0]}, MTVEC_REGW); //busybear: changed reset value to 0
generate
if (`S_SUPPORTED | (`U_SUPPORTED & `N_SUPPORTED)) begin // DELEG registers should exist
- flopenl #(`XLEN) MEDELEGreg(clk, reset, WriteMEDELEGM, CSRWriteValM & MEDELEG_MASK /*12'h7FF*/, `XLEN'b0, MEDELEG_REGW);
- flopenl #(`XLEN) MIDELEGreg(clk, reset, WriteMIDELEGM, CSRWriteValM & MIDELEG_MASK /*12'h222*/, `XLEN'b0, MIDELEG_REGW);
+ flopenr #(`XLEN) MEDELEGreg(clk, reset, WriteMEDELEGM, CSRWriteValM & MEDELEG_MASK /*12'h7FF*/, MEDELEG_REGW);
+ flopenr #(`XLEN) MIDELEGreg(clk, reset, WriteMIDELEGM, CSRWriteValM & MIDELEG_MASK /*12'h222*/, MIDELEG_REGW);
end else begin
assign MEDELEG_REGW = 0;
assign MIDELEG_REGW = 0;
end
endgenerate
-// flopenl #(`XLEN) MIPreg(clk, reset, WriteMIPM, CSRWriteValM, zero, MIP_REGW);
-// flopenl #(`XLEN) MIEreg(clk, reset, WriteMIEM, CSRWriteValM, zero, MIE_REGW);
flopenr #(`XLEN) MSCRATCHreg(clk, reset, WriteMSCRATCHM, CSRWriteValM, MSCRATCH_REGW);
flopenr #(`XLEN) MEPCreg(clk, reset, WriteMEPCM, NextEPCM, MEPC_REGW);
flopenr #(`XLEN) MCAUSEreg(clk, reset, WriteMCAUSEM, NextCauseM, MCAUSE_REGW);
@@ -135,13 +133,13 @@ module csrm #(parameter
else flopenr #(`XLEN) MTVALreg(clk, reset, WriteMTVALM, NextMtvalM, MTVAL_REGW);
generate
if (`BUSYBEAR == 1)
- flopenl #(32) MCOUNTERENreg(clk, reset, WriteMCOUNTERENM, {CSRWriteValM[31:2],1'b0,CSRWriteValM[0]}, 32'b0, MCOUNTEREN_REGW);
+ flopenr #(32) MCOUNTERENreg(clk, reset, WriteMCOUNTERENM, {CSRWriteValM[31:2],1'b0,CSRWriteValM[0]}, MCOUNTEREN_REGW);
else if (`BUILDROOT == 1)
- flopenl #(32) MCOUNTERENreg(clk, reset, WriteMCOUNTERENM, CSRWriteValM[31:0], 32'h0, MCOUNTEREN_REGW);
+ flopenr #(32) MCOUNTERENreg(clk, reset, WriteMCOUNTERENM, CSRWriteValM[31:0], MCOUNTEREN_REGW);
else
- flopenl #(32) MCOUNTERENreg(clk, reset, WriteMCOUNTERENM, CSRWriteValM[31:0], 32'hFFFFFFFF, MCOUNTEREN_REGW);
+ flopens #(32) MCOUNTERENreg(clk, reset, WriteMCOUNTERENM, CSRWriteValM[31:0], MCOUNTEREN_REGW);
endgenerate
- flopenl #(32) MCOUNTINHIBITreg(clk, reset, WriteMCOUNTINHIBITM, CSRWriteValM[31:0], 32'h0, MCOUNTINHIBIT_REGW);
+ flopenr #(32) MCOUNTINHIBITreg(clk, reset, WriteMCOUNTINHIBITM, CSRWriteValM[31:0], MCOUNTINHIBIT_REGW);
// There are PMP_ENTRIES = 0, 16, or 64 PMPADDR registers, each of which has its own flop
diff --git a/wally-pipelined/src/privileged/csrs.sv b/wally-pipelined/src/privileged/csrs.sv
index f3c9a4f94..b28101837 100644
--- a/wally-pipelined/src/privileged/csrs.sv
+++ b/wally-pipelined/src/privileged/csrs.sv
@@ -85,10 +85,10 @@ module csrs #(parameter
assign WriteSCOUNTERENM = CSRSWriteM && (CSRAdrM == SCOUNTEREN) && ~StallW;
// CSRs
- flopenl #(`XLEN) STVECreg(clk, reset, WriteSTVECM, {CSRWriteValM[`XLEN-1:2], 1'b0, CSRWriteValM[0]}, `XLEN'b0, STVEC_REGW); //busybear: change reset to 0
+ flopenr #(`XLEN) STVECreg(clk, reset, WriteSTVECM, {CSRWriteValM[`XLEN-1:2], 1'b0, CSRWriteValM[0]}, STVEC_REGW); //busybear: change reset to 0
flopenr #(`XLEN) SSCRATCHreg(clk, reset, WriteSSCRATCHM, CSRWriteValM, SSCRATCH_REGW);
flopenr #(`XLEN) SEPCreg(clk, reset, WriteSEPCM, NextEPCM, SEPC_REGW);
- flopenl #(`XLEN) SCAUSEreg(clk, reset, WriteSCAUSEM, NextCauseM, `XLEN'b0, SCAUSE_REGW);
+ flopenr #(`XLEN) SCAUSEreg(clk, reset, WriteSCAUSEM, NextCauseM, SCAUSE_REGW);
if(`QEMU) assign STVAL_REGW = `XLEN'b0;
else flopenr #(`XLEN) STVALreg(clk, reset, WriteSTVALM, NextMtvalM, STVAL_REGW);
if (`MEM_VIRTMEM)
@@ -96,17 +96,17 @@ module csrs #(parameter
else
assign SATP_REGW = 0; // hardwire to zero if virtual memory not supported
if (`BUSYBEAR == 1)
- flopenl #(32) SCOUNTERENreg(clk, reset, WriteSCOUNTERENM, {CSRWriteValM[31:2],1'b0,CSRWriteValM[0]}, 32'b0, SCOUNTEREN_REGW);
+ flopenr #(32) SCOUNTERENreg(clk, reset, WriteSCOUNTERENM, {CSRWriteValM[31:2],1'b0,CSRWriteValM[0]}, SCOUNTEREN_REGW);
else if (`BUILDROOT == 1)
- flopenl #(32) SCOUNTERENreg(clk, reset, WriteSCOUNTERENM, CSRWriteValM[31:0], 32'h0, SCOUNTEREN_REGW);
+ flopenr #(32) SCOUNTERENreg(clk, reset, WriteSCOUNTERENM, CSRWriteValM[31:0], SCOUNTEREN_REGW);
else
- flopenl #(32) SCOUNTERENreg(clk, reset, WriteSCOUNTERENM, CSRWriteValM[31:0], 32'hFFFFFFFF, SCOUNTEREN_REGW);
+ flopens #(32) SCOUNTERENreg(clk, reset, WriteSCOUNTERENM, CSRWriteValM[31:0], SCOUNTEREN_REGW);
if (`N_SUPPORTED) begin
logic WriteSEDELEGM, WriteSIDELEGM;
assign WriteSEDELEGM = CSRSWriteM && (CSRAdrM == SEDELEG);
assign WriteSIDELEGM = CSRSWriteM && (CSRAdrM == SIDELEG);
- flopenl #(`XLEN) SEDELEGreg(clk, reset, WriteSEDELEGM, CSRWriteValM & SEDELEG_MASK /* 12'h1FF */, `XLEN'b0, SEDELEG_REGW);
- flopenl #(`XLEN) SIDELEGreg(clk, reset, WriteSIDELEGM, CSRWriteValM, `XLEN'b0, SIDELEG_REGW);
+ flopenr #(`XLEN) SEDELEGreg(clk, reset, WriteSEDELEGM, CSRWriteValM & SEDELEG_MASK, SEDELEG_REGW);
+ flopenr #(`XLEN) SIDELEGreg(clk, reset, WriteSIDELEGM, CSRWriteValM, SIDELEG_REGW);
end else begin
assign SEDELEG_REGW = 0;
assign SIDELEG_REGW = 0;
diff --git a/wally-pipelined/src/privileged/csru.sv b/wally-pipelined/src/privileged/csru.sv
index 22ed4dcb3..0ad2053f8 100644
--- a/wally-pipelined/src/privileged/csru.sv
+++ b/wally-pipelined/src/privileged/csru.sv
@@ -47,7 +47,6 @@ module csru #(parameter
generate
if (`F_SUPPORTED | `D_SUPPORTED) begin
logic [4:0] FFLAGS_REGW;
- logic WriteFFLAGSM, WriteFRMM; //, WriteFCSRM;
logic [2:0] NextFRMM;
logic [4:0] NextFFLAGSM;
diff --git a/wally-pipelined/src/privileged/privileged.sv b/wally-pipelined/src/privileged/privileged.sv
index 326ebcaaa..a6c3f2d8f 100644
--- a/wally-pipelined/src/privileged/privileged.sv
+++ b/wally-pipelined/src/privileged/privileged.sv
@@ -32,8 +32,8 @@ module privileged (
input logic FlushD, FlushE, FlushM, FlushW, StallD, StallE, StallM, StallW,
input logic CSRReadM, CSRWriteM,
input logic [`XLEN-1:0] SrcAM,
- input logic [`XLEN-1:0] PCF,PCD,PCE,PCM,
- input logic [31:0] InstrD, InstrE, InstrM, InstrW,
+ input logic [`XLEN-1:0] PCM,
+ input logic [31:0] InstrM,
output logic [`XLEN-1:0] CSRReadValW,
output logic [`XLEN-1:0] PrivilegedNextPCM,
output logic RetM, TrapM,
diff --git a/wally-pipelined/src/privileged/trap.sv b/wally-pipelined/src/privileged/trap.sv
index 5814f9152..39be90659 100644
--- a/wally-pipelined/src/privileged/trap.sv
+++ b/wally-pipelined/src/privileged/trap.sv
@@ -4,7 +4,7 @@
// Written: David_Harris@hmc.edu 9 January 2021
// Modified: dottolia@hmc.edu 14 April 2021: Add support for vectored interrupts
//
-// Purpose: Handle Traps: Exceptions and Interrupt
+// Purpose: Handle Traps: Exceptions and Interrupts
// See RISC-V Privileged Mode Specification 20190608 3.1.10-11
//
// A component of the Wally configurable RISC-V project.
@@ -27,7 +27,7 @@
`include "wally-config.vh"
module trap (
- input logic clk, reset,
+ input logic reset,
input logic InstrMisalignedFaultM, InstrAccessFaultM, IllegalInstrFaultM,
input logic BreakpointFaultM, LoadMisalignedFaultM, StoreMisalignedFaultM,
input logic LoadAccessFaultM, StoreAccessFaultM, EcallFaultM, InstrPageFaultM,
@@ -40,7 +40,6 @@ module trap (
input logic [`XLEN-1:0] PCM,
input logic [`XLEN-1:0] InstrMisalignedAdrM, MemAdrM,
input logic [31:0] InstrM,
- input logic StallW,
input logic InstrValidM, CommittedM,
output logic TrapM, MTrapM, STrapM, UTrapM, RetM,
output logic InterruptM,
diff --git a/wally-pipelined/src/uncore/clint.sv b/wally-pipelined/src/uncore/clint.sv
index 817096d30..362d11ae4 100644
--- a/wally-pipelined/src/uncore/clint.sv
+++ b/wally-pipelined/src/uncore/clint.sv
@@ -42,11 +42,10 @@ module clint (
logic MSIP;
logic [15:0] entry, entryd;
- logic memread, memwrite;
+ logic memwrite;
logic initTrans;
assign initTrans = HREADY & HSELCLINT & (HTRANS != 2'b00);
- assign memread = initTrans & ~HWRITE;
// entryd and memwrite are delayed by a cycle because AHB controller waits a cycle before outputting write data
flopr #(1) memwriteflop(HCLK, ~HRESETn, initTrans & HWRITE, memwrite);
flopr #(16) entrydflop(HCLK, ~HRESETn, entry, entryd);
diff --git a/wally-pipelined/src/uncore/dtim.sv b/wally-pipelined/src/uncore/dtim.sv
index c195c5516..3a0b16be6 100644
--- a/wally-pipelined/src/uncore/dtim.sv
+++ b/wally-pipelined/src/uncore/dtim.sv
@@ -44,18 +44,15 @@ module dtim #(parameter BASE=0, RANGE = 65535) (
logic [31:0] HWADDR, A;
logic [`XLEN-1:0] HREADTim0;
-// logic [`XLEN-1:0] write;
logic prevHREADYTim, risingHREADYTim;
logic initTrans;
- logic [15:0] entry;
- logic memread, memwrite;
+ logic memwrite;
logic [3:0] busycount;
assign initTrans = HREADY & HSELTim & (HTRANS != 2'b00);
// *** this seems like a weird way to use reset
- flopenr #(1) memreadreg(HCLK, 1'b0, initTrans | ~HRESETn, HSELTim & ~HWRITE, memread);
flopenr #(1) memwritereg(HCLK, 1'b0, initTrans | ~HRESETn, HSELTim & HWRITE, memwrite);
flopenr #(32) haddrreg(HCLK, 1'b0, initTrans | ~HRESETn, HADDR, A);
diff --git a/wally-pipelined/src/uncore/gpio.sv b/wally-pipelined/src/uncore/gpio.sv
index 0100c9c56..21810de9d 100644
--- a/wally-pipelined/src/uncore/gpio.sv
+++ b/wally-pipelined/src/uncore/gpio.sv
@@ -45,14 +45,13 @@ module gpio (
logic [31:0] input_val, input_en, output_en, output_val;
logic [31:0] rise_ie, rise_ip, fall_ie, fall_ip, high_ie, high_ip, low_ie, low_ip;
- logic initTrans, memread, memwrite;
- logic [7:0] entry, entryd, HADDRd;
+ logic initTrans, memwrite;
+ logic [7:0] entry, entryd;
logic [31:0] Din, Dout;
// AHB I/O
assign entry = {HADDR[7:2],2'b0};
assign initTrans = HREADY & HSELGPIO & (HTRANS != 2'b00);
- assign memread = initTrans & ~HWRITE;
// entryd and memwrite are delayed by a cycle because AHB controller waits a cycle before outputting write data
flopr #(1) memwriteflop(HCLK, ~HRESETn, initTrans & HWRITE, memwrite);
flopr #(8) entrydflop(HCLK, ~HRESETn, entry, entryd);
diff --git a/wally-pipelined/src/uncore/uncore.sv b/wally-pipelined/src/uncore/uncore.sv
index 78a89b02d..943572f14 100644
--- a/wally-pipelined/src/uncore/uncore.sv
+++ b/wally-pipelined/src/uncore/uncore.sv
@@ -47,9 +47,6 @@ module uncore (
input logic [2:0] HADDRD,
input logic [3:0] HSIZED,
input logic HWRITED,
- // bus interface
- // PMA checker now handles access faults. *** This can be deleted
- // output logic DataAccessFaultM,
// peripheral pins
output logic TimerIntM, SwIntM, ExtIntM,
input logic [31:0] GPIOPinsIn,
@@ -63,14 +60,13 @@ module uncore (
logic [`XLEN-1:0] HREADTim, HREADCLINT, HREADPLIC, HREADGPIO, HREADUART;
logic [6:0] HSELRegions;
- logic HSELTim, HSELCLINT, HSELPLIC, HSELGPIO, PreHSELUART, HSELUART;
+ logic HSELTim, HSELCLINT, HSELPLIC, HSELGPIO, HSELUART;
logic HSELTimD, HSELCLINTD, HSELPLICD, HSELGPIOD, HSELUARTD;
logic HRESPTim, HRESPCLINT, HRESPPLIC, HRESPGPIO, HRESPUART;
logic HREADYTim, HREADYCLINT, HREADYPLIC, HREADYGPIO, HREADYUART;
logic [`XLEN-1:0] HREADBootTim;
logic HSELBootTim, HSELBootTimD, HRESPBootTim, HREADYBootTim;
logic HSELNoneD;
- logic [1:0] MemRWboottim;
logic UARTIntr,GPIOIntr;
// Determine which region of physical memory (if any) is being accessed
diff --git a/wally-pipelined/src/wally/wallypipelinedhart.sv b/wally-pipelined/src/wally/wallypipelinedhart.sv
index 8a298594f..980166d95 100644
--- a/wally-pipelined/src/wally/wallypipelinedhart.sv
+++ b/wally-pipelined/src/wally/wallypipelinedhart.sv
@@ -26,17 +26,12 @@
`include "wally-config.vh"
/* verilator lint_on UNUSED */
-module wallypipelinedhart
- (
+module wallypipelinedhart (
input logic clk, reset,
- output logic [`XLEN-1:0] PCF,
- // input logic [31:0] InstrF,
// Privileged
input logic TimerIntM, ExtIntM, SwIntM,
- input logic DataAccessFaultM,
input logic [63:0] MTIME_CLINT, MTIMECMP_CLINT,
// Bus Interface
- input logic [15:0] rd2, // bogus, delete when real multicycle fetch works
input logic [`AHBW-1:0] HRDATA,
input logic HREADY, HRESP,
output logic HCLK, HRESETn,
@@ -48,7 +43,6 @@ module wallypipelinedhart
output logic [3:0] HPROT,
output logic [1:0] HTRANS,
output logic HMASTLOCK,
- output logic [5:0] HSELRegions,
// Delayed signals for subword write
output logic [2:0] HADDRD,
output logic [3:0] HSIZED,
@@ -69,16 +63,14 @@ module wallypipelinedhart
logic [`XLEN-1:0] SrcAM;
logic [2:0] Funct3E;
// logic [31:0] InstrF;
- logic [31:0] InstrD, InstrE, InstrM, InstrW;
- logic [`XLEN-1:0] PCD, PCE, PCM, PCLinkE, PCLinkW;
+ logic [31:0] InstrD, InstrM;
+ logic [`XLEN-1:0] PCF, PCE, PCM, PCLinkE;
logic [`XLEN-1:0] PCTargetE;
logic [`XLEN-1:0] CSRReadValW, MulDivResultW;
logic [`XLEN-1:0] PrivilegedNextPCM;
- logic [1:0] MemRWE;
logic [1:0] MemRWM;
logic InstrValidM;
logic InstrMisalignedFaultM;
- logic DataMisalignedM;
logic IllegalBaseInstrFaultD, IllegalIEUInstrFaultD;
logic ITLBInstrPageFaultF, DTLBLoadPageFaultM, DTLBStorePageFaultM;
logic WalkerInstrPageFaultF, WalkerLoadPageFaultM, WalkerStorePageFaultM;
@@ -89,13 +81,11 @@ module wallypipelinedhart
logic PCSrcE;
logic CSRWritePendingDEM;
logic DivBusyE;
- logic RegWriteD;
logic LoadStallD, StoreStallD, MulDivStallD, CSRRdStallD;
- logic SquashSCM, SquashSCW;
+ logic SquashSCW;
// floating point unit signals
logic [2:0] FRM_REGW;
- logic [1:0] FMemRWM, FMemRWE;
- logic [4:0] RdE, RdM, RdW;
+ logic [4:0] RdM, RdW;
logic FStallD;
logic FWriteIntE, FWriteIntM, FWriteIntW;
logic [`XLEN-1:0] FWriteDataE;
@@ -105,13 +95,11 @@ module wallypipelinedhart
logic FRegWriteM;
logic FPUStallD;
logic [4:0] SetFflagsM;
- logic [`XLEN-1:0] FPUResultW;
// memory management unit signals
- logic ITLBWriteF, DTLBWriteM;
+ logic ITLBWriteF;
logic ITLBFlushF, DTLBFlushM;
- logic ITLBMissF, ITLBHitF;
- logic DTLBMissM, DTLBHitM;
+ logic ITLBMissF;
logic [`XLEN-1:0] SATP_REGW;
logic STATUS_MXR, STATUS_SUM, STATUS_MPRV;
logic [1:0] STATUS_MPP;
@@ -120,7 +108,6 @@ module wallypipelinedhart
logic [1:0] PageType;
// PMA checker signals
- logic DSquashBusAccessM, ISquashBusAccessF;
var logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [`PMP_ENTRIES-1:0];
var logic [7:0] PMPCFG_ARRAY_REGW[`PMP_ENTRIES-1:0];
@@ -190,7 +177,7 @@ module wallypipelinedhart
.DCacheMiss,
.DCacheAccess,
.SquashSCW(SquashSCW),
- .DataMisalignedM(DataMisalignedM),
+ //.DataMisalignedM(DataMisalignedM),
.MemAdrE(MemAdrE),
.MemAdrM(MemAdrM),
.WriteDataM(WriteDataM),
@@ -233,9 +220,6 @@ module wallypipelinedhart
.WalkerInstrPageFaultF(WalkerInstrPageFaultF),
.WalkerLoadPageFaultM(WalkerLoadPageFaultM),
.WalkerStorePageFaultM(WalkerStorePageFaultM),
-
- .DTLBHitM(DTLBHitM), // not connected remove
-
.LSUStall(LSUStall)); // change to LSUStall
@@ -256,9 +240,6 @@ module wallypipelinedhart
// remove these
.MemSizeM(DCtoAHBSizeM[1:0]), // *** depends on XLEN should be removed
.UnsignedLoadM(1'b0),
- .Funct7M(7'b0),
-// .HRDATAW(),
- .StallW(1'b0),
.AtomicMaskedM(2'b00),
.*);
@@ -272,9 +253,5 @@ module wallypipelinedhart
fpu fpu(.*); // floating point unit
- // add FPU here, with SetFflagsM, FRM_REGW
- // presently stub out SetFlagsM and FRegWriteM
- //assign SetFflagsM = 0;
- //assign FRegWriteM = 0;
endmodule
diff --git a/wally-pipelined/src/wally/wallypipelinedsoc.sv b/wally-pipelined/src/wally/wallypipelinedsoc.sv
index c85f5d4f4..945889584 100644
--- a/wally-pipelined/src/wally/wallypipelinedsoc.sv
+++ b/wally-pipelined/src/wally/wallypipelinedsoc.sv
@@ -54,27 +54,28 @@ module wallypipelinedsoc (
output logic UARTSout
);
- // to instruction memory *** remove later
- logic [`XLEN-1:0] PCF;
-
// Uncore signals
logic [`AHBW-1:0] HRDATA; // from AHB mux in uncore
logic HREADY, HRESP;
- logic [5:0] HSELRegions;
- logic InstrAccessFaultF, DataAccessFaultM;
logic TimerIntM, SwIntM; // from CLINT
logic [63:0] MTIME_CLINT, MTIMECMP_CLINT; // from CLINT to CSRs
logic ExtIntM; // from PLIC
logic [2:0] HADDRD;
logic [3:0] HSIZED;
logic HWRITED;
- logic [15:0] rd2; // bogus, delete when real multicycle fetch works
- logic [31:0] InstrF;
// instantiate processor and memories
- wallypipelinedhart hart(.*);
+ wallypipelinedhart hart(.clk, .reset,
+ .TimerIntM, .ExtIntM, .SwIntM,
+ .MTIME_CLINT, .MTIMECMP_CLINT,
+ .HRDATA, .HREADY, .HRESP, .HCLK, .HRESETn, .HADDR, .HWDATA,
+ .HWRITE, .HSIZE, .HBURST, .HPROT, .HTRANS, .HMASTLOCK,
+ .HADDRD, .HSIZED, .HWRITED
+ );
- // instructions now come from uncore memory. This line can be removed at any time.
- // imem imem(.AdrF(PCF[`XLEN-1:1]), .*); // temporary until uncore memory is finished***
- uncore uncore(.HWDATAIN(HWDATA), .*);
+ uncore uncore(.HCLK, .HRESETn,
+ .HADDR, .HWDATAIN(HWDATA), .HWRITE, .HSIZE, .HBURST, .HPROT, .HTRANS, .HMASTLOCK, .HRDATAEXT,
+ .HREADYEXT, .HRESPEXT, .HRDATA, .HREADY, .HRESP, .HADDRD, .HSIZED, .HWRITED,
+ .TimerIntM, .SwIntM, .ExtIntM, .GPIOPinsIn, .GPIOPinsOut, .GPIOPinsEn, .UARTSin, .UARTSout, .MTIME_CLINT, .MTIMECMP_CLINT
+);
endmodule
\ No newline at end of file
diff --git a/wally-pipelined/srt/Makefile b/wally-pipelined/srt/Makefile
new file mode 100644
index 000000000..73a0b75fa
--- /dev/null
+++ b/wally-pipelined/srt/Makefile
@@ -0,0 +1,7 @@
+all: sqrttestgen testgen
+
+sqrttestgen: sqrttestgen.c
+ gcc sqrttestgen.c -lm -o sqrttestgen
+
+testgen: testgen.c
+ gcc testgen.c -lm -o testgen
diff --git a/wally-pipelined/srt/sim-srt b/wally-pipelined/srt/sim-srt
new file mode 100755
index 000000000..d0d5236a8
--- /dev/null
+++ b/wally-pipelined/srt/sim-srt
@@ -0,0 +1,2 @@
+vsim -do "do srt.do"
+
diff --git a/wally-pipelined/srt/sqrttestgen.c b/wally-pipelined/srt/sqrttestgen.c
new file mode 100644
index 000000000..7b8cacd3f
--- /dev/null
+++ b/wally-pipelined/srt/sqrttestgen.c
@@ -0,0 +1,89 @@
+/* sqrttestgen.c */
+
+/* Written 19 October 2021 David_Harris@hmc.edu
+
+ This program creates test vectors for mantissa component
+ of an IEEE floating point square root.
+ */
+
+/* #includes */
+
+#include
+#include
+#include
+
+/* Constants */
+
+#define ENTRIES 17
+#define RANDOM_VECS 500
+
+/* Prototypes */
+
+void output(FILE *fptr, double a, double r);
+void printhex(FILE *fptr, double x);
+double random_input(void);
+
+/* Main */
+
+void main(void)
+{
+ FILE *fptr;
+ double a, b, r;
+ double list[ENTRIES] = {1, 1.5, 1.25, 1.125, 1.0625,
+ 1.75, 1.875, 1.99999,
+ 1.1, 1.2, 1.01, 1.001, 1.0001,
+ 1/1.1, 1/1.5, 1/1.25, 1/1.125};
+ int i, j;
+
+ if ((fptr = fopen("sqrttestvectors","w")) == NULL) {
+ fprintf(stderr, "Couldn't write sqrttestvectors file\n");
+ exit(1);
+ }
+
+ for (i=0; i2) m /= 2;
+ for (i=0; i<52; i+=4) {
+ m = m - floor(m);
+ m = m * 16;
+ val = (int)(m)%16;
+ fprintf(fptr, "%x", val);
+ }
+}
+
+double random_input(void)
+{
+ return 1.0 + rand()/32767.0;
+}
+
diff --git a/wally-pipelined/srt/sqrttestvectors b/wally-pipelined/srt/sqrttestvectors
new file mode 100644
index 000000000..392053b93
--- /dev/null
+++ b/wally-pipelined/srt/sqrttestvectors
@@ -0,0 +1,517 @@
+0000000000000_0000000000000
+8000000000000_3988e1409212e
+4000000000000_1e3779b97f4a8
+2000000000000_0f876ccdf6cd9
+1000000000000_07e0f66afed07
+c000000000000_52a7fa9d2f8ea
+e000000000000_5e8add236a58f
+ffff583a53b8e_6a09ab16ee3d0
+199999999999a_0c7ebc96a56f6
+3333333333333_186f174f88472
+028f5c28f5c29_0146dd68287f3
+004189374bc6a_0020c2830b9c7
+00068db8bac71_000346d6ff116
+d1745d1745d17_e82c3f9d89e1c
+5555555555555_a20bd700c2c3e
+999999999999a_c9f25c5bfedd9
+c71c71c71c71c_e2b7dddfefa66
+ae3271fce3f9c_d551d18e54277
+93e045e88bd11_418bf3cc1e4c3
+90f7838f071e1_c5184e372ee71
+98d2536ca6d95_c982e901a1e14
+d2c916d22da46_e8decc85822fb
+94a0f921f243e_c728c4dbee1d3
+574b50dea1bd4_2873820e10e0c
+895a7660ecc1e_c0c5ced51afa7
+1c77322e645cd_0ddb946295434
+1ba62a7c54f8b_7d169e3a2659b
+e8e2978d2f1a6_61c59e7574d95
+41ffe2a7c54f9_9608c143bfd66
+7590faa9f553f_353eee44a1afa
+06e089a913522_6ede89bf49029
+e79076a8ed51e_f3a1feab3b7d6
+d51d2f4e5e9cc_ea168f50673ac
+45808ced19da3_983c902a22c03
+6f466990d321a_b1a42fd6b592a
+220ac945928b2_815be8939b369
+36c90d6e1adc3_8ee6afea03f82
+0b53a3a7474e9_059a20c9f6405
+f17a816502ca0_f8afe204e2600
+1917108e211c4_7b5d8ccee92ea
+9bc245b48b691_cb26e86f5735a
+40eb7926f24de_955a5577ffe7a
+9a985ff8bff18_4435dbe84773a
+09d9a6834d06a_70f0257a8ab67
+bdc1c7c38f872_51ceac06eed23
+ff7907ba0f742_ffbc7f69e3efc
+bf08f7f1efe3e_de6a83a26fd1d
+06a3206640cc8_6eb3ad01c9815
+ada579aef35de_d504e625a2d6d
+39b060f4c1e98_90c29e1123eb5
+2f2947da8fb52_16959cbd1d48c
+4671cd139a273_98d3bd2eff117
+0c7377beef7de_72bd0582548eb
+f975c46b88d71_67b81123f8dce
+f2157586eb0dd_f8fe755da5331
+2b8fdc2fb85f7_14ecfca93ae4c
+8af47b4cf699f_c1af76b04ddd5
+0db59ffb3ff68_739b3726df36e
+8a3739de73bce_c143ac24df9ed
+99dcbbd977b2f_43ebbe8469bbd
+c87c1d503aa07_e3723a3635fdf
+222386ff0dfe2_10890df0885f0
+68f1a9235246a_2ff9f6505d566
+9d934c9a99353_cc29e5f0e6998
+d690506ca0d94_ead84585b61ec
+1dc9f0d3e1a7c_0e7c1165efbfe
+e613feebfdd80_f2dee7435c007
+0d535dd6bbad7_73578043fac8f
+608ed9bdb37b6_2c6ca8cc4e6bb
+89b27d04fa09f_c0f802ca71172
+539721fa43f48_a0fa3fcb09adb
+c7d220f041e08_e3182e88ae49f
+654afb15f62bf_2e6f61bf98e0e
+06ea8f751eea4_036f615bb315f
+48515122a2454_21e9a04cd1f6b
+d4b76d06da0db_5a65d547598d0
+0282cd059a0b3_01409dbd6fa12
+e80b2216442c9_f3e0d516d00bd
+f0fcd6e9add36_f8701fac9a977
+cdf3d353a6a75_e6553654da734
+b3b1297a52f4a_d84eb4d0cdd1c
+1116f5a5eb4bd_086824801e0f1
+145fa05f40be8_782b4f7607e38
+803d426284c51_39a1e28fda198
+85445d08ba117_be6f8226d6c13
+066f15de2bbc5_6e8f568cc6f8d
+55e48f491e924_a26383073cc76
+1032d851b0a36_7551305922e9c
+41eb5d56baad7_95fbd0e6c36fd
+c02b923f247e5_52b8721f6429d
+dd1f363e6c7ce_ee40ded8c9bdb
+dc98d325a64b5_edfb3ec1fe213
+71258ca319463_b2beaf8de715d
+232415902b205_11017231bc63a
+7a261fb83f708_b803901d08750
+47afdd07ba0f7_999ab6f13db2a
+6a9291cd239a4_30a9519b120a8
+60341ea03d408_a8a695fe1273c
+53f4eb59d6b3b_a133d02e5f0b1
+c2b2483c90792_53ac7d5cd5d67
+c29ebde17bc2f_e054a2134123f
+a8925cd0b9a17_d23db60b50520
+524a8a0d141a3_264878d4d966a
+d4f8ed91db23b_ea039e961a422
+c96daec35d86c_e3f2144d791a1
+66cb9f1f3e3e8_2f1200c8b758c
+5f97f1e7e3cfc_a848653bfa858
+e9bc086410c82_f4be56d9e1746
+2d66981930326_88d50f4e55eaf
+508ec8c991932_9f1c8c264d1f5
+b7a9dbafb75f7_da74869225afe
+c2238317062e1_5376ac34cb03c
+d918439c87391_ec29c1ab0b399
+9806f815f02be_4331e7926a75f
+a12e62c0c5819_ce2a519890e29
+5e56a0a141428_a786593154104
+d27091e923d24_e8b06fcba35cc
+ee19e403c8079_63a777df9bd21
+ba0de3abc7579_dbbe4f307b7a9
+e68d47be8f7d2_f31d205d919e7
+d720bb25764af_eb2391d186941
+2e72bc85790af_8983a68b1933f
+c3201ae035c07_e0998f5edcc08
+484047c08f812_99f4ef763a198
+ba5973dae7b5d_5083801deb09a
+3d403a907520f_930773446aea4
+1fd4498093012_0f72d0c56b2e7
+927402d405a81_c5ef16b504e39
+3adcb25164a2d_1be8dfa703db9
+c9cabf357e6b0_565651a123f9d
+cf1c9ba937527_e6f156560fab1
+801c5c08b8117_bb780dcd4a3ce
+1ae378c6f18de_0d1bd1404d89c
+1cea6bf4d7e9b_7df032936ca73
+aa86a4cd499a9_4a70a8d0586dd
+5b65ac7b58f6b_a5be43f803917
+d04e3b847708f_e791e8d64ca05
+a6aa223444689_48f0e09b7504f
+023dcdfb9bf73_6b9ec1c492343
+fb5da72b4e56a_68658275b9f12
+85620d141a283_be8087eda1701
+f8374f2e9e5d4_fc17d6b6aa491
+debe95252a4a5_ef17d49382367
+5e7450a8a1514_a7984aa86726d
+886996632cc66_3cf350a8e3f14
+7fe6f7ddefbbe_bb593a8c74da0
+7989e283c5079_36e2b9b0780e8
+2d3eba2d745af_15b3dccad59d9
+dbb7a75f4ebea_ed867fc2e2d84
+2b466a2cd459b_8771cd81d47f3
+f49a9335266a5_fa45142e25067
+382293d527aa5_8fc4312e812d9
+76e1195232a46_b61b865625966
+0102fe95fd2c0_6ac0db2f8bcba
+9646ecb5d96bb_c815d9b329126
+501f4cde99bd3_9ed7c5d5bc785
+7d7efa39f473f_b9f4fb5c3d080
+31588b9117223_17961d26f5102
+e679d60bac176_f3132728a8d37
+ae7535aa6b54d_d5763b26476cf
+0b0e710ce219c_71c62b418032b
+68ebf3b7e76fd_addfd161ac4b7
+ebb1a9835306a_f5be89408b278
+987e2d705ae0b_c953d0c9914d0
+772368e2d1c5a_b64243fae3fb7
+502dbcc7798ef_9ee0ae7d41d9b
+ef55989331266_f799268f564e9
+476ba46348c69_9970116fd2787
+8501011202240_be48e041c087a
+7ef86050c0a18_391d2f0629239
+1451dfc3bf878_7821f369d1226
+0a5d0e1e1c3c4_714b482f78206
+4082d985b30b6_1e71f84b709d7
+1e686870d0e1a_0ec7049bce04d
+a32d7afaf5f5f_cf4515600a0db
+d8864ccc99993_5bcd565a71793
+a3b204ec09d81_cf8e4d0f9e74a
+258e5004a0094_83afadcd1ef88
+82e0837d06fa1_bd101d541955f
+a99eebfdd7fbb_d2d1141d12617
+433ae8a5d14ba_96cf2f2b9b8c3
+00029425284a5_00014a11bf5c4
+a2824ed49da94_cee674f907509
+c7add37ba6f75_e304f163dffc6
+00ff9faf3f5e8_6abe7a37761f6
+fee5806f00de0_ff72acb649dc2
+bafa6ab4d569b_dc3d85026c40a
+bdbce225c44b9_ddb8afc7bfccb
+28548ec91d924_136d8e62015c4
+11be577caef96_08b91fd0554ab
+d8a235806b00d_ebec55b8bf00e
+301702e605cc1_8a94b08c2982f
+7171e683cd07a_b2eba2d7a9729
+4e227f64feca0_9d9d5317da9b6
+911e609cc1398_407278920f577
+d37de283c5079_e93d701b76ce6
+a3b45ca4b9497_cf8f9841cb9d6
+6fbd91b323664_32d331f930e2e
+1ae386df0dbe2_7c93c78e97a2c
+28af5daebb5d7_85bf3c0e14efe
+cf77a9c7538ea_5873e435c4655
+5ff5fed3fda80_a88120c300c87
+98335e26bc4d8_43437c938880b
+0fca30186030c_750964d64ec9c
+83c10be217c43_bd91314e9c2f4
+379f95072a0e5_1a721a6753344
+fc0b567eacfd6_fe04afe9c2350
+276d10ca21944_84eb4f9969281
+c15c1a8835107_dfa88eb80f3a5
+7ee5d9f3b3e76_bac4aa8497839
+4204ff89ff140_960bfa7d01fdf
+224d4ada95b53_818814678ee18
+7ee50236046c1_bac42dc7ca58c
+aaa3933f267e5_d35fef27b94ef
+d9d0a8295052a_ec89a1e80c752
+bf22ea21d443b_de7865a94a4bb
+a98313a6274c5_d2c1ceb7337ca
+f57e4ed89db14_fab82ed7ff119
+7cd9cc3f987f3_b995432eff078
+ce8ba57f4afe9_e6a51a7901e9d
+f79fcb87970f3_fbcb7a062af68
+557601bc03780_a21fd8a725b25
+fd3950baa1754_690e4b24fda4d
+4fd9148229045_9eac6e56877bb
+a8fca195432a8_d2780bc6b98a9
+c729d8afb15f6_e2bef95620f17
+3b713d027a04f_1c2bd001532f4
+4caafe31fc640_9cb4a80c2fa32
+fc0a86050c0a2_fe04474537bc8
+424fae7f5cfec_963b0dac95fa2
+d5516f62dec5c_ea31d99df7240
+66bc7668ecd1e_ac921f868adac
+447f5a96b52d7_2038947b4b29b
+50b18f3b1e764_25965fa129e26
+da0299e533ca6_eca396b34a8cd
+2fd5c94b92972_16e4d4254bac7
+44269225244a5_976360c639740
+ca17f3bfe77fd_e44c1dd968501
+4d65c9f393e72_9d28763d5cfbd
+057caca5594ab_6de5e38acee76
+f169d6e3adc76_f8a76dc8df97f
+1ec992eb25d65_0ef4ef3449518
+179f815302a60_7a5fc96aa31be
+7048d911b2236_b23ca645e8430
+d012e565cacb9_58ad8ec8be73b
+e2d452f0a5e15_5f92f5ffaefd3
+2f65c32f865f1_8a21a078f2055
+e3837056e0adc_f18d8a27380ab
+cdc4f091e123c_57d232be8a40f
+58731ece3d9c8_28f31f19298aa
+b20915ce2b9c5_d768a11d16e12
+bcf887910f222_518261ad16d10
+a9911b2236447_d2c98074dcff2
+613f7c4ef89df_2cb7e160d7c89
+327088ed11da2_8c1a3372f503b
+aaa432b46568d_d360467f228ce
+df0e5b3cb6797_ef411299da1bf
+59dcb08d611ac_a4cf75540e2c1
+ee9261bcc3798_63d2d29caeecf
+ed8870a0e141c_63731aff23c30
+384cbe097c130_1ac088bb0dd3f
+6c9b8cbb19763_b01053166e905
+75eabac5758af_b58b788c3d84c
+3e640c5418a83_93c0a50ff06df
+4ee5450a8a151_9e15ce99d389c
+a7f2aa5554aab_49709f0acf22a
+645cc57d8afb1_ab2686a652109
+5912e675cceba_a454a133a1a93
+467d521aa4355_98daf3bf22c37
+63791ed23da48_2da9f6a2bb9b8
+7a264c5c98b93_b803aa160a737
+37e128f651eca_8f9a4ab9a1e87
+411f58deb1bd6_957b16ee69083
+7627146a28d45_b5aec6723866d
+5048040808101_25685807290de
+7b1fb58b6b16d_b894ad98eaf3c
+9e2cf769eed3e_cc7f5b1f41ba4
+d787c5338a671_eb59441cd889b
+5e9d25da4bb49_a7b0f75669cbe
+4e6bb6236c46e_9dcaa120e794c
+0776a925524aa_03b4778fccb7b
+10a03ba47748f_759c2bedefe31
+670fcf3f9e7f4_2f2ecbe910302
+0ac5cb6396c73_0554b03e81ada
+c13df9cbf397e_df987a0fb187c
+5f5082d505aa1_a81d4926c24ed
+8008c2f185e31_398c74e8df332
+c7dc849909321_559d54cc2b0c4
+724e66b4cd69a_33e4bbc30c9eb
+2748493c92792_84d31934513a7
+2fbdc8e391c72_8a5ac8a2e8886
+554b925f24be5_a205dcaa3c364
+27bbabdf57beb_1326782142cac
+8d367798ef31e_c2f808c87d9f1
+27533d567aacf_12f5deec64f17
+51945488a9115_25f92d6ea26b2
+84a732ee65dcd_be155990ed3be
+f8046428c8519_fbfe2e707160d
+d710b2216442d_eb1b360f3527a
+a7a51eda3db48_d1bb607f46386
+5375e713ce27a_26ca91c1f0ce8
+817a8f251e4a4_bc42086f3f1e3
+bf008f911f224_524760d1e709e
+ead84c6898d13_f54f95bc682e5
+d683b837706ee_ead1b3e4bde66
+87a249cc93992_bfca701ca531f
+65f201f003e00_ac191f863ce79
+f047b04f609ec_646fffc092bd4
+5f240ef81df04_a802734b8a7f3
+89124f849f094_3d376cd3db8df
+8c72ac315862b_c288d5b00e9a9
+e2dd638ec71d9_f1381345d33f3
+d5276366c6cd9_ea1be3b9eb936
+b952a6194c32a_db598334d83a2
+a0e924e249c49_ce03f563fdc69
+965f5d2aba557_c823913ba08d9
+189d28e651cca_7b0b409c0a17a
+3072c32d865b1_172cd6665d696
+cf58edbddb7bb_e7110ba7fe74a
+d1c25c40b8817_e85524c53f258
+bf7faad355a6b_deaa03698b005
+fe216d3ada75b_69608b485dc01
+2707ee97dd2fc_84a8b81452ea1
+4d5e02fc05f81_9d23a492cab16
+18825c5cb8b97_0bf97c45ddb75
+baaf8d471a8e3_dc15450d64a61
+f83f5606ac0d6_674989f2b429b
+dad1f5d3eba7d_5ca55963e3317
+b2adf167e2cfc_d7c21f6b1ca69
+fbe9776aeed5e_6897272bfb5cc
+2a10337866f0d_143b6e39b27f8
+718b93b7276e5_b2fabfa759d04
+5e515f82bf058_a7832c1f42b4f
+74866188c3118_b4bac8738fa28
+1cd4c5398a731_7de1af32f25fe
+34cf17b22f646_8da17681a4b5c
+f845569aad356_674bad5d4924d
+ad25333e667cd_d4bedd0aecd3c
+72d60dbc1b783_b3bd135e57267
+6d02e905d20ba_b04d8c9bc773b
+c6a16bf2d7e5b_e2769b569a79e
+fe8573cae795d_6983f76829169
+f0c0ee41dc83c_649b871bad319
+1b26f96df2dbe_7cc1236af05ca
+711ebfed7fdb0_3366654dceb41
+4ca0ce019c034_23cf3daf6a36c
+dd271b8a37147_ee44f5c421b0b
+d12a88dd11ba2_e80586b7805d9
+3e87c897912f2_93d74ce63be2d
+ac7a094012802_d461590559b4f
+a2e6e515ca2b9_cf1e126c2a7b4
+fc02e6c5cd8ba_68a02e6a93e0d
+57097faaff560_285715a40378d
+93d1a7534ea6a_418621e995c81
+5156f421e843d_9f97ebad5261b
+37c3ee03dc07c_8f8790704d084
+0924c1d183a30_04881c489753d
+35c27c74f8e9f_8e3e0ae532ece
+2937474e8e9d2_13d6d7821da0f
+b9d29245248a5_50502e27b8267
+4b635ad6b5ad7_9be93a4cb06c1
+745a054c0a981_34be1df77fe08
+27366e6cdcd9c_12e8756a6f38e
+535d74a2e945d_26bff41decc57
+756b2136426c8_352f434ee70b5
+b59cd111a2234_4eb501f2ec4eb
+de7bd203a4075_eef54dfc17c7e
+2ace0f781ef04_87230fc21ac9f
+0fdb377e6efce_07cf1e235f818
+514bdfb7bf6f8_9f91186d6fd41
+860cc9b993732_bee2615ddfe41
+f327ed77daefb_657801de5581d
+42226664ccc9a_961e8383f1d72
+c422e781cf03a_e1235641b538d
+405bb51b6a36d_94ff7fc057495
+0915f98ff31fe_706845cad2ee6
+a9b539ea73d4e_d2dd4f3f72272
+1d7cd09da13b4_7e52454aa77ff
+b47504d209a41_4e43d00a88125
+a8f317122e246_d272cf495d24d
+93e1b3ab6756d_418c8565c5fc9
+f46d9ddb3bb67_fa2e57dc465a1
+4ddd14da29b45_2459d84009dd8
+757399af335e6_b545bfaaeaa5c
+47023b207640f_992e23a866582
+f8437e92fd260_fc1dfa5d8e2c1
+5a630f561eac4_29c898a1bc51b
+cb929c0938127_e5141d2922f10
+16b876a0ed41e_79c357aa29d9a
+a4ace129c2538_482a7a94cd950
+637726ee4ddca_2da920d3c03e9
+910f787ef0fde_c525d7242a063
+8c81733ee67dd_c2913b3167ea7
+2cc04b0896113_15798fdab384d
+d5c196432c866_5ac821396e6b4
+bb2cd765aecb6_dc589f396a3db
+712c8e0d1c1a4_b2c2cf96b0ce5
+92e04c4098813_c62c2457074fe
+cbe9cdab9b573_5721221a0bf90
+f91829d053a0a_fc8914b7cdd21
+6a77e47fc8ff9_aecb5b85be439
+afeec21d843b1_d643ef2b90f14
+e54c410882110_6078bd1f8333d
+bafe7e18fc320_dc3fb5df72e0c
+80c4c00980130_39d929a387cc1
+97deacbd597ab_4321f1d40e697
+881cef41de83c_3cd45a5f9ee1b
+3507ccf799ef3_1944a8caee28e
+5076a6354c6aa_9f0da98ac6c59
+9e46fa09f413f_cc8dd08fb8be8
+0dc3f617ec2fe_73a5175d66c26
+a618007000e00_d0e0e43954673
+b5c617cc2f986_d96f38a1e24ed
+d4bb0fee1fdc4_5a672d42d6981
+8fd319b6336c6_c472f924b09f7
+625c9c9d393a7_a9f3256ef10d4
+c5360d041a083_549ebeb643612
+e7f50aca15943_616fa109cde0f
+2de938a27144e_892a268a2acc0
+2847242a48549_857ac0a5f747c
+0f5311f223e44_74b79cf898d09
+30ae26f04de0a_8af6b35ff6236
+72a1394a7294e_3407285970c2c
+379d0a5214a43_1a70f382c5425
+c70c4c7498e93_e2af4dc60c104
+e80d9edb3db68_617887a7722a9
+5bd5721ae435d_a602171c5580b
+3832da7db4fb7_8fce9d43fd697
+0d32d435a86b5_73411135aca74
+3ce8436086c11_92cf8f6ebc849
+31450446088c1_8b58701eb7b1e
+de92e2b5c56b9_ef013bd7260e7
+a8e1f3e7e7cfd_d26967647c8c8
+1f2926124c24a_0f2211bad7fca
+94e9b5f36be6d_41f58c8807554
+d8f88bed17da3_ec1941ea35d9c
+5b7be977d2efa_a5cbc36bac10c
+ed535cbeb97d7_635ffd630a85b
+cdd9c98393072_e6478154d8edf
+a753a09341268_d18e92ec81d15
+29d550caa1954_14202398e8fff
+6dcadfd5bfab8_3202e02068f82
+c1b3209a41348_dfd6fe91e15e3
+608a13c427885_2c6aa026e29ec
+a140f7e1efc3e_ce349c86121be
+51803a487490f_9fb15781c905b
+29ba6774cee9a_866e7b273cac2
+07abfcb7f96ff_03cebea460554
+8e7cdba5b74b7_c3b12ac430dbc
+4082df19be338_9518407191a9a
+ac1b2286450c9_d42d7783a38fe
+3b93db1fb63f7_1c3b675d40b07
+c4ac180830106_e16c4f5d7d3e5
+9596fc8df91bf_c7b30e07afbd6
+399672b8e571d_90b20d5068710
+c18a9395272a5_533cfc9f3fe5c
+596a8e951d2a4_a48a00d82c458
+9089cf3f9e7f4_c4da4e411869b
+70622cf059e0b_b24b94843b053
+9a5d8b0b16163_ca5fd85efc4f9
+9ad825304a609_444f08369b06e
+4342625cc4b99_1fabad9842b85
+bc7436e06dc0e_51502fc43175e
+d92019f033e06_ec2dd53f69949
+8b08abe157c2b_3e01e15ae4182
+10d5522ea45d5_75c08a7bf9165
+3cea498493092_92d0d8ba07bc4
+1c61504ea09d4_7d94416e09d5b
+de40218043008_eed66db4947dd
+855e098413082_3bb7e1b37331c
+875de1bbc3778_3c872161079b4
+38c351d6a3ad4_1af6318279595
+799274ace959d_b7ad9deab7b4b
+0ab822e045c09_054dff9072a02
+4ca4b2cd659ad_9cb0c07cc188c
+1acd6c86d90db_7c84e91c740a7
+d6da4bbc97793_eafed9ccde54b
+5f3e5948b2916_a812527e18662
+9ea16ae2d5c5b_ccc013621ca2b
+6551275a4eb4a_abb8e42c4fd71
+3f7670b4e169c_1df9ee59883b6
+4ab68d651aca3_9b7dc70153f53
+8a8a7114e229c_3dcf0e6129473
+10e43e607cc10_75cac2f8b142b
+b01a4c8899113_d65ba26339e53
+3ca9879b0f362_92a7aeed082a3
+491390d321a64_9a78ca81ce7d7
+097edb15b62b7_70b11fde081ea
+9a5aada55b4ab_441d7f4eb8f26
+72df7b76f6edf_3421065197feb
+70143dd87bb0f_b21da1b300cb4
+9a97696ed2dda_ca8029002c6f3
+5b0eeee9ddd3c_a58999cd748d9
+39216502ca059_90673d90505b0
+0d96fe2dfc5c0_73861c5399359
+046a26944d28a_0232a8f504ee4
+5f1bab6f56deb_a7fd62ab6c98d
+8048091012202_bb9143863c355
+3cec95252a4a5_92d24e2d35070
+6692abf957f2b_ac792841ad4d7
+22bf07060e0c2_81d392ae8a6a9
+2b0bf617ec2fe_14affea7c72e7
+772a6e54dca9c_35e839db8616e
+3896f75deebbe_1ae22082f4d3d
+0bdf2ed65dacc_05de5efbd3b35
+4f9107ae0f5c2_9e7ff0fac94aa
+b716e835d06ba_da2535bdda60b
+730f8c7f18fe3_b3ded974083fa
+5d92c1dd83bb0_2b266a35dbe6c
+55b25314a6295_a244c51c2b5ba
+c2130a7a14f43_e00a279d14229
+4e82994932926_9dd8c9c26b402
+40c5c0e381c70_1e8fdc3761c6f
+c5261f5c3eb88_e1ad2eb83b960
+7d835e86bd0d8_b9f786983a82c
+41dcb3c96792d_95f291eddaca8
+01c9a6ef4ddea_6b4cf2282cb85
diff --git a/wally-pipelined/srt/srt-waves.do b/wally-pipelined/srt/srt-waves.do
new file mode 100644
index 000000000..5db638055
--- /dev/null
+++ b/wally-pipelined/srt/srt-waves.do
@@ -0,0 +1 @@
+add wave -noupdate /testbench/clk
diff --git a/wally-pipelined/srt/srt.do b/wally-pipelined/srt/srt.do
new file mode 100644
index 000000000..c86a0dbfd
--- /dev/null
+++ b/wally-pipelined/srt/srt.do
@@ -0,0 +1,28 @@
+# srt.do
+#
+# David_Harris@hmc.edu 19 October 2021
+
+# Use this wally-pipelined.do file to run this example.
+# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
+# do wally-pipelined.do
+# or, to run from a shell, type the following at the shell prompt:
+# vsim -do wally-pipelined.do -c
+# (omit the "-c" to see the GUI while running from the shell)
+
+onbreak {resume}
+
+# create library
+if [file exists work] {
+ vdel -all
+}
+vlib work
+
+vlog srt.sv
+vopt +acc work.testbench -o workopt
+vsim workopt
+
+-- display input and output signals as hexidecimal values
+do ./srt-waves.do
+
+-- Run the Simulation
+run -all
diff --git a/wally-pipelined/srt/srt.sv b/wally-pipelined/srt/srt.sv
new file mode 100644
index 000000000..707840cee
--- /dev/null
+++ b/wally-pipelined/srt/srt.sv
@@ -0,0 +1,355 @@
+///////////////////////////////////////////////////////
+// srt.sv //
+// //
+// Written 10/31/96 by David Harris harrisd@leland //
+// Updated 10/19/21 David_Harris@hmc.edu //
+// //
+// This file models a simple Radix 2 SRT divider. //
+// //
+///////////////////////////////////////////////////////
+
+// This Verilog file models a radix 2 SRT divider which
+// produces one quotient digit per cycle. The divider
+// keeps the partial remainder in carry-save form.
+
+/////////
+// srt //
+/////////
+module srt(input logic clk,
+ input logic req,
+ input logic sqrt, // 1 to compute sqrt(a), 0 to compute a/b
+ input logic [51:0] a, b,
+ output logic [54:0] rp, rm);
+
+ // A simple Radix 2 SRT divider/sqrt
+
+
+ // Internal signals
+
+ logic [55:0] ps, pc; // partial remainder in carry-save form
+ logic [55:0] d; // divisor
+ logic [55:0] psa, pca; // partial remainder result of csa
+ logic [55:0] psn, pcn; // partial remainder for next cycle
+ logic [55:0] dn; // divisor for next cycle
+ logic [55:0] dsel; // selected divisor multiple
+ logic qp, qz, qm; // quotient is +1, 0, or -1
+ logic [55:0] d_b; // inverse of divisor
+
+ // Top Muxes and Registers
+ // When start is asserted, the inputs are loaded into the divider.
+ // Otherwise, the divisor is retained and the partial remainder
+ // is fed back for the next iteration.
+ mux2 psmux({psa[54:0], 1'b0}, {4'b0001, a}, req, psn);
+ flop psflop(clk, psn, ps);
+ mux2 pcmux({pca[54:0], 1'b0}, 56'b0, req, pcn);
+ flop pcflop(clk, pcn, pc);
+ mux2 dmux(d, {4'b0001, b}, req, dn);
+ flop dflop(clk, dn, d);
+
+ // Quotient Selection logic
+ // Given partial remainder, select quotient of +1, 0, or -1 (qp, qz, pm)
+ // Accumulate quotient digits in a shift register
+ qsel qsel(ps[55:52], pc[55:52], qp, qz, qm);
+ qacc qacc(clk, req, qp, qz, qm, rp, rm);
+
+ // Divisor Selection logic
+ inv dinv(d, d_b);
+ mux3 divisorsel(d_b, 56'b0, d, qp, qz, qm, dsel);
+
+ // Partial Product Generation
+ csa csa(ps, pc, dsel, qp, psa, pca);
+endmodule
+
+//////////
+// mux2 //
+//////////
+module mux2(input logic [55:0] in0, in1,
+ input logic sel,
+ output logic [55:0] out);
+
+ assign #1 out = sel ? in1 : in0;
+endmodule
+
+//////////
+// flop //
+//////////
+module flop(clk, in, out);
+ input clk;
+ input [55:0] in;
+ output [55:0] out;
+
+ logic [55:0] state;
+
+ always @(posedge clk)
+ state <= #1 in;
+
+ assign #1 out = state;
+endmodule
+
+//////////
+// qsel //
+//////////
+module qsel(input logic [55:52] ps, pc,
+ output logic qp, qz, qm);
+
+ logic [55:52] p, g;
+ logic magnitude, sign, cout;
+
+ // The quotient selection logic is presented for simplicity, not
+ // for efficiency. You can probably optimize your logic to
+ // select the proper divisor with less delay.
+
+ // Quotient equations from EE371 lecture notes 13-20
+ assign p = ps ^ pc;
+ assign g = ps & pc;
+
+ assign #1 magnitude = ~(&p[54:52]);
+ assign #1 cout = g[54] | (p[54] & (g[53] | p[53] & g[52]));
+ assign #1 sign = p[55] ^ cout;
+/* assign #1 magnitude = ~((ps[54]^pc[54]) && (ps[53]^pc[53]) &&
+ (ps[52]^pc[52]));
+ assign #1 sign = (ps[55]^pc[55])^
+ (ps[54] && pc[54] || ((ps[54]^pc[54]) &&
+ (ps[53]&&pc[53] || ((ps[53]^pc[53]) &&
+ (ps[52]&&pc[52]))))); */
+
+ // Produce quotient = +1, 0, or -1
+ assign #1 qp = magnitude && ~sign;
+ assign #1 qz = ~magnitude;
+ assign #1 qm = magnitude && sign;
+endmodule
+
+//////////
+// qacc //
+//////////
+module qacc(clk, req, qp, qz, qm, rp, rm);
+ input clk;
+ input req;
+ input qp;
+ input qz;
+ input qm;
+ output [54:0] rp;
+ output [54:0] rm;
+
+ logic [54:0] rp, rm; // quotient bit is +/- 1;
+ logic [7:0] count;
+
+ always @(posedge clk)
+ begin
+ if (req)
+ begin
+ rp <= #1 0;
+ rm <= #1 0;
+ end
+ else
+ begin
+ rp <= #1 {rp[54:0], qp};
+ rm <= #1 {rm[54:0], qm};
+ end
+ end
+endmodule
+
+/////////
+// inv //
+/////////
+module inv(input logic [55:0] in,
+ output logic [55:0] out);
+
+ assign #1 out = ~in;
+endmodule
+
+//////////
+// mux3 //
+//////////
+module mux3(in0, in1, in2, sel0, sel1, sel2, out);
+ input [55:0] in0;
+ input [55:0] in1;
+ input [55:0] in2;
+ input sel0;
+ input sel1;
+ input sel2;
+ output [55:0] out;
+
+ // lazy inspection of the selects
+ // really we should make sure selects are mutually exclusive
+ assign #1 out = sel0 ? in0 : (sel1 ? in1 : in2);
+endmodule
+
+/////////
+// csa //
+/////////
+module csa(in1, in2, in3, cin, out1, out2);
+ input [55:0] in1;
+ input [55:0] in2;
+ input [55:0] in3;
+ input cin;
+ output [55:0] out1;
+ output [55:0] out2;
+
+ // This block adds in1, in2, in3, and cin to produce
+ // a result out1 / out2 in carry-save redundant form.
+ // cin is just added to the least significant bit and
+ // is required to handle adding a negative divisor.
+ // Fortunately, the carry (out2) is shifted left by one
+ // bit, leaving room in the least significant bit to
+ // insert cin.
+
+ assign #1 out1 = in1 ^ in2 ^ in3;
+ assign #1 out2 = {in1[54:0] & (in2[54:0] | in3[54:0]) |
+ (in2[54:0] & in3[54:0]), cin};
+endmodule
+
+//////////////
+// finaladd //
+//////////////
+module finaladd(rp, rm, r);
+ input [54:0] rp;
+ input [54:0] rm;
+ output [51:0] r;
+
+ logic [54:0] diff;
+
+ // this magic block performs the final addition for you
+ // to convert the positive and negative quotient digits
+ // into a normalized mantissa. It returns the 52 bit
+ // mantissa after shifting to guarantee a leading 1.
+ // You can assume this block operates in one cycle
+ // and do not need to budget it in your area and power
+ // calculations.
+
+ // Since no rounding is performed, the result may be too
+ // small by one unit in the least significant place (ulp).
+ // The checker ignores such an error.
+
+ assign #1 diff = rp - rm;
+ assign #1 r = diff[54] ? diff[53:2] : diff[52:1];
+endmodule
+
+/////////////
+// counter //
+/////////////
+module counter(input logic clk,
+ input logic req,
+ output logic done);
+
+ logic [5:0] count;
+
+ // This block of control logic sequences the divider
+ // through its iterations. You may modify it if you
+ // build a divider which completes in fewer iterations.
+ // You are not responsible for the (trivial) circuit
+ // design of the block.
+
+ always @(posedge clk)
+ begin
+ if (count == 54) done <= #1 1;
+ else if (done || req) done <= #1 0;
+ if (req) count <= #1 0;
+ else count <= #1 count+1;
+ end
+endmodule
+
+///////////
+// clock //
+///////////
+module clock(clk);
+ output clk;
+
+ // Internal clk signal
+ logic clk;
+
+endmodule
+
+//////////
+// testbench //
+//////////
+module testbench;
+ logic clk;
+ logic req;
+ logic done;
+ logic [51:0] a;
+ logic [51:0] b;
+ logic [51:0] r;
+ logic [54:0] rp, rm; // positive quotient digits
+
+ // Test parameters
+ parameter MEM_SIZE = 40000;
+ parameter MEM_WIDTH = 52+52+52;
+
+ `define memr 51:0
+ `define memb 103:52
+ `define mema 155:104
+
+ // Test logicisters
+ logic [MEM_WIDTH-1:0] Tests [0:MEM_SIZE]; // Space for input file
+ logic [MEM_WIDTH-1:0] Vec; // Verilog doesn't allow direct access to a
+ // bit field of an array
+ logic [51:0] correctr, nextr;
+ integer testnum, errors;
+
+ // Divider
+ srt srt(clk, req, a, b, rp, rm);
+
+ // Final adder converts quotient digits to 2's complement & normalizes
+ finaladd finaladd(rp, rm, r);
+
+ // Counter
+ counter counter(clk, req, done);
+
+
+ initial
+ forever
+ begin
+ clk = 1; #17;
+ clk = 0; #16;
+ end
+
+
+ // Read test vectors from disk
+ initial
+ begin
+ testnum = 0;
+ errors = 0;
+ $readmemh ("testvectors", Tests);
+ Vec = Tests[testnum];
+ a = Vec[`mema];
+ b = Vec[`memb];
+ nextr = Vec[`memr];
+ req <= #5 1;
+ end
+
+ // Apply directed test vectors read from file.
+
+ always @(posedge clk)
+ begin
+ if (done)
+ begin
+ req <= #5 1;
+ $display("result was %h, should be %h\n", r, correctr);
+ if ((correctr - r) > 1) // check if accurate to 1 ulp
+ begin
+ errors = errors+1;
+ $display("failed\n");
+ $stop;
+ end
+ if (a === 52'hxxxxxxxxxxxxx)
+ begin
+ $display("Tests completed successfully");
+ $stop;
+ end
+ end
+ if (req)
+ begin
+ req <= #5 0;
+ correctr = nextr;
+ testnum = testnum+1;
+ Vec = Tests[testnum];
+ $display("a = %h b = %h",a,b);
+ a = Vec[`mema];
+ b = Vec[`memb];
+ nextr = Vec[`memr];
+ end
+ end
+
+endmodule
+
diff --git a/wally-pipelined/srt/testgen.c b/wally-pipelined/srt/testgen.c
new file mode 100644
index 000000000..98d52819b
--- /dev/null
+++ b/wally-pipelined/srt/testgen.c
@@ -0,0 +1,94 @@
+/* testgen.c */
+
+/* Written 10/31/96 by David Harris
+
+ This program creates test vectors for mantissa component
+ of an IEEE floating point divider.
+ */
+
+/* #includes */
+
+#include
+#include
+#include
+
+/* Constants */
+
+#define ENTRIES 17
+#define RANDOM_VECS 500
+
+/* Prototypes */
+
+void output(FILE *fptr, double a, double b, double r);
+void printhex(FILE *fptr, double x);
+double random_input(void);
+
+/* Main */
+
+void main(void)
+{
+ FILE *fptr;
+ double a, b, r;
+ double list[ENTRIES] = {1, 1.5, 1.25, 1.125, 1.0625,
+ 1.75, 1.875, 1.99999,
+ 1.1, 1.2, 1.01, 1.001, 1.0001,
+ 1/1.1, 1/1.5, 1/1.25, 1/1.125};
+ int i, j;
+
+ if ((fptr = fopen("testvectors","w")) == NULL) {
+ fprintf(stderr, "Couldn't write testvectors file\n");
+ exit(1);
+ }
+
+ for (i=0; i2) m /= 2;
+ for (i=0; i<52; i+=4) {
+ m = m - floor(m);
+ m = m * 16;
+ val = (int)(m)%16;
+ fprintf(fptr, "%x", val);
+ }
+}
+
+double random_input(void)
+{
+ return 1.0 + rand()/32767.0;
+}
+
diff --git a/wally-pipelined/srt/testvectors b/wally-pipelined/srt/testvectors
new file mode 100644
index 000000000..112803fe9
--- /dev/null
+++ b/wally-pipelined/srt/testvectors
@@ -0,0 +1,789 @@
+0000000000000_0000000000000_0000000000000
+8000000000000_0000000000000_8000000000000
+4000000000000_0000000000000_4000000000000
+2000000000000_0000000000000_2000000000000
+1000000000000_0000000000000_1000000000000
+c000000000000_0000000000000_c000000000000
+e000000000000_0000000000000_e000000000000
+ffff583a53b8e_0000000000000_ffff583a53b8e
+199999999999a_0000000000000_199999999999a
+3333333333333_0000000000000_3333333333333
+028f5c28f5c29_0000000000000_028f5c28f5c29
+004189374bc6a_0000000000000_004189374bc6a
+00068db8bac71_0000000000000_00068db8bac71
+d1745d1745d17_0000000000000_d1745d1745d17
+5555555555555_0000000000000_5555555555555
+999999999999a_0000000000000_999999999999a
+c71c71c71c71c_0000000000000_c71c71c71c71c
+0000000000000_8000000000000_5555555555555
+8000000000000_8000000000000_0000000000000
+4000000000000_8000000000000_aaaaaaaaaaaab
+2000000000000_8000000000000_8000000000000
+1000000000000_8000000000000_6aaaaaaaaaaab
+c000000000000_8000000000000_2aaaaaaaaaaab
+e000000000000_8000000000000_4000000000000
+ffff583a53b8e_8000000000000_5554e57c37d09
+199999999999a_8000000000000_7777777777778
+3333333333333_8000000000000_9999999999999
+028f5c28f5c29_8000000000000_58bf258bf258c
+004189374bc6a_8000000000000_55acb6f46508d
+00068db8bac71_8000000000000_555e124ba3b41
+d1745d1745d17_8000000000000_364d9364d9365
+5555555555555_8000000000000_c71c71c71c71c
+999999999999a_8000000000000_1111111111111
+c71c71c71c71c_8000000000000_2f684bda12f68
+0000000000000_4000000000000_999999999999a
+8000000000000_4000000000000_3333333333333
+4000000000000_4000000000000_0000000000000
+2000000000000_4000000000000_ccccccccccccd
+1000000000000_4000000000000_b333333333333
+c000000000000_4000000000000_6666666666666
+e000000000000_4000000000000_8000000000000
+ffff583a53b8e_4000000000000_99991361dc93e
+199999999999a_4000000000000_c28f5c28f5c2a
+3333333333333_4000000000000_eb851eb851eb8
+028f5c28f5c29_4000000000000_9db22d0e56042
+004189374bc6a_4000000000000_9a027525460aa
+00068db8bac71_4000000000000_99a415f45e0b5
+d1745d1745d17_4000000000000_745d1745d1746
+5555555555555_4000000000000_1111111111111
+999999999999a_4000000000000_47ae147ae147b
+c71c71c71c71c_4000000000000_6c16c16c16c16
+0000000000000_2000000000000_c71c71c71c71c
+8000000000000_2000000000000_5555555555555
+4000000000000_2000000000000_1c71c71c71c72
+2000000000000_2000000000000_0000000000000
+1000000000000_2000000000000_e38e38e38e38e
+c000000000000_2000000000000_8e38e38e38e39
+e000000000000_2000000000000_aaaaaaaaaaaab
+ffff583a53b8e_2000000000000_c71bdca59fc0c
+199999999999a_2000000000000_f49f49f49f4a0
+3333333333333_2000000000000_1111111111111
+028f5c28f5c29_2000000000000_cba9876543210
+004189374bc6a_2000000000000_c790f3f086b67
+00068db8bac71_2000000000000_c7281864da457
+d1745d1745d17_2000000000000_9dbcc48676f31
+5555555555555_2000000000000_2f684bda12f68
+999999999999a_2000000000000_6c16c16c16c17
+c71c71c71c71c_2000000000000_948b0fcd6e9e0
+0000000000000_1000000000000_e1e1e1e1e1e1e
+8000000000000_1000000000000_6969696969697
+4000000000000_1000000000000_2d2d2d2d2d2d3
+2000000000000_1000000000000_0f0f0f0f0f0f1
+1000000000000_1000000000000_0000000000000
+c000000000000_1000000000000_a5a5a5a5a5a5a
+e000000000000_1000000000000_c3c3c3c3c3c3c
+ffff583a53b8e_1000000000000_e1e143faa9268
+199999999999a_1000000000000_0909090909091
+3333333333333_1000000000000_2121212121212
+028f5c28f5c29_1000000000000_e6b3804d19e6b
+004189374bc6a_1000000000000_e25d3e863448b
+00068db8bac71_1000000000000_e1ee37f25085c
+d1745d1745d17_1000000000000_b6132a7041b61
+5555555555555_1000000000000_4141414141414
+999999999999a_1000000000000_8181818181818
+c71c71c71c71c_1000000000000_ac5701ac5701a
+0000000000000_c000000000000_2492492492492
+8000000000000_c000000000000_b6db6db6db6db
+4000000000000_c000000000000_6db6db6db6db7
+2000000000000_c000000000000_4924924924925
+1000000000000_c000000000000_36db6db6db6db
+c000000000000_c000000000000_0000000000000
+e000000000000_c000000000000_1249249249249
+ffff583a53b8e_c000000000000_2491e945e6b2d
+199999999999a_c000000000000_41d41d41d41d5
+3333333333333_c000000000000_5f15f15f15f16
+028f5c28f5c29_c000000000000_277f44c118de6
+004189374bc6a_c000000000000_24dd2f1a9fbe7
+00068db8bac71_c000000000000_2499c689fa081
+d1745d1745d17_c000000000000_09f959c427e56
+5555555555555_c000000000000_8618618618618
+999999999999a_c000000000000_d41d41d41d41e
+c71c71c71c71c_c000000000000_0410410410410
+0000000000000_e000000000000_1111111111111
+8000000000000_e000000000000_999999999999a
+4000000000000_e000000000000_5555555555555
+2000000000000_e000000000000_3333333333333
+1000000000000_e000000000000_2222222222222
+c000000000000_e000000000000_dddddddddddde
+e000000000000_e000000000000_0000000000000
+ffff583a53b8e_e000000000000_1110b796930d4
+199999999999a_e000000000000_2c5f92c5f92c6
+3333333333333_e000000000000_47ae147ae147b
+028f5c28f5c29_e000000000000_13cc1e098ead6
+004189374bc6a_e000000000000_1156f8c384071
+00068db8bac71_e000000000000_11180ea2e95ce
+d1745d1745d17_e000000000000_f07c1f07c1f07
+5555555555555_e000000000000_6c16c16c16c16
+999999999999a_e000000000000_b4e81b4e81b4f
+c71c71c71c71c_e000000000000_e573ac901e573
+0000000000000_ffff583a53b8e_000053e2f1a08
+8000000000000_ffff583a53b8e_80007dd46a70b
+4000000000000_ffff583a53b8e_400068dbae089
+2000000000000_ffff583a53b8e_20005e5f4fd48
+1000000000000_ffff583a53b8e_1000592120ba8
+c000000000000_ffff583a53b8e_c00092cd26d8d
+e000000000000_ffff583a53b8e_e0009d49850ce
+ffff583a53b8e_ffff583a53b8e_0000000000000
+199999999999a_ffff583a53b8e_1999f5e009ca2
+3333333333333_ffff583a53b8e_333397dd21f3c
+028f5c28f5c29_ffff583a53b8e_028fb0e2a73e4
+004189374bc6a_ffff583a53b8e_0041dd2fb6fd0
+00068db8bac71_ffff583a53b8e_0006e19dd229c
+d1745d1745d17_ffff583a53b8e_d174f59ca00c8
+5555555555555_ffff583a53b8e_5555c52e9780a
+999999999999a_ffff583a53b8e_999a1fd1829a6
+c71c71c71c71c_ffff583a53b8e_c71d06e8ca00d
+0000000000000_199999999999a_d1745d1745d17
+8000000000000_199999999999a_5d1745d1745d1
+4000000000000_199999999999a_22e8ba2e8ba2e
+2000000000000_199999999999a_05d1745d1745d
+1000000000000_199999999999a_ee8ba2e8ba2e8
+c000000000000_199999999999a_9745d1745d174
+e000000000000_199999999999a_b45d1745d1745
+ffff583a53b8e_199999999999a_d173c4921d90c
+199999999999a_199999999999a_0000000000000
+3333333333333_199999999999a_1745d1745d174
+028f5c28f5c29_199999999999a_d61bed61bed61
+004189374bc6a_199999999999a_d1eb851eb851d
+00068db8bac71_199999999999a_d180477e6ade4
+d1745d1745d17_199999999999a_a723f789854a0
+5555555555555_199999999999a_364d9364d9364
+999999999999a_199999999999a_745d1745d1746
+c71c71c71c71c_199999999999a_9dbcc48676f30
+0000000000000_3333333333333_aaaaaaaaaaaab
+8000000000000_3333333333333_4000000000000
+4000000000000_3333333333333_0aaaaaaaaaaab
+2000000000000_3333333333333_e000000000000
+1000000000000_3333333333333_c555555555556
+c000000000000_3333333333333_7555555555556
+e000000000000_3333333333333_9000000000000
+ffff583a53b8e_3333333333333_aaaa1edb45c4c
+199999999999a_3333333333333_d555555555556
+3333333333333_3333333333333_0000000000000
+028f5c28f5c29_3333333333333_aeeeeeeeeeeef
+004189374bc6a_3333333333333_ab17e4b17e4b1
+00068db8bac71_3333333333333_aab596de8ca12
+d1745d1745d17_3333333333333_83e0f83e0f83e
+5555555555555_3333333333333_1c71c71c71c72
+999999999999a_3333333333333_5555555555556
+c71c71c71c71c_3333333333333_7b425ed097b42
+0000000000000_028f5c28f5c29_faee41e6a7498
+8000000000000_028f5c28f5c29_7c32b16cfd772
+4000000000000_028f5c28f5c29_3cd4e930288df
+2000000000000_028f5c28f5c29_1d260511be196
+1000000000000_028f5c28f5c29_0d4e930288df1
+c000000000000_028f5c28f5c29_bb9079a9d2605
+e000000000000_028f5c28f5c29_db3f5dc83cd4f
+ffff583a53b8e_028f5c28f5c29_faed9bca398bf
+199999999999a_028f5c28f5c29_16cfd7720f354
+3333333333333_028f5c28f5c29_30288df0cac5b
+028f5c28f5c29_028f5c28f5c29_0000000000000
+004189374bc6a_028f5c28f5c29_fb70081c635bb
+00068db8bac71_028f5c28f5c29_fafb3c1f3a182
+d1745d1745d17_028f5c28f5c29_ccd899003afd0
+5555555555555_028f5c28f5c29_51f42bef1a310
+999999999999a_028f5c28f5c29_958b67ebb907a
+c71c71c71c71c_028f5c28f5c29_c29ae53ecd96a
+0000000000000_004189374bc6a_ff7d0f16c2e0a
+8000000000000_004189374bc6a_7f9dcb5112287
+4000000000000_004189374bc6a_3fae296e39cc6
+2000000000000_004189374bc6a_1fb6587ccd9e5
+1000000000000_004189374bc6a_0fba700417875
+c000000000000_004189374bc6a_bf8d6d33ea848
+e000000000000_004189374bc6a_df853e2556b29
+ffff583a53b8e_004189374bc6a_ff7c677bfebb5
+199999999999a_004189374bc6a_1951951951953
+3333333333333_004189374bc6a_32e4a2a741b9f
+028f5c28f5c29_004189374bc6a_024d3c19930d9
+004189374bc6a_004189374bc6a_0000000000000
+00068db8bac71_004189374bc6a_ff8a272e15ca2
+d1745d1745d17_004189374bc6a_d0fd53890e409
+5555555555555_004189374bc6a_54fe0a0f2c95b
+999999999999a_004189374bc6a_9930d8df024d5
+c71c71c71c71c_004189374bc6a_c6a80d6990c7a
+0000000000000_00068db8bac71_fff2e4e46e7a8
+8000000000000_00068db8bac71_7ff62bab52dbe
+4000000000000_00068db8bac71_3ff7cf0ec50c9
+2000000000000_00068db8bac71_1ff8a0c07e24f
+1000000000000_00068db8bac71_0ff909995ab11
+c000000000000_00068db8bac71_bff48847e0ab3
+e000000000000_00068db8bac71_dff3b6962792e
+ffff583a53b8e_00068db8bac71_fff23d230d9a4
+199999999999a_00068db8bac71_1992644a6ff6a
+3333333333333_00068db8bac71_332b5622a8afe
+028f5c28f5c29_00068db8bac71_0288bdd4a34fd
+004189374bc6a_00068db8bac71_003af9fc0ed8b
+00068db8bac71_00068db8bac71_0000000000000
+d1745d1745d17_00068db8bac71_d16872fe35e3c
+5555555555555_00068db8bac71_554c989849a70
+999999999999a_00068db8bac71_998f1d838b954
+c71c71c71c71c_00068db8bac71_c710cb75b7895
+0000000000000_d1745d1745d17_199999999999a
+8000000000000_d1745d1745d17_a666666666667
+4000000000000_d1745d1745d17_6000000000000
+2000000000000_d1745d1745d17_3cccccccccccd
+1000000000000_d1745d1745d17_2b33333333333
+c000000000000_d1745d1745d17_ecccccccccccd
+e000000000000_d1745d1745d17_0800000000000
+ffff583a53b8e_d1745d1745d17_19993d5347a5b
+199999999999a_d1745d1745d17_35c28f5c28f5d
+3333333333333_d1745d1745d17_51eb851eb851f
+028f5c28f5c29_d1745d1745d17_1c6a7ef9db22d
+004189374bc6a_d1745d1745d17_19e1b089a0275
+00068db8bac71_d1745d1745d17_19a0cf1800a7c
+d1745d1745d17_d1745d1745d17_0000000000000
+5555555555555_d1745d1745d17_7777777777777
+999999999999a_d1745d1745d17_c28f5c28f5c2a
+c71c71c71c71c_d1745d1745d17_f49f49f49f49f
+0000000000000_5555555555555_8000000000000
+8000000000000_5555555555555_2000000000000
+4000000000000_5555555555555_e000000000000
+2000000000000_5555555555555_b000000000000
+1000000000000_5555555555555_9800000000000
+c000000000000_5555555555555_5000000000000
+e000000000000_5555555555555_6800000000000
+ffff583a53b8e_5555555555555_7fff822bbecab
+199999999999a_5555555555555_a666666666667
+3333333333333_5555555555555_ccccccccccccd
+028f5c28f5c29_5555555555555_83d70a3d70a3e
+004189374bc6a_5555555555555_80624dd2f1a9f
+00068db8bac71_5555555555555_8009d495182aa
+d1745d1745d17_5555555555555_5d1745d1745d2
+5555555555555_5555555555555_0000000000000
+999999999999a_5555555555555_3333333333334
+c71c71c71c71c_5555555555555_5555555555555
+0000000000000_999999999999a_4000000000000
+8000000000000_999999999999a_e000000000000
+4000000000000_999999999999a_9000000000000
+2000000000000_999999999999a_6800000000000
+1000000000000_999999999999a_5400000000000
+c000000000000_999999999999a_1800000000000
+e000000000000_999999999999a_2c00000000000
+ffff583a53b8e_999999999999a_3fff972474538
+199999999999a_999999999999a_6000000000000
+3333333333333_999999999999a_7ffffffffffff
+028f5c28f5c29_999999999999a_4333333333333
+004189374bc6a_999999999999a_4051eb851eb84
+00068db8bac71_999999999999a_40083126e978d
+d1745d1745d17_999999999999a_22e8ba2e8ba2e
+5555555555555_999999999999a_aaaaaaaaaaaaa
+999999999999a_999999999999a_0000000000000
+c71c71c71c71c_999999999999a_1c71c71c71c71
+0000000000000_c71c71c71c71c_2000000000000
+8000000000000_c71c71c71c71c_b000000000000
+4000000000000_c71c71c71c71c_6800000000000
+2000000000000_c71c71c71c71c_4400000000000
+1000000000000_c71c71c71c71c_3200000000000
+c000000000000_c71c71c71c71c_f800000000000
+e000000000000_c71c71c71c71c_0e00000000000
+ffff583a53b8e_c71c71c71c71c_1fffa1a0cf180
+199999999999a_c71c71c71c71c_3ccccccccccce
+3333333333333_c71c71c71c71c_599999999999a
+028f5c28f5c29_c71c71c71c71c_22e147ae147ae
+004189374bc6a_c71c71c71c71c_2049ba5e353f8
+00068db8bac71_c71c71c71c71c_20075f6fd21ff
+d1745d1745d17_c71c71c71c71c_05d1745d1745d
+5555555555555_c71c71c71c71c_8000000000000
+999999999999a_c71c71c71c71c_cccccccccccce
+c71c71c71c71c_c71c71c71c71c_0000000000000
+838d071a0e342_2cfc59f8b3f16_49a082c638aeb
+4f029e053c0a8_88d711ae235c4_b4a0ece3271c9
+f297e52fca5fa_2bf657ecafd96_a98512f9eeb0d
+b3c5678acf15a_39f673ece7d9d_6352102e4640a
+7ea8fd51faa3f_1fec3fd87fb10_543bc490cb0f8
+157a2af455e8b_63bec77d8efb2_8f5aa9c461ea7
+46f88df11be24_5e38bc7178e2f_de02518ff11b4
+fbc3f787ef0fe_890f121e243c4_4ab569d997a57
+c4038807100e2_a57f4afe95fd2_1288d4a86eec2
+c46388c7118e2_c7bd8f7b1ef64_fc3c0db5c0f41
+d2ada55b4ab6a_26e44dc89b914_952163b89177d
+a01f403e807d0_508ea11d423a8_3c8542614b454
+58ceb19d633ac_eacdd59bab376_67b2c4ee8dfbc
+850f0a1e143c2_66b2cd659acb3_15aafa9a4052d
+9b5536aa6d54e_c911922324464_ccc482a9a6c6e
+ee79dcf3b9e77_deb3bd677acf0_086f8140e09d3
+ddd5bbab7756f_acad595ab2b56_1d5b37e16e3c5
+c227844f089e1_94f729ee53dca_1c90f7056c3ff
+63a4c7498e932_5b0ab6156c2ae_0658624bef7e8
+33426684cd09a_d3b1a7634ec6a_505df1d3f1b78
+6a78d4f1a9e35_76a8ed51daa3b_ef5829a397e70
+faabf557eaafe_205e40bc81790_c1ccc2258957c
+366e6cdcd9b9b_f55deabbd577a_3d03db89df0ea
+bccb7996f32de_68b6d16da2db4_3bac1e9001f3a
+c7b58f6b1ed64_c205840b08161_033c49b0072ea
+f4f3e9e7d3cfa_07300e601cc04_e7458ab6189b4
+5198a33146629_c1c7838f071e1_804c455579c2e
+3e347c68f8d1f_96ed2dda5bb4c_905e9ad06352b
+0b1c16382c706_f4bfe97fd2ffa_111c61df4bc8f
+51b2a36546ca9_0f321e643cc88_3ec697dd8b4c6
+711ee23dc47b8_ea3fd47fa8ff5_817f4b51aef1e
+927f24fe49fc9_1e6c3cd879b0f_67beb22961724
+91dd23ba47749_4086810d021a0_40f6cd64dffd4
+7ef0fde1fbc40_3c9a7934f269e_35a3c4ab1f1b3
+7a1af435e86bd_67f4cfe99fd34_0ce852fd89dc2
+df7dbefb7df70_6d4cda99b5337_5006384057f3c
+5bb4b7696ed2e_61c8c39187231_f73412a7f0202
+0b0c16182c306_291c5238a4714_cc315b5b2088e
+85b90b7216e43_b25364a6c94d9_cb6b9bf169534
+18da31b46368c_669ccd399a733_90fad7506dd95
+c5ff8bff17fe3_3eac7d58fab1f_6cb5c8ae7a795
+57c2af855f0ac_3ae075c0eb81e_177ba071374b0
+4c40988131026_4df69bed37da7_fd607b0904ec4
+e31fc63f8c7f2_096212c425885_d20ada41d6c2a
+a6b14d629ac54_660acc15982b3_2e399a99dd192
+ad215a42b4856_bb8b7716ee2de_ef5c5e2748e33
+f013e027c04f8_3bb87770eee1e_923dca6b59f30
+d6a7ad4f5a9ec_f79bef37de6fc_de7f2e8fb400a
+c7558eab1d564_6e76dcedb9db7_3e14e46513b97
+ac915922b2456_cf339e673cce8_d9b7aa9bed9f7
+28a45148a2914_47a68f4d1e9a4_cf8b6269a6fff
+22a445488a911_dd3bba7774eee_37d0a8b5fce1c
+c00d801b00360_353e6a7cd4f9b_72e8dbe5def6a
+23d447a88f512_4b6a96d52daa6_c2d7a9ad4c41c
+cd859b0b36167_380c7018e031c_7aa02c18d7d1b
+9027204e409c8_b7316e62dcc5c_d27ce580270df
+32926524ca499_fd65facbf597e_34233a1906bfd
+40028005000a0_6e3cdc79b8f37_bf5f9320a4186
+c15982b305660_dc65b8cb7196e_e2ee52292b278
+e511ca2394472_fa63f4c7e98fd_ea715edac7509
+6538ca7194e32_6ea4dd49ba937_f2d7a8effa805
+208c411882310_752aea55d4aba_8be60428bbcdb
+3ce279c4f389e_fc6df8dbf1b7e_3f1c277ac926a
+a71f4e3e9c7d4_9aaf355e6abce_07c0ce55c58a2
+3dec7bd8f7b1f_7472e8e5d1cba_b50b8e69c4a11
+ca3b947728ee5_142c285850b0a_a8c3128c04a9f
+79f4f3e9e7d3d_27104e209c414_47eb3b20c609b
+3ee87dd0fba20_f1ebe3d7c7af9_47ecd9096e767
+9d313a6274c4e_fcf9f9f3f3e7e_9fa5969ddde22
+7a2ef45de8bbd_ccb9997332e66_a445af00e1996
+be837d06fa0e0_6176c2ed85db1_43646a3e4403c
+7adaf5b5eb6be_86e30dc61b8c4_f03d907f0efb5
+191c32386470d_981f303e607cc_60a90d7f12e32
+58e0b1c16382c_24b2496492c92_2da39d62040b9
+c78f8f1f1e3e4_b6036c06d80db_0a4176105d842
+7236e46dc8db9_b45f68bed17da_b2603b8c18750
+186630cc6198c_f67becf7d9efb_1db5955bc96be
+8d231a46348c6_bd817b02f605f_c8697bbb99686
+943b287650eca_a34b46968d2d2_ed9b4b5915f61
+c81b9037206e4_301a6034c0698_7ff5e5d9a4b66
+4d569aad355a7_486690cd219a4_03d95cf345712
+af1b5e36bc6d8_4afc95f92bf26_4d70007bc146c
+90bd217a42f48_6b1ed63dac7b6_1a855bf8e7dd2
+4e7c9cf939f27_71cce399c7339_cf1b757a501f1
+90d121a243448_7ce8f9d1f3a3e_0d60ff3a676de
+9b4d369a6d34e_6a74d4e9a9d35_227fbe5016ddf
+216242c485891_4186830d061a1_ccd142460b129
+0926124c24985_fa23f447e88fd_0c37e42e47f36
+1d503aa07540f_60c8c19183230_9e142bed1c14a
+a58f4b1e963d3_59b6b36d66dad_3829ee931bdfa
+8d951b2a36547_5bc0b7816f02e_24aeae5edd06a
+90c1218243048_79c2f385e70bd_0f94ec8426a0f
+29e653cca7995_9d7f3afe75fce_70dd7e45f1330
+2c125824b0496_8e011c0238047_8204833d1f2e7
+4ace959d2b3a6_df45be8b7d170_61657c7030ace
+d5c7ab8f571eb_d84bb097612ec_fd45d6f93dc6e
+e541ca8395072_98433086610cc_30477c50e4409
+8a6314c6298c5_2b0e561cac396_519b1e972c72a
+a7ab4f569ead4_b0c5618ac3158_f53b5aadcc06d
+438a87150e2a2_1b5036a06d40e_24597c9801866
+d09fa13f427e8_30fc61f8c3f18_85ff47547f906
+6c5cd8b9b1736_5a12b425684ad_0d87835a1c635
+d6d7adaf5b5ec_232846508ca12_9dfcf6b831d81
+433e867d0cfa2_2d605ac0b5817_129349ec50fdb
+7adaf5b5eb6be_6152c2a5854b1_127fcbd4b4f63
+813d027a04f40_80b5016a02d40_005a80b700811
+5a16b42d685ad_868d0d1a1a344_c5b61a26024de
+1ee03dc07b80f_85010a0214042_7994b2736d2df
+9b6d36da6db4e_bb9f773eee7de_dad757b532090
+8e8f1d1e3a3c8_5818b0316062c_2884d9bc7e5d3
+cd4d9a9b35366_974b2e965d2cc_21f2725bbaefe
+445488a911522_abb15762aec56_8443358ca6e8f
+8d591ab235646_c9f793ef27de5_bc3a975592739
+e341c6838d072_e3d7c7af8f5f2_ff614414ffcb2
+116e22dc45b89_ccf399e733ce6_2fb6221648f6f
+e849d093a1274_a4e549ca93952_28fd72be99708
+2a46548ca9195_4d249a4934926_ca696952447a3
+2a905520aa415_4900920124024_d0a18f60946de
+d78baf175e2ec_894d129a25344_32edf1293a076
+094e129c25385_350a6a14d429a_b78a93320a4db
+056e0adc15b83_5baeb75d6ebae_80fbd2da9eb39
+9f193e327c650_85210a4214842_1115b7402e61d
+8bc917922f246_27564eac9d594_5711babc13575
+d2c7a58f4b1ea_0888111022204_c3b9becfa23f3
+06a40d481a903_60ccc19983330_7d282d4eba182
+9dc73b8e771cf_05380a7014e03_9582e7dbcca3a
+a06740ce819d0_ea4bd497a92f5_b2d60c6f05a12
+5ff2bfe57fcb0_babd757aeaf5e_970152d880fb8
+6554caa995533_fb75f6ebedd7e_68870b8b4a360
+98e731ce639cc_1cc039807300e_6f9de3e3eeb8a
+38ba7174e2e9c_cc97992f325e6_5ba1f62fade09
+dee3bdc77b8f0_bcfd79faf3f5e_13808cf384b8c
+037c06f80df02_bd537aa6f54de_2a5595b836538
+6b18d631ac636_5caeb95d72bae_0a954087d4680
+34326864d0c9a_2ee25dc4bb898_047d8462783c0
+1386270c4e18a_1d943b287650f_edf911068c5d6
+28bc5178a2f14_c9cb9397272e5_4bdecbdecbdec
+0a5414a829505_ca6794cf299e5_2977814bbc0a6
+995932b26564c_6710ce219c434_23d9856c2db29
+3aa27544ea89d_2ecc5d98bb317_0a01c88e32b05
+9d433a86750ce_54f6a9ed53daa_36487aaafac18
+9aeb35d66bace_f6cfed9fdb3fc_a26d6b80ae214
+60c8c19183230_2f345e68bcd18_29dc5dbf86d64
+4cd299a5334a6_0dde1bbc37787_3bb85176f36a6
+24de49bc93792_02ac05580ab01_21d7d6fd41500
+e285c50b8a172_f541ea83d507a_ecdd1118f74a4
+a03b407680ed0_f4a3e947d28fa_a9ad081e2b97f
+a18b4316862d1_0a04140828105_91d2a2067b23b
+59eeb3dd67bad_25764aec95d93_2dc5affcba861
+1b2436486c90e_328a6514ca299_d8eae2e673183
+157c2af855f0b_06de0dbc1b783_0e3c5a067b88b
+f21be437c86f9_eb6dd6dbadb76_037ad126ca43e
+e871d0e3a1c74_dd99bb337666f_05d0045af0d1c
+26204c4098813_2bfa57f4afe96_f60325a16e1e4
+117622ec45d89_a6a94d529aa54_4b4374a1972f5
+bca37946f28de_1a38347068e0d_93545af7a8a20
+28f651eca3d94_180e301c6038c_0f745dc177b56
+1f283e507ca10_064e0c9c19383_184145017aaf8
+c327864f0c9e2_f4fbe9f7d3efa_cd131d6e548a6
+07240e481c904_a5874b0e961d3_3f9e38327c076
+1ba837506ea0e_6d8cdb19b6337_8d4c54c332579
+4f4a9e953d2a8_04c2098413082_492c6cfa5ad0b
+e2a3c5478a8f2_c2038407080e1_128f5c28f5c29
+827104e209c41_2a7054e0a9c15_4b7d0c41eb1aa
+c34f869f0d3e2_e17fc2ff85ff0_dfe6368c4868e
+7fe2ffc5ff8c0_e009c01380270_9972593cc04eb
+bc1b7836f06de_3c2a7854f0a9e_67982711bcf1d
+0d361a6c34d87_9b0136026c04e_4f5d31a90a2a7
+e03fc07f80ff0_8107020e041c0_3f4fcca2c71e9
+adab5b56b6ad7_fd49fa93f527e_aff4e0d68472a
+9ad335a66b4ce_7f10fe21fc440_128d06353ee3a
+96f92df25be4c_e53fca7f94ff2_ad68b32dec986
+0b6c16d82db06_e203c407880f1_1c0edf120edf1
+1bb437686ed0e_85270a4e149c2_754376232242a
+942f285e50bca_028a05140a281_9036f4e41e92a
+6316c62d8c5b2_7a24f449e893d_e0c8907fded3a
+316462c8c5919_8205040a08141_950f250fb99e4
+c6678ccf199e3_5ab8b5716ae2d_4f81d4dcfabeb
+b2a16542ca85a_e9add35ba6b75_c671322b496d1
+abc35786af0d6_b4ad695ad2b5a_f58c4ba570d08
+6d48da91b5237_055a0ab415683_65cdfb4930e2c
+36846d08da11b_f295e52bca57a_3edf2c94581b9
+80b9017202e40_31ba6374c6e99_422550ba50a63
+a50d4a1a94352_20c2418483090_7548ebd48ebd5
+43d287a50f4a2_5606ac0d581ab_e4bff1c74706b
+b425684ad095a_09c2138427085_a421b7451e1a8
+f41fe83fd07fa_c137826f04de0_1d02e96d3bc26
+dfd5bfab7f570_a24d449a89351_25a87dbb3226e
+3e587cb0f961f_a2c345868b0d2_85399e7da18c2
+d9b9b37366e6d_3cc47988f311e_7ed902df7393d
+b8917122e245c_56d6adad5b5ac_48f9b0139a064
+0cda19b433686_7c28f851f0a3e_6a17134018947
+e5c1cb8397073_3e067c0cf819f_8704bded82a5d
+870b0e161c2c4_7e94fd29fa53f_05a96574b33ae
+dae5b5cb6b96e_588cb1196232c_60d925e959757
+1fb43f687ed10_372c6e58dcb1c_d9623b2bde16b
+1d903b207640f_5cfab9f573eae_a2f5cc6b61161
+34386870d0e1a_6fa2df45be8b8_ad40acb29de66
+d40ba817502ea_827d04fa09f41_360579a085a36
+d1cba397472e9_6924d249a4934_4a2ee86f6d59c
+dee1bdc37b870_b6876d0eda1dc_178e86ba2c6c3
+a4bf497e92fd2_94d929b25364a_0a0daf3f0d7df
+f407e80fd01fa_760aec15d82bb_563a640e499ea
+85670ace159c2_5bd6b7ad6f5ae_1e96fe7e56982
+5366a6cd4d9aa_0240048009001_5071a1388349b
+fa6bf4d7e9afd_6e9add35ba6b7_61a24b49a6a8a
+2cfc59f8b3f16_28cc5198a3314_039cab91d58f2
+88a1114222844_94032806500ca_f1930288df0ca
+506ca0d941b28_5780af015e02c_f573152a3b1f4
+286650cca1994_6fc2df85bf0b8_9ca65fb79a5da
+3e1e7c3cf879f_33926724ce49a_08c7591d148c7
+b87170e2e1c5c_385c70b8e171c_68f8b1b27c1a9
+31d263a4c7499_6c52d8a5b14b6_adc8ed28b6596
+c6338c6718ce3_d49fa93f527ea_f03e242cd49cb
+3ebc7d78faf1f_016202c405881_3d06179f84a99
+83a307460e8c2_5892b125624ac_1ffe839948c3d
+15162a2c5458b_b47768eed1dda_4509d0c3c285d
+42a6854d0a9a1_59fab3f567ead_dd7a05c7e706d
+893f127e24fc4_de7fbcff79fef_a4c7545318809
+4ddc9bb937727_144a28945128a_35581cf4bc722
+744ae895d12ba_606ac0d581ab0_0e70190fde388
+76f6ededdbdbc_d41ba837506ea_9a1f7b1a81ec4
+06220c4418883_e75fcebf9d7f4_1360bde37cb68
+32986530ca619_a2234446888d1_776b38b5d721c
+2118423084610_3c6478c8f191e_d3d35eda7b6ec
+99a9335266a4d_a5b54b6a96d53_f15f9245801b5
+d6ffadff5bfec_d7b1af635ec6c_ff3ec8bce8698
+282c5058a0b14_36ae6d5cdab9b_e8172cf29f5ef
+9fc33f867f0d0_6f4cde99bd338_21c6f7456c12a
+919d233a46749_16fa2df45be8c_708930e4f521a
+6182c305860b1_b95d72bae575c_9a15f5b6a26b6
+82c5058a0b142_cb7f96ff2dfe6_aef61a194c44b
+e227c44f889f1_19c833906720d_b60a34efa74e0
+a90f521ea43d4_8c99193232646_125f2eb18b9de
+ba7574eae9d5d_7382e705ce0ba_30e367052b119
+d767aecf5d9ec_c6198c3318663_09c180358ee29
+62b2c5658acb1_d533aa6754cea_830d556c9d00e
+a08f411e823d0_9eb13d627ac50_01271725446ef
+70b4e169c2d38_397a72f4e5e9d_2d1a0e8c01f08
+3ef07de0fbc20_7ef8fdf1fbe40_aa64b316b912e
+9f753eea7dd50_12a025404a809_8347eb156782f
+2202440488091_0fda1fb43f688_11191a47a11f4
+b837706ee0ddc_d9d5b3ab6756d_dbac8acdbd8d8
+f915f22be457c_a8935126a24d4_308b4973215a2
+f511ea23d447a_59dcb3b96772d_72e1b429fbbb7
+93ad275a4eb4a_a429485290a52_ebe96fc1783f8
+f50bea17d42fa_ed57daafb55f6_03ff51a432f3b
+6f60dec1bd838_96592cb25964b_cee5d45c79a73
+d9bdb37b66f6d_686ad0d5a1ab4_507e14773e436
+4b26964d2c9a6_d823b047608ec_671bb8b264b82
+a65b4cb6996d3_e603cc07980f3_bcf0329161f9b
+9839307260e4c_63aec75d8ebb2_25d0d53af124c
+7850f0a1e143c_3086610cc2198_3c5a0156ff471
+206040c081810_77ceef9ddf3bc_88e1e8c651e53
+b16162c2c5858_fe11fc23f847f_b3051ffc1c376
+b9db73b6e76dd_faf3f5e7ebcfe_be419603b96d5
+ab335666accd6_b827704ee09dc_f0ee9d5986a39
+60a2c145828b0_15a42b485690b_45261d769fd29
+0c7418e831d06_06ee0ddc1bb83_0560c6247b796
+8d5b1ab6356c6_fc7bf8f7f1efe_901a6eab66a13
+5768aed15da2c_d7f1afe35fc6c_748e3526e888e
+218e431c86391_6194c32986531_a349e171715a3
+ca07940f281e5_184430886110c_a25f365b6a73c
+c1a5834b06961_85930b26164c3_27799d0465095
+278c4f189e314_da4fb49f693ed_3f0841a58ab93
+f41fe83fd07fa_6008c01180230_6bb112ccc53ca
+839d073a0e742_1ef43de87bd10_59cd13d0cca36
+de7fbcff79fef_d781af035e06c_03cbe4a1aeb36
+a6d14da29b454_fa59f4b3e967d_ab88ca653092a
+f79fef3fde7fc_80e501ca03940_4ef83098bb71b
+24d449a893512_4c129825304a6_c37e4a1b45a01
+87850f0a1e144_de85bd0b7a170_a2e91dc9d707e
+bc017802f005e_c2e585cb0b962_f82ce3c43953d
+4cbc997932f26_96832d065a0cc_a31477a7d52cf
+16682cd059a0b_63f0c7e18fc32_9078ec39f76ce
+1f2c3e587cb10_98d331a6634cc_67a58376b46ce
+847f08fe11fc2_4d7a9af535ea7_2a3c1e9c8f763
+e875d0eba1d74_acb15962b2c56_23b0e458ffb4c
+c9239247248e4_ed17da2fb45f6_daaacbe508e21
+c9c39387270e5_5d98bb317662f_4f353eeff3d36
+8f451e8a3d148_6162c2c5858b1_213d4e5494261
+c7258e4b1c964_bfbb7f76feee0_043d40b38a91b
+a0ef41de83bd0_3f427e84fd0a0_4e523150ca12d
+d06ba0d741ae8_03fc07f80ff02_c94d81c9e32e9
+77e6efcddf9bc_7296e52dca5b9_03ab814771f3a
+7f78fef1fde40_5362a6c54d8aa_214157f936076
+3fc67f8cff1a0_726ee4ddc9bb9_b9fb87882e0b8
+6422c845908b2_ea1bd437a86f5_740b08dd15903
+e18fc31f863f1_80cb0196032c0_406122bde7c20
+357c6af8d5f1b_e9e3d3c7a78f5_437435908f300
+30c26184c3098_2dca5b94b7297_0284b494c51f7
+c0bd817b02f60_dc0db81b7036e_e29fcf7756c52
+d1ffa3ff47fe9_d66bacd759aeb_fb2fe853ac1fa
+ed8fdb1fb63f7_5aecb5d96bb2e_6c3499d61c546
+f313e627cc4fa_56baad755aeab_74c8a781f2f99
+afe95fd2bfa58_daddb5bb6b76e_d1afc3afb8e77
+6c94d929b2536_a7994f329e654_b8aa8b3d603fe
+3f6a7ed4fdaa0_0aa815502aa05_32a6a579ef92f
+64fcc9f993f32_9fe33fc67f8d0_b77ce238c94a8
+6c2ad855b0ab6_c39187230e462_9ce701a02074f
+0d401a8035007_9133226644cc8_579c22efb03cb
+691ed23da47b4_00b8017002e00_681bfc1ac4f7f
+8ee11dc23b848_f817f02fe05fc_9522b782e064e
+e3dfc7bf8f7f2_d629ac5358a6b_077739e69eeb8
+c38d871b0e362_f7cbef97df2fc_cae7d09d464ce
+c215842b08561_df39be737ce70_e0dd90710d716
+ce339c6738ce7_d969b2d365a6c_f3dff9ea9495e
+5c3ab87570eae_1c9839307260e_393db5f107e80
+2d9c5b38b6717_46ac8d591ab23_d8b7d2664e939
+8e0d1c1a38347_b9b97372e6e5d_cd60efcb7a1a4
+6084c10982130_7822f045e08bc_dfd9e2901f4f0
+744ae895d12ba_b1cf639ec73d9_b76503d859a09
+b32d665accb5a_0ede1dbc3b787_9b4a795ca3735
+301e603cc0798_cc439887310e6_524d97b57772c
+4e7a9cf539ea7_d1bfa37f46fe9_6fb1cf3be7c7b
+87f30fe61fcc4_e8afd15fa2bf4_9aa5d2252544c
+208e411c82390_061a0c3418683_19d68c97462c6
+bdbf7b7ef6fdf_125624ac49589_9ff455cb898b2
+b6d56daadb55c_9bf937f26fe4e_10b0df02ed6e3
+72eee5ddcbbba_531aa6354c6aa_18075c5d24734
+a1ab435686ad1_e5d3cba7974f3_b82b793b6184e
+f1b3e367c6cf9_bdf37be6f7cdf_1db54c87e9530
+796af2d5e5abd_13c027804f00a_5e62a0dc43833
+b3d767aecf5da_a8e551caa3954_0698422a042bb
+1d083a107420e_2a345468a8d15_e9624a918e3c4
+7f1cfe39fc740_8e851d0a3a148_ec34c6e1c5b14
+4228845108a21_ac3b5876b0ed6_812d4dcf89edf
+ef15de2bbc578_8edd1dba3b748_3dc1df22b985d
+eebfdd7fbaff8_b125624ac4958_2468be6d34524
+c47588eb11d62_07f60fec1fd84_b6d0113715e5d
+f417e82fd05fa_9dcb3b96772cf_3563f9bc5ebc7
+d1eda3db47b69_3dc87b90f721f_7757c78ea950d
+038007000e002_393e727ce4f9d_a827bd7e6f887
+de8bbd177a2f0_89ad135a26b45_37306ea1e4f64
+7454e8a9d153a_5506aa0d541aa_1780198614f30
+557eaafd55fab_096212c425885_496bae7c339c2
+539aa7354e6aa_c0d581ab03560_8365d5fa8dfb3
+1b8837106e20e_457e8afd15fa3_bdfe67027211f
+d519aa335466a_c1bd837b06f61_0b0520a7c82de
+61bec37d86fb1_c7658ecb1d964_8db6b77336845
+bdef7bdef7bdf_c4f389e713ce2_f811cdc4955aa
+cdef9bdf37be7_16c02d805b00b_a83bfbd6a48dc
+e0afc15f82bf0_85f90bf217e43_3b8caf9639ad7
+d077a0ef41de8_167a2cf459e8b_aafa572991f84
+42f685ed0bda2_605cc0b981730_d5480367db43a
+7f96ff2dfe5c0_39387270e4e1d_3983929aa4b4f
+0482090412082_04f609ec13d82_ff1c675046636
+d04fa09f413e8_854b0a96152c2_3154fa249f100
+9fc73f8e7f1d0_4a9095212a425_41fdfaa9dc253
+84b1096212c42_e02bc05780af0_9e74edb8fd625
+9c0f381e703ce_522ea45d48ba9_37ec9a0128bfa
+a7c14f829f054_997332e665ccc_08f1a88b1e212
+490a9215242a4_b6bf6d7edafdc_7ffa2a3fb13a5
+eec7dd8fbb1f8_ad515aa2b5456_270903bb4b265
+9bed37da6fb4e_005200a401480_9b696f0d4bd85
+d825b04b6096c_b6876d0eda1dc_13a0138e90115
+c6018c0318063_12d425a84b509_a6e6db365b033
+dfb7bf6f7edf0_07dc0fb81f704_d16da8ff1cf6a
+9cc939927324e_d049a09341268_c734b4bd0261d
+a0a5414a82950_e517ca2f945f2_b7c187101256e
+6b88d711ae236_a6774cee99dd3_b8943d2aa2fdb
+3cba7974f2e9e_5376a6ed4ddaa_ddb5a525e26c4
+466a8cd519aa3_4030806100c20_04fa7bfe2d0ff
+e145c28b85170_79a6f34de69bd_463dcb50a333e
+7712ee25dc4bc_11fe23fc47f89_5e717eda9c6af
+c16582cb05960_07400e801d004_b50505a13a5b5
+1ab235646ac8d_fa61f4c3e987d_1dd504f2f0368
+5de4bbc97792f_9bb7376e6edce_b31e8e55e8147
+89ab135626ac5_ad835b06b60d7_d545705a992ed
+729ae535ca6b9_a4d549aa93552_c2e40a529c2e4
+a097412e825d0_246c48d891b12_6cb3b7bf0d0e9
+6138c27184e30_acbb5976b2ed6_a5d3075eecb95
+82f105e20bc42_c7cd8f9b1f364_b2a5ff7275f9d
+71a0e341c6839_8f471e8e3d1c8_d9faee41e6a74
+ef25de4bbc978_8e1b1c36386c7_3e6702cb167cc
+bfcb7f96ff2e0_8f211e423c848_1f36c17f3eef1
+bc237846f08de_c5618ac315862_f59002e4d6bb3
+2f0c5e18bc318_c21f843f087e1_58b51373fb0f2
+98833106620cc_c06980d301a60_d2713aca9d4c3
+3b007600ec01e_cd4d9a9b35366_5d9ec9147a36e
+a31346268c4d2_1f7a3ef47de90_75303a546efb8
+fdd3fba7f74ff_685ed0bda17b4_6a2bfa733234a
+f4f1e9e3d3c7a_ec8fd91fb23f6_045b60cb7b2c1
+441a8835106a2_a0a1414282850_8e4b2fc05342e
+b52b6a56d4ada_430e861d0c3a2_5a6d2f75ea2ec
+06360c6c18d83_537ea6fd4dfaa_8b725f9a935a5
+cdc79b8f371e7_baff75feebfde_0ada89325bc26
+1f283e507ca10_d86fb0df61bec_373473ff7df26
+da6db4db69b6d_4fc89f913f228_69b3c520810a1
+98df31be637cc_5272a4e549ca9_3544b130d610f
+6870d0e1a1c34_fa5ff4bfe97fd_6c71d91640c2a
+6618cc3198633_a107420e841d0_b7a5d5e42a035
+207440e881d10_b70b6e16dc2dc_5062d5f644fcf
+e1bfc37f86ff1_68a2d145a28b4_55f914248f0a7
+f179e2f3c5e78_2e905d20ba417_a4ea676644e4b
+ebb3d767aecf6_2aac5558aab15_a57339f8b3699
+d577aaef55dea_baf375e6ebcde_0f5330a82fae7
+fb2bf657ecafe_e4f3c9e793cf2_0bbab674dd52d
+477a8ef51dea4_ffa9ff53fea80_47b19a381bdcf
+fe91fd23fa480_30a06140c2818_ad11d6ba80c08
+033a06740ce82_cd539aa7354e6_1fb36b2345f50
+60cac195832b0_58bab17562eac_05fccc21b270f
+262e4c5c98b93_88f911f223e44_7f48f044a5e64
+0c26184c30986_6016c02d805b0_85efa9a7d0a5a
+4a24944928925_ceb99d733ae68_6d4ca188f4293
+c29f853f0a7e2_6ecedd9dbb3b8_3a7edf0e2a770
+b16162c2c5858_8809101220244_1aff9635dd376
+a3c347868f0d2_9f3d3e7a7cf50_02c9f15906ae4
+1c30386070c0e_2d665accb5997_e2c31f481b131
+38007000e001c_a27544ea89d51_7dbf15610f2ce
+5ffcbff97ff30_6b96d72dae5b6_efa991f5db3b6
+d989b3136626d_34386870d0e1a_894efdc987e33
+57eeafdd5fbac_e457c8af915f2_6b925af68f63f
+d2a1a5434a86a_d671ace359c6b_fbd9c10da491a
+46fc8df91bf24_429c85390a721_0378c63d0435b
+097612ec25d85_cc27984f309e6_275edddcd4014
+438a87150e2a2_5a40b4816902d_de6aa461cdeb7
+9187230e461c9_cbfd97fb2ff66_beed57afe43e0
+c47b88f711ee2_8b4916922d246_250aef27ed423
+fa61f4c3e987d_621ec43d887b1_6e12c61bb8624
+e7c9cf939f274_208e411c82390_b0c1304fa0676
+b415682ad055a_79c8f391e723d_2781522657272
+8aa5154a2a946_e203c407880f1_a331ece131ecf
+60f4c1e983d30_062e0c5c18b83_58a2f250775f4
+cb0396072c0e6_926324c6498c9_2406ae2a77c4e
+6d00da01b4036_430086010c022_2149ea4406c2f
+0abe157c2af85_906b20d641ac8_5512d742e97ba
+c2b5856b0ad62_845b08b6116c2_291a4e7cb6d93
+0c2a185430a86_5398a7314e62a_944ddc09deefa
+f561eac3d587a_0e441c8839107_daeab959545b4
+402a805500aa0_fc5bf8b7f16fe_42757ecbcc920
+b9017202e405c_eba3d747ae8f6_cb44cce776023
+ddcdbb9b7736f_afc95f92bf258_1b486759ba44e
+ff99ff33fe680_3cb07960f2c1e_9d8f517d4182e
+db5fb6bf6d7ee_f6dfedbfdb7fc_e40008253a23b
+940b2816502ca_f4fbe9f7d3efa_9ced8e44b2eae
+610ac215842b0_d939b27364e6c_7df81d0b4c1b0
+8a6b14d629ac5_80d501aa03540_066083383d3e8
+cce999d333a66_eb41d683ad076_e05fc1db02106
+5de0bbc17782f_4a5094a129425_0f29690634d61
+e09fc13f827f0_07ee0fdc1fb84_d22ef40abafea
+13f227e44fc8a_95b92b7256e4b_5c3a6d0379b29
+307060e0c1c18_ee01dc03b8077_3b86fa53edaf1
+3d667accf599f_ad895b12b6257_7a55e8bf0eea1
+6bdcd7b9af736_78a8f151e2a3c_ee9abe67da520
+2c9c5938b2716_d5e3abc7578eb_478d0ab1345f1
+97b32f665eccc_abd557aaaf556_e7e7e0b277aac
+395a72b4e569d_ff85ff0bfe180_39a52fa6ba07d
+d1afa35f46be9_4bd697ad2f5a6_67421e5a62571
+6a32d465a8cb5_b2496492c9259_ab0317189693f
+b5896b12d625b_38ac7158e2b1c_663b2b3f68efe
+5b50b6a16d42e_27164e2c9c594_2d4f5e6a69996
+fb97f72fee5fe_44a8895112a22_903f939334948
+bad775aeeb5de_095e12bc25785_ab359673dba45
+68e0d1c1a3834_beb17d62fac60_9da3811285f99
+32b46568cad19_d80fb01f603ec_4ca7458292601
+a8b35166a2cd4_67fccff99ff34_2e05089e02a23
+180030006000c_5e0cbc197832f_998af91a8749b
+27be4f7c9ef94_0d421a8435087_192e59d97e37a
+b7cd6f9adf35c_3a307460e8c1d_66595ce558b1d
+88b3116622cc4_7b74f6e9edd3e_08ef20c4d5ae2
+99833306660cd_eeb7dd6fbadf8_a7d15ca74ef4d
+ca47948f291e5_07f80ff01fe04_bc71ce01fc324
+8eb71d6e3adc8_703ce079c0f38_1530238b17fda
+b6e16dc2db85c_6460c8c191832_3b43c4660793a
+e885d10ba2174_ac35586ab0d56_240eed822904c
+b5a96b52d6a5b_f5a1eb43d687b_beb509d81ae39
+aa6554caa9955_fee5fdcbfb980_ab50b21378e08
+95212a425484a_66cccd999b334_210e3e0ac2272
+128425084a109_10d821b043608_019196de0245c
+673ace759ceb4_af455e8abd158_aa7932ef4a6dc
+4fa29f453e8a8_13da27b44f68a_377b0e1fba654
+06ee0ddc1bb83_447c88f911f22_9edf0ad46a7c4
+bc6178c2f185e_d76daedb5db6c_e29fe28a29bcf
+5f5cbeb97d730_af255e4abc958_a14116c826db1
+781af035e06bc_acc35986b30d6_c11e99bfd03bc
+0c5c18b831706_3bec77d8efb1e_b2ea6e4bbabd9
+b5456a8ad515a_9235246a48d49_165148ad170c6
+6c92d925b24b6_ffb7ff6ffee00_6cc625698dab0
+95432a86550ca_9e3b3c7678ecf_f4ea00808ce93
+bd137a26f44de_e751cea39d474_d39df99f3f54f
+e9bdd37ba6f75_21e443c887911_b07c30284ac9f
+5670ace159c2b_0aac15582ab05_48bc5782c75df
+b37566eacdd5a_7ad6f5adeb5be_26429593bab10
+a35746ae8d5d2_fb95f72bee57e_a6fcda06e545d
+b6a76d4eda9dc_0cb4196832d06_a1ea6dd96dadb
+e8a7d14fa29f4_47ec8fd91fb24_7d7a5e0facc23
+fcdbf9b7f36fe_5a26b44d689ad_785525038c357
+7702ee05dc0bc_e75dcebb9d774_89f75314eac99
+9c3f387e70fce_b54b6a96d52da_e2ac5fcab9b16
+5df8bbf177e2f_cc95992b32566_850a1665f81f7
+9c7b38f671ece_7faeff5dfebc0_1336deab6027b
+388a7114e229c_5202a405480a9_d96b8ce030793
+5112a225444a8_71c8e391c7239_d2b5183c88cc1
+2b485690ad216_ba017402e805d_5aad01f0f330a
+0130026004c01_e1edc3db87b71_113c45ac1389f
+abf757eeafdd6_7a9af535ea6bd_21604b0e84524
+350c6a18d431a_82c905920b242_9918ede81ed1a
+2a8c5518aa315_8cbf197e32fc6_8146816fcd820
+80b3016602cc0_915922b245648_eac2cca581d9f
diff --git a/wally-pipelined/testbench/fp/README.md b/wally-pipelined/testbench/fp/README.md
new file mode 100644
index 000000000..c65d6e892
--- /dev/null
+++ b/wally-pipelined/testbench/fp/README.md
@@ -0,0 +1,174 @@
+These are the testvectors (TV) to test the floating-point units using
+Berkeley TestFloat written originally by John Hauser. TestFloat
+requires both TestFloat and SoftFloat.
+
+The locations at time of this README is found here:
+TestFloat-3e: http://www.jhauser.us/arithmetic/TestFloat.html
+SoftFloat-3e: http://www.jhauser.us/arithmetic/SoftFloat.html
+
+These files have been compiled on a x86_64 environment by going into
+the build/Linux-x86_64-GCC directory and typing make. A script
+createX.sh (e.g., create_vectors32.sh) has been included that create
+the TV for each rounding mode and operation. These scripts must be
+run in the build directory of TestFloat.
+
+After each TV has been created a script (included) is run called
+undy.sh that puts an underscore between vector to allow SystemVerilog
+readmemh to read correctly.
+
+./undy.sh file.tv
+
+To remove all the underscores from all the TV files, one can run the
+command that will add underscores appropriately to all the files.
+
+sed -i 's/ /_/g' *.tv
+
+Note: due to size, the fxx_fma_xx.tv vectors are not included.
+However, they can easily be created with the create scripts.
+
+James Stine
+10/7/2021
+
+List of TestVectors (TV) and sizes
+
+ 46464 185856 836352 f16_add_rd.tv
+ 46464 185856 836352 f16_add_rne.tv
+ 46464 185856 836352 f16_add_ru.tv
+ 46464 185856 836352 f16_add_rz.tv
+ 46464 185856 836352 f16_div_rd.tv
+ 46464 185856 836352 f16_div_rne.tv
+ 46464 185856 836352 f16_div_ru.tv
+ 46464 185856 836352 f16_div_rz.tv
+ 408 1224 5304 f16_sqrt_rd.tv
+ 408 1224 5304 f16_sqrt_rne.tv
+ 408 1224 5304 f16_sqrt_ru.tv
+ 408 1224 5304 f16_sqrt_rz.tv
+ 46464 185856 836352 f16_sub_rd.tv
+ 46464 185856 836352 f16_sub_rne.tv
+ 46464 185856 836352 f16_sub_ru.tv
+ 46464 185856 836352 f16_sub_rz.tv
+ 46464 185856 1393920 f32_add_rd.tv
+ 46464 185856 1393920 f32_add_rne.tv
+ 46464 185856 1393920 f32_add_ru.tv
+ 46464 185856 1393920 f32_add_rz.tv
+ 46464 185856 1068672 f32_cmp_eq_signaling.tv
+ 46464 185856 1068672 f32_cmp_eq.tv
+ 46464 185856 1068672 f32_cmp_le_quiet.tv
+ 46464 185856 1068672 f32_cmp_le.tv
+ 46464 185856 1068672 f32_cmp_lt_quiet.tv
+ 46464 185856 1068672 f32_cmp_lt.tv
+ 46464 185856 1393920 f32_div_rd.tv
+ 46464 185856 1393920 f32_div_rne.tv
+ 46464 185856 1393920 f32_div_ru.tv
+ 46464 185856 1393920 f32_div_rz.tv
+ 600 1800 17400 f32_f64_rd.tv
+ 600 1800 17400 f32_f64_rne.tv
+ 600 1800 17400 f32_f64_ru.tv
+ 600 1800 17400 f32_f64_rz.tv
+ 600 1800 12600 f32_i32_rd.tv
+ 600 1800 12600 f32_i32_rne.tv
+ 600 1800 12600 f32_i32_ru.tv
+ 600 1800 12600 f32_i32_rz.tv
+ 600 1800 17400 f32_i64_rd.tv
+ 600 1800 17400 f32_i64_rne.tv
+ 600 1800 17400 f32_i64_ru.tv
+ 600 1800 17400 f32_i64_rz.tv
+ 46464 46464 1393920 f32_mul_rd.tv
+ 46464 46464 1393920 f32_mul_rne.tv
+ 46464 46464 1393920 f32_mul_ru.tv
+ 46464 46464 1393920 f32_mul_rz.tv
+ 600 1800 12600 f32_sqrt_rd.tv
+ 600 1800 12600 f32_sqrt_rne.tv
+ 600 1800 12600 f32_sqrt_ru.tv
+ 600 1800 12600 f32_sqrt_rz.tv
+ 46464 185856 1393920 f32_sub_rd.tv
+ 46464 185856 1393920 f32_sub_rne.tv
+ 46464 185856 1393920 f32_sub_ru.tv
+ 46464 185856 1393920 f32_sub_rz.tv
+ 600 1800 12600 f32_ui32_rd.tv
+ 600 1800 12600 f32_ui32_rne.tv
+ 600 1800 12600 f32_ui32_ru.tv
+ 600 1800 12600 f32_ui32_rz.tv
+ 600 1800 17400 f32_ui64_rd.tv
+ 600 1800 17400 f32_ui64_rne.tv
+ 600 1800 17400 f32_ui64_ru.tv
+ 600 1800 17400 f32_ui64_rz.tv
+ 46464 185856 2509056 f64_add_rd.tv
+ 46464 185856 2509056 f64_add_rne.tv
+ 46464 185856 2509056 f64_add_ru.tv
+ 46464 185856 2509056 f64_add_rz.tv
+ 46464 185856 1812096 f64_cmp_eq_signaling.tv
+ 46464 185856 1812096 f64_cmp_eq.tv
+ 46464 185856 1812096 f64_cmp_le_quiet.tv
+ 46464 185856 1812096 f64_cmp_le.tv
+ 46464 185856 1812096 f64_cmp_lt_quiet.tv
+ 46464 185856 1812096 f64_cmp_lt.tv
+ 46464 185856 2509056 f64_div_rd.tv
+ 46464 185856 2509056 f64_div_rne.tv
+ 46464 185856 2509056 f64_div_ru.tv
+ 46464 185856 2509056 f64_div_rz.tv
+ 768 2304 22272 f64_f32_rd.tv
+ 768 2304 22272 f64_f32_rne.tv
+ 768 2304 22272 f64_f32_ru.tv
+ 768 2304 22272 f64_f32_rz.tv
+ 768 2304 22272 f64_i32_rd.tv
+ 768 2304 22272 f64_i32_rne.tv
+ 768 2304 22272 f64_i32_ru.tv
+ 768 2304 22272 f64_i32_rz.tv
+ 768 2304 28416 f64_i64_rd.tv
+ 768 2304 28416 f64_i64_rne.tv
+ 768 2304 28416 f64_i64_ru.tv
+ 768 2304 28416 f64_i64_rz.tv
+ 46464 185856 2509056 f64_mul_rd.tv
+ 46464 185856 2509056 f64_mul_rne.tv
+ 46464 185856 2509056 f64_mul_ru.tv
+ 46464 185856 2509056 f64_mul_rz.tv
+ 768 2304 28416 f64_sqrt_rd.tv
+ 768 2304 28416 f64_sqrt_rne.tv
+ 768 2304 28416 f64_sqrt_ru.tv
+ 768 2304 28416 f64_sqrt_rz.tv
+ 46464 185856 2509056 f64_sub_rd.tv
+ 46464 185856 2509056 f64_sub_rne.tv
+ 46464 185856 2509056 f64_sub_ru.tv
+ 46464 185856 2509056 f64_sub_rz.tv
+ 768 2304 22272 f64_ui32_rd.tv
+ 768 2304 22272 f64_ui32_rne.tv
+ 768 2304 22272 f64_ui32_ru.tv
+ 768 2304 22272 f64_ui32_rz.tv
+ 768 2304 28416 f64_ui64_rd.tv
+ 768 2304 28416 f64_ui64_rne.tv
+ 768 2304 28416 f64_ui64_ru.tv
+ 768 2304 28416 f64_ui64_rz.tv
+ 372 1116 7812 i32_f32_rd.tv
+ 372 1116 7812 i32_f32_rne.tv
+ 372 1116 7812 i32_f32_ru.tv
+ 372 1116 7812 i32_f32_rz.tv
+ 372 1116 10788 i32_f64_rd.tv
+ 372 1116 10788 i32_f64_rne.tv
+ 372 1116 10788 i32_f64_ru.tv
+ 372 1116 10788 i32_f64_rz.tv
+ 756 2268 21924 i64_f32_rd.tv
+ 756 2268 21924 i64_f32_rne.tv
+ 756 2268 21924 i64_f32_ru.tv
+ 756 2268 21924 i64_f32_rz.tv
+ 756 2268 27972 i64_f64_rd.tv
+ 756 2268 27972 i64_f64_rne.tv
+ 756 2268 27972 i64_f64_ru.tv
+ 756 2268 27972 i64_f64_rz.tv
+ 372 1116 7812 ui32_f32_rd.tv
+ 372 1116 7812 ui32_f32_rne.tv
+ 372 1116 7812 ui32_f32_ru.tv
+ 372 1116 7812 ui32_f32_rz.tv
+ 372 1116 10788 ui32_f64_rd.tv
+ 372 1116 10788 ui32_f64_rne.tv
+ 372 1116 10788 ui32_f64_ru.tv
+ 372 1116 10788 ui32_f64_rz.tv
+ 756 2268 21924 ui64_f32_rd.tv
+ 756 2268 21924 ui64_f32_rne.tv
+ 756 2268 21924 ui64_f32_ru.tv
+ 756 2268 21924 ui64_f32_rz.tv
+ 756 2268 27972 ui64_f64_rd.tv
+ 756 2268 27972 ui64_f64_rne.tv
+ 756 2268 27972 ui64_f64_ru.tv
+ 756 2268 27972 ui64_f64_rz.tv
+ 2654496 10007904 91305888 total
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/COPYING.txt b/wally-pipelined/testbench/fp/SoftFloat-3e/COPYING.txt
new file mode 100644
index 000000000..9c05d49ca
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/COPYING.txt
@@ -0,0 +1,37 @@
+
+License for Berkeley SoftFloat Release 3e
+
+John R. Hauser
+2018 January 20
+
+The following applies to the whole of SoftFloat Release 3e as well as to
+each source file individually.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/README.html b/wally-pipelined/testbench/fp/SoftFloat-3e/README.html
new file mode 100644
index 000000000..7989e0c26
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/README.html
@@ -0,0 +1,49 @@
+
+
+
+
+Berkeley SoftFloat Package Overview
+
+
+
+
+Package Overview for Berkeley SoftFloat Release 3e
+
+
+John R. Hauser
+2018 January 20
+
+
+
+Berkeley SoftFloat is a software implementation of binary floating-point that
+conforms to the IEEE Standard for Floating-Point Arithmetic.
+SoftFloat is distributed in the form of C source code.
+Building the SoftFloat sources generates a library file (typically
+softfloat.a
or libsoftfloat.a
) containing the
+floating-point subroutines.
+
+
+
+The SoftFloat package is documented in the following files in the
+doc
subdirectory:
+
+
+
+Other files in the package comprise the source code for SoftFloat.
+
+
+
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/README.txt b/wally-pipelined/testbench/fp/SoftFloat-3e/README.txt
new file mode 100644
index 000000000..f819baa5c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/README.txt
@@ -0,0 +1,21 @@
+
+Package Overview for Berkeley SoftFloat Release 3e
+
+John R. Hauser
+2018 January 20
+
+Berkeley SoftFloat is a software implementation of binary floating-point
+that conforms to the IEEE Standard for Floating-Point Arithmetic. SoftFloat
+is distributed in the form of C source code. Building the SoftFloat sources
+generates a library file (typically "softfloat.a" or "libsoftfloat.a")
+containing the floating-point subroutines.
+
+The SoftFloat package is documented in the following files in the "doc"
+subdirectory:
+
+ SoftFloat.html Documentation for using the SoftFloat functions.
+ SoftFloat-source.html Documentation for building SoftFloat.
+ SoftFloat-history.html History of the major changes to SoftFloat.
+
+Other files in the package comprise the source code for SoftFloat.
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/Makefile
new file mode 100644
index 000000000..418160051
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/Makefile
new file mode 100644
index 000000000..1cf6f5e1a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086-SSE
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/Makefile
new file mode 100644
index 000000000..2565fe56c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/Makefile
@@ -0,0 +1,323 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= ARM-VFPv2
+
+SOFTFLOAT_OPTS ?= -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/Makefile
new file mode 100644
index 000000000..570337825
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/Makefile
@@ -0,0 +1,390 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086-SSE
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration -DSOFTFLOAT_FAST_INT64 \
+ $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_eq128$(OBJ) \
+ s_le128$(OBJ) \
+ s_lt128$(OBJ) \
+ s_shortShiftLeft128$(OBJ) \
+ s_shortShiftRight128$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJam64Extra$(OBJ) \
+ s_shortShiftRightJam128$(OBJ) \
+ s_shortShiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJam64Extra$(OBJ) \
+ s_shiftRightJam128$(OBJ) \
+ s_shiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam256M$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_add128$(OBJ) \
+ s_add256M$(OBJ) \
+ s_sub128$(OBJ) \
+ s_sub256M$(OBJ) \
+ s_mul64ByShifted32To128$(OBJ) \
+ s_mul64To128$(OBJ) \
+ s_mul128By32$(OBJ) \
+ s_mul128To256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80UIToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80UI$(OBJ) \
+ s_propagateNaNExtF80UI$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128UIToCommonNaN$(OBJ) \
+ s_commonNaNToF128UI$(OBJ) \
+ s_propagateNaNF128UI$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_normSubnormalExtF80Sig$(OBJ) \
+ s_roundPackToExtF80$(OBJ) \
+ s_normRoundPackToExtF80$(OBJ) \
+ s_addMagsExtF80$(OBJ) \
+ s_subMagsExtF80$(OBJ) \
+ s_normSubnormalF128Sig$(OBJ) \
+ s_roundPackToF128$(OBJ) \
+ s_normRoundPackToF128$(OBJ) \
+ s_addMagsF128$(OBJ) \
+ s_subMagsF128$(OBJ) \
+ s_mulAddF128$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80_to_ui32$(OBJ) \
+ extF80_to_ui64$(OBJ) \
+ extF80_to_i32$(OBJ) \
+ extF80_to_i64$(OBJ) \
+ extF80_to_ui32_r_minMag$(OBJ) \
+ extF80_to_ui64_r_minMag$(OBJ) \
+ extF80_to_i32_r_minMag$(OBJ) \
+ extF80_to_i64_r_minMag$(OBJ) \
+ extF80_to_f16$(OBJ) \
+ extF80_to_f32$(OBJ) \
+ extF80_to_f64$(OBJ) \
+ extF80_to_f128$(OBJ) \
+ extF80_roundToInt$(OBJ) \
+ extF80_add$(OBJ) \
+ extF80_sub$(OBJ) \
+ extF80_mul$(OBJ) \
+ extF80_div$(OBJ) \
+ extF80_rem$(OBJ) \
+ extF80_sqrt$(OBJ) \
+ extF80_eq$(OBJ) \
+ extF80_le$(OBJ) \
+ extF80_lt$(OBJ) \
+ extF80_eq_signaling$(OBJ) \
+ extF80_le_quiet$(OBJ) \
+ extF80_lt_quiet$(OBJ) \
+ extF80_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128_to_ui32$(OBJ) \
+ f128_to_ui64$(OBJ) \
+ f128_to_i32$(OBJ) \
+ f128_to_i64$(OBJ) \
+ f128_to_ui32_r_minMag$(OBJ) \
+ f128_to_ui64_r_minMag$(OBJ) \
+ f128_to_i32_r_minMag$(OBJ) \
+ f128_to_i64_r_minMag$(OBJ) \
+ f128_to_f16$(OBJ) \
+ f128_to_f32$(OBJ) \
+ f128_to_extF80$(OBJ) \
+ f128_to_f64$(OBJ) \
+ f128_roundToInt$(OBJ) \
+ f128_add$(OBJ) \
+ f128_sub$(OBJ) \
+ f128_mul$(OBJ) \
+ f128_mulAdd$(OBJ) \
+ f128_div$(OBJ) \
+ f128_rem$(OBJ) \
+ f128_sqrt$(OBJ) \
+ f128_eq$(OBJ) \
+ f128_le$(OBJ) \
+ f128_lt$(OBJ) \
+ f128_eq_signaling$(OBJ) \
+ f128_le_quiet$(OBJ) \
+ f128_lt_quiet$(OBJ) \
+ f128_isSignalingNaN$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/platform.h
new file mode 100644
index 000000000..2fccb6c09
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/platform.h
@@ -0,0 +1,54 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#define SOFTFLOAT_INTRINSIC_INT128 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/softfloat.a b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/softfloat.a
new file mode 100644
index 000000000..6ea94ddad
Binary files /dev/null and b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/softfloat.a differ
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/Makefile
new file mode 100644
index 000000000..418160051
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/Makefile
new file mode 100644
index 000000000..1cf6f5e1a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086-SSE
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/Makefile
new file mode 100644
index 000000000..05bbf5bb5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/Makefile
@@ -0,0 +1,390 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086-SSE
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ x86_64-w64-mingw32-gcc -c -Werror-implicit-function-declaration \
+ -DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+MAKELIB = x86_64-w64-mingw32-ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_eq128$(OBJ) \
+ s_le128$(OBJ) \
+ s_lt128$(OBJ) \
+ s_shortShiftLeft128$(OBJ) \
+ s_shortShiftRight128$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJam64Extra$(OBJ) \
+ s_shortShiftRightJam128$(OBJ) \
+ s_shortShiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJam64Extra$(OBJ) \
+ s_shiftRightJam128$(OBJ) \
+ s_shiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam256M$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_add128$(OBJ) \
+ s_add256M$(OBJ) \
+ s_sub128$(OBJ) \
+ s_sub256M$(OBJ) \
+ s_mul64ByShifted32To128$(OBJ) \
+ s_mul64To128$(OBJ) \
+ s_mul128By32$(OBJ) \
+ s_mul128To256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80UIToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80UI$(OBJ) \
+ s_propagateNaNExtF80UI$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128UIToCommonNaN$(OBJ) \
+ s_commonNaNToF128UI$(OBJ) \
+ s_propagateNaNF128UI$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_normSubnormalExtF80Sig$(OBJ) \
+ s_roundPackToExtF80$(OBJ) \
+ s_normRoundPackToExtF80$(OBJ) \
+ s_addMagsExtF80$(OBJ) \
+ s_subMagsExtF80$(OBJ) \
+ s_normSubnormalF128Sig$(OBJ) \
+ s_roundPackToF128$(OBJ) \
+ s_normRoundPackToF128$(OBJ) \
+ s_addMagsF128$(OBJ) \
+ s_subMagsF128$(OBJ) \
+ s_mulAddF128$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80_to_ui32$(OBJ) \
+ extF80_to_ui64$(OBJ) \
+ extF80_to_i32$(OBJ) \
+ extF80_to_i64$(OBJ) \
+ extF80_to_ui32_r_minMag$(OBJ) \
+ extF80_to_ui64_r_minMag$(OBJ) \
+ extF80_to_i32_r_minMag$(OBJ) \
+ extF80_to_i64_r_minMag$(OBJ) \
+ extF80_to_f16$(OBJ) \
+ extF80_to_f32$(OBJ) \
+ extF80_to_f64$(OBJ) \
+ extF80_to_f128$(OBJ) \
+ extF80_roundToInt$(OBJ) \
+ extF80_add$(OBJ) \
+ extF80_sub$(OBJ) \
+ extF80_mul$(OBJ) \
+ extF80_div$(OBJ) \
+ extF80_rem$(OBJ) \
+ extF80_sqrt$(OBJ) \
+ extF80_eq$(OBJ) \
+ extF80_le$(OBJ) \
+ extF80_lt$(OBJ) \
+ extF80_eq_signaling$(OBJ) \
+ extF80_le_quiet$(OBJ) \
+ extF80_lt_quiet$(OBJ) \
+ extF80_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128_to_ui32$(OBJ) \
+ f128_to_ui64$(OBJ) \
+ f128_to_i32$(OBJ) \
+ f128_to_i64$(OBJ) \
+ f128_to_ui32_r_minMag$(OBJ) \
+ f128_to_ui64_r_minMag$(OBJ) \
+ f128_to_i32_r_minMag$(OBJ) \
+ f128_to_i64_r_minMag$(OBJ) \
+ f128_to_f16$(OBJ) \
+ f128_to_f32$(OBJ) \
+ f128_to_extF80$(OBJ) \
+ f128_to_f64$(OBJ) \
+ f128_roundToInt$(OBJ) \
+ f128_add$(OBJ) \
+ f128_sub$(OBJ) \
+ f128_mul$(OBJ) \
+ f128_mulAdd$(OBJ) \
+ f128_div$(OBJ) \
+ f128_rem$(OBJ) \
+ f128_sqrt$(OBJ) \
+ f128_eq$(OBJ) \
+ f128_le$(OBJ) \
+ f128_lt$(OBJ) \
+ f128_eq_signaling$(OBJ) \
+ f128_le_quiet$(OBJ) \
+ f128_lt_quiet$(OBJ) \
+ f128_isSignalingNaN$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/platform.h
new file mode 100644
index 000000000..2fccb6c09
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/platform.h
@@ -0,0 +1,54 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#define SOFTFLOAT_INTRINSIC_INT128 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/Makefile
new file mode 100644
index 000000000..c5005e6e3
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/Makefile
@@ -0,0 +1,391 @@
+
+#=============================================================================
+#
+# This Makefile template is part of the SoftFloat IEEE Floating-Point
+# Arithmetic Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+# Edit lines marked with `==>'. See "SoftFloat-source.html".
+
+==> SOURCE_DIR ?= ../../source
+==> SPECIALIZE_TYPE ?= 8086
+
+==> SOFTFLOAT_OPTS ?= \
+==> -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+==> -DSOFTFLOAT_FAST_DIV64TO32
+
+==> DELETE = rm -f
+==> C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+==> COMPILE_C = \
+==> cc -c -DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+==> MAKELIB = ar crs $@
+
+==> OBJ = .o
+==> LIB = .a
+
+==> OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_eq128$(OBJ) \
+ s_le128$(OBJ) \
+ s_lt128$(OBJ) \
+ s_shortShiftLeft128$(OBJ) \
+ s_shortShiftRight128$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJam64Extra$(OBJ) \
+ s_shortShiftRightJam128$(OBJ) \
+ s_shortShiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJam64Extra$(OBJ) \
+ s_shiftRightJam128$(OBJ) \
+ s_shiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam256M$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_add128$(OBJ) \
+ s_add256M$(OBJ) \
+ s_sub128$(OBJ) \
+ s_sub256M$(OBJ) \
+ s_mul64ByShifted32To128$(OBJ) \
+ s_mul64To128$(OBJ) \
+ s_mul128By32$(OBJ) \
+ s_mul128To256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80UIToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80UI$(OBJ) \
+ s_propagateNaNExtF80UI$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128UIToCommonNaN$(OBJ) \
+ s_commonNaNToF128UI$(OBJ) \
+ s_propagateNaNF128UI$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_normSubnormalExtF80Sig$(OBJ) \
+ s_roundPackToExtF80$(OBJ) \
+ s_normRoundPackToExtF80$(OBJ) \
+ s_addMagsExtF80$(OBJ) \
+ s_subMagsExtF80$(OBJ) \
+ s_normSubnormalF128Sig$(OBJ) \
+ s_roundPackToF128$(OBJ) \
+ s_normRoundPackToF128$(OBJ) \
+ s_addMagsF128$(OBJ) \
+ s_subMagsF128$(OBJ) \
+ s_mulAddF128$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80_to_ui32$(OBJ) \
+ extF80_to_ui64$(OBJ) \
+ extF80_to_i32$(OBJ) \
+ extF80_to_i64$(OBJ) \
+ extF80_to_ui32_r_minMag$(OBJ) \
+ extF80_to_ui64_r_minMag$(OBJ) \
+ extF80_to_i32_r_minMag$(OBJ) \
+ extF80_to_i64_r_minMag$(OBJ) \
+ extF80_to_f16$(OBJ) \
+ extF80_to_f32$(OBJ) \
+ extF80_to_f64$(OBJ) \
+ extF80_to_f128$(OBJ) \
+ extF80_roundToInt$(OBJ) \
+ extF80_add$(OBJ) \
+ extF80_sub$(OBJ) \
+ extF80_mul$(OBJ) \
+ extF80_div$(OBJ) \
+ extF80_rem$(OBJ) \
+ extF80_sqrt$(OBJ) \
+ extF80_eq$(OBJ) \
+ extF80_le$(OBJ) \
+ extF80_lt$(OBJ) \
+ extF80_eq_signaling$(OBJ) \
+ extF80_le_quiet$(OBJ) \
+ extF80_lt_quiet$(OBJ) \
+ extF80_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128_to_ui32$(OBJ) \
+ f128_to_ui64$(OBJ) \
+ f128_to_i32$(OBJ) \
+ f128_to_i64$(OBJ) \
+ f128_to_ui32_r_minMag$(OBJ) \
+ f128_to_ui64_r_minMag$(OBJ) \
+ f128_to_i32_r_minMag$(OBJ) \
+ f128_to_i64_r_minMag$(OBJ) \
+ f128_to_f16$(OBJ) \
+ f128_to_f32$(OBJ) \
+ f128_to_extF80$(OBJ) \
+ f128_to_f64$(OBJ) \
+ f128_roundToInt$(OBJ) \
+ f128_add$(OBJ) \
+ f128_sub$(OBJ) \
+ f128_mul$(OBJ) \
+ f128_mulAdd$(OBJ) \
+ f128_div$(OBJ) \
+ f128_rem$(OBJ) \
+ f128_sqrt$(OBJ) \
+ f128_eq$(OBJ) \
+ f128_le$(OBJ) \
+ f128_lt$(OBJ) \
+ f128_eq_signaling$(OBJ) \
+ f128_le_quiet$(OBJ) \
+ f128_lt_quiet$(OBJ) \
+ f128_isSignalingNaN$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/platform.h
new file mode 100644
index 000000000..b63e2a720
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/platform.h
@@ -0,0 +1,50 @@
+
+/*============================================================================
+
+This C header template is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+// Edit lines marked with `==>'. See "SoftFloat-source.html".
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define INLINE inline
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define THREAD_LOCAL _Thread_local
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/Makefile
new file mode 100644
index 000000000..49fddfd02
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile template is part of the SoftFloat IEEE Floating-Point
+# Arithmetic Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+# Edit lines marked with `==>'. See "SoftFloat-source.html".
+
+==> SOURCE_DIR ?= ../../source
+==> SPECIALIZE_TYPE ?= 8086
+
+==> SOFTFLOAT_OPTS ?= \
+==> -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+==> -DSOFTFLOAT_FAST_DIV64TO32
+
+==> DELETE = rm -f
+==> C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+==> COMPILE_C = cc -c $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+==> MAKELIB = ar crs $@
+
+==> OBJ = .o
+==> LIB = .a
+
+==> OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/platform.h
new file mode 100644
index 000000000..b63e2a720
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/platform.h
@@ -0,0 +1,50 @@
+
+/*============================================================================
+
+This C header template is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+// Edit lines marked with `==>'. See "SoftFloat-source.html".
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define INLINE inline
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define THREAD_LOCAL _Thread_local
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-history.html b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-history.html
new file mode 100644
index 000000000..daa48ca3b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-history.html
@@ -0,0 +1,258 @@
+
+
+
+
+Berkeley SoftFloat History
+
+
+
+
+History of Berkeley SoftFloat, to Release 3e
+
+
+John R. Hauser
+2018 January 20
+
+
+
+Release 3e (2018 January)
+
+
+
+-
+Changed the default numeric code for optional rounding mode
odd
+(round to odd, also known as jamming) from 5 to 6.
+
+ -
+Modified the behavior of rounding mode
odd
when rounding to an
+integer value (either conversion to an integer format or a
+‘roundToInt
’ function).
+Previously, for those cases only, rounding mode odd
acted the same
+as rounding to minimum magnitude.
+Now all operations are rounded consistently.
+
+ -
+Fixed some errors in the specialization code modeling Intel x86 floating-point,
+specifically the integers returned on invalid operations and the propagation of
+NaN payloads in a few rare cases.
+
+
-
+Added specialization code modeling ARM floating-point, conforming to VFPv2 or
+later.
+
+
-
+Added an example target for ARM processors.
+
+
-
+Fixed a minor bug whereby function
f16_to_ui64
might return a
+different integer than expected in the case that the floating-point operand is
+negative.
+
+ -
+Added example target-specific optimization for GCC, employing GCC instrinsics
+and support for 128-bit integer arithmetic.
+
+
-
+Made other minor improvements.
+
+
+
+
+Release 3d (2017 August)
+
+
+
+-
+Fixed bugs in the square root functions for 64-bit
+double-precision, 80-bit double-extended-precision, and
+128-bit quadruple-precision.
+For 64-bit double-precision (
f64_sqrt
), the result
+could sometimes be off by 1 unit in the last place
+(1 ulp) from what it should be.
+For the larger formats, the square root could be wrong in a large portion of
+the less-significant bits.
+(A bug in f128_sqrt
was first reported by Alexei Sibidanov.)
+
+
+
+
+Release 3c (2017 February)
+
+
+
+-
+Added optional rounding mode
odd
(round to odd, also known as
+jamming).
+
+ -
+Corrected the documentation concerning non-canonical representations in
+80-bit double-extended-precision.
+
+
+
+
+Release 3b (2016 July)
+
+
+
+-
+Implemented the common 16-bit “half-precision”
+floating-point format (
float16_t
).
+
+ -
+Made the integer values returned on invalid conversions to integer formats
+be determined by the port-specific specialization instead of being the same for
+all ports.
+
+
-
+Added preprocessor macro
THREAD_LOCAL
to allow the floating-point
+state (modes and exception flags) to be made per-thread.
+
+ -
+Modified the provided Makefiles to allow some options to be overridden from the
+
make
command.
+
+ -
+Made other minor improvements.
+
+
+
+
+Release 3a (2015 October)
+
+
+
+-
+Replaced the license text supplied by the University of California, Berkeley.
+
+
+
+
+Release 3 (2015 February)
+
+
+
+-
+Complete rewrite, funded by the University of California, Berkeley, and
+consequently having a different use license than earlier releases.
+Major changes included renaming most types and functions, upgrading some
+algorithms, restructuring the source files, and making SoftFloat into a true
+library.
+
+
-
+Added functions to convert between floating-point and unsigned integers, both
+32-bit and 64-bit (
uint32_t
and
+uint64_t
).
+
+ -
+Added functions for fused multiply-add, for all supported floating-point
+formats except 80-bit double-extended-precision.
+
+
-
+Added support for a fifth rounding mode,
near_maxMag
(round to
+nearest, with ties to maximum magnitude, away from zero).
+
+ -
+Dropped the
timesoftfloat
program (now part of the Berkeley
+TestFloat package).
+
+
+
+
+Release 2c (2015 January)
+
+
+
+-
+Fixed mistakes affecting some 64-bit processors.
+
+
-
+Further improved the documentation and the wording for the legal restrictions
+on using SoftFloat releases through 2c (not applicable to
+Release 3 or later).
+
+
+
+
+Release 2b (2002 May)
+
+
+
+-
+Made minor updates to the documentation, including improved wording for the
+legal restrictions on using SoftFloat.
+
+
+
+
+Release 2a (1998 December)
+
+
+
+-
+Added functions to convert between 64-bit integers
+(
int64
) and all supported floating-point formats.
+
+ -
+Fixed a bug in all 64-bit-version square root functions except
+
float32_sqrt
that caused the result sometimes to be off by
+1 unit in the last place (1 ulp) from what it should
+be.
+(Bug discovered by Paul Donahue.)
+
+ -
+Improved the Makefiles.
+
+
+
+Release 2 (1997 June)
+
+
+
+-
+Created the 64-bit (
bits64
) version, adding the
+floatx80
and float128
formats.
+
+ -
+Changed the source directory structure, splitting the sources into a
+
bits32
and a bits64
version.
+Renamed environment.h
to milieu.h
to avoid confusion
+with environment variables.
+
+ -
+Fixed a small error that caused
float64_round_to_int
often to
+round the wrong way in nearest/even mode when the operand was between
+220 and 221 and halfway between two integers.
+
+
+
+
+Release 1a (1996 July)
+
+
+
+-
+Corrected a mistake that caused borderline underflow cases not to raise the
+underflow flag when they should have.
+(Problem reported by Doug Priest.)
+
+
-
+Added the
float_detect_tininess
variable to control whether
+tininess is detected before or after rounding.
+
+
+
+
+Release 1 (1996 July)
+
+
+
+-
+Original release, based on work done for the International Computer Science
+Institute (ICSI) in Berkeley, California.
+
+
+
+
+
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-source.html b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-source.html
new file mode 100644
index 000000000..d4b85f7b0
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-source.html
@@ -0,0 +1,686 @@
+
+
+
+
+Berkeley SoftFloat Source Documentation
+
+
+
+
+Berkeley SoftFloat Release 3e: Source Documentation
+
+
+John R. Hauser
+2018 January 20
+
+
+
+Contents
+
+
+
+
+
+1. Introduction |
+2. Limitations |
+3. Acknowledgments and License |
+4. SoftFloat Package Directory Structure |
+5. Issues for Porting SoftFloat to a New Target |
+
+ |
+ 5.1. Standard Headers <stdbool.h> and
+ <stdint.h> |
+
+ | 5.2. Specializing Floating-Point Behavior |
+ | 5.3. Macros for Build Options |
+ | 5.4. Adapting a Template Target Directory |
+
+ | 5.5. Target-Specific Optimization of Primitive Functions |
+
+6. Testing SoftFloat |
+
+ 7. Providing SoftFloat as a Common Library for Applications |
+
+8. Contact Information |
+
+
+
+
+1. Introduction
+
+
+This document gives information needed for compiling and/or porting Berkeley
+SoftFloat, a library of C functions implementing binary floating-point
+conforming to the IEEE Standard for Floating-Point Arithmetic.
+For basic documentation about SoftFloat refer to
+SoftFloat.html
.
+
+
+
+The source code for SoftFloat is intended to be relatively machine-independent
+and should be compilable with any ISO-Standard C compiler that also supports
+64-bit integers.
+SoftFloat has been successfully compiled with the GNU C Compiler
+(gcc
) for several platforms.
+
+
+
+Release 3 of SoftFloat was a complete rewrite relative to
+Release 2 or earlier.
+Changes to the interface of SoftFloat functions are documented in
+SoftFloat.html
.
+The current version of SoftFloat is Release 3e.
+
+
+
+2. Limitations
+
+
+SoftFloat assumes the computer has an addressable byte size of either 8 or
+16 bits.
+(Nearly all computers in use today have 8-bit bytes.)
+
+
+
+SoftFloat is written in C and is designed to work with other C code.
+The C compiler used must conform at a minimum to the 1989 ANSI standard for the
+C language (same as the 1990 ISO standard) and must in addition support basic
+arithmetic on 64-bit integers.
+Earlier releases of SoftFloat included implementations of 32-bit
+single-precision and 64-bit double-precision floating-point that
+did not require 64-bit integers, but this option is not supported
+starting with Release 3.
+Since 1999, ISO standards for C have mandated compiler support for
+64-bit integers.
+A compiler conforming to the 1999 C Standard or later is recommended but not
+strictly required.
+
+
+
+C Standard header files <stdbool.h>
and
+<stdint.h>
are required for defining standard Boolean and
+integer types.
+If these headers are not supplied with the C compiler, minimal substitutes must
+be provided.
+SoftFloat’s dependence on these headers is detailed later in
+section 5.1, Standard Headers <stdbool.h>
+and <stdint.h>
.
+
+
+
+3. Acknowledgments and License
+
+
+The SoftFloat package was written by me, John R. Hauser.
+Release 3 of SoftFloat was a completely new implementation
+supplanting earlier releases.
+The project to create Release 3 (now through 3e) was
+done in the employ of the University of California, Berkeley, within the
+Department of Electrical Engineering and Computer Sciences, first for the
+Parallel Computing Laboratory (Par Lab) and then for the ASPIRE Lab.
+The work was officially overseen by Prof. Krste Asanovic, with funding provided
+by these sources:
+
+
+
+
+
+
+Par Lab: |
+ |
+
+Microsoft (Award #024263), Intel (Award #024894), and U.C. Discovery
+(Award #DIG07-10227), with additional support from Par Lab affiliates Nokia,
+NVIDIA, Oracle, and Samsung.
+ |
+
+
+ASPIRE Lab: |
+ |
+
+DARPA PERFECT program (Award #HR0011-12-2-0016), with additional support from
+ASPIRE industrial sponsor Intel and ASPIRE affiliates Google, Nokia, NVIDIA,
+Oracle, and Samsung.
+ |
+
+
+
+
+
+
+The following applies to the whole of SoftFloat Release 3e as well
+as to each source file individually.
+
+
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California.
+All rights reserved.
+
+
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+
+-
+
+Redistributions of source code must retain the above copyright notice, this
+list of conditions, and the following disclaimer.
+
+
+ -
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions, and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+
+ -
+
+Neither the name of the University nor the names of its contributors may be
+used to endorse or promote products derived from this software without specific
+prior written permission.
+
+
+
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS “AS IS”,
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+4. SoftFloat Package Directory Structure
+
+
+Because SoftFloat is targeted to multiple platforms, its source code is
+slightly scattered between target-specific and target-independent directories
+and files.
+The supplied directory structure is as follows:
+
+
+doc
+source
+ include
+ 8086
+ 8086-SSE
+ ARM-VFPv2
+ ARM-VFPv2-defaultNaN
+build
+ template-FAST_INT64
+ template-not-FAST_INT64
+ Linux-386-GCC
+ Linux-386-SSE2-GCC
+ Linux-x86_64-GCC
+ Linux-ARM-VFPv2-GCC
+ Win32-MinGW
+ Win32-SSE2-MinGW
+ Win64-MinGW-w64
+
+
+The majority of the SoftFloat sources are provided in the source
+directory.
+The include
subdirectory contains several header files
+(unsurprisingly), while the other subdirectories of source
contain
+source files that specialize the floating-point behavior to match particular
+processor families:
+
+
+8086
+-
+Intel’s older, 8087-derived floating-point, extended to all supported
+floating-point types
+
+8086-SSE
+-
+Intel’s x86 processors with Streaming SIMD Extensions (SSE) and later
+compatible extensions, having 8087 behavior for 80-bit
+double-extended-precision (
extFloat80_t
) and SSE behavior for
+other floating-point types
+
+ARM-VFPv2
+-
+ARM’s VFPv2 or later floating-point, with NaN payload propagation
+
+ARM-VFPv2-defaultNaN
+-
+ARM’s VFPv2 or later floating-point, with the “default NaN”
+option
+
+
+
+If other specializations are attempted, these would be expected to be other
+subdirectories of source
alongside the ones listed above.
+Specialization is covered later, in section 5.2, Specializing
+Floating-Point Behavior.
+
+
+
+The build
directory is intended to contain a subdirectory for each
+target platform for which a build of the SoftFloat library may be created.
+For each build target, the target’s subdirectory is where all derived
+object files and the completed SoftFloat library (typically
+softfloat.a
or libsoftfloat.a
) are created.
+The two template
subdirectories are not actual build targets but
+contain sample files for creating new target directories.
+(The meaning of FAST_INT64
will be explained later.)
+
+
+
+Ignoring the template
directories, the supplied target directories
+are intended to follow a naming system of
+<execution-environment>-<compiler>
.
+For the example targets,
+<execution-environment>
is
+Linux-386
, Linux-386-SSE2
,
+Linux-x86_64
,
+Linux-ARM-VFPv2
, Win32
,
+Win32-SSE2
, or Win64
, and
+<compiler>
is GCC
,
+MinGW
, or MinGW-w64
.
+
+
+
+All of the supplied target directories are merely examples that may or may not
+be correct for compiling on any particular system.
+Despite requests, there are currently no plans to include and maintain in the
+SoftFloat package the build files needed for a great many users’
+compilation environments, which can span a huge range of operating systems,
+compilers, and other tools.
+
+
+
+As supplied, each target directory contains two files:
+
+
+Makefile
+platform.h
+
+
+The provided Makefile
is written for GNU make
.
+A build of SoftFloat for the specific target is begun by executing the
+make
command with the target directory as the current directory.
+A completely different build tool can be used if an appropriate
+Makefile
equivalent is created.
+
+
+
+The platform.h
header file exists to provide a location for
+additional C declarations specific to the build target.
+Every C source file of SoftFloat contains a #include
for
+platform.h
.
+In many cases, the contents of platform.h
can be as simple as one
+or two lines of code.
+At the other extreme, to get maximal performance from SoftFloat, it may be
+desirable to include in header platform.h
(directly or via
+#include
) declarations for numerous target-specific optimizations.
+Such possibilities are discussed in the next section, Issues for Porting
+SoftFloat to a New Target.
+If the target’s compiler or library has bugs or other shortcomings,
+workarounds for these issues may also be possible with target-specific
+declarations in platform.h
, avoiding the need to modify the main
+SoftFloat sources.
+
+
+
+5. Issues for Porting SoftFloat to a New Target
+
+5.1. Standard Headers <stdbool.h>
and <stdint.h>
+
+
+The SoftFloat sources make use of standard headers
+<stdbool.h>
and <stdint.h>
, which have
+been part of the ISO C Standard Library since 1999.
+With any recent compiler, these standard headers are likely to be supported,
+even if the compiler does not claim complete conformance to the latest ISO C
+Standard.
+For older or nonstandard compilers, substitutes for
+<stdbool.h>
and <stdint.h>
may need to be
+created.
+SoftFloat depends on these names from <stdbool.h>
:
+
+
+bool
+true
+false
+
+
+and on these names from <stdint.h>
:
+
+
+uint16_t
+uint32_t
+uint64_t
+int32_t
+int64_t
+UINT64_C
+INT64_C
+uint_least8_t
+uint_fast8_t
+uint_fast16_t
+uint_fast32_t
+uint_fast64_t
+int_fast8_t
+int_fast16_t
+int_fast32_t
+int_fast64_t
+
+
+
+
+
+5.2. Specializing Floating-Point Behavior
+
+
+The IEEE Floating-Point Standard allows for some flexibility in a conforming
+implementation, particularly concerning NaNs.
+The SoftFloat source
directory is supplied with some
+specialization subdirectories containing possible definitions for this
+implementation-specific behavior.
+For example, the 8086
and 8086-SSE
+subdirectories have source files that specialize SoftFloat’s behavior to
+match that of Intel’s x86 line of processors.
+The files in a specialization subdirectory must determine:
+
+-
+whether tininess for underflow is detected before or after rounding by default;
+
-
+how signaling NaNs are distinguished from quiet NaNs;
+
-
+what (if anything) special happens when exceptions are raised;
+
-
+the default generated quiet NaNs;
+
-
+how NaNs are propagated from function inputs to output; and
+
-
+the integer results returned when conversions to integer type raise the
+invalid exception.
+
+
+
+
+As provided, the build process for a target expects to involve exactly
+one specialization directory that defines all of these
+implementation-specific details for the target.
+A specialization directory such as 8086
is expected to contain a
+header file called specialize.h
, together with whatever other
+source files are needed to complete the specialization.
+
+
+
+A new build target may use an existing specialization, such as the ones
+provided by the 8086
and 8086-SSE
+subdirectories.
+If a build target needs a new specialization, different from any existing ones,
+it is recommended that a new specialization directory be created for this
+purpose.
+The specialize.h
header file from any of the provided
+specialization subdirectories can be used as a model for what definitions are
+needed.
+
+
+
+5.3. Macros for Build Options
+
+
+The SoftFloat source files adapt the floating-point implementation according to
+several C preprocessor macros:
+
+
+LITTLEENDIAN
+-
+Must be defined for little-endian machines; must not be defined for big-endian
+machines.
+
INLINE
+-
+Specifies the sequence of tokens used to indicate that a C function should be
+inlined.
+If macro
INLINE_LEVEL
is defined with a value of 1 or higher, this
+macro must be defined; otherwise, this macro is ignored and need not be
+defined.
+For compilers that conform to the C Standard’s rules for inline
+functions, this macro can be defined as the single keyword inline
.
+For other compilers that follow a convention pre-dating the standardization of
+inline
, this macro may need to be defined to extern
+inline
.
+ THREAD_LOCAL
+-
+Can be defined to a sequence of tokens that, when appearing at the start of a
+variable declaration, indicates to the C compiler that the variable is
+per-thread, meaning that each execution thread gets its own separate
+instance of the variable.
+This macro is used in header
softfloat.h
in the declarations of
+variables softfloat_roundingMode
,
+softfloat_detectTininess
, extF80_roundingPrecision
,
+and softfloat_exceptionFlags
.
+If macro THREAD_LOCAL
is left undefined, these variables will
+default to being ordinary global variables.
+Depending on the compiler, possible valid definitions of this macro include
+_Thread_local
and __thread
.
+
+
+SOFTFLOAT_ROUND_ODD
+-
+Can be defined to enable support for optional rounding mode
+
softfloat_round_odd
.
+
+
+INLINE_LEVEL
+-
+Can be defined to an integer to determine the degree of inlining requested of
+the compiler.
+Larger numbers request that more inlining be done.
+If this macro is not defined or is defined to a value less than 1
+(zero or negative), no inlining is requested.
+The maximum effective value is no higher than 5.
+Defining this macro to a value greater than 5 is the same as defining it
+to 5.
+
SOFTFLOAT_FAST_INT64
+-
+Can be defined to indicate that the build target’s implementation of
+64-bit arithmetic is efficient.
+For newer 64-bit processors, this macro should usually be defined.
+For very small microprocessors whose buses and registers are 8-bit
+or 16-bit in size, this macro should usually not be defined.
+Whether this macro should be defined for a 32-bit processor may
+depend on the target machine and the applications that will use SoftFloat.
+
SOFTFLOAT_FAST_DIV32TO16
+-
+Can be defined to indicate that the target’s division operator
+in C (written as
/
) is reasonably efficient for
+dividing a 32-bit unsigned integer by a 16-bit
+unsigned integer.
+Setting this macro may affect the performance of function f16_div
.
+ SOFTFLOAT_FAST_DIV64TO32
+-
+Can be defined to indicate that the target’s division operator
+in C (written as
/
) is reasonably efficient for
+dividing a 64-bit unsigned integer by a 32-bit
+unsigned integer.
+Setting this macro may affect the performance of division, remainder, and
+square root operations other than f16_div
.
+
+
+
+
+
+Following the usual custom for C, for most of these macros (all
+except INLINE
, THREAD_LOCAL
, and
+INLINE_LEVEL
), the content of any definition is irrelevant;
+what matters is a macro’s effect on #ifdef
directives.
+
+
+
+It is recommended that any definitions of macros LITTLEENDIAN
,
+INLINE
, and THREAD_LOCAL
be made in a build
+target’s platform.h
header file, because these macros are
+expected to be determined inflexibly by the target machine and compiler.
+The other five macros select options and control optimization, and thus might
+be better located in the target’s Makefile (or its equivalent).
+
+
+
+5.4. Adapting a Template Target Directory
+
+
+In the build
directory, two template
subdirectories
+provide models for new target directories.
+Two different templates exist because different functions are needed in the
+SoftFloat library depending on whether macro SOFTFLOAT_FAST_INT64
+is defined.
+If macro SOFTFLOAT_FAST_INT64
will be defined,
+template-FAST_INT64
is the template to use;
+otherwise, template-not-FAST_INT64
is the appropriate
+template.
+A new target directory can be created by copying the correct template directory
+and editing the files inside.
+To avoid confusion, it would be wise to refrain from editing the files within a
+template directory directly.
+
+
+
+5.5. Target-Specific Optimization of Primitive Functions
+
+
+Header file primitives.h
(in directory
+source/include
) declares macros and functions for numerous
+underlying arithmetic operations upon which many of SoftFloat’s
+floating-point functions are ultimately built.
+The SoftFloat sources include implementations of all of these functions/macros,
+written as standard C code, so a complete and correct SoftFloat library can be
+created using only the supplied code for all functions.
+However, for many targets, SoftFloat’s performance can be improved by
+substituting target-specific implementations of some of the functions/macros
+declared in primitives.h
.
+
+
+
+For example, primitives.h
declares a function called
+softfloat_countLeadingZeros32
that takes an unsigned
+32-bit integer as an argument and returns the number of the
+integer’s most-significant bits that are zeros.
+While the SoftFloat sources include an implementation of this function written
+in standard C, many processors can perform this same function
+directly in only one or two machine instructions.
+An alternative, target-specific implementation that maps to those instructions
+is likely to be more efficient than the generic C code from the SoftFloat
+package.
+
+
+
+A build target can replace the supplied version of any function or macro of
+primitives.h
by defining a macro with the same name in the
+target’s platform.h
header file.
+For this purpose, it may be helpful for platform.h
to
+#include
header file primitiveTypes.h
, which defines
+types used for arguments and results of functions declared in
+primitives.h
.
+When a desired replacement implementation is a function, not a macro, it is
+sufficient for platform.h
to include the line
+
+
+#define <function-name> <function-name>
+
+
+where <function-name>
is the name of the
+function.
+This technically defines <function-name>
+as a macro, but one that resolves to the same name, which may then be a
+function.
+(A preprocessor that conforms to the C Standard is required to limit recursive
+macro expansion from being applied more than once.)
+
+
+
+The supplied header file opts-GCC.h
(in directory
+source/include
) provides an example of target-specific
+optimization for the GCC compiler.
+Each GCC target example in the build
directory has
+
+#include "opts-GCC.h"
+
+in its platform.h
header file.
+Before opts-GCC.h
is included, the following macros must be
+defined (or not) to control which features are invoked:
+
+
+SOFTFLOAT_BUILTIN_CLZ
+-
+If defined, SoftFloat’s internal
+‘
countLeadingZeros
’ functions use intrinsics
+__builtin_clz
and __builtin_clzll
.
+
+SOFTFLOAT_INTRINSIC_INT128
+-
+If defined, SoftFloat makes use of GCC’s nonstandard 128-bit
+integer type
__int128
.
+
+
+
+On some machines, these improvements are observed to increase the speeds of
+f64_mul
and f128_mul
by around 20 to 25%, although
+other functions receive less dramatic boosts, or none at all.
+Results can vary greatly across different platforms.
+
+
+
+6. Testing SoftFloat
+
+
+SoftFloat can be tested using the testsoftfloat
program by the
+same author.
+This program is part of the Berkeley TestFloat package available at the Web
+page
+http://www.jhauser.us/arithmetic/TestFloat.html
.
+The TestFloat package also has a program called timesoftfloat
that
+measures the speed of SoftFloat’s floating-point functions.
+
+
+
+7. Providing SoftFloat as a Common Library for Applications
+
+
+Header file softfloat.h
defines the SoftFloat interface as seen by
+clients.
+If the SoftFloat library will be made a common library for programs on a
+system, the supplied softfloat.h
has a couple of deficiencies for
+this purpose:
+
+-
+As supplied,
softfloat.h
depends on another header,
+softfloat_types.h
, that is not intended for public use but which
+must also be visible to the programmer’s compiler.
+ -
+More troubling, at the time
softfloat.h
is included in a C source
+file, macros SOFTFLOAT_FAST_INT64
and THREAD_LOCAL
+must be defined, or not defined, consistent with how these macro were defined
+when the SoftFloat library was built.
+
+In the situation that new programs may regularly #include
header
+file softfloat.h
, it is recommended that a custom, self-contained
+version of this header file be created that eliminates these issues.
+
+
+
+8. Contact Information
+
+
+At the time of this writing, the most up-to-date information about SoftFloat
+and the latest release can be found at the Web page
+http://www.jhauser.us/arithmetic/SoftFloat.html
.
+
+
+
+
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat.html b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat.html
new file mode 100644
index 000000000..bb41770ec
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat.html
@@ -0,0 +1,1527 @@
+
+
+
+
+Berkeley SoftFloat Library Interface
+
+
+
+
+Berkeley SoftFloat Release 3e: Library Interface
+
+
+John R. Hauser
+2018 January 20
+
+
+
+Contents
+
+
+
+
+
+1. Introduction |
+2. Limitations |
+3. Acknowledgments and License |
+4. Types and Functions |
+ | 4.1. Boolean and Integer Types |
+ | 4.2. Floating-Point Types |
+ | 4.3. Supported Floating-Point Functions |
+
+ |
+ 4.4. Non-canonical Representations in extFloat80_t |
+
+ | 4.5. Conventions for Passing Arguments and Results |
+5. Reserved Names |
+6. Mode Variables |
+ | 6.1. Rounding Mode |
+ | 6.2. Underflow Detection |
+
+ |
+ 6.3. Rounding Precision for the 80-Bit Extended Format |
+
+7. Exceptions and Exception Flags |
+8. Function Details |
+ | 8.1. Conversions from Integer to Floating-Point |
+ | 8.2. Conversions from Floating-Point to Integer |
+ | 8.3. Conversions Among Floating-Point Types |
+ | 8.4. Basic Arithmetic Functions |
+ | 8.5. Fused Multiply-Add Functions |
+ | 8.6. Remainder Functions |
+ | 8.7. Round-to-Integer Functions |
+ | 8.8. Comparison Functions |
+ | 8.9. Signaling NaN Test Functions |
+ | 8.10. Raise-Exception Function |
+9. Changes from SoftFloat Release 2 |
+ | 9.1. Name Changes |
+ | 9.2. Changes to Function Arguments |
+ | 9.3. Added Capabilities |
+ | 9.4. Better Compatibility with the C Language |
+ | 9.5. New Organization as a Library |
+ | 9.6. Optimization Gains (and Losses) |
+10. Future Directions |
+11. Contact Information |
+
+
+
+
+1. Introduction
+
+
+Berkeley SoftFloat is a software implementation of binary floating-point that
+conforms to the IEEE Standard for Floating-Point Arithmetic.
+The current release supports five binary formats: 16-bit
+half-precision, 32-bit single-precision, 64-bit
+double-precision, 80-bit double-extended-precision, and
+128-bit quadruple-precision.
+The following functions are supported for each format:
+
+-
+addition, subtraction, multiplication, division, and square root;
+
-
+fused multiply-add as defined by the IEEE Standard, except for
+80-bit double-extended-precision;
+
-
+remainder as defined by the IEEE Standard;
+
-
+round to integral value;
+
-
+comparisons;
+
-
+conversions to/from other supported formats; and
+
-
+conversions to/from 32-bit and 64-bit integers,
+signed and unsigned.
+
+All operations required by the original 1985 version of the IEEE Floating-Point
+Standard are implemented, except for conversions to and from decimal.
+
+
+
+This document gives information about the types defined and the routines
+implemented by SoftFloat.
+It does not attempt to define or explain the IEEE Floating-Point Standard.
+Information about the standard is available elsewhere.
+
+
+
+The current version of SoftFloat is Release 3e.
+This release modifies the behavior of the rarely used odd rounding mode
+(round to odd, also known as jamming), and also adds some new
+specialization and optimization examples for those compiling SoftFloat.
+
+
+
+The previous Release 3d fixed bugs that were found in the square
+root functions for the 64-bit, 80-bit, and
+128-bit floating-point formats.
+(Thanks to Alexei Sibidanov at the University of Victoria for reporting an
+incorrect result.)
+The bugs affected all prior Release-3 versions of SoftFloat
+through 3c.
+The flaw in the 64-bit floating-point square root function was of
+very minor impact, causing a 1-ulp error (1 unit in
+the last place) a few times out of a billion.
+The bugs in the 80-bit and 128-bit square root
+functions were more serious.
+Although incorrect results again occurred only a few times out of a billion,
+when they did occur a large portion of the less-significant bits could be
+wrong.
+
+
+
+Among earlier releases, 3b was notable for adding support for the
+16-bit half-precision format.
+For more about the evolution of SoftFloat releases, see
+SoftFloat-history.html
.
+
+
+
+The functional interface of SoftFloat Release 3 and later differs
+in many details from the releases that came before.
+For specifics of these differences, see section 9 below,
+Changes from SoftFloat Release 2.
+
+
+
+2. Limitations
+
+
+SoftFloat assumes the computer has an addressable byte size of 8 or
+16 bits.
+(Nearly all computers in use today have 8-bit bytes.)
+
+
+
+SoftFloat is written in C and is designed to work with other C code.
+The C compiler used must conform at a minimum to the 1989 ANSI standard for the
+C language (same as the 1990 ISO standard) and must in addition support basic
+arithmetic on 64-bit integers.
+Earlier releases of SoftFloat included implementations of 32-bit
+single-precision and 64-bit double-precision floating-point that
+did not require 64-bit integers, but this option is not supported
+starting with Release 3.
+Since 1999, ISO standards for C have mandated compiler support for
+64-bit integers.
+A compiler conforming to the 1999 C Standard or later is recommended but not
+strictly required.
+
+
+
+Most operations not required by the original 1985 version of the IEEE
+Floating-Point Standard but added in the 2008 version are not yet supported in
+SoftFloat Release 3e.
+
+
+
+3. Acknowledgments and License
+
+
+The SoftFloat package was written by me, John R. Hauser.
+Release 3 of SoftFloat was a completely new implementation
+supplanting earlier releases.
+The project to create Release 3 (now through 3e) was
+done in the employ of the University of California, Berkeley, within the
+Department of Electrical Engineering and Computer Sciences, first for the
+Parallel Computing Laboratory (Par Lab) and then for the ASPIRE Lab.
+The work was officially overseen by Prof. Krste Asanovic, with funding provided
+by these sources:
+
+
+
+
+
+
+Par Lab: |
+ |
+
+Microsoft (Award #024263), Intel (Award #024894), and U.C. Discovery
+(Award #DIG07-10227), with additional support from Par Lab affiliates Nokia,
+NVIDIA, Oracle, and Samsung.
+ |
+
+
+ASPIRE Lab: |
+ |
+
+DARPA PERFECT program (Award #HR0011-12-2-0016), with additional support from
+ASPIRE industrial sponsor Intel and ASPIRE affiliates Google, Nokia, NVIDIA,
+Oracle, and Samsung.
+ |
+
+
+
+
+
+
+The following applies to the whole of SoftFloat Release 3e as well
+as to each source file individually.
+
+
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California.
+All rights reserved.
+
+
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+
+-
+
+Redistributions of source code must retain the above copyright notice, this
+list of conditions, and the following disclaimer.
+
+
+ -
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions, and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+
+ -
+
+Neither the name of the University nor the names of its contributors may be
+used to endorse or promote products derived from this software without specific
+prior written permission.
+
+
+
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS “AS IS”,
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+4. Types and Functions
+
+
+The types and functions of SoftFloat are declared in header file
+softfloat.h
.
+
+
+4.1. Boolean and Integer Types
+
+
+Header file softfloat.h
depends on standard headers
+<stdbool.h>
and <stdint.h>
to define type
+bool
and several integer types.
+These standard headers have been part of the ISO C Standard Library since 1999.
+With any recent compiler, they are likely to be supported, even if the compiler
+does not claim complete conformance to the latest ISO C Standard.
+For older or nonstandard compilers, a port of SoftFloat may have substitutes
+for these headers.
+Header softfloat.h
depends only on the name bool
from
+<stdbool.h>
and on these type names from
+<stdint.h>
:
+
+
+uint16_t
+uint32_t
+uint64_t
+int32_t
+int64_t
+uint_fast8_t
+uint_fast32_t
+uint_fast64_t
+int_fast32_t
+int_fast64_t
+
+
+
+
+
+4.2. Floating-Point Types
+
+
+The softfloat.h
header defines five floating-point types:
+
+
+
+float16_t |
+16-bit half-precision binary format |
+
+
+float32_t |
+32-bit single-precision binary format |
+
+
+float64_t |
+64-bit double-precision binary format |
+
+
+extFloat80_t |
+80-bit double-extended-precision binary format (old Intel or
+Motorola format) |
+
+
+float128_t |
+128-bit quadruple-precision binary format |
+
+
+
+The non-extended types are each exactly the size specified:
+16 bits for float16_t
, 32 bits for
+float32_t
, 64 bits for float64_t
, and
+128 bits for float128_t
.
+Aside from these size requirements, the definitions of all these types may
+differ for different ports of SoftFloat to specific systems.
+A given port of SoftFloat may or may not define some of the floating-point
+types as aliases for the C standard types float
,
+double
, and long
double
.
+
+
+
+Header file softfloat.h
also defines a structure,
+struct
extFloat80M
, for the representation of
+80-bit double-extended-precision floating-point values in memory.
+This structure is the same size as type extFloat80_t
and contains
+at least these two fields (not necessarily in this order):
+
+
+uint16_t signExp;
+uint64_t signif;
+
+
+Field signExp
contains the sign and exponent of the floating-point
+value, with the sign in the most significant bit (bit 15) and the
+encoded exponent in the other 15 bits.
+Field signif
is the complete 64-bit significand of
+the floating-point value.
+(In the usual encoding for 80-bit extended floating-point, the
+leading 1 bit of normalized numbers is not implicit but is stored
+in the most significant bit of the significand.)
+
+
+4.3. Supported Floating-Point Functions
+
+
+SoftFloat implements these arithmetic operations for its floating-point types:
+
+-
+conversions between any two floating-point formats;
+
-
+for each floating-point format, conversions to and from signed and unsigned
+32-bit and 64-bit integers;
+
-
+for each format, the usual addition, subtraction, multiplication, division, and
+square root operations;
+
-
+for each format except
extFloat80_t
, the fused multiply-add
+operation defined by the IEEE Standard;
+ -
+for each format, the floating-point remainder operation defined by the IEEE
+Standard;
+
-
+for each format, a “round to integer” operation that rounds to the
+nearest integer value in the same format; and
+
-
+comparisons between two values in the same floating-point format.
+
+
+
+
+The following operations required by the 2008 IEEE Floating-Point Standard are
+not supported in SoftFloat Release 3e:
+
+-
+nextUp, nextDown, minNum, maxNum, minNumMag,
+maxNumMag, scaleB, and logB;
+
-
+conversions between floating-point formats and decimal or hexadecimal character
+sequences;
+
-
+all “quiet-computation” operations (copy, negate,
+abs, and copySign, which all involve only simple copying and/or
+manipulation of the floating-point sign bit); and
+
-
+all “non-computational” operations other than isSignaling
+(which is supported).
+
+
+
+4.4. Non-canonical Representations in extFloat80_t
+
+
+Because the 80-bit double-extended-precision format,
+extFloat80_t
, stores an explicit leading significand bit, many
+finite floating-point numbers are encodable in this type in multiple equivalent
+forms.
+Of these multiple encodings, there is always a unique one with the least
+encoded exponent value, and this encoding is considered the canonical
+representation of the floating-point number.
+Any other equivalent representations (having a higher encoded exponent value)
+are non-canonical.
+For a value in the subnormal range (including zero), the canonical
+representation always has an encoded exponent of zero and a leading significand
+bit of 0.
+For finite values outside the subnormal range, the canonical representation
+always has an encoded exponent that is nonzero and a leading significand bit
+of 1.
+
+
+
+For an infinity or NaN, the leading significand bit is similarly expected to
+be 1.
+An infinity or NaN with a leading significand bit of 0 is again
+considered non-canonical.
+Hence, altogether, to be canonical, a value of type extFloat80_t
+must have a leading significand bit of 1, unless the value is
+subnormal or zero, in which case the leading significand bit and the encoded
+exponent must both be zero.
+
+
+
+SoftFloat’s functions are not guaranteed to operate as expected when
+inputs of type extFloat80_t
are non-canonical.
+Assuming all of a function’s extFloat80_t
inputs (if any)
+are canonical, function outputs of type extFloat80_t
will always
+be canonical.
+
+
+4.5. Conventions for Passing Arguments and Results
+
+
+Values that are at most 64 bits in size (i.e., not the
+80-bit or 128-bit floating-point formats) are in all
+cases passed as function arguments by value.
+Likewise, when an output of a function is no more than 64 bits, it
+is always returned directly as the function result.
+Thus, for example, the SoftFloat function for adding two 64-bit
+floating-point values has this simple signature:
+
+float64_t f64_add( float64_t, float64_t );
+
+
+
+
+The story is more complex when function inputs and outputs are
+80-bit and 128-bit floating-point.
+For these types, SoftFloat always provides a function that passes these larger
+values into or out of the function indirectly, via pointers.
+For example, for adding two 128-bit floating-point values,
+SoftFloat supplies this function:
+
+void f128M_add( const float128_t *, const float128_t *, float128_t * );
+
+The first two arguments point to the values to be added, and the last argument
+points to the location where the sum will be stored.
+The M
in the name f128M_add
is mnemonic for the fact
+that the 128-bit inputs and outputs are “in memory”,
+pointed to by pointer arguments.
+
+
+
+All ports of SoftFloat implement these pass-by-pointer functions for
+types extFloat80_t
and float128_t
.
+At the same time, SoftFloat ports may also implement alternate versions of
+these same functions that pass extFloat80_t
and
+float128_t
by value, like the smaller formats.
+Thus, besides the function with name f128M_add
shown above, a
+SoftFloat port may also supply an equivalent function with this signature:
+
+float128_t f128_add( float128_t, float128_t );
+
+
+
+
+As a general rule, on computers where the machine word size is
+32 bits or smaller, only the pass-by-pointer versions of functions
+(e.g., f128M_add
) are provided for types extFloat80_t
+and float128_t
, because passing such large types directly can have
+significant extra cost.
+On computers where the word size is 64 bits or larger, both
+function versions (f128M_add
and f128_add
) are
+provided, because the cost of passing by value is then more reasonable.
+Applications that must be portable accross both classes of computers must use
+the pointer-based functions, as these are always implemented.
+However, if it is known that SoftFloat includes the by-value functions for all
+platforms of interest, programmers can use whichever version they prefer.
+
+
+
+5. Reserved Names
+
+
+In addition to the variables and functions documented here, SoftFloat defines
+some symbol names for its own private use.
+These private names always begin with the prefix
+‘softfloat_
’.
+When a program includes header softfloat.h
or links with the
+SoftFloat library, all names with prefix ‘softfloat_
’
+are reserved for possible use by SoftFloat.
+Applications that use SoftFloat should not define their own names with this
+prefix, and should reference only such names as are documented.
+
+
+
+6. Mode Variables
+
+
+The following global variables control rounding mode, underflow detection, and
+the 80-bit extended format’s rounding precision:
+
+softfloat_roundingMode
+softfloat_detectTininess
+extF80_roundingPrecision
+
+These mode variables are covered in the next several subsections.
+For some SoftFloat ports, these variables may be per-thread (declared
+thread_local
), meaning that different execution threads have their
+own separate copies of the variables.
+
+
+6.1. Rounding Mode
+
+
+All five rounding modes defined by the 2008 IEEE Floating-Point Standard are
+implemented for all operations that require rounding.
+Some ports of SoftFloat may also implement the round-to-odd mode.
+
+
+
+The rounding mode is selected by the global variable
+
+uint_fast8_t softfloat_roundingMode;
+
+This variable may be set to one of the values
+
+
+
+softfloat_round_near_even |
+round to nearest, with ties to even |
+
+
+softfloat_round_near_maxMag |
+round to nearest, with ties to maximum magnitude (away from zero) |
+
+
+softfloat_round_minMag |
+round to minimum magnitude (toward zero) |
+
+
+softfloat_round_min |
+round to minimum (down) |
+
+
+softfloat_round_max |
+round to maximum (up) |
+
+
+softfloat_round_odd |
+round to odd (jamming), if supported by the SoftFloat port |
+
+
+
+Variable softfloat_roundingMode
is initialized to
+softfloat_round_near_even
.
+
+
+
+When softfloat_round_odd
is the rounding mode for a function that
+rounds to an integer value (either conversion to an integer format or a
+‘roundToInt
’ function), if the input is not already an
+integer, the rounded result is the closest odd integer.
+For other operations, this rounding mode acts as though the floating-point
+result is first rounded to minimum magnitude, the same as
+softfloat_round_minMag
, and then, if the result is inexact, the
+least-significant bit of the result is set to 1.
+Rounding to odd is also known as jamming.
+
+
+6.2. Underflow Detection
+
+
+In the terminology of the IEEE Standard, SoftFloat can detect tininess for
+underflow either before or after rounding.
+The choice is made by the global variable
+
+uint_fast8_t softfloat_detectTininess;
+
+which can be set to either
+
+softfloat_tininess_beforeRounding
+softfloat_tininess_afterRounding
+
+Detecting tininess after rounding is usually better because it results in fewer
+spurious underflow signals.
+The other option is provided for compatibility with some systems.
+Like most systems (and as required by the newer 2008 IEEE Standard), SoftFloat
+always detects loss of accuracy for underflow as an inexact result.
+
+
+6.3. Rounding Precision for the 80-Bit Extended Format
+
+
+For extFloat80_t
only, the rounding precision of the basic
+arithmetic operations is controlled by the global variable
+
+uint_fast8_t extF80_roundingPrecision;
+
+The operations affected are:
+
+extF80_add
+extF80_sub
+extF80_mul
+extF80_div
+extF80_sqrt
+
+When extF80_roundingPrecision
is set to its default value of 80,
+these operations are rounded to the full precision of the 80-bit
+double-extended-precision format, like occurs for other formats.
+Setting extF80_roundingPrecision
to 32 or to 64 causes the
+operations listed to be rounded to 32-bit precision (equivalent to
+float32_t
) or to 64-bit precision (equivalent to
+float64_t
), respectively.
+When rounding to reduced precision, additional bits in the result significand
+beyond the rounding point are set to zero.
+The consequences of setting extF80_roundingPrecision
to a value
+other than 32, 64, or 80 is not specified.
+Operations other than the ones listed above are not affected by
+extF80_roundingPrecision
.
+
+
+
+7. Exceptions and Exception Flags
+
+
+All five exception flags required by the IEEE Floating-Point Standard are
+implemented.
+Each flag is stored as a separate bit in the global variable
+
+uint_fast8_t softfloat_exceptionFlags;
+
+The positions of the exception flag bits within this variable are determined by
+the bit masks
+
+softfloat_flag_inexact
+softfloat_flag_underflow
+softfloat_flag_overflow
+softfloat_flag_infinite
+softfloat_flag_invalid
+
+Variable softfloat_exceptionFlags
is initialized to all zeros,
+meaning no exceptions.
+
+
+
+For some SoftFloat ports, softfloat_exceptionFlags
may be
+per-thread (declared thread_local
), meaning that different
+execution threads have their own separate instances of it.
+
+
+
+An individual exception flag can be cleared with the statement
+
+softfloat_exceptionFlags &= ~softfloat_flag_<exception>;
+
+where <exception>
is the appropriate name.
+To raise a floating-point exception, function softfloat_raiseFlags
+should normally be used.
+
+
+
+When SoftFloat detects an exception other than inexact, it calls
+softfloat_raiseFlags
.
+The default version of this function simply raises the corresponding exception
+flags.
+Particular ports of SoftFloat may support alternate behavior, such as exception
+traps, by modifying the default softfloat_raiseFlags
.
+A program may also supply its own softfloat_raiseFlags
function to
+override the one from the SoftFloat library.
+
+
+
+Because inexact results occur frequently under most circumstances (and thus are
+hardly exceptional), SoftFloat does not ordinarily call
+softfloat_raiseFlags
for inexact exceptions.
+It does always raise the inexact exception flag as required.
+
+
+
+8. Function Details
+
+
+In this section, <float>
appears in function names as
+a substitute for one of these abbreviations:
+
+
+
+f16 |
+indicates float16_t , passed by value |
+
+
+f32 |
+indicates float32_t , passed by value |
+
+
+f64 |
+indicates float64_t , passed by value |
+
+
+extF80M |
+indicates extFloat80_t , passed indirectly via pointers |
+
+
+extF80 |
+indicates extFloat80_t , passed by value |
+
+
+f128M |
+indicates float128_t , passed indirectly via pointers |
+
+
+f128 |
+indicates float128_t , passed by value |
+
+
+
+The circumstances under which values of floating-point types
+extFloat80_t
and float128_t
may be passed either by
+value or indirectly via pointers was discussed earlier in
+section 4.5, Conventions for Passing Arguments and Results.
+
+
+8.1. Conversions from Integer to Floating-Point
+
+
+All conversions from a 32-bit or 64-bit integer,
+signed or unsigned, to a floating-point format are supported.
+Functions performing these conversions have these names:
+
+ui32_to_<float>
+ui64_to_<float>
+i32_to_<float>
+i64_to_<float>
+
+Conversions from 32-bit integers to 64-bit
+double-precision and larger formats are always exact, and likewise conversions
+from 64-bit integers to 80-bit
+double-extended-precision and 128-bit quadruple-precision are also
+always exact.
+
+
+
+Each conversion function takes one input of the appropriate type and generates
+one output.
+The following illustrates the signatures of these functions in cases when the
+floating-point result is passed either by value or via pointers:
+
+
+float64_t i32_to_f64( int32_t a );
+
+
+void i32_to_f128M( int32_t a, float128_t *destPtr );
+
+
+
+
+8.2. Conversions from Floating-Point to Integer
+
+
+Conversions from a floating-point format to a 32-bit or
+64-bit integer, signed or unsigned, are supported with these
+functions:
+
+<float>_to_ui32
+<float>_to_ui64
+<float>_to_i32
+<float>_to_i64
+
+The functions have signatures as follows, depending on whether the
+floating-point input is passed by value or via pointers:
+
+
+int_fast32_t f64_to_i32( float64_t a, uint_fast8_t roundingMode, bool exact );
+
+
+int_fast32_t
+ f128M_to_i32( const float128_t *aPtr, uint_fast8_t roundingMode, bool exact );
+
+
+
+
+
+The roundingMode
argument specifies the rounding mode for
+the conversion.
+The variable that usually indicates rounding mode,
+softfloat_roundingMode
, is ignored.
+Argument exact
determines whether the inexact
+exception flag is raised if the conversion is not exact.
+If exact
is true
, the inexact flag may
+be raised;
+otherwise, it will not be, even if the conversion is inexact.
+
+
+
+A conversion from floating-point to integer format raises the invalid
+exception if the source value cannot be rounded to a representable integer of
+the desired size (32 or 64 bits).
+In such circumstances, the integer result returned is determined by the
+particular port of SoftFloat, although typically this value will be either the
+maximum or minimum value of the integer format.
+The functions that convert to integer types never raise the floating-point
+overflow exception.
+
+
+
+Because languages such as C require that conversions to integers
+be rounded toward zero, the following functions are provided for improved speed
+and convenience:
+
+<float>_to_ui32_r_minMag
+<float>_to_ui64_r_minMag
+<float>_to_i32_r_minMag
+<float>_to_i64_r_minMag
+
+These functions round only toward zero (to minimum magnitude).
+The signatures for these functions are the same as above without the redundant
+roundingMode
argument:
+
+
+int_fast32_t f64_to_i32_r_minMag( float64_t a, bool exact );
+
+
+int_fast32_t f128M_to_i32_r_minMag( const float128_t *aPtr, bool exact );
+
+
+
+
+8.3. Conversions Among Floating-Point Types
+
+
+Conversions between floating-point formats are done by functions with these
+names:
+
+<float>_to_<float>
+
+All combinations of source and result type are supported where the source and
+result are different formats.
+There are four different styles of signature for these functions, depending on
+whether the input and the output floating-point values are passed by value or
+via pointers:
+
+
+float32_t f64_to_f32( float64_t a );
+
+
+float32_t f128M_to_f32( const float128_t *aPtr );
+
+
+void f32_to_f128M( float32_t a, float128_t *destPtr );
+
+
+void extF80M_to_f128M( const extFloat80_t *aPtr, float128_t *destPtr );
+
+
+
+
+
+Conversions from a smaller to a larger floating-point format are always exact
+and so require no rounding.
+
+
+8.4. Basic Arithmetic Functions
+
+
+The following basic arithmetic functions are provided:
+
+<float>_add
+<float>_sub
+<float>_mul
+<float>_div
+<float>_sqrt
+
+Each floating-point operation takes two operands, except for sqrt
+(square root) which takes only one.
+The operands and result are all of the same floating-point format.
+Signatures for these functions take the following forms:
+
+
+float64_t f64_add( float64_t a, float64_t b );
+
+
+void
+ f128M_add(
+ const float128_t *aPtr, const float128_t *bPtr, float128_t *destPtr );
+
+
+float64_t f64_sqrt( float64_t a );
+
+
+void f128M_sqrt( const float128_t *aPtr, float128_t *destPtr );
+
+
+When floating-point values are passed indirectly through pointers, arguments
+aPtr
and bPtr
point to the input
+operands, and the last argument, destPtr
, points to the
+location where the result is stored.
+
+
+
+Rounding of the 80-bit double-extended-precision
+(extFloat80_t
) functions is affected by variable
+extF80_roundingPrecision
, as explained earlier in
+section 6.3,
+Rounding Precision for the 80-Bit Extended Format.
+
+
+8.5. Fused Multiply-Add Functions
+
+
+The 2008 version of the IEEE Floating-Point Standard defines a fused
+multiply-add operation that does a combined multiplication and addition
+with only a single rounding.
+SoftFloat implements fused multiply-add with functions
+
+<float>_mulAdd
+
+Unlike other operations, fused multiple-add is not supported for the
+80-bit double-extended-precision format,
+extFloat80_t
.
+
+
+
+Depending on whether floating-point values are passed by value or via pointers,
+the fused multiply-add functions have signatures of these forms:
+
+
+float64_t f64_mulAdd( float64_t a, float64_t b, float64_t c );
+
+
+void
+ f128M_mulAdd(
+ const float128_t *aPtr,
+ const float128_t *bPtr,
+ const float128_t *cPtr,
+ float128_t *destPtr
+ );
+
+
+The functions compute
+(a
× b
)
+ + c
+with a single rounding.
+When floating-point values are passed indirectly through pointers, arguments
+aPtr
, bPtr
, and
+cPtr
point to operands a
,
+b
, and c
respectively, and
+destPtr
points to the location where the result is stored.
+
+
+
+If one of the multiplication operands a
and
+b
is infinite and the other is zero, these functions raise
+the invalid exception even if operand c
is a quiet NaN.
+
+
+8.6. Remainder Functions
+
+
+For each format, SoftFloat implements the remainder operation defined by the
+IEEE Floating-Point Standard.
+The remainder functions have names
+
+<float>_rem
+
+Each remainder operation takes two floating-point operands of the same format
+and returns a result in the same format.
+Depending on whether floating-point values are passed by value or via pointers,
+the remainder functions have signatures of these forms:
+
+
+float64_t f64_rem( float64_t a, float64_t b );
+
+
+void
+ f128M_rem(
+ const float128_t *aPtr, const float128_t *bPtr, float128_t *destPtr );
+
+
+When floating-point values are passed indirectly through pointers, arguments
+aPtr
and bPtr
point to operands
+a
and b
respectively, and
+destPtr
points to the location where the result is stored.
+
+
+
+The IEEE Standard remainder operation computes the value
+a
+ − n × b
,
+where n is the integer closest to
+a
÷ b
.
+If a
÷ b
is exactly
+halfway between two integers, n is the even integer closest to
+a
÷ b
.
+The IEEE Standard’s remainder operation is always exact and so requires
+no rounding.
+
+
+
+Depending on the relative magnitudes of the operands, the remainder
+functions can take considerably longer to execute than the other SoftFloat
+functions.
+This is an inherent characteristic of the remainder operation itself and is not
+a flaw in the SoftFloat implementation.
+
+
+8.7. Round-to-Integer Functions
+
+
+For each format, SoftFloat implements the round-to-integer operation specified
+by the IEEE Floating-Point Standard.
+These functions are named
+
+<float>_roundToInt
+
+Each round-to-integer operation takes a single floating-point operand.
+This operand is rounded to an integer according to a specified rounding mode,
+and the resulting integer value is returned in the same floating-point format.
+(Note that the result is not an integer type.)
+
+
+
+The signatures of the round-to-integer functions are similar to those for
+conversions to an integer type:
+
+
+float64_t f64_roundToInt( float64_t a, uint_fast8_t roundingMode, bool exact );
+
+
+void
+ f128M_roundToInt(
+ const float128_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ float128_t *destPtr
+ );
+
+
+When floating-point values are passed indirectly through pointers,
+aPtr
points to the input operand and
+destPtr
points to the location where the result is stored.
+
+
+
+The roundingMode
argument specifies the rounding mode to
+apply.
+The variable that usually indicates rounding mode,
+softfloat_roundingMode
, is ignored.
+Argument exact
determines whether the inexact
+exception flag is raised if the conversion is not exact.
+If exact
is true
, the inexact flag may
+be raised;
+otherwise, it will not be, even if the conversion is inexact.
+
+
+8.8. Comparison Functions
+
+
+For each format, the following floating-point comparison functions are
+provided:
+
+<float>_eq
+<float>_le
+<float>_lt
+
+Each comparison takes two operands of the same type and returns a Boolean.
+The abbreviation eq
stands for “equal” (=);
+le
stands for “less than or equal” (≤);
+and lt
stands for “less than” (<).
+Depending on whether the floating-point operands are passed by value or via
+pointers, the comparison functions have signatures of these forms:
+
+
+bool f64_eq( float64_t a, float64_t b );
+
+
+bool f128M_eq( const float128_t *aPtr, const float128_t *bPtr );
+
+
+
+
+
+The usual greater-than (>), greater-than-or-equal (≥), and not-equal
+(≠) comparisons are easily obtained from the functions provided.
+The not-equal function is just the logical complement of the equal function.
+The greater-than-or-equal function is identical to the less-than-or-equal
+function with the arguments in reverse order, and likewise the greater-than
+function is identical to the less-than function with the arguments reversed.
+
+
+
+The IEEE Floating-Point Standard specifies that the less-than-or-equal and
+less-than comparisons by default raise the invalid exception if either
+operand is any kind of NaN.
+Equality comparisons, on the other hand, are defined by default to raise the
+invalid exception only for signaling NaNs, not quiet NaNs.
+For completeness, SoftFloat provides these complementary functions:
+
+<float>_eq_signaling
+<float>_le_quiet
+<float>_lt_quiet
+
+The signaling
equality comparisons are identical to the default
+equality comparisons except that the invalid exception is raised for any
+NaN input, not just for signaling NaNs.
+Similarly, the quiet
comparison functions are identical to their
+default counterparts except that the invalid exception is not raised for
+quiet NaNs.
+
+
+8.9. Signaling NaN Test Functions
+
+
+Functions for testing whether a floating-point value is a signaling NaN are
+provided with these names:
+
+<float>_isSignalingNaN
+
+The functions take one floating-point operand and return a Boolean indicating
+whether the operand is a signaling NaN.
+Accordingly, the functions have the forms
+
+
+bool f64_isSignalingNaN( float64_t a );
+
+
+bool f128M_isSignalingNaN( const float128_t *aPtr );
+
+
+
+
+8.10. Raise-Exception Function
+
+
+SoftFloat provides a single function for raising floating-point exceptions:
+
+
+void softfloat_raiseFlags( uint_fast8_t exceptions );
+
+
+The exceptions
argument is a mask indicating the set of
+exceptions to raise.
+(See earlier section 7, Exceptions and Exception Flags.)
+In addition to setting the specified exception flags in variable
+softfloat_exceptionFlags
, the softfloat_raiseFlags
+function may cause a trap or abort appropriate for the current system.
+
+
+
+9. Changes from SoftFloat Release 2
+
+
+Apart from a change in the legal use license, Release 3 of
+SoftFloat introduced numerous technical differences compared to earlier
+releases.
+
+
+9.1. Name Changes
+
+
+The most obvious and pervasive difference compared to Release 2
+is that the names of most functions and variables have changed, even when the
+behavior has not.
+First, the floating-point types, the mode variables, the exception flags
+variable, the function to raise exceptions, and various associated constants
+have been renamed as follows:
+
+
+
+old name, Release 2: |
+new name, Release 3: |
+
+
+float32 |
+float32_t |
+
+
+float64 |
+float64_t |
+
+
+floatx80 |
+extFloat80_t |
+
+
+float128 |
+float128_t |
+
+
+float_rounding_mode |
+softfloat_roundingMode |
+
+
+float_round_nearest_even |
+softfloat_round_near_even |
+
+
+float_round_to_zero |
+softfloat_round_minMag |
+
+
+float_round_down |
+softfloat_round_min |
+
+
+float_round_up |
+softfloat_round_max |
+
+
+float_detect_tininess |
+softfloat_detectTininess |
+
+
+float_tininess_before_rounding |
+softfloat_tininess_beforeRounding |
+
+
+float_tininess_after_rounding |
+softfloat_tininess_afterRounding |
+
+
+floatx80_rounding_precision |
+extF80_roundingPrecision |
+
+
+float_exception_flags |
+softfloat_exceptionFlags |
+
+
+float_flag_inexact |
+softfloat_flag_inexact |
+
+
+float_flag_underflow |
+softfloat_flag_underflow |
+
+
+float_flag_overflow |
+softfloat_flag_overflow |
+
+
+float_flag_divbyzero |
+softfloat_flag_infinite |
+
+
+float_flag_invalid |
+softfloat_flag_invalid |
+
+
+float_raise |
+softfloat_raiseFlags |
+
+
+
+
+
+
+Furthermore, Release 3 adopted the following new abbreviations for
+function names:
+
+
+
+used in names in Release 2: |
+used in names in Release 3: |
+
+ int32 | i32 |
+ int64 | i64 |
+ float32 | f32 |
+ float64 | f64 |
+ floatx80 | extF80 |
+ float128 | f128 |
+
+
+Thus, for example, the function to add two 32-bit floating-point
+numbers, previously called float32_add
in Release 2,
+is now f32_add
.
+Lastly, there have been a few other changes to function names:
+
+
+
+used in names in Release 2: |
+used in names in Release 3: |
+relevant functions: |
+
+
+_round_to_zero |
+_r_minMag |
+conversions from floating-point to integer (section 8.2) |
+
+
+round_to_int |
+roundToInt |
+round-to-integer functions (section 8.7) |
+
+
+is_signaling_nan |
+isSignalingNaN |
+signaling NaN test functions (section 8.9) |
+
+
+
+
+
+9.2. Changes to Function Arguments
+
+
+Besides simple name changes, some operations were given a different interface
+in Release 3 than they had in Release 2:
+
+
+-
+
+Since Release 3, integer arguments and results of functions have
+standard types from header <stdint.h>
, such as
+uint32_t
, whereas previously their types could be defined
+differently for each port of SoftFloat, usually using traditional C types such
+as unsigned
int
.
+Likewise, functions in Release 3 and later pass Booleans as
+standard type bool
from <stdbool.h>
, whereas
+previously these were again passed as a port-specific type (usually
+int
).
+
+
+ -
+
+As explained earlier in section 4.5, Conventions for Passing
+Arguments and Results, SoftFloat functions in Release 3 and
+later may pass 80-bit and 128-bit floating-point
+values through pointers, meaning that functions take pointer arguments and then
+read or write floating-point values at the locations indicated by the pointers.
+In Release 2, floating-point arguments and results were always
+passed by value, regardless of their size.
+
+
+ -
+
+Functions that round to an integer have additional
+roundingMode
and exact
arguments that
+they did not have in Release 2.
+Refer to sections 8.2 and 8.7 for descriptions of these functions
+since Release 3.
+For Release 2, the rounding mode, when needed, was taken from the
+same global variable that affects the basic arithmetic operations (now called
+softfloat_roundingMode
but previously known as
+float_rounding_mode
).
+Also, for Release 2, if the original floating-point input was not
+an exact integer value, and if the invalid exception was not raised by
+the function, the inexact exception was always raised.
+Release 2 had no option to suppress raising inexact in this
+case.
+Applications using SoftFloat Release 3 or later can get the same
+effect as Release 2 by passing variable
+softfloat_roundingMode
for argument
+roundingMode
and true
for argument
+exact
.
+
+
+
+
+
+9.3. Added Capabilities
+
+
+With Release 3, some new features have been added that were not
+present in Release 2:
+
+
+-
+
+A port of SoftFloat can now define any of the floating-point types
+float32_t
, float64_t
, extFloat80_t
, and
+float128_t
as aliases for C’s standard floating-point types
+float
, double
, and long
+double
, using either #define
or typedef
.
+This potential convenience was not supported under Release 2.
+
+
+
+(Note, however, that there may be a performance cost to defining
+SoftFloat’s floating-point types this way, depending on the platform and
+the applications using SoftFloat.
+Ports of SoftFloat may choose to forgo the convenience in favor of better
+speed.)
+
+
+
+
-
+As of Release 3b, 16-bit half-precision,
+
float16_t
, is supported.
+
+
+
+
-
+Functions have been added for converting between the floating-point types and
+unsigned integers.
+Release 2 supported only signed integers, not unsigned.
+
+
+
+
-
+Fused multiply-add functions have been added for all floating-point formats
+except 80-bit double-extended-precision,
+
extFloat80_t
.
+
+
+
+
-
+New rounding modes are supported:
+
softfloat_round_near_maxMag
(round to nearest, with ties to
+maximum magnitude, away from zero), and, as of Release 3c,
+optional softfloat_round_odd
(round to odd, also known as
+jamming).
+
+
+
+
+
+9.4. Better Compatibility with the C Language
+
+
+Release 3 of SoftFloat was written to conform better to the ISO C
+Standard’s rules for portability.
+For example, older releases of SoftFloat employed type conversions in ways
+that, while commonly practiced, are not fully defined by the C Standard.
+Such problematic type conversions have generally been replaced by the use of
+unions, the behavior around which is more strictly regulated these days.
+
+
+9.5. New Organization as a Library
+
+
+Starting with Release 3, SoftFloat now builds as a library.
+Previously, SoftFloat compiled into a single, monolithic object file containing
+all the SoftFloat functions, with the consequence that a program linking with
+SoftFloat would get every SoftFloat function in its binary file even if only a
+few functions were actually used.
+With SoftFloat in the form of a library, a program that is linked by a standard
+linker will include only those functions of SoftFloat that it needs and no
+others.
+
+
+9.6. Optimization Gains (and Losses)
+
+
+Individual SoftFloat functions have been variously improved in
+Release 3 compared to earlier releases.
+In particular, better, faster algorithms have been deployed for the operations
+of division, square root, and remainder.
+For functions operating on the larger 80-bit and
+128-bit formats, extFloat80_t
and
+float128_t
, code size has also generally been reduced.
+
+
+
+However, because Release 2 compiled all of SoftFloat together as a
+single object file, compilers could make optimizations across function calls
+when one SoftFloat function calls another.
+Now that the functions of SoftFloat are compiled separately and only afterward
+linked together into a program, there is not usually the same opportunity to
+optimize across function calls.
+Some loss of speed has been observed due to this change.
+
+
+
+10. Future Directions
+
+
+The following improvements are anticipated for future releases of SoftFloat:
+
+-
+more functions from the 2008 version of the IEEE Floating-Point Standard;
+
-
+consistent, defined behavior for non-canonical representations of extended
+format
extFloat80_t
(discussed in section 4.4,
+Non-canonical Representations in extFloat80_t
).
+
+
+
+
+
+11. Contact Information
+
+
+At the time of this writing, the most up-to-date information about SoftFloat
+and the latest release can be found at the Web page
+http://www.jhauser.us/arithmetic/SoftFloat.html
.
+
+
+
+
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/extF80M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/extF80M_isSignalingNaN.c
new file mode 100644
index 000000000..85ee211c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/extF80M_isSignalingNaN.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint64_t uiA0;
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
+ uiA0 = aSPtr->signif;
+ return
+ ! (uiA0 & UINT64_C( 0x4000000000000000 ))
+ && (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/f128M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/f128M_isSignalingNaN.c
new file mode 100644
index 000000000..79a707771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/f128M_isSignalingNaN.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool f128M_isSignalingNaN( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
+ return
+ ((uiA96 & 0x00007FFF) != 0)
+ || ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80M.c
new file mode 100644
index 000000000..3405b3ba4
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| `zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+
+ zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
+ zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80UI.c
new file mode 100644
index 000000000..cb7424f43
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80UI.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
+ uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128M.c
new file mode 100644
index 000000000..e7ea80258
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by `zWPtr'. Argument
+| `zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+
+ softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
+ zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128UI.c
new file mode 100644
index 000000000..7a9423bea
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128UI.c
@@ -0,0 +1,55 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
+ uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF16UI.c
new file mode 100644
index 000000000..d4e458a94
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF16UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF32UI.c
new file mode 100644
index 000000000..ed6c2268f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF32UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF64UI.c
new file mode 100644
index 000000000..1182be3c9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF64UI.c
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
+{
+
+ return
+ (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
+ | aPtr->v64>>12;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80MToCommonNaN.c
new file mode 100644
index 000000000..00baf35f8
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by `zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
+{
+
+ if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = signExtF80UI64( aSPtr->signExp );
+ zPtr->v64 = aSPtr->signif<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80UIToCommonNaN.c
new file mode 100644
index 000000000..ab6311ef2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80UIToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA64>>15;
+ zPtr->v64 = uiA0<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128MToCommonNaN.c
new file mode 100644
index 000000000..55ec25b58
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by `zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument `aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
+{
+
+ if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
+ softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128UIToCommonNaN.c
new file mode 100644
index 000000000..f838f02aa
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128UIToCommonNaN.c
@@ -0,0 +1,65 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+ struct uint128 NaNSig;
+
+ if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
+ zPtr->sign = uiA64>>63;
+ zPtr->v64 = NaNSig.v64;
+ zPtr->v0 = NaNSig.v0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f16UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f16UIToCommonNaN.c
new file mode 100644
index 000000000..c1e242d23
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f16UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF16UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>15;
+ zPtr->v64 = (uint_fast64_t) uiA<<54;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f32UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f32UIToCommonNaN.c
new file mode 100644
index 000000000..b21ba6603
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f32UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF32UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>31;
+ zPtr->v64 = (uint_fast64_t) uiA<<41;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f64UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f64UIToCommonNaN.c
new file mode 100644
index 000000000..6529d2ee5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f64UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF64UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>63;
+ zPtr->v64 = uiA<<12;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80M.c
new file mode 100644
index 000000000..ea1d57a78
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80M.c
@@ -0,0 +1,107 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by `zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ )
+{
+ bool isSigNaNA;
+ const struct extFloat80M *sPtr;
+ bool isSigNaNB;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiMagA64, uiMagB64;
+
+ isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
+ sPtr = aSPtr;
+ if ( ! bSPtr ) {
+ if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
+ goto copy;
+ }
+ isSigNaNB = extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr );
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ uiB64 = bSPtr->signExp;
+ if ( isSigNaNB ) goto returnLargerUIMag;
+ uiB0 = bSPtr->signif;
+ if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto copyB;
+ goto copy;
+ } else {
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto copy;
+ goto copyB;
+ }
+ }
+ uiB64 = bSPtr->signExp;
+ returnLargerUIMag:
+ uiA64 = aSPtr->signExp;
+ uiMagA64 = uiA64 & 0x7FFF;
+ uiMagB64 = uiB64 & 0x7FFF;
+ if ( uiMagA64 < uiMagB64 ) goto copyB;
+ if ( uiMagB64 < uiMagA64 ) goto copy;
+ uiA0 = aSPtr->signif;
+ uiB0 = bSPtr->signif;
+ if ( uiA0 < uiB0 ) goto copyB;
+ if ( uiB0 < uiA0 ) goto copy;
+ if ( uiA64 < uiB64 ) goto copy;
+ copyB:
+ sPtr = bSPtr;
+ copy:
+ zSPtr->signExp = sPtr->signExp;
+ zSPtr->signif = sPtr->signif | UINT64_C( 0xC000000000000000 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80UI.c
new file mode 100644
index 000000000..cc3f0f42c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80UI.c
@@ -0,0 +1,106 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast64_t uiNonsigA0, uiNonsigB0;
+ uint_fast16_t uiMagA64, uiMagB64;
+ struct uint128 uiZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
+ isSigNaNB = softfloat_isSigNaNExtF80UI( uiB64, uiB0 );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA0 = uiA0 | UINT64_C( 0xC000000000000000 );
+ uiNonsigB0 = uiB0 | UINT64_C( 0xC000000000000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto returnB;
+ goto returnA;
+ } else {
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto returnA;
+ goto returnB;
+ }
+ }
+ returnLargerMag:
+ uiMagA64 = uiA64 & 0x7FFF;
+ uiMagB64 = uiB64 & 0x7FFF;
+ if ( uiMagA64 < uiMagB64 ) goto returnB;
+ if ( uiMagB64 < uiMagA64 ) goto returnA;
+ if ( uiA0 < uiB0 ) goto returnB;
+ if ( uiB0 < uiA0 ) goto returnA;
+ if ( uiA64 < uiB64 ) goto returnA;
+ returnB:
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiNonsigB0;
+ return uiZ;
+ returnA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiNonsigA0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128M.c
new file mode 100644
index 000000000..aa903bf80
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128M.c
@@ -0,0 +1,76 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by `zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of `aWPtr', `bWPtr',
+| and `zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
+{
+ bool isSigNaNA;
+ const uint32_t *ptr;
+
+ ptr = aWPtr;
+ isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
+ if (
+ isSigNaNA
+ || (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto copy;
+ }
+ if ( ! softfloat_isNaNF128M( aWPtr ) ) ptr = bWPtr;
+ copy:
+ zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
+ zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128UI.c
new file mode 100644
index 000000000..1c1c2f4a0
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128UI.c
@@ -0,0 +1,81 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating `uiA64' and
+| `uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating `uiB64' and `uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA;
+ struct uint128 uiZ;
+
+ isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
+ if ( isSigNaNA || softfloat_isSigNaNF128UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto returnNonsigA;
+ }
+ if ( isNaNF128UI( uiA64, uiA0 ) ) {
+ returnNonsigA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiA0;
+ } else {
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiB0;
+ }
+ uiZ.v64 |= UINT64_C( 0x0000800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF16UI.c
new file mode 100644
index 000000000..4e87ff41f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF16UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting `uiA' and `uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF16UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF16UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) return uiA | 0x0200;
+ }
+ return (isNaNF16UI( uiA ) ? uiA : uiB) | 0x0200;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF32UI.c
new file mode 100644
index 000000000..e1a875525
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF32UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting `uiA' and `uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF32UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF32UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) return uiA | 0x00400000;
+ }
+ return (isNaNF32UI( uiA ) ? uiA : uiB) | 0x00400000;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF64UI.c
new file mode 100644
index 000000000..1af349f3e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF64UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting `uiA' and `uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF64UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF64UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) return uiA | UINT64_C( 0x0008000000000000 );
+ }
+ return (isNaNF64UI( uiA ) ? uiA : uiB) | UINT64_C( 0x0008000000000000 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/softfloat_raiseFlags.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/softfloat_raiseFlags.c
new file mode 100644
index 000000000..3115306be
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/softfloat_raiseFlags.c
@@ -0,0 +1,52 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Raises the exceptions specified by `flags'. Floating-point traps can be
+| defined here if desired. It is currently not possible for such a trap
+| to substitute a result value. If traps are not implemented, this routine
+| should be simply `softfloat_exceptionFlags |= flags;'.
+*----------------------------------------------------------------------------*/
+void softfloat_raiseFlags( uint_fast8_t flags )
+{
+
+ softfloat_exceptionFlags |= flags;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/specialize.h b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/specialize.h
new file mode 100644
index 000000000..5fe119a1e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/specialize.h
@@ -0,0 +1,376 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#ifndef specialize_h
+#define specialize_h 1
+
+#include
+#include
+#include "primitiveTypes.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Default value for 'softfloat_detectTininess'.
+*----------------------------------------------------------------------------*/
+#define init_detectTininess softfloat_tininess_afterRounding
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 32-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui32_fromPosOverflow 0xFFFFFFFF
+#define ui32_fromNegOverflow 0xFFFFFFFF
+#define ui32_fromNaN 0xFFFFFFFF
+#define i32_fromPosOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNaN (-0x7FFFFFFF - 1)
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 64-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNegOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNaN UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define i64_fromPosOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNaN (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+
+/*----------------------------------------------------------------------------
+| "Common NaN" structure, used to transfer NaN representations from one format
+| to another.
+*----------------------------------------------------------------------------*/
+struct commonNaN {
+ bool sign;
+#ifdef LITTLEENDIAN
+ uint64_t v0, v64;
+#else
+ uint64_t v64, v0;
+#endif
+};
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 16-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF16UI 0xFE00
+
+/*----------------------------------------------------------------------------
+| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
+| 16-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 32-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF32UI 0xFFC00000
+
+/*----------------------------------------------------------------------------
+| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
+| 32-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 64-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF64UI UINT64_C( 0xFFF8000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
+| 64-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 80-bit extended floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNExtF80UI64 0xFFFF
+#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 80-bit unsigned integer formed from concatenating
+| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
+| floating-point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI64 UINT64_C( 0xFFFF800000000000 )
+#define defaultNaNF128UI0 UINT64_C( 0 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 128-bit unsigned integer formed from concatenating
+| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
+| point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+#else
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI96 0xFFFF8000
+#define defaultNaNF128UI64 0
+#define defaultNaNF128UI32 0
+#define defaultNaNF128UI0 0
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
+
+#endif
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c
new file mode 100644
index 000000000..85ee211c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint64_t uiA0;
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
+ uiA0 = aSPtr->signif;
+ return
+ ! (uiA0 & UINT64_C( 0x4000000000000000 ))
+ && (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c
new file mode 100644
index 000000000..79a707771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool f128M_isSignalingNaN( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
+ return
+ ((uiA96 & 0x00007FFF) != 0)
+ || ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c
new file mode 100644
index 000000000..3405b3ba4
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| `zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+
+ zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
+ zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80UI.c
new file mode 100644
index 000000000..cb7424f43
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80UI.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
+ uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128M.c
new file mode 100644
index 000000000..e7ea80258
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by `zWPtr'. Argument
+| `zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+
+ softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
+ zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128UI.c
new file mode 100644
index 000000000..7a9423bea
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128UI.c
@@ -0,0 +1,55 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
+ uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c
new file mode 100644
index 000000000..d4e458a94
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c
new file mode 100644
index 000000000..ed6c2268f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c
new file mode 100644
index 000000000..1182be3c9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
+{
+
+ return
+ (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
+ | aPtr->v64>>12;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c
new file mode 100644
index 000000000..00baf35f8
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by `zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
+{
+
+ if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = signExtF80UI64( aSPtr->signExp );
+ zPtr->v64 = aSPtr->signif<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80UIToCommonNaN.c
new file mode 100644
index 000000000..ab6311ef2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80UIToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA64>>15;
+ zPtr->v64 = uiA0<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c
new file mode 100644
index 000000000..55ec25b58
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by `zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument `aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
+{
+
+ if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
+ softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128UIToCommonNaN.c
new file mode 100644
index 000000000..f838f02aa
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128UIToCommonNaN.c
@@ -0,0 +1,65 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+ struct uint128 NaNSig;
+
+ if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
+ zPtr->sign = uiA64>>63;
+ zPtr->v64 = NaNSig.v64;
+ zPtr->v0 = NaNSig.v0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c
new file mode 100644
index 000000000..c1e242d23
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF16UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>15;
+ zPtr->v64 = (uint_fast64_t) uiA<<54;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c
new file mode 100644
index 000000000..b21ba6603
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF32UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>31;
+ zPtr->v64 = (uint_fast64_t) uiA<<41;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c
new file mode 100644
index 000000000..6529d2ee5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF64UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>63;
+ zPtr->v64 = uiA<<12;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c
new file mode 100644
index 000000000..ea1d57a78
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c
@@ -0,0 +1,107 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by `zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ )
+{
+ bool isSigNaNA;
+ const struct extFloat80M *sPtr;
+ bool isSigNaNB;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiMagA64, uiMagB64;
+
+ isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
+ sPtr = aSPtr;
+ if ( ! bSPtr ) {
+ if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
+ goto copy;
+ }
+ isSigNaNB = extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr );
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ uiB64 = bSPtr->signExp;
+ if ( isSigNaNB ) goto returnLargerUIMag;
+ uiB0 = bSPtr->signif;
+ if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto copyB;
+ goto copy;
+ } else {
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto copy;
+ goto copyB;
+ }
+ }
+ uiB64 = bSPtr->signExp;
+ returnLargerUIMag:
+ uiA64 = aSPtr->signExp;
+ uiMagA64 = uiA64 & 0x7FFF;
+ uiMagB64 = uiB64 & 0x7FFF;
+ if ( uiMagA64 < uiMagB64 ) goto copyB;
+ if ( uiMagB64 < uiMagA64 ) goto copy;
+ uiA0 = aSPtr->signif;
+ uiB0 = bSPtr->signif;
+ if ( uiA0 < uiB0 ) goto copyB;
+ if ( uiB0 < uiA0 ) goto copy;
+ if ( uiA64 < uiB64 ) goto copy;
+ copyB:
+ sPtr = bSPtr;
+ copy:
+ zSPtr->signExp = sPtr->signExp;
+ zSPtr->signif = sPtr->signif | UINT64_C( 0xC000000000000000 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80UI.c
new file mode 100644
index 000000000..cc3f0f42c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80UI.c
@@ -0,0 +1,106 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast64_t uiNonsigA0, uiNonsigB0;
+ uint_fast16_t uiMagA64, uiMagB64;
+ struct uint128 uiZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
+ isSigNaNB = softfloat_isSigNaNExtF80UI( uiB64, uiB0 );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA0 = uiA0 | UINT64_C( 0xC000000000000000 );
+ uiNonsigB0 = uiB0 | UINT64_C( 0xC000000000000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto returnB;
+ goto returnA;
+ } else {
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto returnA;
+ goto returnB;
+ }
+ }
+ returnLargerMag:
+ uiMagA64 = uiA64 & 0x7FFF;
+ uiMagB64 = uiB64 & 0x7FFF;
+ if ( uiMagA64 < uiMagB64 ) goto returnB;
+ if ( uiMagB64 < uiMagA64 ) goto returnA;
+ if ( uiA0 < uiB0 ) goto returnB;
+ if ( uiB0 < uiA0 ) goto returnA;
+ if ( uiA64 < uiB64 ) goto returnA;
+ returnB:
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiNonsigB0;
+ return uiZ;
+ returnA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiNonsigA0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128M.c
new file mode 100644
index 000000000..06554fbfe
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128M.c
@@ -0,0 +1,108 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by `zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of `aWPtr', `bWPtr',
+| and `zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
+{
+ bool isSigNaNA;
+ const uint32_t *ptr;
+ bool isSigNaNB;
+ uint32_t uiA96, uiB96, wordMagA, wordMagB;
+
+ isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
+ ptr = aWPtr;
+ if ( ! bWPtr ) {
+ if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
+ goto copy;
+ }
+ isSigNaNB = f128M_isSignalingNaN( (const float128_t *) bWPtr );
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerUIMag;
+ if ( softfloat_isNaNF128M( bWPtr ) ) goto copyB;
+ goto copy;
+ } else {
+ if ( softfloat_isNaNF128M( aWPtr ) ) goto copy;
+ goto copyB;
+ }
+ }
+ returnLargerUIMag:
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ wordMagA = uiA96 & 0x7FFFFFFF;
+ wordMagB = uiB96 & 0x7FFFFFFF;
+ if ( wordMagA < wordMagB ) goto copyB;
+ if ( wordMagB < wordMagA ) goto copy;
+ wordMagA = aWPtr[indexWord( 4, 2 )];
+ wordMagB = bWPtr[indexWord( 4, 2 )];
+ if ( wordMagA < wordMagB ) goto copyB;
+ if ( wordMagB < wordMagA ) goto copy;
+ wordMagA = aWPtr[indexWord( 4, 1 )];
+ wordMagB = bWPtr[indexWord( 4, 1 )];
+ if ( wordMagA < wordMagB ) goto copyB;
+ if ( wordMagB < wordMagA ) goto copy;
+ wordMagA = aWPtr[indexWord( 4, 0 )];
+ wordMagB = bWPtr[indexWord( 4, 0 )];
+ if ( wordMagA < wordMagB ) goto copyB;
+ if ( wordMagB < wordMagA ) goto copy;
+ if ( uiA96 < uiB96 ) goto copy;
+ copyB:
+ ptr = bWPtr;
+ copy:
+ zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
+ zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128UI.c
new file mode 100644
index 000000000..46b9f5f2c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128UI.c
@@ -0,0 +1,105 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast64_t uiNonsigA64, uiNonsigB64, uiMagA64, uiMagB64;
+ struct uint128 uiZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
+ isSigNaNB = softfloat_isSigNaNF128UI( uiB64, uiB0 );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA64 = uiA64 | UINT64_C( 0x0000800000000000 );
+ uiNonsigB64 = uiB64 | UINT64_C( 0x0000800000000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ if ( isNaNF128UI( uiB64, uiB0 ) ) goto returnB;
+ goto returnA;
+ } else {
+ if ( isNaNF128UI( uiA64, uiA0 ) ) goto returnA;
+ goto returnB;
+ }
+ }
+ returnLargerMag:
+ uiMagA64 = uiA64 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ uiMagB64 = uiB64 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ if ( uiMagA64 < uiMagB64 ) goto returnB;
+ if ( uiMagB64 < uiMagA64 ) goto returnA;
+ if ( uiA0 < uiB0 ) goto returnB;
+ if ( uiB0 < uiA0 ) goto returnA;
+ if ( uiNonsigA64 < uiNonsigB64 ) goto returnA;
+ returnB:
+ uiZ.v64 = uiNonsigB64;
+ uiZ.v0 = uiB0;
+ return uiZ;
+ returnA:
+ uiZ.v64 = uiNonsigA64;
+ uiZ.v0 = uiA0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c
new file mode 100644
index 000000000..89cc0fe97
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c
@@ -0,0 +1,84 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast16_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNF16UI( uiA );
+ isSigNaNB = softfloat_isSigNaNF16UI( uiB );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA = uiA | 0x0200;
+ uiNonsigB = uiB | 0x0200;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ return isNaNF16UI( uiB ) ? uiNonsigB : uiNonsigA;
+ } else {
+ return isNaNF16UI( uiA ) ? uiNonsigA : uiNonsigB;
+ }
+ }
+ returnLargerMag:
+ uiMagA = uiA & 0x7FFF;
+ uiMagB = uiB & 0x7FFF;
+ if ( uiMagA < uiMagB ) return uiNonsigB;
+ if ( uiMagB < uiMagA ) return uiNonsigA;
+ return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF32UI.c
new file mode 100644
index 000000000..aeb6024ac
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF32UI.c
@@ -0,0 +1,84 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast32_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNF32UI( uiA );
+ isSigNaNB = softfloat_isSigNaNF32UI( uiB );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA = uiA | 0x00400000;
+ uiNonsigB = uiB | 0x00400000;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ return isNaNF32UI( uiB ) ? uiNonsigB : uiNonsigA;
+ } else {
+ return isNaNF32UI( uiA ) ? uiNonsigA : uiNonsigB;
+ }
+ }
+ returnLargerMag:
+ uiMagA = uiA & 0x7FFFFFFF;
+ uiMagB = uiB & 0x7FFFFFFF;
+ if ( uiMagA < uiMagB ) return uiNonsigB;
+ if ( uiMagB < uiMagA ) return uiNonsigA;
+ return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF64UI.c
new file mode 100644
index 000000000..dabad4024
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF64UI.c
@@ -0,0 +1,84 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast64_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNF64UI( uiA );
+ isSigNaNB = softfloat_isSigNaNF64UI( uiB );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA = uiA | UINT64_C( 0x0008000000000000 );
+ uiNonsigB = uiB | UINT64_C( 0x0008000000000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ return isNaNF64UI( uiB ) ? uiNonsigB : uiNonsigA;
+ } else {
+ return isNaNF64UI( uiA ) ? uiNonsigA : uiNonsigB;
+ }
+ }
+ returnLargerMag:
+ uiMagA = uiA & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ uiMagB = uiB & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ if ( uiMagA < uiMagB ) return uiNonsigB;
+ if ( uiMagB < uiMagA ) return uiNonsigA;
+ return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/softfloat_raiseFlags.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/softfloat_raiseFlags.c
new file mode 100644
index 000000000..3115306be
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/softfloat_raiseFlags.c
@@ -0,0 +1,52 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Raises the exceptions specified by `flags'. Floating-point traps can be
+| defined here if desired. It is currently not possible for such a trap
+| to substitute a result value. If traps are not implemented, this routine
+| should be simply `softfloat_exceptionFlags |= flags;'.
+*----------------------------------------------------------------------------*/
+void softfloat_raiseFlags( uint_fast8_t flags )
+{
+
+ softfloat_exceptionFlags |= flags;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/specialize.h b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/specialize.h
new file mode 100644
index 000000000..5fe119a1e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/specialize.h
@@ -0,0 +1,376 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#ifndef specialize_h
+#define specialize_h 1
+
+#include
+#include
+#include "primitiveTypes.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Default value for 'softfloat_detectTininess'.
+*----------------------------------------------------------------------------*/
+#define init_detectTininess softfloat_tininess_afterRounding
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 32-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui32_fromPosOverflow 0xFFFFFFFF
+#define ui32_fromNegOverflow 0xFFFFFFFF
+#define ui32_fromNaN 0xFFFFFFFF
+#define i32_fromPosOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNaN (-0x7FFFFFFF - 1)
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 64-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNegOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNaN UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define i64_fromPosOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNaN (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+
+/*----------------------------------------------------------------------------
+| "Common NaN" structure, used to transfer NaN representations from one format
+| to another.
+*----------------------------------------------------------------------------*/
+struct commonNaN {
+ bool sign;
+#ifdef LITTLEENDIAN
+ uint64_t v0, v64;
+#else
+ uint64_t v64, v0;
+#endif
+};
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 16-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF16UI 0xFE00
+
+/*----------------------------------------------------------------------------
+| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
+| 16-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 32-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF32UI 0xFFC00000
+
+/*----------------------------------------------------------------------------
+| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
+| 32-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 64-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF64UI UINT64_C( 0xFFF8000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
+| 64-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 80-bit extended floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNExtF80UI64 0xFFFF
+#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 80-bit unsigned integer formed from concatenating
+| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
+| floating-point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI64 UINT64_C( 0xFFFF800000000000 )
+#define defaultNaNF128UI0 UINT64_C( 0 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 128-bit unsigned integer formed from concatenating
+| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
+| point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+#else
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI96 0xFFFF8000
+#define defaultNaNF128UI64 0
+#define defaultNaNF128UI32 0
+#define defaultNaNF128UI0 0
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
+
+#endif
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/extF80M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/extF80M_isSignalingNaN.c
new file mode 100644
index 000000000..85ee211c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/extF80M_isSignalingNaN.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint64_t uiA0;
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
+ uiA0 = aSPtr->signif;
+ return
+ ! (uiA0 & UINT64_C( 0x4000000000000000 ))
+ && (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/f128M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/f128M_isSignalingNaN.c
new file mode 100644
index 000000000..79a707771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/f128M_isSignalingNaN.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool f128M_isSignalingNaN( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
+ return
+ ((uiA96 & 0x00007FFF) != 0)
+ || ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80M.c
new file mode 100644
index 000000000..54a50dc35
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80M.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat_types.h"
+
+#define softfloat_commonNaNToExtF80M softfloat_commonNaNToExtF80M
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+
+ zSPtr->signExp = defaultNaNExtF80UI64;
+ zSPtr->signif = defaultNaNExtF80UI0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80UI.c
new file mode 100644
index 000000000..5b698f664
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80UI.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "primitiveTypes.h"
+
+#define softfloat_commonNaNToExtF80UI softfloat_commonNaNToExtF80UI
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = defaultNaNExtF80UI64;
+ uiZ.v0 = defaultNaNExtF80UI0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128M.c
new file mode 100644
index 000000000..b22baa816
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128M.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+
+#define softfloat_commonNaNToF128M softfloat_commonNaNToF128M
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+
+ zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
+ zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
+ zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
+ zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128UI.c
new file mode 100644
index 000000000..70f0cf1c6
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128UI.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "primitiveTypes.h"
+
+#define softfloat_commonNaNToF128UI softfloat_commonNaNToF128UI
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = defaultNaNF128UI64;
+ uiZ.v0 = defaultNaNF128UI0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF16UI.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF16UI.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF32UI.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF32UI.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF64UI.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF64UI.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80MToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80MToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128MToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128MToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f16UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f16UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f16UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f32UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f32UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f32UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f64UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f64UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f64UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80M.c
new file mode 100644
index 000000000..1c6510c7e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80M.c
@@ -0,0 +1,74 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ )
+{
+ uint_fast16_t ui64;
+ uint_fast64_t ui0;
+
+ ui64 = aSPtr->signExp;
+ ui0 = aSPtr->signif;
+ if (
+ softfloat_isSigNaNExtF80UI( ui64, ui0 )
+ || (bSPtr
+ && (ui64 = bSPtr->signExp,
+ ui0 = bSPtr->signif,
+ softfloat_isSigNaNExtF80UI( ui64, ui0 )))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zSPtr->signExp = defaultNaNExtF80UI64;
+ zSPtr->signif = defaultNaNExtF80UI0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80UI.c
new file mode 100644
index 000000000..e1bb1555a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80UI.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ struct uint128 uiZ;
+
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ uiZ.v64 = defaultNaNExtF80UI64;
+ uiZ.v0 = defaultNaNExtF80UI0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128M.c
new file mode 100644
index 000000000..9bddee955
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128M.c
@@ -0,0 +1,68 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
+{
+
+ if (
+ f128M_isSignalingNaN( (const float128_t *) aWPtr );
+ || (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
+ zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
+ zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
+ zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128UI.c
new file mode 100644
index 000000000..57fddd158
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128UI.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ struct uint128 uiZ;
+
+ if (
+ softfloat_isSigNaNF128UI( uiA64, uiA0 )
+ || softfloat_isSigNaNF128UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ uiZ.v64 = defaultNaNF128UI64;
+ uiZ.v0 = defaultNaNF128UI0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF16UI.c
new file mode 100644
index 000000000..0b08e0039
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF16UI.c
@@ -0,0 +1,58 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
+{
+
+ if ( softfloat_isSigNaNF16UI( uiA ) || softfloat_isSigNaNF16UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return defaultNaNF16UI;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF32UI.c
new file mode 100644
index 000000000..cab740358
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF32UI.c
@@ -0,0 +1,58 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
+{
+
+ if ( softfloat_isSigNaNF32UI( uiA ) || softfloat_isSigNaNF32UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return defaultNaNF32UI;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF64UI.c
new file mode 100644
index 000000000..83b91d3a9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF64UI.c
@@ -0,0 +1,58 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
+{
+
+ if ( softfloat_isSigNaNF64UI( uiA ) || softfloat_isSigNaNF64UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return defaultNaNF64UI;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/softfloat_raiseFlags.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/softfloat_raiseFlags.c
new file mode 100644
index 000000000..61046da3c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/softfloat_raiseFlags.c
@@ -0,0 +1,52 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Raises the exceptions specified by 'flags'. Floating-point traps can be
+| defined here if desired. It is currently not possible for such a trap
+| to substitute a result value. If traps are not implemented, this routine
+| should be simply 'softfloat_exceptionFlags |= flags;'.
+*----------------------------------------------------------------------------*/
+void softfloat_raiseFlags( uint_fast8_t flags )
+{
+
+ softfloat_exceptionFlags |= flags;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/specialize.h b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/specialize.h
new file mode 100644
index 000000000..2c481a259
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/specialize.h
@@ -0,0 +1,407 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#ifndef specialize_h
+#define specialize_h 1
+
+#include
+#include
+#include "primitiveTypes.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Default value for 'softfloat_detectTininess'.
+*----------------------------------------------------------------------------*/
+#define init_detectTininess softfloat_tininess_beforeRounding
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 32-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui32_fromPosOverflow 0xFFFFFFFF
+#define ui32_fromNegOverflow 0
+#define ui32_fromNaN 0
+#define i32_fromPosOverflow 0x7FFFFFFF
+#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNaN 0
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 64-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNegOverflow 0
+#define ui64_fromNaN 0
+#define i64_fromPosOverflow INT64_C( 0x7FFFFFFFFFFFFFFF )
+#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNaN 0
+
+/*----------------------------------------------------------------------------
+| "Common NaN" structure, used to transfer NaN representations from one format
+| to another.
+*----------------------------------------------------------------------------*/
+struct commonNaN { char _unused; };
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 16-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF16UI 0x7E00
+
+/*----------------------------------------------------------------------------
+| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
+| 16-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_f16UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & 0x0200) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+#define softfloat_commonNaNToF16UI( aPtr ) ((uint_fast16_t) defaultNaNF16UI)
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 32-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF32UI 0x7FC00000
+
+/*----------------------------------------------------------------------------
+| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
+| 32-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_f32UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & 0x00400000) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+#define softfloat_commonNaNToF32UI( aPtr ) ((uint_fast32_t) defaultNaNF32UI)
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 64-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF64UI UINT64_C( 0x7FF8000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
+| 64-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_f64UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & UINT64_C( 0x0008000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+#define softfloat_commonNaNToF64UI( aPtr ) ((uint_fast64_t) defaultNaNF64UI)
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 80-bit extended floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNExtF80UI64 0x7FFF
+#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 80-bit unsigned integer formed from concatenating
+| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
+| floating-point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_extF80UIToCommonNaN( uiA64, uiA0, zPtr ) if ( ! ((uiA0) & UINT64_C( 0x4000000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+#if defined INLINE && ! defined softfloat_commonNaNToExtF80UI
+INLINE
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+ uiZ.v64 = defaultNaNExtF80UI64;
+ uiZ.v0 = defaultNaNExtF80UI0;
+ return uiZ;
+}
+#else
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
+#endif
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI64 UINT64_C( 0x7FFF800000000000 )
+#define defaultNaNF128UI0 UINT64_C( 0 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 128-bit unsigned integer formed from concatenating
+| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
+| point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_f128UIToCommonNaN( uiA64, uiA0, zPtr ) if ( ! ((uiA64) & UINT64_C( 0x0000800000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+#if defined INLINE && ! defined softfloat_commonNaNToF128UI
+INLINE
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+ uiZ.v64 = defaultNaNF128UI64;
+ uiZ.v0 = defaultNaNF128UI0;
+ return uiZ;
+}
+#else
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
+#endif
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+#else
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_extF80MToCommonNaN( aSPtr, zPtr ) if ( ! ((aSPtr)->signif & UINT64_C( 0x4000000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+#if defined INLINE && ! defined softfloat_commonNaNToExtF80M
+INLINE
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+ zSPtr->signExp = defaultNaNExtF80UI64;
+ zSPtr->signif = defaultNaNExtF80UI0;
+}
+#else
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
+#endif
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI96 0x7FFF8000
+#define defaultNaNF128UI64 0
+#define defaultNaNF128UI32 0
+#define defaultNaNF128UI0 0
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+#define softfloat_f128MToCommonNaN( aWPtr, zPtr ) if ( ! ((aWPtr)[indexWordHi( 4 )] & UINT64_C( 0x0000800000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+#if defined INLINE && ! defined softfloat_commonNaNToF128M
+INLINE
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+ zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
+ zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
+ zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
+ zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
+}
+#else
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
+#endif
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
+
+#endif
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/extF80M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/extF80M_isSignalingNaN.c
new file mode 100644
index 000000000..85ee211c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/extF80M_isSignalingNaN.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint64_t uiA0;
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
+ uiA0 = aSPtr->signif;
+ return
+ ! (uiA0 & UINT64_C( 0x4000000000000000 ))
+ && (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/f128M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/f128M_isSignalingNaN.c
new file mode 100644
index 000000000..79a707771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/f128M_isSignalingNaN.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool f128M_isSignalingNaN( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
+ return
+ ((uiA96 & 0x00007FFF) != 0)
+ || ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80M.c
new file mode 100644
index 000000000..543400bc1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+
+ zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
+ zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80UI.c
new file mode 100644
index 000000000..6cf1d1191
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80UI.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
+ uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128M.c
new file mode 100644
index 000000000..4e8ede07f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+
+ softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
+ zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128UI.c
new file mode 100644
index 000000000..f938c3f2d
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128UI.c
@@ -0,0 +1,55 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
+ uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF16UI.c
new file mode 100644
index 000000000..6cd4fc192
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF16UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF32UI.c
new file mode 100644
index 000000000..7b38167f0
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF32UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF64UI.c
new file mode 100644
index 000000000..14847029d
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF64UI.c
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
+{
+
+ return
+ (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
+ | aPtr->v64>>12;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80MToCommonNaN.c
new file mode 100644
index 000000000..82216cf41
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
+{
+
+ if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = signExtF80UI64( aSPtr->signExp );
+ zPtr->v64 = aSPtr->signif<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80UIToCommonNaN.c
new file mode 100644
index 000000000..2559fb6d2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80UIToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA64>>15;
+ zPtr->v64 = uiA0<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128MToCommonNaN.c
new file mode 100644
index 000000000..322d25ab1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
+{
+
+ if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
+ softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128UIToCommonNaN.c
new file mode 100644
index 000000000..843c187a7
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128UIToCommonNaN.c
@@ -0,0 +1,65 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+ struct uint128 NaNSig;
+
+ if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
+ zPtr->sign = uiA64>>63;
+ zPtr->v64 = NaNSig.v64;
+ zPtr->v0 = NaNSig.v0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f16UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f16UIToCommonNaN.c
new file mode 100644
index 000000000..f5fe58770
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f16UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF16UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>15;
+ zPtr->v64 = (uint_fast64_t) uiA<<54;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f32UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f32UIToCommonNaN.c
new file mode 100644
index 000000000..58726a357
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f32UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF32UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>31;
+ zPtr->v64 = (uint_fast64_t) uiA<<41;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f64UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f64UIToCommonNaN.c
new file mode 100644
index 000000000..03761e433
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f64UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF64UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>63;
+ zPtr->v64 = uiA<<12;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80M.c
new file mode 100644
index 000000000..f10ed0b62
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80M.c
@@ -0,0 +1,86 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ )
+{
+ const struct extFloat80M *sPtr;
+ bool isSigNaNA;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+
+ sPtr = aSPtr;
+ isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
+ if (
+ isSigNaNA
+ || (bSPtr
+ && extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr ))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto copyNonsig;
+ goto copyNonsigB;
+ }
+ uiZ64 = sPtr->signExp;
+ uiZ0 = sPtr->signif;
+ if ( isNaNExtF80UI( uiZ64, uiZ0 ) ) goto returnNonsig;
+ copyNonsigB:
+ sPtr = bSPtr;
+ copyNonsig:
+ uiZ64 = sPtr->signExp;
+ uiZ0 = sPtr->signif;
+ returnNonsig:
+ zSPtr->signExp = uiZ64;
+ zSPtr->signif = uiZ0 | UINT64_C( 0xC000000000000000 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80UI.c
new file mode 100644
index 000000000..bd23c2473
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80UI.c
@@ -0,0 +1,83 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA;
+ struct uint128 uiZ;
+
+ isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
+ if ( isSigNaNA || softfloat_isSigNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto returnNonsigA;
+ goto returnNonsigB;
+ }
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) {
+ returnNonsigA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiA0;
+ } else {
+ returnNonsigB:
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiB0;
+ }
+ uiZ.v0 | UINT64_C( 0xC000000000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128M.c
new file mode 100644
index 000000000..23e766a19
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128M.c
@@ -0,0 +1,77 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
+{
+ const uint32_t *ptr;
+ bool isSigNaNA;
+
+ ptr = aWPtr;
+ isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
+ if (
+ isSigNaNA
+ || (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( ! isSigNaNA ) ptr = bWPtr;
+ goto copyNonsig;
+ }
+ if ( ! softfloat_isNaNF128M( aWPtr ) ) ptr = bWPtr;
+ copyNonsig:
+ zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
+ zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128UI.c
new file mode 100644
index 000000000..b8882d77c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128UI.c
@@ -0,0 +1,83 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA;
+ struct uint128 uiZ;
+
+ isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
+ if ( isSigNaNA || softfloat_isSigNaNF128UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto returnNonsigA;
+ goto returnNonsigB;
+ }
+ if ( isNaNF128UI( uiA64, uiA0 ) ) {
+ returnNonsigA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiA0;
+ } else {
+ returnNonsigB:
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiB0;
+ }
+ uiZ.v64 |= UINT64_C( 0x0000800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF16UI.c
new file mode 100644
index 000000000..e33332874
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF16UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF16UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF16UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return (isSigNaNA ? uiA : uiB) | 0x0200;
+ }
+ return isNaNF16UI( uiA ) ? uiA : uiB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF32UI.c
new file mode 100644
index 000000000..c7508ae7c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF32UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF32UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF32UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return (isSigNaNA ? uiA : uiB) | 0x00400000;
+ }
+ return isNaNF32UI( uiA ) ? uiA : uiB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF64UI.c
new file mode 100644
index 000000000..8c6776381
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF64UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF64UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF64UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return (isSigNaNA ? uiA : uiB) | UINT64_C( 0x0008000000000000 );
+ }
+ return isNaNF64UI( uiA ) ? uiA : uiB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/softfloat_raiseFlags.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/softfloat_raiseFlags.c
new file mode 100644
index 000000000..61046da3c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/softfloat_raiseFlags.c
@@ -0,0 +1,52 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Raises the exceptions specified by 'flags'. Floating-point traps can be
+| defined here if desired. It is currently not possible for such a trap
+| to substitute a result value. If traps are not implemented, this routine
+| should be simply 'softfloat_exceptionFlags |= flags;'.
+*----------------------------------------------------------------------------*/
+void softfloat_raiseFlags( uint_fast8_t flags )
+{
+
+ softfloat_exceptionFlags |= flags;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/specialize.h b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/specialize.h
new file mode 100644
index 000000000..5321f33bc
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/specialize.h
@@ -0,0 +1,376 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#ifndef specialize_h
+#define specialize_h 1
+
+#include
+#include
+#include "primitiveTypes.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Default value for 'softfloat_detectTininess'.
+*----------------------------------------------------------------------------*/
+#define init_detectTininess softfloat_tininess_beforeRounding
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 32-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui32_fromPosOverflow 0xFFFFFFFF
+#define ui32_fromNegOverflow 0
+#define ui32_fromNaN 0
+#define i32_fromPosOverflow 0x7FFFFFFF
+#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNaN 0
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 64-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNegOverflow 0
+#define ui64_fromNaN 0
+#define i64_fromPosOverflow INT64_C( 0x7FFFFFFFFFFFFFFF )
+#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNaN 0
+
+/*----------------------------------------------------------------------------
+| "Common NaN" structure, used to transfer NaN representations from one format
+| to another.
+*----------------------------------------------------------------------------*/
+struct commonNaN {
+ bool sign;
+#ifdef LITTLEENDIAN
+ uint64_t v0, v64;
+#else
+ uint64_t v64, v0;
+#endif
+};
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 16-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF16UI 0x7E00
+
+/*----------------------------------------------------------------------------
+| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
+| 16-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 32-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF32UI 0x7FC00000
+
+/*----------------------------------------------------------------------------
+| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
+| 32-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 64-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF64UI UINT64_C( 0x7FF8000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
+| 64-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 80-bit extended floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNExtF80UI64 0x7FFF
+#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 80-bit unsigned integer formed from concatenating
+| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
+| floating-point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI64 UINT64_C( 0x7FFF800000000000 )
+#define defaultNaNF128UI0 UINT64_C( 0 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 128-bit unsigned integer formed from concatenating
+| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
+| point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+#else
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI96 0x7FFF8000
+#define defaultNaNF128UI64 0
+#define defaultNaNF128UI32 0
+#define defaultNaNF128UI0 0
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
+
+#endif
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_add.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_add.c
new file mode 100644
index 000000000..02e415fcc
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_add.c
@@ -0,0 +1,100 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_add(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ extFloat80_t
+ (*magsFuncPtr)(
+ uint_fast16_t, uint_fast64_t, uint_fast16_t, uint_fast64_t, bool );
+#endif
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ signA = signExtF80UI64( uiA64 );
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ signB = signExtF80UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ *zPtr = softfloat_addMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ *zPtr = softfloat_subMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_addMagsExtF80 : softfloat_subMagsExtF80;
+ *zPtr = (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
+#else
+
+void
+ extF80M_add(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ softfloat_addExtF80M(
+ (const struct extFloat80M *) aPtr,
+ (const struct extFloat80M *) bPtr,
+ (struct extFloat80M *) zPtr,
+ false
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_div.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_div.c
new file mode 100644
index 000000000..4d543ce9e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_div.c
@@ -0,0 +1,194 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_div(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = extF80_div( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ extF80M_div(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64;
+ int32_t expA;
+ uint_fast16_t uiB64;
+ int32_t expB;
+ bool signZ;
+ uint64_t sigA, x64;
+ int32_t expZ;
+ int shiftDist;
+ uint32_t y[3], recip32, sigB[3];
+ int ix;
+ uint32_t q, qs[2];
+ uint_fast16_t uiZ64;
+ uint64_t uiZ0;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ expA = expExtF80UI64( uiA64 );
+ uiB64 = bSPtr->signExp;
+ expB = expExtF80UI64( uiB64 );
+ signZ = signExtF80UI64( uiA64 ) ^ signExtF80UI64( uiB64 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNExtF80M( aSPtr, bSPtr, zSPtr ) ) return;
+ if ( expA == 0x7FFF ) {
+ if ( expB == 0x7FFF ) goto invalid;
+ goto infinity;
+ }
+ goto zero;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sigA = aSPtr->signif;
+ x64 = bSPtr->signif;
+ if ( ! expB ) expB = 1;
+ if ( ! (x64 & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! x64 ) {
+ if ( ! sigA ) goto invalid;
+ softfloat_raiseFlags( softfloat_flag_infinite );
+ goto infinity;
+ }
+ expB += softfloat_normExtF80SigM( &x64 );
+ }
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ expA += softfloat_normExtF80SigM( &sigA );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA - expB + 0x3FFF;
+ shiftDist = 29;
+ if ( sigA < x64 ) {
+ --expZ;
+ shiftDist = 30;
+ }
+ softfloat_shortShiftLeft64To96M( sigA, shiftDist, y );
+ recip32 = softfloat_approxRecip32_1( x64>>32 );
+ sigB[indexWord( 3, 0 )] = (uint32_t) x64<<30;
+ x64 >>= 2;
+ sigB[indexWord( 3, 2 )] = x64>>32;
+ sigB[indexWord( 3, 1 )] = x64;
+ ix = 2;
+ for (;;) {
+ x64 = (uint64_t) y[indexWordHi( 3 )] * recip32;
+ q = (x64 + 0x80000000)>>32;
+ --ix;
+ if ( ix < 0 ) break;
+ softfloat_remStep96MBy32( y, 29, sigB, q, y );
+ if ( y[indexWordHi( 3 )] & 0x80000000 ) {
+ --q;
+ softfloat_add96M( y, sigB, y );
+ }
+ qs[ix] = q;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ((q + 1) & 0x3FFFFF) < 2 ) {
+ softfloat_remStep96MBy32( y, 29, sigB, q, y );
+ if ( y[indexWordHi( 3 )] & 0x80000000 ) {
+ --q;
+ softfloat_add96M( y, sigB, y );
+ } else if ( softfloat_compare96M( sigB, y ) <= 0 ) {
+ ++q;
+ softfloat_sub96M( y, sigB, y );
+ }
+ if (
+ y[indexWordLo( 3 )] || y[indexWord( 3, 1 )] || y[indexWord( 3, 2 )]
+ ) {
+ q |= 1;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ x64 = (uint64_t) q<<9;
+ y[indexWord( 3, 0 )] = x64;
+ x64 = ((uint64_t) qs[0]<<6) + (x64>>32);
+ y[indexWord( 3, 1 )] = x64;
+ y[indexWord( 3, 2 )] = (qs[1]<<3) + (x64>>32);
+ softfloat_roundPackMToExtF80M(
+ signZ, expZ, y, extF80_roundingPrecision, zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidExtF80M( zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ infinity:
+ uiZ64 = packToExtF80UI64( signZ, 0x7FFF );
+ uiZ0 = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signZ, 0 );
+ uiZ0 = 0;
+ uiZ:
+ zSPtr->signExp = uiZ64;
+ zSPtr->signif = uiZ0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq.c
new file mode 100644
index 000000000..e17aa2435
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq.c
@@ -0,0 +1,98 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_eq( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_eq( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_eq( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( uiA0 == uiB0 ) {
+ return (uiA64 == uiB64) || ! uiA0;
+ } else {
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return ! softfloat_compareNonnormExtF80M( aSPtr, bSPtr );
+ }
+ return false;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq_signaling.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq_signaling.c
new file mode 100644
index 000000000..c4a732239
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq_signaling.c
@@ -0,0 +1,92 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_eq_signaling( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_eq_signaling( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_eq_signaling( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( uiA0 == uiB0 ) {
+ return (uiA64 == uiB64) || ! uiA0;
+ } else {
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return ! softfloat_compareNonnormExtF80M( aSPtr, bSPtr );
+ }
+ return false;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le.c
new file mode 100644
index 000000000..e54eb9eea
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le.c
@@ -0,0 +1,106 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_le( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_le( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_le( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ bool signA, ltMags;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ signA = signExtF80UI64( uiA64 );
+ if ( (uiA64 ^ uiB64) & 0x8000 ) {
+ /*--------------------------------------------------------------------
+ | Signs are different.
+ *--------------------------------------------------------------------*/
+ return signA || ! (uiA0 | uiB0);
+ } else {
+ /*--------------------------------------------------------------------
+ | Signs are the same.
+ *--------------------------------------------------------------------*/
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return (softfloat_compareNonnormExtF80M( aSPtr, bSPtr ) <= 0);
+ }
+ if ( uiA64 == uiB64 ) {
+ if ( uiA0 == uiB0 ) return true;
+ ltMags = (uiA0 < uiB0);
+ } else {
+ ltMags = (uiA64 < uiB64);
+ }
+ return signA ^ ltMags;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le_quiet.c
new file mode 100644
index 000000000..943f26206
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le_quiet.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_le_quiet( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_le_quiet( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_le_quiet( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ bool signA, ltMags;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ signA = signExtF80UI64( uiA64 );
+ if ( (uiA64 ^ uiB64) & 0x8000 ) {
+ /*--------------------------------------------------------------------
+ | Signs are different.
+ *--------------------------------------------------------------------*/
+ return signA || ! (uiA0 | uiB0);
+ } else {
+ /*--------------------------------------------------------------------
+ | Signs are the same.
+ *--------------------------------------------------------------------*/
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return (softfloat_compareNonnormExtF80M( aSPtr, bSPtr ) <= 0);
+ }
+ if ( uiA64 == uiB64 ) {
+ if ( uiA0 == uiB0 ) return true;
+ ltMags = (uiA0 < uiB0);
+ } else {
+ ltMags = (uiA64 < uiB64);
+ }
+ return signA ^ ltMags;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt.c
new file mode 100644
index 000000000..cbc562f64
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt.c
@@ -0,0 +1,106 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_lt( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_lt( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_lt( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ bool signA, ltMags;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ signA = signExtF80UI64( uiA64 );
+ if ( (uiA64 ^ uiB64) & 0x8000 ) {
+ /*--------------------------------------------------------------------
+ | Signs are different.
+ *--------------------------------------------------------------------*/
+ return signA && ((uiA0 | uiB0) != 0);
+ } else {
+ /*--------------------------------------------------------------------
+ | Signs are the same.
+ *--------------------------------------------------------------------*/
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return (softfloat_compareNonnormExtF80M( aSPtr, bSPtr ) < 0);
+ }
+ if ( uiA64 == uiB64 ) {
+ if ( uiA0 == uiB0 ) return false;
+ ltMags = (uiA0 < uiB0);
+ } else {
+ ltMags = (uiA64 < uiB64);
+ }
+ return signA ^ ltMags;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt_quiet.c
new file mode 100644
index 000000000..650586d02
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt_quiet.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_lt_quiet( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_lt_quiet( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_lt_quiet( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ bool signA, ltMags;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ signA = signExtF80UI64( uiA64 );
+ if ( (uiA64 ^ uiB64) & 0x8000 ) {
+ /*--------------------------------------------------------------------
+ | Signs are different.
+ *--------------------------------------------------------------------*/
+ return signA && ((uiA0 | uiB0) != 0);
+ } else {
+ /*--------------------------------------------------------------------
+ | Signs are the same.
+ *--------------------------------------------------------------------*/
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return (softfloat_compareNonnormExtF80M( aSPtr, bSPtr ) < 0);
+ }
+ if ( uiA64 == uiB64 ) {
+ if ( uiA0 == uiB0 ) return false;
+ ltMags = (uiA0 < uiB0);
+ } else {
+ ltMags = (uiA64 < uiB64);
+ }
+ return signA ^ ltMags;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_mul.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_mul.c
new file mode 100644
index 000000000..281394f71
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_mul.c
@@ -0,0 +1,139 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_mul(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = extF80_mul( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ extF80M_mul(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64;
+ int32_t expA;
+ uint_fast16_t uiB64;
+ int32_t expB;
+ bool signZ;
+ uint_fast16_t exp, uiZ64;
+ uint64_t uiZ0, sigA, sigB;
+ int32_t expZ;
+ uint32_t sigProd[4], *extSigZPtr;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ expA = expExtF80UI64( uiA64 );
+ uiB64 = bSPtr->signExp;
+ expB = expExtF80UI64( uiB64 );
+ signZ = signExtF80UI64( uiA64 ) ^ signExtF80UI64( uiB64 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNExtF80M( aSPtr, bSPtr, zSPtr ) ) return;
+ if (
+ (! aSPtr->signif && (expA != 0x7FFF))
+ || (! bSPtr->signif && (expB != 0x7FFF))
+ ) {
+ softfloat_invalidExtF80M( zSPtr );
+ return;
+ }
+ uiZ64 = packToExtF80UI64( signZ, 0x7FFF );
+ uiZ0 = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expA ) expA = 1;
+ sigA = aSPtr->signif;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ expA += softfloat_normExtF80SigM( &sigA );
+ }
+ if ( ! expB ) expB = 1;
+ sigB = bSPtr->signif;
+ if ( ! (sigB & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigB ) goto zero;
+ expB += softfloat_normExtF80SigM( &sigB );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA + expB - 0x3FFE;
+ softfloat_mul64To128M( sigA, sigB, sigProd );
+ if ( sigProd[indexWordLo( 4 )] ) sigProd[indexWord( 4, 1 )] |= 1;
+ extSigZPtr = &sigProd[indexMultiwordHi( 4, 3 )];
+ if ( sigProd[indexWordHi( 4 )] < 0x80000000 ) {
+ --expZ;
+ softfloat_add96M( extSigZPtr, extSigZPtr, extSigZPtr );
+ }
+ softfloat_roundPackMToExtF80M(
+ signZ, expZ, extSigZPtr, extF80_roundingPrecision, zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signZ, 0 );
+ uiZ0 = 0;
+ uiZ:
+ zSPtr->signExp = uiZ64;
+ zSPtr->signif = uiZ0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_rem.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_rem.c
new file mode 100644
index 000000000..4aff18ae9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_rem.c
@@ -0,0 +1,204 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_rem(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = extF80_rem( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ extF80M_rem(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64;
+ int32_t expA, expB;
+ uint64_t x64;
+ bool signRem;
+ uint64_t sigA;
+ int32_t expDiff;
+ uint32_t rem[3], x[3], sig32B, q, recip32, rem2[3], *remPtr, *altRemPtr;
+ uint32_t *newRemPtr, wordMeanRem;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ expA = expExtF80UI64( uiA64 );
+ expB = expExtF80UI64( bSPtr->signExp );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNExtF80M( aSPtr, bSPtr, zSPtr ) ) return;
+ if ( expA == 0x7FFF ) goto invalid;
+ /*--------------------------------------------------------------------
+ | If we get here, then argument b is an infinity and `expB' is 0x7FFF;
+ | Doubling `expB' is an easy way to ensure that `expDiff' later is
+ | less than -1, which will result in returning a canonicalized version
+ | of argument a.
+ *--------------------------------------------------------------------*/
+ expB += expB;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expB ) expB = 1;
+ x64 = bSPtr->signif;
+ if ( ! (x64 & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! x64 ) goto invalid;
+ expB += softfloat_normExtF80SigM( &x64 );
+ }
+ signRem = signExtF80UI64( uiA64 );
+ if ( ! expA ) expA = 1;
+ sigA = aSPtr->signif;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) {
+ expA = 0;
+ goto copyA;
+ }
+ expA += softfloat_normExtF80SigM( &sigA );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expDiff = expA - expB;
+ if ( expDiff < -1 ) goto copyA;
+ rem[indexWord( 3, 2 )] = sigA>>34;
+ rem[indexWord( 3, 1 )] = sigA>>2;
+ rem[indexWord( 3, 0 )] = (uint32_t) sigA<<30;
+ x[indexWord( 3, 0 )] = (uint32_t) x64<<30;
+ sig32B = x64>>32;
+ x64 >>= 2;
+ x[indexWord( 3, 2 )] = x64>>32;
+ x[indexWord( 3, 1 )] = x64;
+ if ( expDiff < 1 ) {
+ if ( expDiff ) {
+ --expB;
+ softfloat_add96M( x, x, x );
+ q = 0;
+ } else {
+ q = (softfloat_compare96M( x, rem ) <= 0);
+ if ( q ) softfloat_sub96M( rem, x, rem );
+ }
+ } else {
+ recip32 = softfloat_approxRecip32_1( sig32B );
+ expDiff -= 30;
+ for (;;) {
+ x64 = (uint64_t) rem[indexWordHi( 3 )] * recip32;
+ if ( expDiff < 0 ) break;
+ q = (x64 + 0x80000000)>>32;
+ softfloat_remStep96MBy32( rem, 29, x, q, rem );
+ if ( rem[indexWordHi( 3 )] & 0x80000000 ) {
+ softfloat_add96M( rem, x, rem );
+ }
+ expDiff -= 29;
+ }
+ /*--------------------------------------------------------------------
+ | (`expDiff' cannot be less than -29 here.)
+ *--------------------------------------------------------------------*/
+ q = (uint32_t) (x64>>32)>>(~expDiff & 31);
+ softfloat_remStep96MBy32( rem, expDiff + 30, x, q, rem );
+ if ( rem[indexWordHi( 3 )] & 0x80000000 ) {
+ remPtr = rem;
+ altRemPtr = rem2;
+ softfloat_add96M( remPtr, x, altRemPtr );
+ goto selectRem;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ remPtr = rem;
+ altRemPtr = rem2;
+ do {
+ ++q;
+ newRemPtr = altRemPtr;
+ softfloat_sub96M( remPtr, x, newRemPtr );
+ altRemPtr = remPtr;
+ remPtr = newRemPtr;
+ } while ( ! (remPtr[indexWordHi( 3 )] & 0x80000000) );
+ selectRem:
+ softfloat_add96M( remPtr, altRemPtr, x );
+ wordMeanRem = x[indexWordHi( 3 )];
+ if (
+ (wordMeanRem & 0x80000000)
+ || (! wordMeanRem && (q & 1) && ! x[indexWord( 3, 0 )]
+ && ! x[indexWord( 3, 1 )])
+ ) {
+ remPtr = altRemPtr;
+ }
+ if ( remPtr[indexWordHi( 3 )] & 0x80000000 ) {
+ signRem = ! signRem;
+ softfloat_negX96M( remPtr );
+ }
+ softfloat_normRoundPackMToExtF80M( signRem, expB + 2, remPtr, 80, zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidExtF80M( zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ if ( expA < 1 ) {
+ sigA >>= 1 - expA;
+ expA = 0;
+ }
+ zSPtr->signExp = packToExtF80UI64( signRem, expA );
+ zSPtr->signif = sigA;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_roundToInt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_roundToInt.c
new file mode 100644
index 000000000..2e8572957
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_roundToInt.c
@@ -0,0 +1,176 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_roundToInt(
+ const extFloat80_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ extFloat80_t *zPtr
+ )
+{
+
+ *zPtr = extF80_roundToInt( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+void
+ extF80M_roundToInt(
+ const extFloat80_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ extFloat80_t *zPtr
+ )
+{
+ const struct extFloat80M *aSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64, signUI64;
+ int32_t exp;
+ uint64_t sigA;
+ uint_fast16_t uiZ64;
+ uint64_t sigZ, lastBitMask, roundBitsMask;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ signUI64 = uiA64 & packToExtF80UI64( 1, 0 );
+ exp = expExtF80UI64( uiA64 );
+ sigA = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( !(sigA & UINT64_C( 0x8000000000000000 )) && (exp != 0x7FFF) ) {
+ if ( !sigA ) {
+ uiZ64 = signUI64;
+ sigZ = 0;
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sigA );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp <= 0x3FFE ) {
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ switch ( roundingMode ) {
+ case softfloat_round_near_even:
+ if ( !(sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) break;
+ case softfloat_round_near_maxMag:
+ if ( exp == 0x3FFE ) goto mag1;
+ break;
+ case softfloat_round_min:
+ if ( signUI64 ) goto mag1;
+ break;
+ case softfloat_round_max:
+ if ( !signUI64 ) goto mag1;
+ break;
+#ifdef SOFTFLOAT_ROUND_ODD
+ case softfloat_round_odd:
+ goto mag1;
+#endif
+ }
+ uiZ64 = signUI64;
+ sigZ = 0;
+ goto uiZ;
+ mag1:
+ uiZ64 = signUI64 | 0x3FFF;
+ sigZ = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( 0x403E <= exp ) {
+ if ( exp == 0x7FFF ) {
+ if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_propagateNaNExtF80M( aSPtr, 0, zSPtr );
+ return;
+ }
+ sigZ = UINT64_C( 0x8000000000000000 );
+ } else {
+ sigZ = sigA;
+ }
+ uiZ64 = signUI64 | exp;
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ64 = signUI64 | exp;
+ lastBitMask = (uint64_t) 1<<(0x403E - exp);
+ roundBitsMask = lastBitMask - 1;
+ sigZ = sigA;
+ if ( roundingMode == softfloat_round_near_maxMag ) {
+ sigZ += lastBitMask>>1;
+ } else if ( roundingMode == softfloat_round_near_even ) {
+ sigZ += lastBitMask>>1;
+ if ( !(sigZ & roundBitsMask) ) sigZ &= ~lastBitMask;
+ } else if (
+ roundingMode == (signUI64 ? softfloat_round_min : softfloat_round_max)
+ ) {
+ sigZ += roundBitsMask;
+ }
+ sigZ &= ~roundBitsMask;
+ if ( !sigZ ) {
+ ++uiZ64;
+ sigZ = UINT64_C( 0x8000000000000000 );
+ }
+ if ( sigZ != sigA ) {
+#ifdef SOFTFLOAT_ROUND_ODD
+ if ( roundingMode == softfloat_round_odd ) sigZ |= lastBitMask;
+#endif
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ uiZ:
+ zSPtr->signExp = uiZ64;
+ zSPtr->signif = sigZ;
+ return;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sqrt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sqrt.c
new file mode 100644
index 000000000..7ee91e0e5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sqrt.c
@@ -0,0 +1,180 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void extF80M_sqrt( const extFloat80_t *aPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = extF80_sqrt( *aPtr );
+
+}
+
+#else
+
+void extF80M_sqrt( const extFloat80_t *aPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64, signUI64;
+ int32_t expA;
+ uint64_t rem64;
+ int32_t expZ;
+ uint32_t rem96[3], sig32A, recipSqrt32, sig32Z, q;
+ uint64_t sig64Z, x64;
+ uint32_t rem32, term[4], rem[4], extSigZ[3];
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ signUI64 = uiA64 & packToExtF80UI64( 1, 0 );
+ expA = expExtF80UI64( uiA64 );
+ rem64 = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if ( rem64 & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_propagateNaNExtF80M( aSPtr, 0, zSPtr );
+ return;
+ }
+ if ( signUI64 ) goto invalid;
+ rem64 = UINT64_C( 0x8000000000000000 );
+ goto copyA;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expA ) expA = 1;
+ if ( ! (rem64 & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! rem64 ) {
+ uiA64 = signUI64;
+ goto copyA;
+ }
+ expA += softfloat_normExtF80SigM( &rem64 );
+ }
+ if ( signUI64 ) goto invalid;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = ((expA - 0x3FFF)>>1) + 0x3FFF;
+ expA &= 1;
+ softfloat_shortShiftLeft64To96M( rem64, 30 - expA, rem96 );
+ sig32A = rem64>>32;
+ recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
+ sig32Z = ((uint64_t) sig32A * recipSqrt32)>>32;
+ if ( expA ) sig32Z >>= 1;
+ rem64 =
+ ((uint64_t) rem96[indexWord( 3, 2 )]<<32 | rem96[indexWord( 3, 1 )])
+ - (uint64_t) sig32Z * sig32Z;
+ rem96[indexWord( 3, 2 )] = rem64>>32;
+ rem96[indexWord( 3, 1 )] = rem64;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = ((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32;
+ sig64Z = ((uint64_t) sig32Z<<32) + ((uint64_t) q<<3);
+ term[indexWord( 3, 2 )] = 0;
+ /*------------------------------------------------------------------------
+ | (Repeating this loop is a rare occurrence.)
+ *------------------------------------------------------------------------*/
+ for (;;) {
+ x64 = ((uint64_t) sig32Z<<32) + sig64Z;
+ term[indexWord( 3, 1 )] = x64>>32;
+ term[indexWord( 3, 0 )] = x64;
+ softfloat_remStep96MBy32(
+ rem96, 29, term, q, &rem[indexMultiwordHi( 4, 3 )] );
+ rem32 = rem[indexWord( 4, 3 )];
+ if ( ! (rem32 & 0x80000000) ) break;
+ --q;
+ sig64Z -= 1<<3;
+ }
+ rem64 = (uint64_t) rem32<<32 | rem[indexWord( 4, 2 )];
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = (((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32) + 2;
+ if ( rem64>>34 ) q += recipSqrt32;
+ x64 = (uint64_t) q<<7;
+ extSigZ[indexWord( 3, 0 )] = x64;
+ x64 = (sig64Z<<1) + (x64>>32);
+ extSigZ[indexWord( 3, 2 )] = x64>>32;
+ extSigZ[indexWord( 3, 1 )] = x64;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (q & 0xFFFFFF) <= 2 ) {
+ q &= ~(uint32_t) 0xFFFF;
+ extSigZ[indexWordLo( 3 )] = q<<7;
+ x64 = sig64Z + (q>>27);
+ term[indexWord( 4, 3 )] = 0;
+ term[indexWord( 4, 2 )] = x64>>32;
+ term[indexWord( 4, 1 )] = x64;
+ term[indexWord( 4, 0 )] = q<<5;
+ rem[indexWord( 4, 0 )] = 0;
+ softfloat_remStep128MBy32( rem, 28, term, q, rem );
+ q = rem[indexWordHi( 4 )];
+ if ( q & 0x80000000 ) {
+ softfloat_sub1X96M( extSigZ );
+ } else {
+ if ( q || rem[indexWord( 4, 1 )] || rem[indexWord( 4, 2 )] ) {
+ extSigZ[indexWordLo( 3 )] |= 1;
+ }
+ }
+ }
+ softfloat_roundPackMToExtF80M(
+ 0, expZ, extSigZ, extF80_roundingPrecision, zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidExtF80M( zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ zSPtr->signExp = uiA64;
+ zSPtr->signif = rem64;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sub.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sub.c
new file mode 100644
index 000000000..5d1895c7a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sub.c
@@ -0,0 +1,100 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_sub(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ extFloat80_t
+ (*magsFuncPtr)(
+ uint_fast16_t, uint_fast64_t, uint_fast16_t, uint_fast64_t, bool );
+#endif
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ signA = signExtF80UI64( uiA64 );
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ signB = signExtF80UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ *zPtr = softfloat_subMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ *zPtr = softfloat_addMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_subMagsExtF80 : softfloat_addMagsExtF80;
+ *zPtr = (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
+#else
+
+void
+ extF80M_sub(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ softfloat_addExtF80M(
+ (const struct extFloat80M *) aPtr,
+ (const struct extFloat80M *) bPtr,
+ (struct extFloat80M *) zPtr,
+ true
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f128M.c
new file mode 100644
index 000000000..da81e8d6b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f128M.c
@@ -0,0 +1,125 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void extF80M_to_f128M( const extFloat80_t *aPtr, float128_t *zPtr )
+{
+
+ *zPtr = extF80_to_f128( *aPtr );
+
+}
+
+#else
+
+void extF80M_to_f128M( const extFloat80_t *aPtr, float128_t *zPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint32_t *zWPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ struct commonNaN commonNaN;
+ uint32_t uiZ96;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zWPtr[indexWord( 4, 0 )] = 0;
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80MToCommonNaN( aSPtr, &commonNaN );
+ softfloat_commonNaNToF128M( &commonNaN, zWPtr );
+ return;
+ }
+ uiZ96 = packToF128UI96( sign, 0x7FFF, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp ) --exp;
+ if ( ! (sig & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sig ) {
+ uiZ96 = packToF128UI96( sign, 0, 0 );
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sig );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zWPtr[indexWord( 4, 1 )] = (uint32_t) sig<<17;
+ sig >>= 15;
+ zWPtr[indexWord( 4, 2 )] = sig;
+ if ( exp < 0 ) {
+ zWPtr[indexWordHi( 4 )] = sig>>32;
+ softfloat_shiftRight96M(
+ &zWPtr[indexMultiwordHi( 4, 3 )],
+ -exp,
+ &zWPtr[indexMultiwordHi( 4, 3 )]
+ );
+ exp = 0;
+ sig = (uint64_t) zWPtr[indexWordHi( 4 )]<<32;
+ }
+ zWPtr[indexWordHi( 4 )] = packToF128UI96( sign, exp, sig>>32 );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ zWPtr[indexWord( 4, 3 )] = uiZ96;
+ zWPtr[indexWord( 4, 2 )] = 0;
+ zWPtr[indexWord( 4, 1 )] = 0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f16.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f16.c
new file mode 100644
index 000000000..5ae38d0c4
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f16.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float16_t extF80M_to_f16( const extFloat80_t *aPtr )
+{
+
+ return extF80_to_f16( *aPtr );
+
+}
+
+#else
+
+float16_t extF80M_to_f16( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ struct commonNaN commonNaN;
+ uint16_t uiZ, sig16;
+ union ui16_f16 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80MToCommonNaN( aSPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF16UI( &commonNaN );
+ } else {
+ uiZ = packToF16UI( sign, 0x1F, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! (sig & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sig ) {
+ uiZ = packToF16UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sig );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig16 = softfloat_shortShiftRightJam64( sig, 49 );
+ exp -= 0x3FF1;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x40 ) exp = -0x40;
+ }
+ return softfloat_roundPackToF16( sign, exp, sig16 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f32.c
new file mode 100644
index 000000000..47cf224dc
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f32.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float32_t extF80M_to_f32( const extFloat80_t *aPtr )
+{
+
+ return extF80_to_f32( *aPtr );
+
+}
+
+#else
+
+float32_t extF80M_to_f32( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ struct commonNaN commonNaN;
+ uint32_t uiZ, sig32;
+ union ui32_f32 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80MToCommonNaN( aSPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF32UI( &commonNaN );
+ } else {
+ uiZ = packToF32UI( sign, 0xFF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! (sig & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sig ) {
+ uiZ = packToF32UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sig );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig32 = softfloat_shortShiftRightJam64( sig, 33 );
+ exp -= 0x3F81;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF32( sign, exp, sig32 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f64.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f64.c
new file mode 100644
index 000000000..5f8f4aa29
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f64.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float64_t extF80M_to_f64( const extFloat80_t *aPtr )
+{
+
+ return extF80_to_f64( *aPtr );
+
+}
+
+#else
+
+float64_t extF80M_to_f64( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ struct commonNaN commonNaN;
+ uint64_t uiZ;
+ union ui64_f64 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80MToCommonNaN( aSPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF64UI( &commonNaN );
+ } else {
+ uiZ = packToF64UI( sign, 0x7FF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! (sig & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sig ) {
+ uiZ = packToF64UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sig );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig = softfloat_shortShiftRightJam64( sig, 1 );
+ exp -= 0x3C01;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF64( sign, exp, sig );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32.c
new file mode 100644
index 000000000..06394e341
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32.c
@@ -0,0 +1,100 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+int_fast32_t
+ extF80M_to_i32(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+
+ return extF80_to_i32( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+int_fast32_t
+ extF80M_to_i32(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x4032 - exp;
+ if ( shiftDist <= 0 ) {
+ if ( sig>>32 ) goto invalid;
+ if ( -32 < shiftDist ) {
+ sig <<= -shiftDist;
+ } else {
+ if ( (uint32_t) sig ) goto invalid;
+ }
+ } else {
+ sig = softfloat_shiftRightJam64( sig, shiftDist );
+ }
+ return softfloat_roundToI32( sign, sig, roundingMode, exact );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ? i32_fromNaN
+ : sign ? i32_fromNegOverflow : i32_fromPosOverflow;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32_r_minMag.c
new file mode 100644
index 000000000..5f5cf599d
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32_r_minMag.c
@@ -0,0 +1,120 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+int_fast32_t extF80M_to_i32_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+
+ return extF80_to_i32_r_minMag( *aPtr, exact );
+
+}
+
+#else
+
+int_fast32_t extF80M_to_i32_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ bool sign, raiseInexact;
+ int32_t z;
+ uint64_t shiftedSig;
+ uint32_t absZ;
+ union { uint32_t ui; int32_t i; } u;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! sig && (exp != 0x7FFF) ) return 0;
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ raiseInexact = exact;
+ z = 0;
+ } else {
+ sign = signExtF80UI64( uiA64 );
+ raiseInexact = false;
+ if ( shiftDist < 0 ) {
+ if ( sig>>32 || (shiftDist <= -31) ) goto invalid;
+ shiftedSig = (uint64_t) (uint32_t) sig<<-shiftDist;
+ if ( shiftedSig>>32 ) goto invalid;
+ absZ = shiftedSig;
+ } else {
+ shiftedSig = sig;
+ if ( shiftDist ) shiftedSig >>= shiftDist;
+ if ( shiftedSig>>32 ) goto invalid;
+ absZ = shiftedSig;
+ if ( exact && shiftDist ) {
+ raiseInexact = ((uint64_t) absZ<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+int_fast64_t
+ extF80M_to_i64(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+
+ return extF80_to_i64( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+int_fast64_t
+ extF80M_to_i64(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ uint32_t extSig[3];
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( shiftDist < 0 ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? i64_fromNaN
+ : sign ? i64_fromNegOverflow : i64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ extSig[indexWord( 3, 2 )] = sig>>32;
+ extSig[indexWord( 3, 1 )] = sig;
+ extSig[indexWord( 3, 0 )] = 0;
+ if ( shiftDist ) softfloat_shiftRightJam96M( extSig, shiftDist, extSig );
+ return softfloat_roundMToI64( sign, extSig, roundingMode, exact );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i64_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i64_r_minMag.c
new file mode 100644
index 000000000..ec9b92844
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i64_r_minMag.c
@@ -0,0 +1,115 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+int_fast64_t extF80M_to_i64_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+
+ return extF80_to_i64_r_minMag( *aPtr, exact );
+
+}
+
+#else
+
+int_fast64_t extF80M_to_i64_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ bool sign, raiseInexact;
+ int64_t z;
+ uint64_t absZ;
+ union { uint64_t ui; int64_t i; } u;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! sig && (exp != 0x7FFF) ) return 0;
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ raiseInexact = exact;
+ z = 0;
+ } else {
+ sign = signExtF80UI64( uiA64 );
+ raiseInexact = false;
+ if ( shiftDist < 0 ) {
+ if ( shiftDist <= -63 ) goto invalid;
+ shiftDist = -shiftDist;
+ absZ = sig<>shiftDist != sig ) goto invalid;
+ } else {
+ absZ = sig;
+ if ( shiftDist ) absZ >>= shiftDist;
+ if ( exact && shiftDist ) raiseInexact = (absZ<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+uint_fast32_t
+ extF80M_to_ui32(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+
+ return extF80_to_ui32( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+uint_fast32_t
+ extF80M_to_ui32(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x4032 - exp;
+ if ( shiftDist <= 0 ) {
+ if ( sig>>32 ) goto invalid;
+ if ( -32 < shiftDist ) {
+ sig <<= -shiftDist;
+ } else {
+ if ( (uint32_t) sig ) goto invalid;
+ }
+ } else {
+ sig = softfloat_shiftRightJam64( sig, shiftDist );
+ }
+ return softfloat_roundToUI32( sign, sig, roundingMode, exact );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui32_fromNaN
+ : sign ? ui32_fromNegOverflow : ui32_fromPosOverflow;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui32_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui32_r_minMag.c
new file mode 100644
index 000000000..e28b08d70
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui32_r_minMag.c
@@ -0,0 +1,111 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+uint_fast32_t extF80M_to_ui32_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+
+ return extF80_to_ui32_r_minMag( *aPtr, exact );
+
+}
+
+#else
+
+uint_fast32_t extF80M_to_ui32_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ bool sign;
+ uint64_t shiftedSig;
+ uint32_t z;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! sig && (exp != 0x7FFF) ) return 0;
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( shiftDist < 0 ) {
+ if ( sign || sig>>32 || (shiftDist <= -31) ) goto invalid;
+ shiftedSig = (uint64_t) (uint32_t) sig<<-shiftDist;
+ if ( shiftedSig>>32 ) goto invalid;
+ z = shiftedSig;
+ } else {
+ shiftedSig = sig;
+ if ( shiftDist ) shiftedSig >>= shiftDist;
+ if ( shiftedSig>>32 ) goto invalid;
+ z = shiftedSig;
+ if ( sign && z ) goto invalid;
+ if ( exact && shiftDist && ((uint64_t) z<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+uint_fast64_t
+ extF80M_to_ui64(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+
+ return extF80_to_ui64( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+uint_fast64_t
+ extF80M_to_ui64(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ uint32_t extSig[3];
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( shiftDist < 0 ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui64_fromNaN
+ : sign ? ui64_fromNegOverflow : ui64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ extSig[indexWord( 3, 2 )] = sig>>32;
+ extSig[indexWord( 3, 1 )] = sig;
+ extSig[indexWord( 3, 0 )] = 0;
+ if ( shiftDist ) softfloat_shiftRightJam96M( extSig, shiftDist, extSig );
+ return softfloat_roundMToUI64( sign, extSig, roundingMode, exact );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui64_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui64_r_minMag.c
new file mode 100644
index 000000000..87d80897b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui64_r_minMag.c
@@ -0,0 +1,108 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+uint_fast64_t extF80M_to_ui64_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+
+ return extF80_to_ui64_r_minMag( *aPtr, exact );
+
+}
+
+#else
+
+uint_fast64_t extF80M_to_ui64_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ bool sign;
+ uint64_t z;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! sig && (exp != 0x7FFF) ) return 0;
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( shiftDist < 0 ) {
+ if ( sign || (shiftDist <= -63) ) goto invalid;
+ shiftDist = -shiftDist;
+ z = sig<>shiftDist != sig ) goto invalid;
+ } else {
+ z = sig;
+ if ( shiftDist ) z >>= shiftDist;
+ if ( sign && z ) goto invalid;
+ if ( exact && shiftDist && (z<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_add( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ extFloat80_t
+ (*magsFuncPtr)(
+ uint_fast16_t, uint_fast64_t, uint_fast16_t, uint_fast64_t, bool );
+#endif
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ signB = signExtF80UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ return softfloat_addMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ return softfloat_subMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_addMagsExtF80 : softfloat_subMagsExtF80;
+ return (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_div.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_div.c
new file mode 100644
index 000000000..28dfb13de
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_div.c
@@ -0,0 +1,203 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_div( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ int_fast32_t expA;
+ uint_fast64_t sigA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+ int_fast32_t expB;
+ uint_fast64_t sigB;
+ bool signZ;
+ struct exp32_sig64 normExpSig;
+ int_fast32_t expZ;
+ struct uint128 rem;
+ uint_fast32_t recip32;
+ uint_fast64_t sigZ;
+ int ix;
+ uint_fast64_t q64;
+ uint_fast32_t q;
+ struct uint128 term;
+ uint_fast64_t sigZExtra;
+ struct uint128 uiZ;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ expA = expExtF80UI64( uiA64 );
+ sigA = uiA0;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ signB = signExtF80UI64( uiB64 );
+ expB = expExtF80UI64( uiB64 );
+ sigB = uiB0;
+ signZ = signA ^ signB;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ if ( expB == 0x7FFF ) {
+ if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ goto invalid;
+ }
+ goto infinity;
+ }
+ if ( expB == 0x7FFF ) {
+ if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ goto zero;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expB ) expB = 1;
+ if ( ! (sigB & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigB ) {
+ if ( ! sigA ) goto invalid;
+ softfloat_raiseFlags( softfloat_flag_infinite );
+ goto infinity;
+ }
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigB );
+ expB += normExpSig.exp;
+ sigB = normExpSig.sig;
+ }
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ expA += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA - expB + 0x3FFF;
+ if ( sigA < sigB ) {
+ --expZ;
+ rem = softfloat_shortShiftLeft128( 0, sigA, 32 );
+ } else {
+ rem = softfloat_shortShiftLeft128( 0, sigA, 31 );
+ }
+ recip32 = softfloat_approxRecip32_1( sigB>>32 );
+ sigZ = 0;
+ ix = 2;
+ for (;;) {
+ q64 = (uint_fast64_t) (uint32_t) (rem.v64>>2) * recip32;
+ q = (q64 + 0x80000000)>>32;
+ --ix;
+ if ( ix < 0 ) break;
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, 29 );
+ term = softfloat_mul64ByShifted32To128( sigB, q );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ --q;
+ rem = softfloat_add128( rem.v64, rem.v0, sigB>>32, sigB<<32 );
+ }
+ sigZ = (sigZ<<29) + q;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ((q + 1) & 0x3FFFFF) < 2 ) {
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, 29 );
+ term = softfloat_mul64ByShifted32To128( sigB, q );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ term = softfloat_shortShiftLeft128( 0, sigB, 32 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ --q;
+ rem = softfloat_add128( rem.v64, rem.v0, term.v64, term.v0 );
+ } else if ( softfloat_le128( term.v64, term.v0, rem.v64, rem.v0 ) ) {
+ ++q;
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ }
+ if ( rem.v64 | rem.v0 ) q |= 1;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sigZ = (sigZ<<6) + (q>>23);
+ sigZExtra = (uint64_t) ((uint_fast64_t) q<<41);
+ return
+ softfloat_roundPackToExtF80(
+ signZ, expZ, sigZ, sigZExtra, extF80_roundingPrecision );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ propagateNaN:
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, uiA0, uiB64, uiB0 );
+ uiZ64 = uiZ.v64;
+ uiZ0 = uiZ.v0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ uiZ64 = defaultNaNExtF80UI64;
+ uiZ0 = defaultNaNExtF80UI0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ infinity:
+ uiZ64 = packToExtF80UI64( signZ, 0x7FFF );
+ uiZ0 = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signZ, 0 );
+ uiZ0 = 0;
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = uiZ0;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq.c
new file mode 100644
index 000000000..efcbc3714
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_eq( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ return
+ (uiA0 == uiB0)
+ && ((uiA64 == uiB64) || (! uiA0 && ! ((uiA64 | uiB64) & 0x7FFF)));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq_signaling.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq_signaling.c
new file mode 100644
index 000000000..193b191e6
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq_signaling.c
@@ -0,0 +1,67 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+bool extF80_eq_signaling( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ return
+ (uiA0 == uiB0)
+ && ((uiA64 == uiB64) || (! uiA0 && ! ((uiA64 | uiB64) & 0x7FFF)));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_isSignalingNaN.c
new file mode 100644
index 000000000..33d2abd7e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_isSignalingNaN.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_isSignalingNaN( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+
+ uA.f = a;
+ return softfloat_isSigNaNExtF80UI( uA.s.signExp, uA.s.signif );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le.c
new file mode 100644
index 000000000..4e23c5142
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_le( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signA, signB;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ signA = signExtF80UI64( uiA64 );
+ signB = signExtF80UI64( uiB64 );
+ return
+ (signA != signB)
+ ? signA || ! (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
+ : ((uiA64 == uiB64) && (uiA0 == uiB0))
+ || (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le_quiet.c
new file mode 100644
index 000000000..9839e47f9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le_quiet.c
@@ -0,0 +1,78 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_le_quiet( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signA, signB;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ signA = signExtF80UI64( uiA64 );
+ signB = signExtF80UI64( uiB64 );
+ return
+ (signA != signB)
+ ? signA || ! (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
+ : ((uiA64 == uiB64) && (uiA0 == uiB0))
+ || (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt.c
new file mode 100644
index 000000000..a4ac69fa6
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_lt( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signA, signB;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ signA = signExtF80UI64( uiA64 );
+ signB = signExtF80UI64( uiB64 );
+ return
+ (signA != signB)
+ ? signA && (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
+ : ((uiA64 != uiB64) || (uiA0 != uiB0))
+ && (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt_quiet.c
new file mode 100644
index 000000000..00f4d4768
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt_quiet.c
@@ -0,0 +1,78 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_lt_quiet( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signA, signB;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ signA = signExtF80UI64( uiA64 );
+ signB = signExtF80UI64( uiB64 );
+ return
+ (signA != signB)
+ ? signA && (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
+ : ((uiA64 != uiB64) || (uiA0 != uiB0))
+ && (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_mul.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_mul.c
new file mode 100644
index 000000000..39ce4012c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_mul.c
@@ -0,0 +1,158 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_mul( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ int_fast32_t expA;
+ uint_fast64_t sigA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+ int_fast32_t expB;
+ uint_fast64_t sigB;
+ bool signZ;
+ uint_fast64_t magBits;
+ struct exp32_sig64 normExpSig;
+ int_fast32_t expZ;
+ struct uint128 sig128Z, uiZ;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ expA = expExtF80UI64( uiA64 );
+ sigA = uiA0;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ signB = signExtF80UI64( uiB64 );
+ expB = expExtF80UI64( uiB64 );
+ sigB = uiB0;
+ signZ = signA ^ signB;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if (
+ (sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ || ((expB == 0x7FFF) && (sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF )))
+ ) {
+ goto propagateNaN;
+ }
+ magBits = expB | sigB;
+ goto infArg;
+ }
+ if ( expB == 0x7FFF ) {
+ if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ magBits = expA | sigA;
+ goto infArg;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ expA += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ if ( ! expB ) expB = 1;
+ if ( ! (sigB & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigB ) goto zero;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigB );
+ expB += normExpSig.exp;
+ sigB = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA + expB - 0x3FFE;
+ sig128Z = softfloat_mul64To128( sigA, sigB );
+ if ( sig128Z.v64 < UINT64_C( 0x8000000000000000 ) ) {
+ --expZ;
+ sig128Z =
+ softfloat_add128(
+ sig128Z.v64, sig128Z.v0, sig128Z.v64, sig128Z.v0 );
+ }
+ return
+ softfloat_roundPackToExtF80(
+ signZ, expZ, sig128Z.v64, sig128Z.v0, extF80_roundingPrecision );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ propagateNaN:
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, uiA0, uiB64, uiB0 );
+ uiZ64 = uiZ.v64;
+ uiZ0 = uiZ.v0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ infArg:
+ if ( ! magBits ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ uiZ64 = defaultNaNExtF80UI64;
+ uiZ0 = defaultNaNExtF80UI0;
+ } else {
+ uiZ64 = packToExtF80UI64( signZ, 0x7FFF );
+ uiZ0 = UINT64_C( 0x8000000000000000 );
+ }
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signZ, 0 );
+ uiZ0 = 0;
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = uiZ0;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_rem.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_rem.c
new file mode 100644
index 000000000..5ad977526
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_rem.c
@@ -0,0 +1,225 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_rem( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ int_fast32_t expA;
+ uint_fast64_t sigA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ int_fast32_t expB;
+ uint_fast64_t sigB;
+ struct exp32_sig64 normExpSig;
+ int_fast32_t expDiff;
+ struct uint128 rem, shiftedSigB;
+ uint_fast32_t q, recip32;
+ uint_fast64_t q64;
+ struct uint128 term, altRem, meanRem;
+ bool signRem;
+ struct uint128 uiZ;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ expA = expExtF80UI64( uiA64 );
+ sigA = uiA0;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ expB = expExtF80UI64( uiB64 );
+ sigB = uiB0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if (
+ (sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ || ((expB == 0x7FFF) && (sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF )))
+ ) {
+ goto propagateNaN;
+ }
+ goto invalid;
+ }
+ if ( expB == 0x7FFF ) {
+ if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ /*--------------------------------------------------------------------
+ | Argument b is an infinity. Doubling `expB' is an easy way to ensure
+ | that `expDiff' later is less than -1, which will result in returning
+ | a canonicalized version of argument a.
+ *--------------------------------------------------------------------*/
+ expB += expB;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expB ) expB = 1;
+ if ( ! (sigB & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigB ) goto invalid;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigB );
+ expB += normExpSig.exp;
+ sigB = normExpSig.sig;
+ }
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) {
+ expA = 0;
+ goto copyA;
+ }
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ expA += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expDiff = expA - expB;
+ if ( expDiff < -1 ) goto copyA;
+ rem = softfloat_shortShiftLeft128( 0, sigA, 32 );
+ shiftedSigB = softfloat_shortShiftLeft128( 0, sigB, 32 );
+ if ( expDiff < 1 ) {
+ if ( expDiff ) {
+ --expB;
+ shiftedSigB = softfloat_shortShiftLeft128( 0, sigB, 33 );
+ q = 0;
+ } else {
+ q = (sigB <= sigA);
+ if ( q ) {
+ rem =
+ softfloat_sub128(
+ rem.v64, rem.v0, shiftedSigB.v64, shiftedSigB.v0 );
+ }
+ }
+ } else {
+ recip32 = softfloat_approxRecip32_1( sigB>>32 );
+ expDiff -= 30;
+ for (;;) {
+ q64 = (uint_fast64_t) (uint32_t) (rem.v64>>2) * recip32;
+ if ( expDiff < 0 ) break;
+ q = (q64 + 0x80000000)>>32;
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, 29 );
+ term = softfloat_mul64ByShifted32To128( sigB, q );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ rem =
+ softfloat_add128(
+ rem.v64, rem.v0, shiftedSigB.v64, shiftedSigB.v0 );
+ }
+ expDiff -= 29;
+ }
+ /*--------------------------------------------------------------------
+ | (`expDiff' cannot be less than -29 here.)
+ *--------------------------------------------------------------------*/
+ q = (uint32_t) (q64>>32)>>(~expDiff & 31);
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, expDiff + 30 );
+ term = softfloat_mul64ByShifted32To128( sigB, q );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ altRem =
+ softfloat_add128(
+ rem.v64, rem.v0, shiftedSigB.v64, shiftedSigB.v0 );
+ goto selectRem;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ do {
+ altRem = rem;
+ ++q;
+ rem =
+ softfloat_sub128(
+ rem.v64, rem.v0, shiftedSigB.v64, shiftedSigB.v0 );
+ } while ( ! (rem.v64 & UINT64_C( 0x8000000000000000 )) );
+ selectRem:
+ meanRem = softfloat_add128( rem.v64, rem.v0, altRem.v64, altRem.v0 );
+ if (
+ (meanRem.v64 & UINT64_C( 0x8000000000000000 ))
+ || (! (meanRem.v64 | meanRem.v0) && (q & 1))
+ ) {
+ rem = altRem;
+ }
+ signRem = signA;
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ signRem = ! signRem;
+ rem = softfloat_sub128( 0, 0, rem.v64, rem.v0 );
+ }
+ return
+ softfloat_normRoundPackToExtF80(
+ signRem, rem.v64 | rem.v0 ? expB + 32 : 0, rem.v64, rem.v0, 80 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ propagateNaN:
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, uiA0, uiB64, uiB0 );
+ uiZ64 = uiZ.v64;
+ uiZ0 = uiZ.v0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ uiZ64 = defaultNaNExtF80UI64;
+ uiZ0 = defaultNaNExtF80UI0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ if ( expA < 1 ) {
+ sigA >>= 1 - expA;
+ expA = 0;
+ }
+ uiZ64 = packToExtF80UI64( signA, expA );
+ uiZ0 = sigA;
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = uiZ0;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_roundToInt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_roundToInt.c
new file mode 100644
index 000000000..6c12d84c9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_roundToInt.c
@@ -0,0 +1,154 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t
+ extF80_roundToInt( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64, signUI64;
+ int_fast32_t exp;
+ uint_fast64_t sigA;
+ uint_fast16_t uiZ64;
+ uint_fast64_t sigZ;
+ struct exp32_sig64 normExpSig;
+ struct uint128 uiZ;
+ uint_fast64_t lastBitMask, roundBitsMask;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ signUI64 = uiA64 & packToExtF80UI64( 1, 0 );
+ exp = expExtF80UI64( uiA64 );
+ sigA = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( !(sigA & UINT64_C( 0x8000000000000000 )) && (exp != 0x7FFF) ) {
+ if ( !sigA ) {
+ uiZ64 = signUI64;
+ sigZ = 0;
+ goto uiZ;
+ }
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ exp += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( 0x403E <= exp ) {
+ if ( exp == 0x7FFF ) {
+ if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, sigA, 0, 0 );
+ uiZ64 = uiZ.v64;
+ sigZ = uiZ.v0;
+ goto uiZ;
+ }
+ sigZ = UINT64_C( 0x8000000000000000 );
+ } else {
+ sigZ = sigA;
+ }
+ uiZ64 = signUI64 | exp;
+ goto uiZ;
+ }
+ if ( exp <= 0x3FFE ) {
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ switch ( roundingMode ) {
+ case softfloat_round_near_even:
+ if ( !(sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) break;
+ case softfloat_round_near_maxMag:
+ if ( exp == 0x3FFE ) goto mag1;
+ break;
+ case softfloat_round_min:
+ if ( signUI64 ) goto mag1;
+ break;
+ case softfloat_round_max:
+ if ( !signUI64 ) goto mag1;
+ break;
+#ifdef SOFTFLOAT_ROUND_ODD
+ case softfloat_round_odd:
+ goto mag1;
+#endif
+ }
+ uiZ64 = signUI64;
+ sigZ = 0;
+ goto uiZ;
+ mag1:
+ uiZ64 = signUI64 | 0x3FFF;
+ sigZ = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ64 = signUI64 | exp;
+ lastBitMask = (uint_fast64_t) 1<<(0x403E - exp);
+ roundBitsMask = lastBitMask - 1;
+ sigZ = sigA;
+ if ( roundingMode == softfloat_round_near_maxMag ) {
+ sigZ += lastBitMask>>1;
+ } else if ( roundingMode == softfloat_round_near_even ) {
+ sigZ += lastBitMask>>1;
+ if ( !(sigZ & roundBitsMask) ) sigZ &= ~lastBitMask;
+ } else if (
+ roundingMode == (signUI64 ? softfloat_round_min : softfloat_round_max)
+ ) {
+ sigZ += roundBitsMask;
+ }
+ sigZ &= ~roundBitsMask;
+ if ( !sigZ ) {
+ ++uiZ64;
+ sigZ = UINT64_C( 0x8000000000000000 );
+ }
+ if ( sigZ != sigA ) {
+#ifdef SOFTFLOAT_ROUND_ODD
+ if ( roundingMode == softfloat_round_odd ) sigZ |= lastBitMask;
+#endif
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = sigZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sqrt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sqrt.c
new file mode 100644
index 000000000..af8c496e1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sqrt.c
@@ -0,0 +1,176 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_sqrt( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ int_fast32_t expA;
+ uint_fast64_t sigA;
+ struct uint128 uiZ;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+ struct exp32_sig64 normExpSig;
+ int_fast32_t expZ;
+ uint_fast32_t sig32A, recipSqrt32, sig32Z;
+ struct uint128 rem;
+ uint_fast64_t q, x64, sigZ;
+ struct uint128 y, term;
+ uint_fast64_t sigZExtra;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ expA = expExtF80UI64( uiA64 );
+ sigA = uiA0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, uiA0, 0, 0 );
+ uiZ64 = uiZ.v64;
+ uiZ0 = uiZ.v0;
+ goto uiZ;
+ }
+ if ( ! signA ) return a;
+ goto invalid;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( signA ) {
+ if ( ! sigA ) goto zero;
+ goto invalid;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ expA += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ | (`sig32Z' is guaranteed to be a lower bound on the square root of
+ | `sig32A', which makes `sig32Z' also a lower bound on the square root of
+ | `sigA'.)
+ *------------------------------------------------------------------------*/
+ expZ = ((expA - 0x3FFF)>>1) + 0x3FFF;
+ expA &= 1;
+ sig32A = sigA>>32;
+ recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
+ sig32Z = ((uint_fast64_t) sig32A * recipSqrt32)>>32;
+ if ( expA ) {
+ sig32Z >>= 1;
+ rem = softfloat_shortShiftLeft128( 0, sigA, 61 );
+ } else {
+ rem = softfloat_shortShiftLeft128( 0, sigA, 62 );
+ }
+ rem.v64 -= (uint_fast64_t) sig32Z * sig32Z;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = ((uint32_t) (rem.v64>>2) * (uint_fast64_t) recipSqrt32)>>32;
+ x64 = (uint_fast64_t) sig32Z<<32;
+ sigZ = x64 + (q<<3);
+ y = softfloat_shortShiftLeft128( rem.v64, rem.v0, 29 );
+ /*------------------------------------------------------------------------
+ | (Repeating this loop is a rare occurrence.)
+ *------------------------------------------------------------------------*/
+ for (;;) {
+ term = softfloat_mul64ByShifted32To128( x64 + sigZ, q );
+ rem = softfloat_sub128( y.v64, y.v0, term.v64, term.v0 );
+ if ( ! (rem.v64 & UINT64_C( 0x8000000000000000 )) ) break;
+ --q;
+ sigZ -= 1<<3;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = (((rem.v64>>2) * recipSqrt32)>>32) + 2;
+ x64 = sigZ;
+ sigZ = (sigZ<<1) + (q>>25);
+ sigZExtra = (uint64_t) (q<<39);
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (q & 0xFFFFFF) <= 2 ) {
+ q &= ~(uint_fast64_t) 0xFFFF;
+ sigZExtra = (uint64_t) (q<<39);
+ term = softfloat_mul64ByShifted32To128( x64 + (q>>27), q );
+ x64 = (uint32_t) (q<<5) * (uint_fast64_t) (uint32_t) q;
+ term = softfloat_add128( term.v64, term.v0, 0, x64 );
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, 28 );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ if ( ! sigZExtra ) --sigZ;
+ --sigZExtra;
+ } else {
+ if ( rem.v64 | rem.v0 ) sigZExtra |= 1;
+ }
+ }
+ return
+ softfloat_roundPackToExtF80(
+ 0, expZ, sigZ, sigZExtra, extF80_roundingPrecision );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ uiZ64 = defaultNaNExtF80UI64;
+ uiZ0 = defaultNaNExtF80UI0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signA, 0 );
+ uiZ0 = 0;
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = uiZ0;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sub.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sub.c
new file mode 100644
index 000000000..770c7563a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sub.c
@@ -0,0 +1,80 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_sub( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ extFloat80_t
+ (*magsFuncPtr)(
+ uint_fast16_t, uint_fast64_t, uint_fast16_t, uint_fast64_t, bool );
+#endif
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ signB = signExtF80UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ return softfloat_subMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ return softfloat_addMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_subMagsExtF80 : softfloat_addMagsExtF80;
+ return (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f128.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f128.c
new file mode 100644
index 000000000..4de90ae31
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f128.c
@@ -0,0 +1,75 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+float128_t extF80_to_f128( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ uint_fast16_t exp;
+ uint_fast64_t frac;
+ struct commonNaN commonNaN;
+ struct uint128 uiZ;
+ bool sign;
+ struct uint128 frac128;
+ union ui128_f128 uZ;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ exp = expExtF80UI64( uiA64 );
+ frac = uiA0 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ if ( (exp == 0x7FFF) && frac ) {
+ softfloat_extF80UIToCommonNaN( uiA64, uiA0, &commonNaN );
+ uiZ = softfloat_commonNaNToF128UI( &commonNaN );
+ } else {
+ sign = signExtF80UI64( uiA64 );
+ frac128 = softfloat_shortShiftLeft128( 0, frac, 49 );
+ uiZ.v64 = packToF128UI64( sign, exp, frac128.v64 );
+ uiZ.v0 = frac128.v0;
+ }
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f16.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f16.c
new file mode 100644
index 000000000..5919403fb
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f16.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+float16_t extF80_to_f16( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ struct commonNaN commonNaN;
+ uint_fast16_t uiZ, sig16;
+ union ui16_f16 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uiA0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80UIToCommonNaN( uiA64, uiA0, &commonNaN );
+ uiZ = softfloat_commonNaNToF16UI( &commonNaN );
+ } else {
+ uiZ = packToF16UI( sign, 0x1F, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig16 = softfloat_shortShiftRightJam64( sig, 49 );
+ if ( ! (exp | sig16) ) {
+ uiZ = packToF16UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3FF1;
+ if ( sizeof (int_fast16_t) < sizeof (int_fast32_t) ) {
+ if ( exp < -0x40 ) exp = -0x40;
+ }
+ return softfloat_roundPackToF16( sign, exp, sig16 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f32.c
new file mode 100644
index 000000000..77fcfdc11
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f32.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+float32_t extF80_to_f32( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ struct commonNaN commonNaN;
+ uint_fast32_t uiZ, sig32;
+ union ui32_f32 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uiA0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80UIToCommonNaN( uiA64, uiA0, &commonNaN );
+ uiZ = softfloat_commonNaNToF32UI( &commonNaN );
+ } else {
+ uiZ = packToF32UI( sign, 0xFF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig32 = softfloat_shortShiftRightJam64( sig, 33 );
+ if ( ! (exp | sig32) ) {
+ uiZ = packToF32UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3F81;
+ if ( sizeof (int_fast16_t) < sizeof (int_fast32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF32( sign, exp, sig32 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f64.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f64.c
new file mode 100644
index 000000000..410d6622c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f64.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+float64_t extF80_to_f64( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ struct commonNaN commonNaN;
+ uint_fast64_t uiZ;
+ union ui64_f64 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uiA0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! (exp | sig) ) {
+ uiZ = packToF64UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80UIToCommonNaN( uiA64, uiA0, &commonNaN );
+ uiZ = softfloat_commonNaNToF64UI( &commonNaN );
+ } else {
+ uiZ = packToF64UI( sign, 0x7FF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig = softfloat_shortShiftRightJam64( sig, 1 );
+ exp -= 0x3C01;
+ if ( sizeof (int_fast16_t) < sizeof (int_fast32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF64( sign, exp, sig );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32.c
new file mode 100644
index 000000000..9acdc3c9b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32.c
@@ -0,0 +1,83 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+int_fast32_t
+ extF80_to_i32( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+#if (i32_fromNaN != i32_fromPosOverflow) || (i32_fromNaN != i32_fromNegOverflow)
+ if ( (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) {
+#if (i32_fromNaN == i32_fromPosOverflow)
+ sign = 0;
+#elif (i32_fromNaN == i32_fromNegOverflow)
+ sign = 1;
+#else
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return i32_fromNaN;
+#endif
+ }
+#endif
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x4032 - exp;
+ if ( shiftDist <= 0 ) shiftDist = 1;
+ sig = softfloat_shiftRightJam64( sig, shiftDist );
+ return softfloat_roundToI32( sign, sig, roundingMode, exact );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32_r_minMag.c
new file mode 100644
index 000000000..03224678a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32_r_minMag.c
@@ -0,0 +1,97 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+int_fast32_t extF80_to_i32_r_minMag( extFloat80_t a, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ bool sign;
+ int_fast32_t absZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact && (exp | sig) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( shiftDist < 33 ) {
+ if (
+ (uiA64 == packToExtF80UI64( 1, 0x401E ))
+ && (sig < UINT64_C( 0x8000000100000000 ))
+ ) {
+ if ( exact && (sig & UINT64_C( 0x00000000FFFFFFFF )) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return -0x7FFFFFFF - 1;
+ }
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? i32_fromNaN
+ : sign ? i32_fromNegOverflow : i32_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ absZ = sig>>shiftDist;
+ if ( exact && ((uint_fast64_t) (uint_fast32_t) absZ<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+int_fast64_t
+ extF80_to_i64( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ uint_fast64_t sigExtra;
+ struct uint64_extra sig64Extra;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( shiftDist <= 0 ) {
+ /*--------------------------------------------------------------------
+ *--------------------------------------------------------------------*/
+ if ( shiftDist ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? i64_fromNaN
+ : sign ? i64_fromNegOverflow : i64_fromPosOverflow;
+ }
+ /*--------------------------------------------------------------------
+ *--------------------------------------------------------------------*/
+ sigExtra = 0;
+ } else {
+ /*--------------------------------------------------------------------
+ *--------------------------------------------------------------------*/
+ sig64Extra = softfloat_shiftRightJam64Extra( sig, 0, shiftDist );
+ sig = sig64Extra.v;
+ sigExtra = sig64Extra.extra;
+ }
+ return softfloat_roundToI64( sign, sig, sigExtra, roundingMode, exact );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i64_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i64_r_minMag.c
new file mode 100644
index 000000000..8871d01d1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i64_r_minMag.c
@@ -0,0 +1,94 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+int_fast64_t extF80_to_i64_r_minMag( extFloat80_t a, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ bool sign;
+ int_fast64_t absZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact && (exp | sig) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( shiftDist <= 0 ) {
+ if (
+ (uiA64 == packToExtF80UI64( 1, 0x403E ))
+ && (sig == UINT64_C( 0x8000000000000000 ))
+ ) {
+ return -INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1;
+ }
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? i64_fromNaN
+ : sign ? i64_fromNegOverflow : i64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ absZ = sig>>shiftDist;
+ if ( exact && (uint64_t) (sig<<(-shiftDist & 63)) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return sign ? -absZ : absZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32.c
new file mode 100644
index 000000000..581297731
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32.c
@@ -0,0 +1,83 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+uint_fast32_t
+ extF80_to_ui32( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+#if (ui32_fromNaN != ui32_fromPosOverflow) || (ui32_fromNaN != ui32_fromNegOverflow)
+ if ( (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) {
+#if (ui32_fromNaN == ui32_fromPosOverflow)
+ sign = 0;
+#elif (ui32_fromNaN == ui32_fromNegOverflow)
+ sign = 1;
+#else
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return ui32_fromNaN;
+#endif
+ }
+#endif
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x4032 - exp;
+ if ( shiftDist <= 0 ) shiftDist = 1;
+ sig = softfloat_shiftRightJam64( sig, shiftDist );
+ return softfloat_roundToUI32( sign, sig, roundingMode, exact );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32_r_minMag.c
new file mode 100644
index 000000000..be2c53b1d
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32_r_minMag.c
@@ -0,0 +1,88 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+uint_fast32_t extF80_to_ui32_r_minMag( extFloat80_t a, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ bool sign;
+ uint_fast32_t z;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact && (exp | sig) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( sign || (shiftDist < 32) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui32_fromNaN
+ : sign ? ui32_fromNegOverflow : ui32_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ z = sig>>shiftDist;
+ if ( exact && ((uint_fast64_t) z<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+uint_fast64_t
+ extF80_to_ui64( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ uint_fast64_t sigExtra;
+ struct uint64_extra sig64Extra;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( shiftDist < 0 ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui64_fromNaN
+ : sign ? ui64_fromNegOverflow : ui64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sigExtra = 0;
+ if ( shiftDist ) {
+ sig64Extra = softfloat_shiftRightJam64Extra( sig, 0, shiftDist );
+ sig = sig64Extra.v;
+ sigExtra = sig64Extra.extra;
+ }
+ return softfloat_roundToUI64( sign, sig, sigExtra, roundingMode, exact );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui64_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui64_r_minMag.c
new file mode 100644
index 000000000..eca688c65
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui64_r_minMag.c
@@ -0,0 +1,88 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+uint_fast64_t extF80_to_ui64_r_minMag( extFloat80_t a, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ bool sign;
+ uint_fast64_t z;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact && (exp | sig) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( sign || (shiftDist < 0) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui64_fromNaN
+ : sign ? ui64_fromNegOverflow : ui64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ z = sig>>shiftDist;
+ if ( exact && (z<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_add( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint64_t *aWPtr, *bWPtr;
+ uint_fast64_t uiA64, uiA0;
+ bool signA;
+ uint_fast64_t uiB64, uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ float128_t
+ (*magsFuncPtr)(
+ uint_fast64_t, uint_fast64_t, uint_fast64_t, uint_fast64_t, bool );
+#endif
+
+ aWPtr = (const uint64_t *) aPtr;
+ bWPtr = (const uint64_t *) bPtr;
+ uiA64 = aWPtr[indexWord( 2, 1 )];
+ uiA0 = aWPtr[indexWord( 2, 0 )];
+ signA = signF128UI64( uiA64 );
+ uiB64 = bWPtr[indexWord( 2, 1 )];
+ uiB0 = bWPtr[indexWord( 2, 0 )];
+ signB = signF128UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ *zPtr = softfloat_addMagsF128( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ *zPtr = softfloat_subMagsF128( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_addMagsF128 : softfloat_subMagsF128;
+ *zPtr = (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
+#else
+
+void
+ f128M_add( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ softfloat_addF128M(
+ (const uint32_t *) aPtr,
+ (const uint32_t *) bPtr,
+ (uint32_t *) zPtr,
+ false
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_div.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_div.c
new file mode 100644
index 000000000..b443548f5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_div.c
@@ -0,0 +1,187 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_div( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ *zPtr = f128_div( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ f128M_div( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t *zWPtr, uiA96;
+ bool signA;
+ int32_t expA;
+ uint32_t uiB96;
+ bool signB;
+ int32_t expB;
+ bool signZ;
+ uint32_t y[5], sigB[4];
+ int32_t expZ;
+ uint32_t recip32;
+ int ix;
+ uint64_t q64;
+ uint32_t q, qs[3], uiZ96;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ expA = expF128UI96( uiA96 );
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signB = signF128UI96( uiB96 );
+ expB = expF128UI96( uiB96 );
+ signZ = signA ^ signB;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNF128M( aWPtr, bWPtr, zWPtr ) ) return;
+ if ( expA == 0x7FFF ) {
+ if ( expB == 0x7FFF ) goto invalid;
+ goto infinity;
+ }
+ goto zero;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expA = softfloat_shiftNormSigF128M( aWPtr, 13, y );
+ expB = softfloat_shiftNormSigF128M( bWPtr, 13, sigB );
+ if ( expA == -128 ) {
+ if ( expB == -128 ) goto invalid;
+ goto zero;
+ }
+ if ( expB == -128 ) {
+ softfloat_raiseFlags( softfloat_flag_infinite );
+ goto infinity;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA - expB + 0x3FFE;
+ if ( softfloat_compare128M( y, sigB ) < 0 ) {
+ --expZ;
+ softfloat_add128M( y, y, y );
+ }
+ recip32 =
+ softfloat_approxRecip32_1(
+ ((uint64_t) sigB[indexWord( 4, 3 )]<<32 | sigB[indexWord( 4, 2 )])
+ >>30
+ );
+ ix = 3;
+ for (;;) {
+ q64 = (uint64_t) y[indexWordHi( 4 )] * recip32;
+ q = (q64 + 0x80000000)>>32;
+ --ix;
+ if ( ix < 0 ) break;
+ softfloat_remStep128MBy32( y, 29, sigB, q, y );
+ if ( y[indexWordHi( 4 )] & 0x80000000 ) {
+ --q;
+ softfloat_add128M( y, sigB, y );
+ }
+ qs[ix] = q;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ((q + 1) & 7) < 2 ) {
+ softfloat_remStep128MBy32( y, 29, sigB, q, y );
+ if ( y[indexWordHi( 4 )] & 0x80000000 ) {
+ --q;
+ softfloat_add128M( y, sigB, y );
+ } else if ( softfloat_compare128M( sigB, y ) <= 0 ) {
+ ++q;
+ softfloat_sub128M( y, sigB, y );
+ }
+ if (
+ y[indexWordLo( 4 )] || y[indexWord( 4, 1 )]
+ || (y[indexWord( 4, 2 )] | y[indexWord( 4, 3 )])
+ ) {
+ q |= 1;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q64 = (uint64_t) q<<28;
+ y[indexWord( 5, 0 )] = q64;
+ q64 = ((uint64_t) qs[0]<<25) + (q64>>32);
+ y[indexWord( 5, 1 )] = q64;
+ q64 = ((uint64_t) qs[1]<<22) + (q64>>32);
+ y[indexWord( 5, 2 )] = q64;
+ q64 = ((uint64_t) qs[2]<<19) + (q64>>32);
+ y[indexWord( 5, 3 )] = q64;
+ y[indexWord( 5, 4 )] = q64>>32;
+ softfloat_roundPackMToF128M( signZ, expZ, y, zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidF128M( zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ infinity:
+ uiZ96 = packToF128UI96( signZ, 0x7FFF, 0 );
+ goto uiZ96;
+ zero:
+ uiZ96 = packToF128UI96( signZ, 0, 0 );
+ uiZ96:
+ zWPtr[indexWordHi( 4 )] = uiZ96;
+ zWPtr[indexWord( 4, 2 )] = 0;
+ zWPtr[indexWord( 4, 1 )] = 0;
+ zWPtr[indexWord( 4, 0 )] = 0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq.c
new file mode 100644
index 000000000..497fdbf6f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq.c
@@ -0,0 +1,100 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_eq( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_eq( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_eq( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t wordA, wordB, uiA96, uiB96;
+ bool possibleOppositeZeros;
+ uint32_t mashWord;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA != wordB ) goto false_checkSigNaNs;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ possibleOppositeZeros = false;
+ if ( uiA96 != uiB96 ) {
+ possibleOppositeZeros = (((uiA96 | uiB96) & 0x7FFFFFFF) == 0);
+ if ( ! possibleOppositeZeros ) goto false_checkSigNaNs;
+ }
+ mashWord = wordA | wordB;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA != wordB ) goto false_checkSigNaNs;
+ mashWord |= wordA | wordB;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ if ( wordA != wordB ) goto false_checkSigNaNs;
+ if ( possibleOppositeZeros && ((mashWord | wordA | wordB) != 0) ) {
+ goto false_checkSigNaNs;
+ }
+ if ( ! softfloat_isNaNF128M( aWPtr ) && ! softfloat_isNaNF128M( bWPtr ) ) {
+ return true;
+ }
+ false_checkSigNaNs:
+ if (
+ f128M_isSignalingNaN( (const float128_t *) aWPtr )
+ || f128M_isSignalingNaN( (const float128_t *) bWPtr )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq_signaling.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq_signaling.c
new file mode 100644
index 000000000..a9fa4d510
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq_signaling.c
@@ -0,0 +1,92 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_eq_signaling( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_eq_signaling( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_eq_signaling( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t wordA, wordB, uiA96, uiB96;
+ bool possibleOppositeZeros;
+ uint32_t mashWord;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA != wordB ) return false;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ possibleOppositeZeros = false;
+ if ( uiA96 != uiB96 ) {
+ possibleOppositeZeros = (((uiA96 | uiB96) & 0x7FFFFFFF) == 0);
+ if ( ! possibleOppositeZeros ) return false;
+ }
+ mashWord = wordA | wordB;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA != wordB ) return false;
+ mashWord |= wordA | wordB;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return
+ (wordA == wordB)
+ && (! possibleOppositeZeros || ((mashWord | wordA | wordB) == 0));
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le.c
new file mode 100644
index 000000000..7306e45c3
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le.c
@@ -0,0 +1,93 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_le( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_le( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_le( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t uiA96, uiB96;
+ bool signA, signB;
+ uint32_t wordA, wordB;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ signB = signF128UI96( uiB96 );
+ if ( signA != signB ) {
+ if ( signA ) return true;
+ if ( (uiA96 | uiB96) & 0x7FFFFFFF ) return false;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA | wordB ) return false;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA | wordB ) return false;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return ((wordA | wordB) == 0);
+ }
+ if ( signA ) {
+ aWPtr = (const uint32_t *) bPtr;
+ bWPtr = (const uint32_t *) aPtr;
+ }
+ return (softfloat_compare128M( aWPtr, bWPtr ) <= 0);
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le_quiet.c
new file mode 100644
index 000000000..d9e442942
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le_quiet.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_le_quiet( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_le_quiet( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_le_quiet( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t uiA96, uiB96;
+ bool signA, signB;
+ uint32_t wordA, wordB;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ if ( f128M_isSignalingNaN( aPtr ) || f128M_isSignalingNaN( bPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ signB = signF128UI96( uiB96 );
+ if ( signA != signB ) {
+ if ( signA ) return true;
+ if ( (uiA96 | uiB96) & 0x7FFFFFFF ) return false;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA | wordB ) return false;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA | wordB ) return false;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return ((wordA | wordB) == 0);
+ }
+ if ( signA ) {
+ aWPtr = (const uint32_t *) bPtr;
+ bWPtr = (const uint32_t *) aPtr;
+ }
+ return (softfloat_compare128M( aWPtr, bWPtr ) <= 0);
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt.c
new file mode 100644
index 000000000..d2f797fea
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt.c
@@ -0,0 +1,93 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_lt( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_lt( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_lt( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t uiA96, uiB96;
+ bool signA, signB;
+ uint32_t wordA, wordB;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ signB = signF128UI96( uiB96 );
+ if ( signA != signB ) {
+ if ( signB ) return false;
+ if ( (uiA96 | uiB96) & 0x7FFFFFFF ) return true;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA | wordB ) return true;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA | wordB ) return true;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return ((wordA | wordB) != 0);
+ }
+ if ( signA ) {
+ aWPtr = (const uint32_t *) bPtr;
+ bWPtr = (const uint32_t *) aPtr;
+ }
+ return (softfloat_compare128M( aWPtr, bWPtr ) < 0);
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt_quiet.c
new file mode 100644
index 000000000..adbddea71
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt_quiet.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_lt_quiet( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_lt_quiet( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_lt_quiet( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t uiA96, uiB96;
+ bool signA, signB;
+ uint32_t wordA, wordB;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ if ( f128M_isSignalingNaN( aPtr ) || f128M_isSignalingNaN( bPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ signB = signF128UI96( uiB96 );
+ if ( signA != signB ) {
+ if ( signB ) return false;
+ if ( (uiA96 | uiB96) & 0x7FFFFFFF ) return true;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA | wordB ) return true;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA | wordB ) return true;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return ((wordA | wordB) != 0);
+ }
+ if ( signA ) {
+ aWPtr = (const uint32_t *) bPtr;
+ bWPtr = (const uint32_t *) aPtr;
+ }
+ return (softfloat_compare128M( aWPtr, bWPtr ) < 0);
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mul.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mul.c
new file mode 100644
index 000000000..4b8292a27
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mul.c
@@ -0,0 +1,158 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_mul( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ *zPtr = f128_mul( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ f128M_mul( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t *zWPtr;
+ uint32_t uiA96;
+ int32_t expA;
+ uint32_t uiB96;
+ int32_t expB;
+ bool signZ;
+ const uint32_t *ptr;
+ uint32_t uiZ96, sigA[4];
+ uint_fast8_t shiftDist;
+ uint32_t sigB[4];
+ int32_t expZ;
+ uint32_t sigProd[8], *extSigZPtr;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ expA = expF128UI96( uiA96 );
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ expB = expF128UI96( uiB96 );
+ signZ = signF128UI96( uiA96 ) ^ signF128UI96( uiB96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNF128M( aWPtr, bWPtr, zWPtr ) ) return;
+ ptr = aWPtr;
+ if ( ! expA ) goto possiblyInvalid;
+ if ( ! expB ) {
+ ptr = bWPtr;
+ possiblyInvalid:
+ if (
+ ! fracF128UI96( ptr[indexWordHi( 4 )] )
+ && ! (ptr[indexWord( 4, 2 )] | ptr[indexWord( 4, 1 )]
+ | ptr[indexWord( 4, 0 )])
+ ) {
+ softfloat_invalidF128M( zWPtr );
+ return;
+ }
+ }
+ uiZ96 = packToF128UI96( signZ, 0x7FFF, 0 );
+ goto uiZ96;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA ) {
+ sigA[indexWordHi( 4 )] = fracF128UI96( uiA96 ) | 0x00010000;
+ sigA[indexWord( 4, 2 )] = aWPtr[indexWord( 4, 2 )];
+ sigA[indexWord( 4, 1 )] = aWPtr[indexWord( 4, 1 )];
+ sigA[indexWord( 4, 0 )] = aWPtr[indexWord( 4, 0 )];
+ } else {
+ expA = softfloat_shiftNormSigF128M( aWPtr, 0, sigA );
+ if ( expA == -128 ) goto zero;
+ }
+ if ( expB ) {
+ sigB[indexWordHi( 4 )] = fracF128UI96( uiB96 ) | 0x00010000;
+ sigB[indexWord( 4, 2 )] = bWPtr[indexWord( 4, 2 )];
+ sigB[indexWord( 4, 1 )] = bWPtr[indexWord( 4, 1 )];
+ sigB[indexWord( 4, 0 )] = bWPtr[indexWord( 4, 0 )];
+ } else {
+ expB = softfloat_shiftNormSigF128M( bWPtr, 0, sigB );
+ if ( expB == -128 ) goto zero;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA + expB - 0x4000;
+ softfloat_mul128MTo256M( sigA, sigB, sigProd );
+ if (
+ sigProd[indexWord( 8, 2 )]
+ || (sigProd[indexWord( 8, 1 )] | sigProd[indexWord( 8, 0 )])
+ ) {
+ sigProd[indexWord( 8, 3 )] |= 1;
+ }
+ extSigZPtr = &sigProd[indexMultiwordHi( 8, 5 )];
+ shiftDist = 16;
+ if ( extSigZPtr[indexWordHi( 5 )] & 2 ) {
+ ++expZ;
+ shiftDist = 15;
+ }
+ softfloat_shortShiftLeft160M( extSigZPtr, shiftDist, extSigZPtr );
+ softfloat_roundPackMToF128M( signZ, expZ, extSigZPtr, zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ96 = packToF128UI96( signZ, 0, 0 );
+ uiZ96:
+ zWPtr[indexWordHi( 4 )] = uiZ96;
+ zWPtr[indexWord( 4, 2 )] = 0;
+ zWPtr[indexWord( 4, 1 )] = 0;
+ zWPtr[indexWord( 4, 0 )] = 0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mulAdd.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mulAdd.c
new file mode 100644
index 000000000..2b0b7fe26
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mulAdd.c
@@ -0,0 +1,92 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_mulAdd(
+ const float128_t *aPtr,
+ const float128_t *bPtr,
+ const float128_t *cPtr,
+ float128_t *zPtr
+ )
+{
+ const uint64_t *aWPtr, *bWPtr, *cWPtr;
+ uint_fast64_t uiA64, uiA0;
+ uint_fast64_t uiB64, uiB0;
+ uint_fast64_t uiC64, uiC0;
+
+ aWPtr = (const uint64_t *) aPtr;
+ bWPtr = (const uint64_t *) bPtr;
+ cWPtr = (const uint64_t *) cPtr;
+ uiA64 = aWPtr[indexWord( 2, 1 )];
+ uiA0 = aWPtr[indexWord( 2, 0 )];
+ uiB64 = bWPtr[indexWord( 2, 1 )];
+ uiB0 = bWPtr[indexWord( 2, 0 )];
+ uiC64 = cWPtr[indexWord( 2, 1 )];
+ uiC0 = cWPtr[indexWord( 2, 0 )];
+ *zPtr = softfloat_mulAddF128( uiA64, uiA0, uiB64, uiB0, uiC64, uiC0, 0 );
+
+}
+
+#else
+
+void
+ f128M_mulAdd(
+ const float128_t *aPtr,
+ const float128_t *bPtr,
+ const float128_t *cPtr,
+ float128_t *zPtr
+ )
+{
+
+ softfloat_mulAddF128M(
+ (const uint32_t *) aPtr,
+ (const uint32_t *) bPtr,
+ (const uint32_t *) cPtr,
+ (uint32_t *) zPtr,
+ 0
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_rem.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_rem.c
new file mode 100644
index 000000000..39aafdd6a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_rem.c
@@ -0,0 +1,182 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_rem( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ *zPtr = f128_rem( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ f128M_rem( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t *zWPtr, uiA96;
+ int32_t expA, expB;
+ uint32_t x[4], rem1[5], *remPtr;
+ bool signRem;
+ int32_t expDiff;
+ uint32_t q, recip32;
+ uint64_t q64;
+ uint32_t rem2[5], *altRemPtr, *newRemPtr, wordMeanRem;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ expA = expF128UI96( uiA96 );
+ expB = expF128UI96( bWPtr[indexWordHi( 4 )] );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNF128M( aWPtr, bWPtr, zWPtr ) ) return;
+ if ( expA == 0x7FFF ) goto invalid;
+ goto copyA;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA < expB - 1 ) goto copyA;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expB = softfloat_shiftNormSigF128M( bWPtr, 13, x );
+ if ( expB == -128 ) goto invalid;
+ remPtr = &rem1[indexMultiwordLo( 5, 4 )];
+ expA = softfloat_shiftNormSigF128M( aWPtr, 13, remPtr );
+ if ( expA == -128 ) goto copyA;
+ signRem = signF128UI96( uiA96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expDiff = expA - expB;
+ if ( expDiff < 1 ) {
+ if ( expDiff < -1 ) goto copyA;
+ if ( expDiff ) {
+ --expB;
+ softfloat_add128M( x, x, x );
+ q = 0;
+ } else {
+ q = (softfloat_compare128M( x, remPtr ) <= 0);
+ if ( q ) softfloat_sub128M( remPtr, x, remPtr );
+ }
+ } else {
+ recip32 =
+ softfloat_approxRecip32_1(
+ ((uint64_t) x[indexWord( 4, 3 )]<<32 | x[indexWord( 4, 2 )])
+ >>30
+ );
+ expDiff -= 30;
+ for (;;) {
+ q64 = (uint64_t) remPtr[indexWordHi( 4 )] * recip32;
+ if ( expDiff < 0 ) break;
+ q = (q64 + 0x80000000)>>32;
+ softfloat_remStep128MBy32( remPtr, 29, x, q, remPtr );
+ if ( remPtr[indexWordHi( 4 )] & 0x80000000 ) {
+ softfloat_add128M( remPtr, x, remPtr );
+ }
+ expDiff -= 29;
+ }
+ /*--------------------------------------------------------------------
+ | (`expDiff' cannot be less than -29 here.)
+ *--------------------------------------------------------------------*/
+ q = (uint32_t) (q64>>32)>>(~expDiff & 31);
+ softfloat_remStep128MBy32( remPtr, expDiff + 30, x, q, remPtr );
+ if ( remPtr[indexWordHi( 4 )] & 0x80000000 ) {
+ altRemPtr = &rem2[indexMultiwordLo( 5, 4 )];
+ softfloat_add128M( remPtr, x, altRemPtr );
+ goto selectRem;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ altRemPtr = &rem2[indexMultiwordLo( 5, 4 )];
+ do {
+ ++q;
+ newRemPtr = altRemPtr;
+ softfloat_sub128M( remPtr, x, newRemPtr );
+ altRemPtr = remPtr;
+ remPtr = newRemPtr;
+ } while ( ! (remPtr[indexWordHi( 4 )] & 0x80000000) );
+ selectRem:
+ softfloat_add128M( remPtr, altRemPtr, x );
+ wordMeanRem = x[indexWordHi( 4 )];
+ if (
+ (wordMeanRem & 0x80000000)
+ || (! wordMeanRem && (q & 1) && ! x[indexWord( 4, 0 )]
+ && ! (x[indexWord( 4, 2 )] | x[indexWord( 4, 1 )]))
+ ) {
+ remPtr = altRemPtr;
+ }
+ if ( remPtr[indexWordHi( 4 )] & 0x80000000 ) {
+ signRem = ! signRem;
+ softfloat_negX128M( remPtr );
+ }
+ remPtr -= indexMultiwordLo( 5, 4 );
+ remPtr[indexWordHi( 5 )] = 0;
+ softfloat_normRoundPackMToF128M( signRem, expB + 18, remPtr, zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidF128M( zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ zWPtr[indexWordHi( 4 )] = uiA96;
+ zWPtr[indexWord( 4, 2 )] = aWPtr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = aWPtr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = aWPtr[indexWord( 4, 0 )];
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_roundToInt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_roundToInt.c
new file mode 100644
index 000000000..b96d742b2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_roundToInt.c
@@ -0,0 +1,223 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_roundToInt(
+ const float128_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ float128_t *zPtr
+ )
+{
+
+ *zPtr = f128_roundToInt( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+void
+ f128M_roundToInt(
+ const float128_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ float128_t *zPtr
+ )
+{
+ const uint32_t *aWPtr;
+ uint32_t *zWPtr;
+ uint32_t ui96;
+ int32_t exp;
+ uint32_t sigExtra;
+ bool sign;
+ uint_fast8_t bitPos;
+ bool roundNear;
+ unsigned int index, lastIndex;
+ bool extra;
+ uint32_t wordA, bit, wordZ;
+ uint_fast8_t carry;
+ uint32_t extrasMask;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ ui96 = aWPtr[indexWordHi( 4 )];
+ exp = expF128UI96( ui96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp < 0x3FFF ) {
+ zWPtr[indexWord( 4, 2 )] = 0;
+ zWPtr[indexWord( 4, 1 )] = 0;
+ zWPtr[indexWord( 4, 0 )] = 0;
+ sigExtra = aWPtr[indexWord( 4, 2 )];
+ if ( !sigExtra ) {
+ sigExtra = aWPtr[indexWord( 4, 1 )] | aWPtr[indexWord( 4, 0 )];
+ }
+ if ( !sigExtra && !(ui96 & 0x7FFFFFFF) ) goto ui96;
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ sign = signF128UI96( ui96 );
+ switch ( roundingMode ) {
+ case softfloat_round_near_even:
+ if ( !fracF128UI96( ui96 ) && !sigExtra ) break;
+ case softfloat_round_near_maxMag:
+ if ( exp == 0x3FFE ) goto mag1;
+ break;
+ case softfloat_round_min:
+ if ( sign ) goto mag1;
+ break;
+ case softfloat_round_max:
+ if ( !sign ) goto mag1;
+ break;
+#ifdef SOFTFLOAT_ROUND_ODD
+ case softfloat_round_odd:
+ goto mag1;
+#endif
+ }
+ ui96 = packToF128UI96( sign, 0, 0 );
+ goto ui96;
+ mag1:
+ ui96 = packToF128UI96( sign, 0x3FFF, 0 );
+ goto ui96;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( 0x406F <= exp ) {
+ if (
+ (exp == 0x7FFF)
+ && (fracF128UI96( ui96 )
+ || (aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )]))
+ ) {
+ softfloat_propagateNaNF128M( aWPtr, 0, zWPtr );
+ return;
+ }
+ zWPtr[indexWord( 4, 2 )] = aWPtr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = aWPtr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = aWPtr[indexWord( 4, 0 )];
+ goto ui96;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ bitPos = 0x406F - exp;
+ roundNear =
+ (roundingMode == softfloat_round_near_maxMag)
+ || (roundingMode == softfloat_round_near_even);
+ bitPos -= roundNear;
+ index = indexWordLo( 4 );
+ lastIndex = indexWordHi( 4 );
+ extra = 0;
+ for (;;) {
+ wordA = aWPtr[index];
+ if ( bitPos < 32 ) break;
+ if ( wordA ) extra = 1;
+ zWPtr[index] = 0;
+ index += wordIncr;
+ bitPos -= 32;
+ }
+ bit = (uint32_t) 1<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void f128M_sqrt( const float128_t *aPtr, float128_t *zPtr )
+{
+
+ *zPtr = f128_sqrt( *aPtr );
+
+}
+
+#else
+
+void f128M_sqrt( const float128_t *aPtr, float128_t *zPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t *zWPtr;
+ uint32_t uiA96;
+ bool signA;
+ int32_t rawExpA;
+ uint32_t rem[6];
+ int32_t expA, expZ;
+ uint64_t rem64;
+ uint32_t sig32A, recipSqrt32, sig32Z, qs[3], q;
+ uint64_t sig64Z;
+ uint32_t term[5];
+ uint64_t x64;
+ uint32_t y[5], rem32;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ rawExpA = expF128UI96( uiA96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( rawExpA == 0x7FFF ) {
+ if (
+ fracF128UI96( uiA96 )
+ || (aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ ) {
+ softfloat_propagateNaNF128M( aWPtr, 0, zWPtr );
+ return;
+ }
+ if ( ! signA ) goto copyA;
+ goto invalid;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expA = softfloat_shiftNormSigF128M( aWPtr, 13 - (rawExpA & 1), rem );
+ if ( expA == -128 ) goto copyA;
+ if ( signA ) goto invalid;
+ /*------------------------------------------------------------------------
+ | (`sig32Z' is guaranteed to be a lower bound on the square root of
+ | `sig32A', which makes `sig32Z' also a lower bound on the square root of
+ | `sigA'.)
+ *------------------------------------------------------------------------*/
+ expZ = ((expA - 0x3FFF)>>1) + 0x3FFE;
+ expA &= 1;
+ rem64 = (uint64_t) rem[indexWord( 4, 3 )]<<32 | rem[indexWord( 4, 2 )];
+ if ( expA ) {
+ if ( ! rawExpA ) {
+ softfloat_shortShiftRight128M( rem, 1, rem );
+ rem64 >>= 1;
+ }
+ sig32A = rem64>>29;
+ } else {
+ sig32A = rem64>>30;
+ }
+ recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
+ sig32Z = ((uint64_t) sig32A * recipSqrt32)>>32;
+ if ( expA ) sig32Z >>= 1;
+ qs[2] = sig32Z;
+ rem64 -= (uint64_t) sig32Z * sig32Z;
+ rem[indexWord( 4, 3 )] = rem64>>32;
+ rem[indexWord( 4, 2 )] = rem64;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = ((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32;
+ sig64Z = ((uint64_t) sig32Z<<32) + ((uint64_t) q<<3);
+ term[indexWord( 4, 3 )] = 0;
+ term[indexWord( 4, 0 )] = 0;
+ /*------------------------------------------------------------------------
+ | (Repeating this loop is a rare occurrence.)
+ *------------------------------------------------------------------------*/
+ for (;;) {
+ x64 = ((uint64_t) sig32Z<<32) + sig64Z;
+ term[indexWord( 4, 2 )] = x64>>32;
+ term[indexWord( 4, 1 )] = x64;
+ softfloat_remStep128MBy32( rem, 29, term, q, y );
+ rem32 = y[indexWord( 4, 3 )];
+ if ( ! (rem32 & 0x80000000) ) break;
+ --q;
+ sig64Z -= 1<<3;
+ }
+ qs[1] = q;
+ rem64 = (uint64_t) rem32<<32 | y[indexWord( 4, 2 )];
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = ((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32;
+ if ( rem64>>34 ) q += recipSqrt32;
+ sig64Z <<= 1;
+ /*------------------------------------------------------------------------
+ | (Repeating this loop is a rare occurrence.)
+ *------------------------------------------------------------------------*/
+ for (;;) {
+ x64 = sig64Z + (q>>26);
+ term[indexWord( 4, 2 )] = x64>>32;
+ term[indexWord( 4, 1 )] = x64;
+ term[indexWord( 4, 0 )] = q<<6;
+ softfloat_remStep128MBy32(
+ y, 29, term, q, &rem[indexMultiwordHi( 6, 4 )] );
+ rem32 = rem[indexWordHi( 6 )];
+ if ( ! (rem32 & 0x80000000) ) break;
+ --q;
+ }
+ qs[0] = q;
+ rem64 = (uint64_t) rem32<<32 | rem[indexWord( 6, 4 )];
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = (((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32) + 2;
+ if ( rem64>>34 ) q += recipSqrt32;
+ x64 = (uint64_t) q<<27;
+ y[indexWord( 5, 0 )] = x64;
+ x64 = ((uint64_t) qs[0]<<24) + (x64>>32);
+ y[indexWord( 5, 1 )] = x64;
+ x64 = ((uint64_t) qs[1]<<21) + (x64>>32);
+ y[indexWord( 5, 2 )] = x64;
+ x64 = ((uint64_t) qs[2]<<18) + (x64>>32);
+ y[indexWord( 5, 3 )] = x64;
+ y[indexWord( 5, 4 )] = x64>>32;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (q & 0xF) <= 2 ) {
+ q &= ~3;
+ y[indexWordLo( 5 )] = q<<27;
+ term[indexWord( 5, 4 )] = 0;
+ term[indexWord( 5, 3 )] = 0;
+ term[indexWord( 5, 2 )] = 0;
+ term[indexWord( 5, 1 )] = q>>6;
+ term[indexWord( 5, 0 )] = q<<26;
+ softfloat_sub160M( y, term, term );
+ rem[indexWord( 6, 1 )] = 0;
+ rem[indexWord( 6, 0 )] = 0;
+ softfloat_remStep160MBy32(
+ &rem[indexMultiwordLo( 6, 5 )],
+ 14,
+ term,
+ q,
+ &rem[indexMultiwordLo( 6, 5 )]
+ );
+ rem32 = rem[indexWord( 6, 4 )];
+ if ( rem32 & 0x80000000 ) {
+ softfloat_sub1X160M( y );
+ } else {
+ if (
+ rem32 || rem[indexWord( 6, 0 )] || rem[indexWord( 6, 1 )]
+ || (rem[indexWord( 6, 3 )] | rem[indexWord( 6, 2 )])
+ ) {
+ y[indexWordLo( 5 )] |= 1;
+ }
+ }
+ }
+ softfloat_roundPackMToF128M( 0, expZ, y, zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidF128M( zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ zWPtr[indexWordHi( 4 )] = uiA96;
+ zWPtr[indexWord( 4, 2 )] = aWPtr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = aWPtr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = aWPtr[indexWord( 4, 0 )];
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_sub.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_sub.c
new file mode 100644
index 000000000..5d65c799f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_sub.c
@@ -0,0 +1,97 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_sub( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint64_t *aWPtr, *bWPtr;
+ uint_fast64_t uiA64, uiA0;
+ bool signA;
+ uint_fast64_t uiB64, uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ float128_t
+ (*magsFuncPtr)(
+ uint_fast64_t, uint_fast64_t, uint_fast64_t, uint_fast64_t, bool );
+#endif
+
+ aWPtr = (const uint64_t *) aPtr;
+ bWPtr = (const uint64_t *) bPtr;
+ uiA64 = aWPtr[indexWord( 2, 1 )];
+ uiA0 = aWPtr[indexWord( 2, 0 )];
+ signA = signF128UI64( uiA64 );
+ uiB64 = bWPtr[indexWord( 2, 1 )];
+ uiB0 = bWPtr[indexWord( 2, 0 )];
+ signB = signF128UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ *zPtr = softfloat_subMagsF128( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ *zPtr = softfloat_addMagsF128( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_subMagsF128 : softfloat_addMagsF128;
+ *zPtr = (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
+#else
+
+void
+ f128M_sub( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ softfloat_addF128M(
+ (const uint32_t *) aPtr,
+ (const uint32_t *) bPtr,
+ (uint32_t *) zPtr,
+ true
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_extF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_extF80M.c
new file mode 100644
index 000000000..b0340c794
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_extF80M.c
@@ -0,0 +1,101 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void f128M_to_extF80M( const float128_t *aPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = f128_to_extF80( *aPtr );
+
+}
+
+#else
+
+void f128M_to_extF80M( const float128_t *aPtr, extFloat80_t *zPtr )
+{
+ const uint32_t *aWPtr;
+ struct extFloat80M *zSPtr;
+ uint32_t uiA96;
+ bool sign;
+ int32_t exp;
+ struct commonNaN commonNaN;
+ uint32_t sig[4];
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ sign = signF128UI96( uiA96 );
+ exp = expF128UI96( uiA96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( softfloat_isNaNF128M( aWPtr ) ) {
+ softfloat_f128MToCommonNaN( aWPtr, &commonNaN );
+ softfloat_commonNaNToExtF80M( &commonNaN, zSPtr );
+ return;
+ }
+ zSPtr->signExp = packToExtF80UI64( sign, 0x7FFF );
+ zSPtr->signif = UINT64_C( 0x8000000000000000 );
+ return;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp = softfloat_shiftNormSigF128M( aWPtr, 15, sig );
+ if ( exp == -128 ) {
+ zSPtr->signExp = packToExtF80UI64( sign, 0 );
+ zSPtr->signif = 0;
+ return;
+ }
+ if ( sig[indexWord( 4, 0 )] ) sig[indexWord( 4, 1 )] |= 1;
+ softfloat_roundPackMToExtF80M(
+ sign, exp, &sig[indexMultiwordHi( 4, 3 )], 80, zSPtr );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f16.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f16.c
new file mode 100644
index 000000000..95109a771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f16.c
@@ -0,0 +1,113 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float16_t f128M_to_f16( const float128_t *aPtr )
+{
+
+ return f128_to_f16( *aPtr );
+
+}
+
+#else
+
+float16_t f128M_to_f16( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+ bool sign;
+ int32_t exp;
+ uint32_t frac32;
+ struct commonNaN commonNaN;
+ uint16_t uiZ, frac16;
+ union ui16_f16 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ sign = signF128UI96( uiA96 );
+ exp = expF128UI96( uiA96 );
+ frac32 =
+ fracF128UI96( uiA96 )
+ | ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( frac32 ) {
+ softfloat_f128MToCommonNaN( aWPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF16UI( &commonNaN );
+ } else {
+ uiZ = packToF16UI( sign, 0x1F, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ frac16 = frac32>>2 | (frac32 & 3);
+ if ( ! (exp | frac16) ) {
+ uiZ = packToF16UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3FF1;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x40 ) exp = -0x40;
+ }
+ return softfloat_roundPackToF16( sign, exp, frac16 | 0x4000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f32.c
new file mode 100644
index 000000000..4542deb0c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f32.c
@@ -0,0 +1,109 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float32_t f128M_to_f32( const float128_t *aPtr )
+{
+
+ return f128_to_f32( *aPtr );
+
+}
+
+#else
+
+float32_t f128M_to_f32( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+ bool sign;
+ int32_t exp;
+ uint64_t frac64;
+ struct commonNaN commonNaN;
+ uint32_t uiZ, frac32;
+ union ui32_f32 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ sign = signF128UI96( uiA96 );
+ exp = expF128UI96( uiA96 );
+ frac64 =
+ (uint64_t) fracF128UI96( uiA96 )<<32 | aWPtr[indexWord( 4, 2 )]
+ | ((aWPtr[indexWord( 4, 1 )] | aWPtr[indexWord( 4, 0 )]) != 0);
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( frac64 ) {
+ softfloat_f128MToCommonNaN( aWPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF32UI( &commonNaN );
+ } else {
+ uiZ = packToF32UI( sign, 0xFF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ frac32 = softfloat_shortShiftRightJam64( frac64, 18 );
+ if ( ! (exp | frac32) ) {
+ uiZ = packToF32UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3F81;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF32( sign, exp, frac32 | 0x40000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f64.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f64.c
new file mode 100644
index 000000000..6213bb7f5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f64.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float64_t f128M_to_f64( const float128_t *aPtr )
+{
+
+ return f128_to_f64( *aPtr );
+
+}
+
+#else
+
+float64_t f128M_to_f64( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+ bool sign;
+ int32_t exp;
+ uint64_t frac64;
+ struct commonNaN commonNaN;
+ uint64_t uiZ;
+ uint32_t frac32;
+ union ui64_f64 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ sign = signF128UI96( uiA96 );
+ exp = expF128UI96( uiA96 );
+ frac64 = (uint64_t) fracF128UI96( uiA96 )<<32 | aWPtr[indexWord( 4, 2 )];
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( frac64 || aWPtr[indexWord( 4, 1 )] | aWPtr[indexWord( 4, 0 )] ) {
+ softfloat_f128MToCommonNaN( aWPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF64UI( &commonNaN );
+ } else {
+ uiZ = packToF64UI( sign, 0x7FF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ frac32 = aWPtr[indexWord( 4, 1 )];
+ frac64 = frac64<<14 | frac32>>18;
+ if ( (frac32 & 0x0003FFFF) || aWPtr[indexWord( 4, 0 )] ) frac64 |= 1;
+ if ( ! (exp | frac64) ) {
+ uiZ = packToF64UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3C01;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return
+ softfloat_roundPackToF64(
+ sign, exp, frac64 | UINT64_C( 0x4000000000000000 ) );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i32.c
new file mode 100644
index 000000000..54cc6f603
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i32.c
@@ -0,0 +1,98 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include